diff --git a/ChangeLog b/ChangeLog index 33a59940cb8deec4dc77f04b618a08459e54e98b..cb7b048f7467aa6488bae59fa0aa918bc334158b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,328 +1,590 @@ -=== release 1.0.10 === +=== release 1.1.90 === -2013-08-28 Tim-Philipp Müller <tim@centricular.net> +2013-09-19 Sebastian Dröge <sebastian.droege@collabora.co.uk> * configure.ac: - releasing 1.0.10 + releasing 1.1.90 -2013-03-02 13:59:52 +0000 Tim-Philipp Müller <tim@centricular.net> +2013-09-19 09:45:18 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * po/cs.po: + * po/nl.po: + * po/pl.po: + * po/uk.po: + * po/vi.po: + po: Update translations + +2013-09-11 14:27:02 -0400 Olivier Crête <olivier.crete@collabora.com> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: dmabuf is not a singleton anymore + https://bugzilla.gnome.org/show_bug.cgi?id=707793 + +2013-09-16 13:53:45 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: do not do http requests in READY + HEAD requests to discover if the server is seekable shouldn't be done in + READY as it might lock the main thread that is doing the state change. + https://bugzilla.gnome.org/show_bug.cgi?id=705371 + +2013-09-18 16:32:28 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: reevaluate the current timer after timeout + When we trigger the timeout logic of a timer, reevaluate it because it is + possible that it still has the lowest timeout. + +2013-09-18 16:31:26 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: don't update time when unscheduled + Don't try to estimate the current time when we got unscheduled. + +2013-09-18 16:29:37 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: init packet spacing on first buffer + Already init the packet spacing variables on the first buffer so that we can + calculate the spacing on the second buffer already. + +2013-09-18 15:08:45 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * tests/check/elements/rtpjitterbuffer.c: + tests: fix comments + +2013-09-18 14:57:09 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: push the lost event from the timer thread + Instead of pushing the lost event from the chain function, schedule a timeout + that will push the lost event from the timer thread. This avoid blocking the + upstream thread while we push and sync the event. + +2013-09-18 14:23:55 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: add another test + The test is modified slightly because the late lost packets are only + generated now when a large gap is received. + +2013-09-18 14:12:47 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: round gap duration to multiple of duration + Make sure the gap duration in the lost event is a multiple of the packet + duration. + Enable another test. + +2013-09-18 12:29:38 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/Makefile.am: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: keep track of duration + Keep track of the estimated duration of missing packets and use it in the lost + event. + Enable another unit test + +2013-09-18 11:59:28 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: handle large gaps with one lost event + When we have a large number of missing packets, generate one lost event for all + the packets that have no chance of being pushed out in time. + Fix and activate unit test for large gaps. + +2013-09-18 11:56:38 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: refactor lost event sending + Also make sure we only increment the expected seqnum and last + output timestamp. + +2013-09-17 23:21:09 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: refactor timeout triggers + +2013-09-17 23:03:45 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: simplify the timeout code + Keep track of the current time in the timeout loop. + Loop over all timers and trigger all the expired ones, we can do this in the + same loop that selects the new best timer. + +2013-09-17 23:01:17 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: rearrange timer update code + Also update the timers when retransmission is disabled. We need to + do this because when we added LOST timers when we detected missing packets and + we need to remove those timers when the packet finally arrives. + +2013-09-17 22:02:04 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/videomixer/Makefile.am: + videomixer: link to libm for maths stuff + Fixes undefined references to rint and pow on ubuntu + build bot. + +2013-09-17 15:19:42 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: release lock on shutdown + +2013-09-17 15:11:41 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * tests/check/Makefile.am: + check: change for videomixer renamed orc file + +2013-09-14 16:03:20 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/gstqtmux.c: + qtmux: remove MAX_TOLERATED_LATENESS + https://bugzilla.gnome.org/show_bug.cgi?id=707411 + +2013-09-16 15:54:37 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * tests/examples/rtp/client-H264-rtx.sh: + examples: we don't need the queue anymore + +2013-09-16 15:53:47 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: use separate thread for timeouts + Use a separate thread for scheduling the timeouts instead of using the + downstream streaming thread that might block at any time. + +2013-09-14 15:56:04 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/gstqtmux.c: + qtmux: set first_ts to DTS for streams that have DTS + https://bugzilla.gnome.org/show_bug.cgi?id=707340 + +2013-09-14 15:55:22 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/gstqtmux.c: + qtmux: make sure duration is a valid number for last buffer + https://bugzilla.gnome.org/show_bug.cgi?id=707340 + +2013-09-14 15:54:29 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/gstqtmux.c: + qtmux: use segment.start or last buffer end time in case of missing DTS + https://bugzilla.gnome.org/show_bug.cgi?id=707340 + +2013-09-03 18:14:04 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/gstqtmux.c: + Revert qtmux: Use buffer PTS if DTS is not set" + This reverts commit f72c3cf71fde622067f41f31a53978ba4c94469d. + https://bugzilla.gnome.org/show_bug.cgi?id=707340 + +2013-09-16 11:03:06 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/videomixer/videomixerorc-dist.c: + * gst/videomixer/videomixerorc-dist.h: + videomixer: Update orc generated files + https://bugzilla.gnome.org/show_bug.cgi?id=708131 + +2013-09-13 16:25:49 +0200 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + rtpsession: Demux RTCP buffers from the RTP stream + If there are RTCP buffers in the RTP stream, process them as + RTCP. This way, we want receive streams following RFC 5761 + https://bugzilla.gnome.org/show_bug.cgi?id=687657 + +2013-09-13 23:26:21 +1000 Jan Schmidt <thaytan@noraisin.net> + + * gst/rtp/gstrtpL24depay.c: + rtp: Remove bogus extra caps from L24 template. + The extra caps entry in the template was making it sometimes + get plugged for any dynamically allocated payload type. + +2013-09-13 12:40:41 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + * gst/rtpmanager/rtpstats.h: + rtpbin: use PacketInfo for the sender + Avoid mapping the packet multiple times when sending RTP. + +2013-09-13 12:22:36 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + * gst/rtpmanager/rtpstats.h: + rtpbin: store more in the PacketInfo + Store all info in the PacketInfo so that we can avoid mapping the packet + multiple times. + +2013-09-13 11:32:52 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpstats.h: + session: store more in the PacketInfo structure + +2013-09-13 11:08:55 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + * gst/rtpmanager/rtpstats.h: + rtpbin: RTPArrivalStats -> RTPPacketInfo + Rename a structure because we are also going to use this for the sender + bits. + +2013-09-13 10:55:31 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + source: small cleanups + +2013-09-12 13:31:01 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> * gst/isomp4/qtdemux.c: - qtdemux: add variant field to H.263 caps - avdec_h263 won't get plugged otherwise. + qtdemux: only update stop position if seek requests it + Check for GST_SEEK_TYPE_NONE for stop poistion and only update + the stop time if it is requested. Otherwise just maintain whatever + was stored at the segment + https://bugzilla.gnome.org/show_bug.cgi?id=707530 -2013-08-26 13:47:53 +0200 Sebastian Dröge <slomo@circular-chaos.org> +2013-09-13 08:53:25 +0200 Rico Tzschichholz <ricotz@ubuntu.com> - * configure.ac: - configure.ac: Don't set BZ2_LIBS if bz2 is not found + * gst/rtp/Makefile.am: + rtp: Add missing headers tp fix make dist + In addition to a956a6ceb2deb87cc1361aee1d6626449f46dab2 -2013-08-22 14:55:14 +0200 Sebastian Dröge <slomo@circular-chaos.org> +2013-09-12 15:07:48 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * configure.ac: - configure: Fix bz2 configure check for Windows - Due to function decorations on Windows AC_CHECK_LIB can't be used to check for bz2. - https://bugzilla.gnome.org/show_bug.cgi?id=465924 + * gst/audioparsers/gstflacparse.c: + flacparse: Make sure we have enough data to read image tags + Thanks to iputinei for reporting this on IRC. -2013-08-21 16:32:50 +0200 Sebastian Dröge <slomo@circular-chaos.org> +2013-09-12 15:01:36 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/directsound/gstdirectsoundsink.c: - directsoundsink: WAVEFORMATEX is unsigned for 8 bit integers, and signed for others - Probably fixes - https://bugzilla.gnome.org/show_bug.cgi?id=705477 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: handle segments with non-0 start + We keep the DTS and PTS in running-time inside the jitterbuffer. Make sure to + transform it back to a buffer timestamp before pushing out the buffer. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707931 -2013-08-05 08:49:50 +0200 Sjoerd Simons <sjoerd.simons@collabora.co.uk> +2013-09-11 13:11:58 -0600 Seán de Búrca <leftmostcat@gmail.com> - * gst/goom/gstgoom.c: - goom: Ensure src caps are writable - In some cases the src caps determined by goom weren't writable, causing - a bunch of assertion failures and failed caps. Fixed by always - explicitely making the caps writable - https://bugzilla.gnome.org/show_bug.cgi?id=705475 + * gst/matroska/matroska-demux.c: + matroskademux: Fix off-by-one in validation of UTF-8 + https://bugzilla.gnome.org/show_bug.cgi?id=707933 -2013-07-30 14:28:19 +0100 Tim-Philipp Müller <tim@centricular.net> +2013-09-11 14:32:17 -0300 Thibault Saunier <thibault.saunier@collabora.com> - * gst/flv/gstflvdemux.c: - flvdemux: don't leak stream_id string - https://bugzilla.gnome.org/show_bug.cgi?id=705142 - Conflicts: - gst/flv/gstflvdemux.c + * gst/videomixer/videomixer2.c: + videomixer: Do not check if caps are empty when they are NULL + In the case the caps are actually NULL, we should just concider it the + same way as empty caps in that case. -=== release 1.0.9 === +2013-09-10 16:44:53 -0600 Seán de Búrca <leftmostcat@gmail.com> -2013-07-30 12:30:12 +0100 Tim-Philipp Müller <tim@centricular.net> + * gst/videomixer/blendorc-dist.c: + * gst/videomixer/blendorc-dist.h: + * gst/videomixer/videomixerorc-dist.c: + * gst/videomixer/videomixerorc-dist.h: + videomixer: fix build if orc is not installed + https://bugzilla.gnome.org/show_bug.cgi?id=707886 - * ChangeLog: - Release 1.0.9 - This time with ChangeLog file +2013-09-10 17:57:49 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> -2013-07-30 11:35:33 +0100 Tim-Philipp Müller <tim@centricular.net> + * gst/matroska/matroska-demux.c: + matroskademux: Preserve seqnum when pushing seek upstream + After converting a seek from time to bytes, use the same seqnum + on the event that goes upstream - * ChangeLog: - * NEWS: - * RELEASE: - * configure.ac: - * 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-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.0.9 +2013-09-05 00:17:16 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> -2013-07-28 17:32:27 +0200 Sebastian Dröge <slomo@circular-chaos.org> + * gst/isomp4/qtdemux.c: + qtdemux: track streams that are EOS on push mode to finish earlier + When the segment has a defined stop position, qtdemux should check + when streams reach this position and mark those as EOS. When all + streams are EOS it will return GST_FLOW_EOS to upstream to allow + the pipeline to finish instead of continuously consume buffers + from upstream that are not useful for the segment. + https://bugzilla.gnome.org/show_bug.cgi?id=707530 - * gst/avi/gstavidemux.c: - avidemux: Don't forget unmapping and unreffing buffer +2013-09-04 15:34:35 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> -2013-07-26 21:06:17 +0200 Matej Knopp <matej.knopp@gmail.com> + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + qtdemux: preserve stop of segment when doing seeks in push mode + When handling seeks in push mode, qtdemux converts the seek to bytes + and pushes upstream. It needs to keep track of the seek and the + subsequent segment to be able to map them back to the requested + seek time and properly preserve the segment stop of the seek. + This is done by using the start offset in bytes of the seek, + that should be the same of the segment from upstream. And this + is also backwards compatible with what qtdemux already was using. + https://bugzilla.gnome.org/show_bug.cgi?id=707530 + +2013-07-26 19:40:53 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/videomixer2.c: + * gst/videomixer/videomixer2pad.h: + videomixer: Add colorspace conversion + https://bugzilla.gnome.org/show_bug.cgi?id=704950 + +2013-08-06 15:38:39 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/videomixer2.c: + videomixer: Don't send reconfigure event when formats or PAR are different + It is racy with multiple pads. + https://bugzilla.gnome.org/show_bug.cgi?id=704950 + +2013-07-25 13:49:57 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/Makefile.am: + * gst/videomixer/blend.c: + * gst/videomixer/blendorc.orc: + * gst/videomixer/gstcms.c: + * gst/videomixer/gstcms.h: + * gst/videomixer/videoconvert.c: + * gst/videomixer/videoconvert.h: + * gst/videomixer/videomixer2.c: + * gst/videomixer/videomixerorc.orc: + videomixer: Bundle private copies of videoconvert code + Ideally, this would be part of libgstvideo. + Prefixes videoconvert symbols with videomixer_. + https://bugzilla.gnome.org/show_bug.cgi?id=704950 + +2013-08-22 00:03:48 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: Use newly #defined metadata names. + +2013-09-09 15:11:51 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: only wait if we flushed + Only wait for the STREAM_LOCK when we flushed something when sending + a command for PAUSED or PLAYING. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707611 + +2013-09-09 15:09:41 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: return when a flush was issued + Make gst_rtspsrc_loop_send_cmd() return TRUE when the current + action has been flushed + +2013-09-09 11:16:40 +0200 David Holroyd <dave@badgers-in-foil.co.uk> + + * gst/rtp/Makefile.am: + * gst/rtp/gstrtp.c: + * gst/rtp/gstrtpL24depay.c: + * gst/rtp/gstrtpL24depay.h: + * gst/rtp/gstrtpL24pay.c: + * gst/rtp/gstrtpL24pay.h: + * tests/check/elements/rtp-payloading.c: + rtp: add L24 pay and depayloader + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707734 + +2013-09-09 14:46:42 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: Fix missing condition in previous commit + +2013-09-09 14:44:58 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: Also fix strides for other semi-planar video formats + +2013-09-09 14:41:42 +0200 Andreea Fulger <andreea.fulger@parrot.com> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: Fix stride for NV12/NV21 + https://bugzilla.gnome.org/show_bug.cgi?id=707758 + +2013-09-07 16:37:03 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/matroska/matroska-read-common.c: + matroskademux: fix leaking buffer and caps + https://bugzilla.gnome.org/show_bug.cgi?id=707688 + +2013-09-05 19:46:37 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/udp/gstudpsrc.c: + udpsrc: fix build on win32 + gstudpsrc.c:855:15: error: #if with no expression + +2013-09-04 15:50:42 +0200 Wim Taymans <wim.taymans@collabora.co.uk> * gst/avi/gstavidemux.c: - avidemux: unmap buffer - https://bugzilla.gnome.org/show_bug.cgi?id=704951 + avidemux: handle unseekable streams + Handle streams that we can't seek in and ignore them in the + seek logic. -2013-07-26 16:02:01 +0200 Matej Knopp <matej.knopp@gmail.com> +2013-09-04 15:25:39 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/matroska/matroska-demux.c: - matroskademux: fix memory leak in check_subtitle_buffer - https://bugzilla.gnome.org/show_bug.cgi?id=704921 + * gst/avi/gstavidemux.c: + avidemux: only check video compression for video streams + Or else we might deref a stream with a NULL strf.vids and segfault -2013-06-20 11:31:22 +0200 Wim Taymans <wim.taymans@collabora.co.uk> +2013-06-18 13:27:20 +0100 Alex Ashley <bugzilla@ashley-family.net> + * gst/isomp4/atoms.c: + * gst/isomp4/fourcc.h: + * gst/isomp4/ftypcc.h: + * gst/isomp4/gstrtpxqtdepay.c: * gst/isomp4/qtdemux.c: - qtdemux: handle SEGMENT query + * gst/isomp4/qtdemux_fourcc.h: + * gst/isomp4/qtdemux_types.c: + qtdemux: Add support for the avc3 sample entry format of the AVC file format + Amendment 2 of ISO/IEC 14496-15 (AVC file format) is defining a new + structure for fragmented MP4 called "avc3". The principal difference + between AVC1 and AVC3 is the location of the codec initialisation + data (e.g. SPS, PPS). In AVC1 this data is placed in the initial + MOOV box (moov.trak.mdia.minf.stbl.stsd.avc1) but in AVC3 this data + goes in the first sample of every fragment (i.e. the first sample in + each mdat box). The principal reason for avc3 is to make it easier + for client implementations, because it removes the requirement to + insert the SPS+PPS in to the decoder pipeline every time there is a + representation change. + This commit adds support for the "avc3" atom, which is almost identical + to the "avc1" atom, except it does not contain any SPS or PPS data. + https://bugzilla.gnome.org/show_bug.cgi?id=702004 + +2013-09-04 00:27:50 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> -2013-07-28 18:09:33 +0200 Sebastian Dröge <slomo@circular-chaos.org> + * gst/videomixer/videomixer2.c: + videomixer: Don't set EOS to FALSE when the collectpad *is* EOS + https://bugzilla.gnome.org/show_bug.cgi?id=707238 - * ext/flac/gstflacenc.c: - flacenc: Fix handling of image tags - The caps should be used to get the mimetype and there is - only an info structure for the GstSample if the image-type - is not NONE. +2013-09-03 17:32:41 +0200 Matej Knopp <matej.knopp@gmail.com> -2013-07-28 18:04:32 +0200 Sebastian Dröge <slomo@circular-chaos.org> + * gst/audioparsers/gstflacparse.c: + flacparse: cleanup on error after state change + https://bugzilla.gnome.org/show_bug.cgi?id=707229 - * ext/flac/gstflacenc.c: - flacenc: Don't crash if there is no image tag information - https://bugzilla.gnome.org/show_bug.cgi?id=705018 +2013-09-03 11:23:24 +0200 Sebastian Dröge <slomo@circular-chaos.org> -2013-04-15 19:53:28 -0400 Olivier Crête <olivier.crete@collabora.com> + * gst/udp/gstudpsrc.c: + * gst/udp/gstudpsrc.h: + udpsrc: Bind to multicast addresses on non-Windows systems + On Windows it's not possible to bind to a multicast address + but the OS will make sure to filter out all packets that + arrive not for the multicast address the socket joined. + On Linux and others it is necessary to bind to a multicast + address to let the OS filter out all packets that are received + on the same port but for different addresses than the multicast + address + And deprecate the multicast-group property and replace it with the + address property. + https://bugzilla.gnome.org/show_bug.cgi?id=707042 + +2013-09-03 10:10:01 +0200 Matej Knopp <matej.knopp@gmail.com> - * sys/v4l2/gstv4l2src.c: - v4l2src: Disable renegotiation in the negotiate method - This way, we don't block the initial negotiation. - Thanks to Jeremy Whiting for doing all the testing. - https://bugzilla.gnome.org/show_bug.cgi?id=695981 + * gst/audioparsers/gstflacparse.c: + flacparse: Free GstBaseParseFrame if pushing a header failed -2013-04-15 19:46:12 -0400 Olivier Crête <olivier.crete@collabora.com> +2013-09-02 16:02:37 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * sys/v4l2/gstv4l2src.c: - Revert "v4l2: disable renegotiation" - This reverts commit d1b26e1d594ab2b63324e43a36330475e98cdf18. - This causes the initial negotiation to never happen if a reconfigure - event is received after gst_base_src_start_complete() but before the loop - starts. - https://bugzilla.gnome.org/show_bug.cgi?id=695981 + * gst/udp/gstudpsrc.c: + udpsrc: Refactor address resolval into its own function -2013-07-22 18:00:16 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> +2013-09-02 23:00:29 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/deinterlace/gstdeinterlace.c: - deinterlace: fix on-the-fly changing of "mode" and "fields" properties - We call setcaps() to reconfigure ourselves, but we need to pass - the current *sink* caps, not the source caps then. Also fix a - caps leak. - https://bugzilla.gnome.org/show_bug.cgi?id=641599 + * gst/replaygain/gstrganalysis.c: + replaygain: fix taglist leak in rganalysis + And add some FIXMEs. -2013-07-19 15:24:08 +0200 Peter Korsgaard <jacmet@sunsite.dk> +2013-09-02 22:50:58 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/udp/gstdynudpsink.c: - * gst/udp/gstmultiudpsink.c: - (dyn|multi)udpsink: unbreak on !IPv6 systems after 130268bc (Bind socket before using it) - The g_socket functions only touch the error argument on errors, so clear - err back to NULL in case g_socket_new (G_SOCKET_FAMILY_IPV6) failed, as - we check for err != NULL later on to know if g_socket_bind() failed, - otherwise we errously fail on systems without IPv6 support. - https://bugzilla.gnome.org/show_bug.cgi?id=704553 + * tests/check/elements/rganalysis.c: + tests: rganalysis: rename function for clarity -2013-01-28 12:23:41 +0100 Marc Leeman <marc.leeman@gmail.com> +2013-03-18 14:32:07 +0100 Christoph Reiter <reiter.christoph@gmail.com> - * gst/rtp/gstrtph263depay.c: - * gst/rtp/gstrtph263pdepay.c: - * gst/rtp/gstrtph264depay.c: - * gst/rtp/gstrtpmp4vdepay.c: - rtp: remove payload requirements from selected depayloaders - encoding name is required in the caps and is a better fit for autoplugging than - the pt value. Hardware manufacturers have a bad habit of skimming through RFCs - and in this case; use unassigned numbers for encoders instead of dynamic - numbers. - In essence, this patch will add support for a lot of Bosch hardware encoders - without breaking autoplugging. - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=639292 + * tests/check/elements/rganalysis.c: + tests: fix skipped rganalysis tests + In 0.10 elements would post tag messages on the bus + directly, and rganalysis would only post a tag message + when it changed tags. In 1.0, only sinks post tag + messages when they receive the serialised tag event. + This means that we get an additional tag message on + the bus now where we didn't expect one before. + https://bugzilla.gnome.org/show_bug.cgi?id=695090 -2013-01-28 12:41:04 +0100 Wim Taymans <wim.taymans@collabora.co.uk> +2013-09-02 11:46:52 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * gst/rtp/gstrtpL16depay.c: - * gst/rtp/gstrtpac3depay.c: - * gst/rtp/gstrtpamrdepay.c: - * gst/rtp/gstrtpbvdepay.c: - * gst/rtp/gstrtpceltdepay.c: - * gst/rtp/gstrtpdvdepay.c: - * gst/rtp/gstrtpg722depay.c: - * gst/rtp/gstrtpg723depay.c: - * gst/rtp/gstrtpg726depay.c: - * gst/rtp/gstrtpg729depay.c: - * gst/rtp/gstrtpgsmdepay.c: - * gst/rtp/gstrtpgstdepay.c: - * gst/rtp/gstrtph263depay.c: - * gst/rtp/gstrtpilbcdepay.c: - * gst/rtp/gstrtpj2kdepay.c: - * gst/rtp/gstrtpjpegdepay.c: - * gst/rtp/gstrtpmp1sdepay.c: - * gst/rtp/gstrtpmp2tdepay.c: - * gst/rtp/gstrtpmp4adepay.c: - * gst/rtp/gstrtpmp4gdepay.c: - * gst/rtp/gstrtpmpadepay.c: - * gst/rtp/gstrtpmparobustdepay.c: - * gst/rtp/gstrtpmpvdepay.c: - * gst/rtp/gstrtppcmadepay.c: - * gst/rtp/gstrtppcmudepay.c: - * gst/rtp/gstrtpqcelpdepay.c: - * gst/rtp/gstrtpqdmdepay.c: - * gst/rtp/gstrtpsirendepay.c: - * gst/rtp/gstrtpspeexdepay.c: - * gst/rtp/gstrtpsv3vdepay.c: - * gst/rtp/gstrtptheoradepay.c: - * gst/rtp/gstrtpvorbisdepay.c: - * gst/rtp/gstrtpvrawdepay.c: - rtpdepay: remove payload type restrictions - Remove the pt restrictions for all the depayloaders that have an - encoding-name. We can use this to autoplug decoders. - Remove the encoding-name for all the payloaders with a fixed payload - type. - We now either have an encoding-name or a pt in the sinkpad caps of - a depayloader. - See https://bugzilla.gnome.org/show_bug.cgi?id=639292 - Conflicts: - gst/rtp/gstrtpmp2tdepay.c - gst/rtp/gstrtpvp8depay.c + * gst/audioparsers/gstflacparse.c: + flacparse: Properly propagate downstream flow returns upstream + https://bugzilla.gnome.org/show_bug.cgi?id=707229 -2013-07-17 17:11:44 +0200 Arnaud Vrac <avrac@freebox.fr> +2013-09-01 21:18:38 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/matroska/matroska-demux.c: - mastrokademux: do not push discont buffers if they aren't discont - Unset the discont flag instead of posssibly pushing a buffer with - a flag that's still set. - https://bugzilla.gnome.org/show_bug.cgi?id=682110 + * ext/shout2/gstshout2.c: + * gst/avi/gstavi.c: + * gst/isomp4/isomp4-plugin.c: + * gst/rtsp/gstrtsp.c: + * sys/sunaudio/gstsunaudio.c: + * sys/v4l2/gstv4l2.c: + Don't use setlocale in plugins() + Only apps should call setlocale(), not libraries. -2013-07-14 12:50:13 +1200 Douglas Bagnall <douglas@halo.gen.nz> +2013-08-29 13:15:15 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * tests/examples/spectrum/spectrum-example.c: - level: Fix the spectrum example for 1.0 - The "message" property has been replaced by "post-messages". - Pre-patch output: - (test_spectrum:23101): GLib-GObject-WARNING **: g_object_set_valist: - object class `GstSpectrum' has no property named `message' - New spectrum message, endtime 0:00:00.100000000 - (test_spectrum:23101): GStreamer-CRITICAL **: - gst_value_list_get_value: assertion `GST_VALUE_HOLDS_LIST (value)' failed - [...] - Post-patch: - New spectrum message, endtime 0:00:00.100000000 - band 0 (freq 400): magnitude -65.988777 dB phase 1.533397 - band 1 (freq 1200): magnitude -65.545563 dB phase -0.780900 - band 2 (freq 2000): magnitude -64.791946 dB phase -0.799611 - band 3 (freq 2800): magnitude -64.556175 dB phase -0.063615 - [...] - https://bugzilla.gnome.org/show_bug.cgi?id=704179 + * gst/rtp/gstrtpmpvpay.c: + rtpmpvpay: Fix RTP buffer allocation in rtpmpvpay + RTP buffer allocation should not be done with padding for the specific MPEG2 + header as the padding is done at the end of the buffer and the last byte is + the size of the padding. + https://bugzilla.gnome.org/show_bug.cgi?id=706970 -2013-07-13 20:56:26 +0200 Matej Knopp <matej.knopp@gmail.com> +2013-08-28 10:51:32 +0200 Bernhard Miller <bernhard.miller@streamunlimited.com> - * gst/audioparsers/gstaacparse.c: - aacparse: be less verbose when parsing LOAS streams - https://bugzilla.gnome.org/show_bug.cgi?id=704162 + * gst/autodetect/gstautovideosink.c: + * gst/autodetect/gstautovideosink.h: + autovideosink: add sync property + https://bugzilla.gnome.org/show_bug.cgi?id=706955 -2013-07-12 12:31:39 +0200 Wim Taymans <wim.taymans@collabora.co.uk> +2013-08-28 07:15:00 +0200 Bernhard Miller <bernhard.miller@streamunlimited.com> - * ext/pulse/pulsesink.h: - sink: alaw/mulaw caps don't have a layout property + * gst/autodetect/gstautoaudiosink.c: + * gst/autodetect/gstautoaudiosink.h: + autoaudiosink: introduce sync property + https://bugzilla.gnome.org/show_bug.cgi?id=706955 -2013-07-12 12:27:53 +0200 Wim Taymans <wim.taymans@collabora.co.uk> +2013-08-27 17:33:40 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> - * ext/pulse/pulseutil.c: - pulse: relax mulaw and alaw format checks - The audio library considers them as encoded formats and does not fill in the - sample width. The audio ringbuffers identifies the format as alaw/mulaw and that - is always 8 bits. + * gst/isomp4/qtdemux.c: + qtdemux: push buffers after segment stop until reaching a keyframe + This should make decoders able to precisely push buffers until the stop + time in case they need the next keyframe to do it. + Also, according to gst_segment_clip, it should only push a buffer that + the starting ts is strictly smaller than the segment stop, so we change + the min < comparison for <= + +2013-08-28 13:26:47 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * configure.ac: + Back to development -=== release 1.0.8 === +=== release 1.1.4 === -2013-07-12 11:14:06 +0100 Tim-Philipp Müller <tim@centricular.net> +2013-08-28 12:52:25 +0200 Sebastian Dröge <slomo@circular-chaos.org> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/gst-plugins-good-plugins.hierarchy: * docs/plugins/inspect/plugin-1394.xml: * docs/plugins/inspect/plugin-aasink.xml: * docs/plugins/inspect/plugin-alaw.xml: @@ -339,6 +601,7 @@ * 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: @@ -389,991 +652,1012 @@ * docs/plugins/inspect/plugin-ximagesrc.xml: * docs/plugins/inspect/plugin-y4menc.xml: * gst-plugins-good.doap: + * gst/audiofx/audiopanoramaorc-dist.c: * win32/common/config.h: - Release 1.0.8 + Release 1.1.4 -2013-07-09 15:34:04 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> +2013-08-28 12:52:16 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * sys/osxvideo/osxvideosink.h: - * sys/osxvideo/osxvideosink.m: - osxvideosink: defer the window handle setup to the main thread + * 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 -2013-07-09 15:33:18 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> +2013-08-28 12:32:10 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * sys/osxvideo/osxvideosink.m: - osxvideosink: default to the main in case we are not setup yet + * po/pt_BR.po: + po: update translations -2013-07-07 22:16:05 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> +2013-08-27 15:25:16 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/osxvideo/osxvideosink.m: - osxvideosink: close the internal window correctly + * gst/matroska/matroska-mux.c: + matroska-mux: remove framerate restriction + Remove the framerate restriction on the caps. -2013-07-07 21:14:22 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> +2013-08-27 09:38:16 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/osxvideo/osxvideosink.h: - * sys/osxvideo/osxvideosink.m: - osxvideosink: only create the NS app thread for Cocoa once - The helper thread for Cocoa, in case no NS run loop is running, - should be started only once and shared across all the instances - running + * gst/rtpmanager/rtpsession.c: + session: only update next check time when reconsidering + Don't update the next RTCP check time in all cases but only when we + reconsidered. This avoids delaying sending a full RTCP packet when we + are doing early feedback. -2013-06-05 17:02:49 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> +2013-08-27 09:37:33 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/osxvideo/cocoawindow.m: - * sys/osxvideo/osxvideosink.m: - osxvideosink: fix support in VM's without hardware acceleration + * gst/rtpmanager/rtpsession.c: + session: add more debug -2013-04-15 14:32:46 +0000 Andoni Morales Alastruey <ylatuya@gmail.com> +2013-08-27 09:34:46 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/osxvideo/osxvideosink.m: - osxvideosink: fix segfault accessing osxwindow when not set yet + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpsession.c: + jitterbuffer: fix types of the retransmission event -2013-07-09 12:42:17 +0200 Sebastian Dröge <slomo@circular-chaos.org> +2013-08-27 09:33:03 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/videomixer/videomixer2.c: - videomixer: Fix handling of buffers without a duration - We'll have to pop buffer from collectpads and store it - internally only to get the timestamp of the next buffer. - If we continue to keep it in collectpads, no new buffer - to calculate the end time will ever arrive. - https://bugzilla.gnome.org/show_bug.cgi?id=703743 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: only timeout EXPECTED timers on gap + Only timeout the EXPECTED timers when we detect a large seqnum gap. -2013-07-09 11:53:07 +0200 Sebastian Dröge <slomo@circular-chaos.org> +2013-08-26 13:47:53 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * configure.ac: + configure.ac: Don't set BZ2_LIBS if bz2 is not found + +2013-08-26 11:50:27 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + rtsession: fix locking + We need to take the session lock when getting and manipulating the + source. + +2013-08-26 11:50:13 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + rtpsession: add some more debug + +2013-08-20 22:12:03 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> * gst/videomixer/videomixer2.c: - videomixer: Fix negotiation with 0/1 framerates - https://bugzilla.gnome.org/show_bug.cgi?id=703743 + videomixer: don't send flush_stop twice. + If we get flush start and a seek we need to only send flush_stop once. + More info at #706441 -2013-07-09 11:17:59 +0200 Jonas Holmberg <jonashg@axis.com> +2013-08-23 15:56:43 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/matroska/matroska-demux.c: - matroskademux: Unlock stream lock after use - Stream lock of sink pad was not unlocked after non-updating seek. + * gst/multipart/multipartdemux.c: + * gst/multipart/multipartdemux.h: + multipartdemux: propagate discont -2013-07-08 14:09:37 +0200 Sebastian Dröge <slomo@circular-chaos.org> +2013-08-23 15:49:47 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/rtp/gstrtph263ppay.c: - rtph263ppay: Don't pass upstream filter caps to downstream - Downstream usually can't accept video/x-h263 but only application/x-rtp, - so we would always get an empty intersection here. - https://bugzilla.gnome.org/show_bug.cgi?id=702632 + * gst/multipart/multipartdemux.c: + multipartdemux: remove dynamic sourcpads when going from PAUSED to READY -2013-06-25 21:16:38 +0200 Alban Browaeys <prahal@yahoo.com> +2013-08-23 15:29:28 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/flv/gstflvdemux.c: - flvdemux: Add flvversion 1 to the flash-video caps - This allows using avdec_flv which requires this field to be - present in the caps. FLV only supports flash-video version 1 - right now. - https://bugzilla.gnome.org/show_bug.cgi?id=703076 + * gst/multipart/multipartdemux.c: + * gst/multipart/multipartdemux.h: + multipartdemux: timestamp output buffers based on first input buffer that provided bytes not last + https://bugzilla.gnome.org/show_bug.cgi?id=637754 -2013-06-27 07:40:29 +0200 David Svensson Fors <davidsf@axis.com> +2013-08-23 15:47:25 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/rtp/gstrtph264pay.c: - rtph264pay: avoid double buffer unmap on error - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703171 + * gst/rtpmanager/gstrtprtxqueue.c: + * gst/rtpmanager/gstrtprtxqueue.h: + rtxqueue: add property to configure queue size -2013-06-20 15:35:11 +0200 Wim Taymans <wim.taymans@collabora.co.uk> +2013-08-23 12:07:55 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/v4l2/gstv4l2.c: - v4l2: don't redefine the PERFORMANCE debug variable - It is already defined in core. - fixes https://bugzilla.gnome.org/show_bug.cgi?id=702732 + * tests/examples/rtp/client-H264-rtx.sh: + * tests/examples/rtp/server-VTS-H264-rtx.sh: + tests: add retransmission example -2013-06-20 14:43:47 +0200 Wim Taymans <wim.taymans@collabora.co.uk> +2013-08-23 11:55:02 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/rtsp/gstrtspsrc.c: - rtspsrc: fix race in state change to paused - When we go to paused, we first flush the connection and then send the pause - command. As a result of the flushing, the scheduled paused command can get - lost. Wait until the connection is completely flushed and the rtsp task is - waiting before issuing the paused or playing request. - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702705 + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + rtpbin: proxy jitterbuffer do-retransmission property -2013-06-15 12:29:31 +0200 Jens Georg <mail@jensge.org> +2013-08-23 11:17:45 +0200 Michael Olbrich <m.olbrich@pengutronix.de> - * gst/rtp/gstrtpmp2tdepay.c: - rtpmp2tdepay: accept mislabelled streams from GStreamer 0.10 as well - The mp2t payloader in 0.10 mislabelled the streams as MP2T-ES - instead of MP2T, so accept that as well for compatibility reasons. - https://bugzilla.gnome.org/show_bug.cgi?id=702457 - Conflicts: - gst/rtp/gstrtpmp2tdepay.c + * gst/avi/gstavimux.c: + avimux: unmap the correct buffer + The audio buffer was mapped so unmap it and not the video buffer + https://bugzilla.gnome.org/show_bug.cgi?id=706642 -2013-06-07 15:38:25 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-08-18 23:32:22 -0400 Olivier Crête <olivier.crete@collabora.com> - * ext/libpng/Makefile.am: - png: Link with libgstbase for GstByteReader and GstAdapter + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesink.h: + pulsesink: Add property to find out the device currently in use + https://bugzilla.gnome.org/show_bug.cgi?id=590768 -2013-06-14 14:07:42 +0200 Bruno Gonzalez <stenyak@gmail.com> +2013-08-18 23:31:15 -0400 Olivier Crête <olivier.crete@collabora.com> - * gst/matroska/matroska-demux.c: - matroskademux: Don't unlock stream lock without locking it first - https://bugzilla.gnome.org/show_bug.cgi?id=702167 + * ext/pulse/pulsesink.c: + pulsesink: De-duplicate code to get the current sink input info + https://bugzilla.gnome.org/show_bug.cgi?id=590768 -2013-06-11 12:25:46 +0200 Sebastian Dröge <slomo@circular-chaos.org> +2013-08-18 22:27:37 -0400 Olivier Crête <olivier.crete@collabora.com> - * gst/flv/gstflvdemux.c: - flvdemux: Don't forward CAPS events from upstream - Just use the default pad event handler. - https://bugzilla.gnome.org/show_bug.cgi?id=701976 + * ext/pulse/pulsesink.c: + pulsesink: Implement changing the device while playing + https://bugzilla.gnome.org/show_bug.cgi?id=590768 -2013-06-05 12:12:53 +0200 Wim Taymans <wim.taymans@collabora.co.uk> +2013-08-18 23:32:22 -0400 Olivier Crête <olivier.crete@collabora.com> - * gst/udp/gstudpsink.c: - udpsink: avoid leaking the host - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701586 + * ext/pulse/pulsesrc.c: + * ext/pulse/pulsesrc.h: + pulsesrc: Add property to find out the device currently in use + https://bugzilla.gnome.org/show_bug.cgi?id=590768 -2013-04-24 16:24:25 +0200 Wim Taymans <wim.taymans@collabora.co.uk> +2013-08-18 23:31:15 -0400 Olivier Crête <olivier.crete@collabora.com> - * gst/rtp/gstrtpvrawdepay.c: - vrawdepay: return output buffer from process - Return the output buffer from the process function instead of pushing - it ourselves. This way, the subclass can actually deal with the return - value of the push. - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=693727 + * ext/pulse/pulsesrc.c: + pulsesrc: De-duplicate code to get the current source output info + https://bugzilla.gnome.org/show_bug.cgi?id=590768 -2013-05-27 22:43:25 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> +2013-08-18 22:27:37 -0400 Olivier Crête <olivier.crete@collabora.com> - * gst/videomixer/videomixer2.c: - videomixer: Maintain z-order when new pad are added - https://bugzilla.gnome.org/show_bug.cgi?id=701109 + * ext/pulse/pulsesrc.c: + pulsesrc: Implement changing the device while playing + https://bugzilla.gnome.org/show_bug.cgi?id=590768 -2013-05-28 14:31:31 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-08-22 14:55:14 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * ext/jpeg/gstjpegenc.c: - jpegenc: Fix for single-includes that are not in 1.0 yet + * configure.ac: + configure: Fix bz2 configure check for Windows + Due to function decorations on Windows AC_CHECK_LIB can't be used to check for bz2. + https://bugzilla.gnome.org/show_bug.cgi?id=465924 -2013-02-14 14:13:27 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> +2013-02-22 20:57:00 +0900 Akihiro Tsukada <atsukada@users.sourceforge.net> - * ext/jpeg/gstjpegdec.c: - jpegdec: remove sof-marker from template caps for now - Now that the subset check actually works, this breaks - things with demuxers that don't put a "sof-marker" - in their jpeg caps, and we don't have a good parser - to plug either yet. + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesink.h: + * ext/pulse/pulseutil.c: + * ext/pulse/pulseutil.h: + pulsesink: Add support for AAC pass-through + https://bugzilla.gnome.org/show_bug.cgi?id=694445 -2013-02-13 12:32:10 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-06-24 17:29:37 +0200 Kishore Arepalli <kishore.arepalli@gmail.com> - * ext/jpeg/gstjpegenc.c: - * ext/jpeg/gstjpegenc.h: - jpegenc: Put the SOF marker into the caps + * ext/gdk_pixbuf/gstgdkpixbufoverlay.c: + gdkpixbufoverlay: crashes if any property changes during playback when location property is not set + https://bugzilla.gnome.org/show_bug.cgi?id=702988 -2013-02-13 12:02:46 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-08-21 14:54:26 -0400 Olivier Crête <olivier.crete@collabora.com> - * gst/rtp/gstrtpamrdepay.c: - * tests/check/elements/rtp-payloading.c: - rtp-payloading: Fix unit test caps and AMR depayloader sink template caps - Fields were missing from the actual caps, or too many fields - existed in the template caps. + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesink.h: + * ext/pulse/pulsesrc.c: + * ext/pulse/pulseutil.h: + pulse: Share static caps definition between src and sink + The src was also missing 24-bit sample formats -2013-02-13 11:53:01 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-08-21 16:53:59 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * tests/check/elements/aacparse.c: - aacparse: Fix caps used in the unit test - The AAC caps passed were incomplete. + * gst/rtpmanager/gstrtprtxqueue.c: + * gst/rtpmanager/gstrtprtxqueue.h: + rtx: various improvements + Use locking + Don't push from the event handler, collected packets in a queue and push from + the chain function. + Clear queues on shutdown. -2013-02-13 11:49:40 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-08-21 16:50:59 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * tests/check/elements/wavpackenc.c: - * tests/check/elements/wavpackparse.c: - wavpack: Fix unit tests, width is now called depth in the caps in 1.0 + * gst/rtpmanager/gstrtpsession.c: + session: generate events correctly + Do correct shifting of the bitmask for lost packets. -2013-05-23 18:10:10 +0200 Sebastian Dröge <slomo@circular-chaos.org> +2013-08-21 16:47:40 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/udp/gstdynudpsink.c: - * gst/udp/gstmultiudpsink.c: - (dyn|multi)udpsink: Bind socket before using it - https://bugzilla.gnome.org/show_bug.cgi?id=700878 + * gst/rtpmanager/gstrtpmanager.c: + rtp: register rtx element better -2013-05-17 12:37:59 +0200 Michael Olbrich <m.olbrich@pengutronix.de> +2013-08-21 16:32:50 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * gst/rtp/gstrtpmp4apay.c: - rtpmp4apay: clear config buffer before using it - This is necessary because parts of the memory are only modified with "|=" - https://bugzilla.gnome.org/show_bug.cgi?id=700514 + * sys/directsound/gstdirectsoundsink.c: + directsoundsink: WAVEFORMATEX is unsigned for 8 bit integers, and signed for others + Probably fixes + https://bugzilla.gnome.org/show_bug.cgi?id=705477 -2013-05-14 15:23:08 +0200 Arnaud Vrac <avrac@freebox.fr> +2013-08-21 13:03:34 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/isomp4/qtdemux.c: - qtdemux: set alac caps using info from codec buffer - The samplerate field in the STSD atom is not right for some ALAC files - (usually when audio is 96kHz/24bits), so the audio caps must be - extracted from the codec data. - https://bugzilla.gnome.org/show_bug.cgi?id=700382 + * ext/jpeg/gstjpegenc.c: + jpegenc: don't ignore return value from _finish_frame() + gst_video_encoder_finish_frame() will return FLOW_OK here if + there's no output buffer. -2013-05-15 11:13:12 +0200 Arnaud Vrac <avrac@freebox.fr> +2013-08-21 12:56:35 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/avi/gstavidemux.c: - avidemux: do not push discont buffers if they aren't discont - https://bugzilla.gnome.org/show_bug.cgi?id=682110 + * gst/rtp/gstrtpjpegdepay.c: + jpegdepay: add some more debug -2013-04-17 16:54:22 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> +2013-08-21 12:10:00 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/isomp4/qtdemux.c: - qtdemux: do not push discont buffers if they aren't discont - qtdemux takes its buffers from a GstAdapter. Those buffers are created - from the larger buffer that it obtained from upstream and they carry - the same flags, including DISCONT if it is set. In these cases, all - buffers that qtdemux is going to push would be marked as DISCONT. - This scenario can make parsers/decoders flush on every buffer leading - to no decoding at all hapenning. This patch prevents this by unsetting - the flag if it shouldn't be set. + * gst/rtp/gstrtpgstdepay.c: + * gst/rtp/gstrtpgstdepay.h: + rtpgstdepay: only push events when they changed + Keep track of the STREAM_START and TAG events and only push them + when they changed. -2013-04-15 17:37:01 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> +2013-08-21 10:52:59 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/osxvideo/osxvideosink.h: - * sys/osxvideo/osxvideosink.m: - osxvideosink: fix setting window handle after transition - The destroyed flag was not reset properly and it's also not needed - as we can check osxwindow != NULL + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: taglists should not be merged in 1.0 -2013-05-07 16:32:03 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-08-21 10:28:50 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * ext/jpeg/gstjpegdec.c: - jpegdec: By default assume that we're working on non-packetized input - Only detecting this in set_format() does not work because we might - not get any caps at all, e.g. from filesrc. + * gst/rtp/gstrtpgstdepay.c: + rtpgstdepay: flush on FLUSH_STOP event -2013-05-07 16:30:59 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-08-21 10:03:52 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * ext/libpng/gstpngdec.c: - pngdec: Implement parsing functionality - This allows to plug pngdec directly without a parser if that - is desired. - Parsing code is based on pngparse. + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: reset on state change + Do full reset on state change to READY -2013-05-01 15:49:45 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-08-21 09:55:20 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/rtp/gstrtph264pay.c: - rtph264pay: If the adapter is empty on EOS don't try to map its content - https://bugzilla.gnome.org/show_bug.cgi?id=699314 + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: reset on FLUSH_STOP + Clear the adapter and pending buffer list on FLUSH_STOP. -2013-04-30 14:36:38 +0200 Ognyan Tonchev <ognyan@axis.com> +2013-08-21 09:39:30 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/matroska/matroska-demux.c: - matroskademux: add stream-format=raw to aac caps - https://bugzilla.gnome.org/show_bug.cgi?id=699303 + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: don't use clock for config interval + We can't use the clock to time our config-interval because we are not + live (or there might not be a clock or the clock might not be running). + Instead just simply take the timestamp diff. -2013-03-04 15:49:06 -0800 David Schleef <ds@schleef.org> +2013-08-21 09:33:04 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * ext/libpng/gstpngenc.c: - pngenc: unmap source frame when done to fix memory leak - https://bugzilla.gnome.org/show_bug.cgi?id=699260 + * gst/rtp/gstrtpgstpay.h: + rtpgstay: don't use // comments -2013-04-27 11:16:54 +0100 Tim-Philipp Müller <tim@centricular.net> +2013-08-08 11:55:22 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> - * gst/udp/gstudpsrc.c: - udpsrc: add includes to get socklen_t defined on Windows - https://bugzilla.gnome.org/show_bug.cgi?id=692400 + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Fix response argument in handle-request signal -2013-02-15 14:11:36 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> +2013-08-08 11:54:41 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> - * gst/udp/gstudpsrc.c: - udpsrc: use g_socket_set_option() to set buffer size with newer GLib versions - So we have to worry less about portability. - https://bugzilla.gnome.org/show_bug.cgi?id=692400 - Conflicts: - gst/udp/gstudpsrc.c + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: Add sdes property and proxy it to rtpbin -=== release 1.0.7 === +2013-08-07 09:47:35 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> -2013-04-26 12:52:17 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpgstpay.h: + Send a stream-start whenever we send tags This is to make sure tags are cleared on the client if the stream-start was previously lost, otherwise, the client may end up with a merged taglist of multiple songs - * ChangeLog: - * NEWS: - * RELEASE: - * configure.ac: - * gst-plugins-good.doap: - * gst/deinterlace/tvtime-dist.c: - * gst/deinterlace/tvtime-dist.h: - * gst/videobox/gstvideoboxorc-dist.c: - * gst/videobox/gstvideoboxorc-dist.h: - * gst/videomixer/blendorc-dist.c: - * gst/videomixer/blendorc-dist.h: - * win32/common/config.h: - Release 1.0.7 +2013-07-25 21:12:05 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> -2013-04-26 12:52:08 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpgstpay.h: + rtpgstpay: Add a config-interval property to resend the caps/tags at a regular interval This is useful in case the packet containing the inlined caps was lost or if new client joins an already running RTP stream and they missed the previous tag events. This also makes the payloader keep a list of merged tags so the retransmitted tag event contains all previously received. A STREAM_START event will flush the list of tags. - * 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 +2013-07-25 21:10:10 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> -2013-03-06 13:17:54 +0000 Tom Greenwood <tgreenwood@Toms-MacBook-Pro.local> + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: Refactor the setcaps and use new method to send arbitrary caps at any time - * ext/vpx/gstvp8enc.c: - vp8enc: Fix for divide by zero when using 0/1 framerate - https://bugzilla.gnome.org/show_bug.cgi?id=695709 +2013-07-25 21:03:34 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> -2012-10-01 09:29:21 -0300 Diogo Carbonera Luvizon <diogo.luvizon@ensitec.com.br> + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: Do not flush events for stream-start and avoid conflict between event and pending inline caps - * sys/v4l2/gstv4l2object.c: - v4l2: save the format correctly - If TRY_FMT is not implemented, gst_v4l2_object_get_nearest_size will - use S_FMT and will change the device's operation mode. To save the - old device mode we need to set the type field or else it will fail - to save the previous format. - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=685209 +2013-07-25 20:54:50 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> -2013-04-22 10:19:29 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpgstpay.h: + rtpgstpay: Add a create_from_adapter API and use a list of GstBufferList This is necessary to fix event/caps sending. If we send a STREAM_START packet, it will cause an error because the stream didn't receive its caps and new-segment events, so we must wait for the first buffer before sending the stream-start event buffer. However, the caps will be sent at the same time and so the 'inline caps' will be set for the event. We need to be able to payload individual packets (data, caps or events) and only send them when we call flush. - * gst/rtp/gstrtpjpegdepay.c: - rtpjpegdepay: Drop frame if it's less than 2 bytes large - https://bugzilla.gnome.org/show_bug.cgi?id=677560 +2013-07-25 17:56:38 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> -2013-04-18 09:37:30 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpgstdepay.c: + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: Add etype=4 for payloading GST_EVENT_STREAM_START - * sys/osxaudio/gstosxaudioringbuffer.h: - osxaudio: Include gstaudioringbuffer.h to fix compilation in 1.0 +2013-07-25 17:52:16 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> -2013-04-17 10:10:46 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: Fix typo, GST_EVENT_CUSTOM_BOTH has etype of 3 - * configure.ac: - osxaudio: Fix configure check for osxaudio plugin +2013-08-20 14:36:59 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-17 21:05:14 +0200 Philippe Normand <philn@igalia.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: handle EOS + When the queue is empty, and we received EOS, pause and push an EOS + event downstream. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=706387 - * sys/osxaudio/gstosxaudiosink.c: - osxaudiosink: channel-mask configuration fixes - Set channel-mask according to sink's layout in case of stereo layout. - Also initialize and reset the mask when an unrecognized channel is detected. - https://bugzilla.gnome.org/show_bug.cgi?id=698224 +2013-08-20 10:26:15 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-17 20:24:48 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: update docs - * sys/osxaudio/gstosxcoreaudiocommon.h: - osxaudio: Fix merge conflicts +2013-08-20 10:25:17 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-17 09:50:43 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: update all timers + Keep looping over all registered timers so that we can mark them lost instead of + stopping as soon as we find the timer for the current seqnum. - * sys/osxaudio/gstosxaudioringbuffer.c: - osxaudioringbuffer: First check the type, then cast +2013-08-20 08:55:50 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-16 22:46:00 +0900 Takashi Nakajima <ted.nakajima@gmail.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: remove unused variables - * sys/osxaudio/gstosxaudioringbuffer.c: - * sys/osxaudio/gstosxaudiosink.h: - osxaudio: use GST_IS_OSX_AUDIO_SINK in ring buffer. +2013-08-19 21:10:00 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-10 21:06:16 +0900 Takashi Nakajima <ted.nakajima@gmail.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: reorganize timer handling + Restructure handling of incomming packet and the gap with the expected seqnum + and register all timers from the _chain function. + Convert a timer to a LOST packet timer when the max amount of retransmission + requests has been reached. - * sys/osxaudio/gstosxaudioringbuffer.c: - * sys/osxaudio/gstosxaudiosink.c: - * sys/osxaudio/gstosxaudiosink.h: - osxaudio: call set_channel_positions() in osxaudioringbuffer acquire() +2013-08-19 21:37:44 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-12 12:18:04 -0700 Todd Agulnick <todd@agulnick.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: refactor packet spacing calculation - * sys/osxaudio/gstosxaudioringbuffer.c: - osxaudio: use GST_AUDIO_INFO_* accessors - Changes include the following: - * Update classname references - * Replace GST_BOILERPLATE_FULL with G_DEFINE_TYPE - * Use new GstAudioInfo struct and methods - * Use new buffer memory allocation scheme - Conflicts: - sys/osxaudio/gstosxaudioringbuffer.c +2013-08-19 21:34:38 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-12 11:51:46 -0700 Todd Agulnick <todd@agulnick.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: keep track of last seqnum and dts - * sys/osxaudio/gstosxcoreaudiocommon.h: - * sys/osxaudio/gstosxcoreaudiohal.c: - osxaudio: adjust for changes to glib mutex api. +2013-08-19 21:29:49 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-10 01:21:49 +0900 Takashi Nakajima <ted.nakajima@gmail.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: small cleanups - * sys/osxaudio/gstosxaudiosink.c: - * sys/osxaudio/gstosxaudiosrc.c: - osxaudio: try to fix up according to Sebastian's comments +2013-08-19 21:21:08 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-05 10:02:38 +0200 Philippe Normand <philn@igalia.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: reset retransmission timers in add/reschedule + Reset the retransmission timers when adding and rescheduling a timer. - * configure.ac: - * sys/osxaudio/gstosxaudioringbuffer.h: - * sys/osxaudio/gstosxaudiosink.c: - * sys/osxaudio/gstosxaudiosink.h: - * sys/osxaudio/gstosxaudiosrc.h: - osxaudio: build fixes - Enable the osxaudio plugin build in configure.ac and fix some - include directive order issues. +2013-08-19 21:12:13 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-02 22:28:09 +0900 ted-n <ted.nakajima@gmail.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: rename variables for packet spacing - * sys/osxaudio/gstosxaudiosrc.c: - osxaudio: fix layout for osxaudiosrc +2013-08-19 14:58:01 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-03-30 22:49:34 +0900 ted-n <ted.nakajima@gmail.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: remove lost timer when we get the packet + When we receive a packet, also remove the LOST timer for it. - * sys/osxaudio/Makefile.am: - * sys/osxaudio/gstosxaudioelement.c: - * sys/osxaudio/gstosxaudioringbuffer.c: - * sys/osxaudio/gstosxaudioringbuffer.h: - * sys/osxaudio/gstosxaudiosink.c: - * sys/osxaudio/gstosxaudiosink.h: - * sys/osxaudio/gstosxaudiosrc.c: - * sys/osxaudio/gstosxaudiosrc.h: - * sys/osxaudio/gstosxcoreaudiocommon.c: - * sys/osxaudio/gstosxcoreaudiocommon.h: - * sys/osxaudio/gstosxringbuffer.c: - * sys/osxaudio/gstosxringbuffer.h: - osxaudio: port to v.1.0 +2013-08-19 14:56:49 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-03-10 17:17:17 +0000 Josep Torra <n770galaxy@gmail.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: expected seqnum must increase + Only update the expected seqnum when it is bigger than the previous expected + seqnum. - * sys/osxaudio/gstosxaudioelement.c: - * sys/osxaudio/gstosxcoreaudiocommon.h: - osxaudio: Fixes error: "GST_LEVEL_DEFAULT" redefined +2013-08-19 14:55:49 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-03-10 17:27:30 +0000 Josep Torra <n770galaxy@gmail.com> + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: add more debug - * sys/osxaudio/gstosxcoreaudiohal.c: - osxaudio: fixes implicit declaration of function 'getpid' +2013-08-12 16:15:54 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-03-05 21:22:18 +0100 Andoni Morales Alastruey <ylatuya@gmail.com> + * gst/rtpmanager/Makefile.am: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/gstrtprtxqueue.c: + * gst/rtpmanager/gstrtprtxqueue.h: + rtxqueue: add retransmission queue element - * configure.ac: - * sys/osxaudio/Makefile.am: - * sys/osxaudio/gstosxaudioelement.h: - * sys/osxaudio/gstosxaudiosink.c: - * sys/osxaudio/gstosxcoreaudio.c: - * sys/osxaudio/gstosxcoreaudioremoteio.c: - osxaudio: add support for iOS using the RemoteIO AudioUnit - Conflicts: - sys/osxaudio/Makefile.am +2013-08-12 14:53:33 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-03-05 21:17:52 +0100 Andoni Morales Alastruey <ylatuya@gmail.com> + * gst/rtpmanager/rtpsession.c: + session: add some docs - * sys/osxaudio/Makefile.am: - * sys/osxaudio/gstosxaudiosink.c: - * sys/osxaudio/gstosxaudiosrc.c: - * sys/osxaudio/gstosxcoreaudio.c: - * sys/osxaudio/gstosxcoreaudio.h: - * sys/osxaudio/gstosxcoreaudiocommon.c: - * sys/osxaudio/gstosxcoreaudiocommon.h: - * sys/osxaudio/gstosxcoreaudiohal.c: - * sys/osxaudio/gstosxringbuffer.c: - * sys/osxaudio/gstosxringbuffer.h: - osxaudio: add a façade for the CoreAudio API +2013-08-06 16:29:54 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-04-16 19:29:48 -0400 Olivier Crête <olivier.crete@collabora.com> + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + session: handle NACK feedback and generate events + Handle and parse the feedback NACK packets and generate a Retransmission + event for each NACKed packet + +2013-08-19 13:19:42 -0400 Olivier Crête <olivier.crete@collabora.com> + + * sys/v4l2/gstv4l2object.c: + v4l2: Add forward declaration for gst_v4l2_object_get_format_list + +2012-10-22 17:58:07 -0400 Olivier Crête <olivier.crete@collabora.com> + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2sink.c: + * sys/v4l2/gstv4l2sink.h: + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/gstv4l2src.h: + v4l2: De-duplicate caps probing between src and sink + +2013-08-13 17:32:17 -0400 Olivier Crête <olivier.crete@collabora.com> + + * ext/pulse/Makefile.am: + * ext/pulse/pulseprobe.c: + * ext/pulse/pulseprobe.h: + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesink.h: + * ext/pulse/pulsesrc.c: + * ext/pulse/pulsesrc.h: + pulse: Remove unused GstPulseProbe + +2013-08-19 12:46:45 -0400 Olivier Crête <olivier.crete@collabora.com> + + * sys/v4l2/gstv4l2tuner.c: + * sys/v4l2/tuner.c: + * sys/v4l2/tunerchannel.c: + * sys/v4l2/tunernorm.c: + v4l2: Use G_DEFINE_ macros for added thread safety + +2013-08-17 11:28:13 +0200 Thibault Saunier <thibault.saunier@collabora.com> * gst/videomixer/videomixer2.c: - videomixer: Don't unref query, we don't own it - Fixes double-unref bug. Bug found by Youness Alaoui + * gst/videomixer/videomixer2.h: + videomixer: Do not send flush_stop ourself after a flush_start + When we receive a flush_start, we should wait for the next flush_stop + and foward it, not create a flush_stop ourself. -2012-10-24 12:14:50 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-08-16 17:10:31 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtph264depay.c: + h264depay: init debug category early + Init the debug variable when we register the element because it is also used by + the payloader element when it calls the add_sps_pps method. + +2013-08-16 13:26:28 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * ext/flac/gstflacenc.c: + flacenc: Properly set headers via the base class instead of just pushing them downstream + Prevents buffers from being send before the caps and segment events. + +2013-08-15 10:59:10 +0100 Chris Bass <floobleflam@gmail.com> + + * gst/isomp4/qtdemux.c: + qtdemux: check denominator isn't zero before scaling duration. + When gst_qtdemux_configure_stream sets fps_d, check that n_samples is + non-zero before using it as a denominator to scale the stream duration. + https://bugzilla.gnome.org/show_bug.cgi?id=706076 + +2013-08-15 15:08:05 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * ext/jpeg/gstjpegdec.c: + * ext/jpeg/gstjpegenc.c: + * ext/libpng/gstpngdec.c: + * ext/vpx/gstvp8dec.c: + * ext/vpx/gstvp9dec.c: + ext: Use new flush vfunc of video codec base classes and remove reset implementations + +2013-08-14 16:19:32 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: forward flush before stopping dataflow + First forward the flush event and then stop our loop function. + +2013-08-14 13:10:32 +0100 Tim-Philipp Müller <tim@centricular.net> * configure.ac: - * ext/aalib/Makefile.am: - * ext/cairo/Makefile.am: - * ext/dv/Makefile.am: - * ext/flac/Makefile.am: - * ext/gdk_pixbuf/Makefile.am: - * ext/jack/Makefile.am: - * ext/jpeg/Makefile.am: - * ext/libcaca/Makefile.am: - * ext/libpng/Makefile.am: - * ext/mikmod/Makefile.am: - * ext/pulse/Makefile.am: - * ext/raw1394/Makefile.am: - * ext/shout2/Makefile.am: - * ext/soup/Makefile.am: - * ext/speex/Makefile.am: - * ext/taglib/Makefile.am: - * ext/vpx/Makefile.am: - * ext/wavpack/Makefile.am: - * gst/alpha/Makefile.am: - * gst/apetag/Makefile.am: - * gst/audiofx/Makefile.am: - * gst/audioparsers/Makefile.am: - * gst/auparse/Makefile.am: - * gst/autodetect/Makefile.am: - * gst/avi/Makefile.am: - * gst/cutter/Makefile.am: - * gst/debugutils/Makefile.am: - * gst/deinterlace/Makefile.am: - * gst/effectv/Makefile.am: - * gst/equalizer/Makefile.am: - * gst/flv/Makefile.am: - * gst/flx/Makefile.am: - * gst/goom/Makefile.am: - * gst/goom2k1/Makefile.am: - * gst/icydemux/Makefile.am: - * gst/id3demux/Makefile.am: - * gst/imagefreeze/Makefile.am: - * gst/interleave/Makefile.am: - * gst/isomp4/Makefile.am: - * gst/law/Makefile.am: - * gst/level/Makefile.am: - * gst/matroska/Makefile.am: - * gst/monoscope/Makefile.am: - * gst/multifile/Makefile.am: - * gst/multipart/Makefile.am: - * gst/replaygain/Makefile.am: - * gst/rtp/Makefile.am: - * gst/rtpmanager/Makefile.am: - * gst/rtsp/Makefile.am: - * gst/shapewipe/Makefile.am: - * gst/smpte/Makefile.am: - * gst/spectrum/Makefile.am: - * gst/udp/Makefile.am: - * gst/videobox/Makefile.am: - * gst/videocrop/Makefile.am: - * gst/videofilter/Makefile.am: - * gst/videomixer/Makefile.am: - * gst/wavenc/Makefile.am: - * gst/wavparse/Makefile.am: - * gst/y4m/Makefile.am: - * sys/directsound/Makefile.am: - * sys/oss/Makefile.am: - * sys/oss4/Makefile.am: - * sys/osxaudio/Makefile.am: - * sys/osxvideo/Makefile.am: - * sys/sunaudio/Makefile.am: - * sys/v4l2/Makefile.am: - * sys/waveform/Makefile.am: - * sys/ximage/Makefile.am: - gst: Add better support for static plugins - Conflicts: - gst/dtmf/Makefile.am - sys/osxaudio/Makefile.am - sys/v4l2/Makefile.am + configure: require libsoup >= 2.38 + Bump libsoup requirement for newer API used, like headers_get_one(). + 2.38 is from early 2012 and is in linen with our GLib requirement. -2013-03-25 10:12:03 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-08-14 11:54:19 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/debugutils/gstcapssetter.c: - capssetter: Prevent unneeded caps copying and allocation + * ext/soup/gstsouphttpsrc.c: + soup: don't use deprecated soup_message_headers_get() API -2013-02-01 14:33:41 +0100 Dirk Van Haerenborgh <vhdirk@gmail.com> +2013-08-13 17:44:50 +0200 Edward Hervey <edward@collabora.com> - * gst/debugutils/gstcapssetter.c: - capssetter: Pass any or filter caps upstream - capsetter accepts anything and just forwards different caps, - as such it should return ANY caps on the sinkpad. - https://bugzilla.gnome.org/show_bug.cgi?id=693005 + * .gitignore: + .gitignore: Ignore files from automake test-driver -2013-04-14 12:32:06 +0100 Tim-Philipp Müller <tim@centricular.net> +2013-08-12 15:28:34 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph264pay.h: + rtph264pay: Use the SPS/PPS handling function from the depayloader + Remove duplicated copies + https://bugzilla.gnome.org/show_bug.cgi?id=705553 + +2013-08-12 15:26:08 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264depay.h: + rtph264depay: Make the SPS/PPS deduplication function generic + Make it not touch any internals of the depayloader + https://bugzilla.gnome.org/show_bug.cgi?id=705553 + +2013-08-13 14:09:20 +0100 Chris Bass <floobleflam@gmail.com> + + * gst/audioparsers/gstaacparse.c: + aacparse: allow conversion from raw AAC to ADTS + This patch will prepend ADTS headers to raw AAC audio frames, allowing + upstream elements to link to decoders that only support AAC in ADTS format. + Note that no error correction bits are added to ADTS frames in this code. + https://bugzilla.gnome.org/show_bug.cgi?id=615740 + +2013-08-13 12:44:11 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Only free GCheckSum after its last usage + https://bugzilla.gnome.org/show_bug.cgi?id=705760 + +2013-08-13 12:02:29 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: fix critical setting a NULL uri redirection + +2013-07-13 01:50:56 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> * ext/soup/gstsouphttpsrc.c: * ext/soup/gstsouphttpsrc.h: - souphttpsrc: add back "iradio-mode" property to disable sending of icecast request headers - In 1.0 we now always send the icecast request headers by default, which - makes the server send icecasts metadata inserted into the stream if it - supports that. However, there are some use cases where this is not - desirable, like when just saving a radio stream to disk, so add back - the "iradio-mode" property to allow people to disable this. - https://bugzilla.gnome.org/show_bug.cgi?id=697984 + souphttpsrc: add redirection to the URI query -2013-04-08 17:53:09 -0700 David Schleef <ds@schleef.org> +2013-07-31 10:42:07 +0200 Matej Knopp <matej.knopp@gmail.com> * gst/isomp4/qtdemux.c: - qtdemux: check value inside enda to set endianness + qtdemux: elst should offset samples instead of buffers + The current approach where buffers are offset is not ideal, as during seek + and loop current time is compared to sample times. + https://bugzilla.gnome.org/show_bug.cgi?id=700264 -2013-04-08 11:38:33 +0200 Alexander Schrab <alexas@axis.com> +2013-08-07 19:32:07 +0200 Thibault Saunier <thibault.saunier@collabora.com> - * gst/wavparse/gstwavparse.c: - wavparse: error out if we receive eos before any valid data - https://bugzilla.gnome.org/show_bug.cgi?id=696684 + * gst/videomixer/videomixer2.c: + * tests/check/elements/videomixer.c: + videomixer: Send EOS if buf_end >= segment.stop + That means the whole segment is already played, and we are sure we + are EOS at that point. + Also handle segment seeks, and do not send EOS in that case. -2013-04-07 01:47:56 +0200 Matej Knopp <matej.knopp@gmail.com> +2013-08-04 14:40:38 +0200 Matej Knopp <matej.knopp@gmail.com> - * gst/deinterlace/gstdeinterlace.c: - deinterlace: force deinterlacing in "interlaced" mode - https://bugzilla.gnome.org/show_bug.cgi?id=697467 + * gst/avi/gstavidemux.c: + avidemux: send proper stream_start event + https://bugzilla.gnome.org//show_bug.cgi?id=705449 -2013-04-05 09:34:23 +0100 Todd Agulnick <todd@agulnick.com> +2013-08-08 11:51:17 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * sys/osxvideo/osxvideosink.m: - osxvideo: include pthread.h to fix compiler warning - https://bugzilla.gnome.org/show_bug.cgi?id=697303 + * gst/matroska/ebml-read.c: + * gst/matroska/matroska-demux.c: + matroskademux: Don't print warnings during flushing and stop as soon as possible + https://bugzilla.gnome.org//show_bug.cgi?id=705442 -2013-04-03 11:09:50 +0200 Wim Taymans <wim.taymans@collabora.co.uk> +2013-08-07 11:14:38 +0100 Tim-Philipp Müller <tim@centricular.net> - * sys/v4l2/gstv4l2bufferpool.c: - v4l2: free all queued buffers - Don't just loop over the first num_queued buffers but loop over - all the buffers and check if they need to be freed. It is possible that - not all buffers are queued and then the entry in our array will be NULL. - Those buffers that are not queued were freed in stop(). - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=696651 + * gst/rtp/gstrtpvp8depay.c: + rtpvp8depay: mark key frames and delta frames properly + https://bugzilla.gnome.org/show_bug.cgi?id=705550 -2012-08-29 17:24:00 +0200 Arnaud Vrac <avrac@freebox.fr> +2013-08-05 23:23:57 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/matroska/matroska-demux.c: - * gst/matroska/matroska-ids.h: - matroskademux: handle TrueHD audio codec id - https://bugzilla.gnome.org/show_bug.cgi?id=697113 + * gst/rtpmanager/rtpsession.c: + session: add NACK feedback in RTCP -2013-03-18 12:30:50 +0100 Nicola Murino <nicola.murino@gmail.com> +2013-08-05 23:22:16 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/isomp4/gstqtmuxmap.c: - qtmux: expose mulaw caps - https://bugzilla.gnome.org/show_bug.cgi?id=696052 + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + source: add methods to register NACK + Add a method to register a missing packet for an ssrc along with + methods to get the missing packets and clear them. -=== release 1.0.6 === +2013-08-04 23:05:36 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2013-03-22 13:41:58 +0000 Tim-Philipp Müller <tim@centricular.net> + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + session: handle Retransmission event and schedule NACK + Handle the retransmission event from downstream and use it to schedule a NACK + request. - * ChangeLog: - * NEWS: - * RELEASE: - * configure.ac: - * 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-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.0.6 +2013-08-05 23:20:29 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2012-06-22 21:56:52 +0000 Norbert Waschbuesch <nwaschbu@opentv.com> + * gst/rtpmanager/rtpsession.c: + session: pass data to remove func + Pass the data to the remove function because we are going to deref it when there + is pli or fir. - * ext/soup/gstsouphttpsrc.c: - souphttpsrc: error out properly when receiving data along with an error status - When receiving an error code from the http server, such as 404, - data might be sent along with it, like a web page. We don't want - to output that data in this case, and we also want to pass the - FLOW_ERROR return back to the base class, so it can stop properly. - https://bugzilla.gnome.org/show_bug.cgi?id=678429 +2013-08-06 15:28:50 +0200 Thibault Saunier <thibault.saunier@collabora.com> -2013-03-22 08:47:17 +0000 Rodolfo Schulz de Lima <rodolfo@rodsoft.org> + * gst/isomp4/qtdemux.c: + qtdemux: Fix compilation + +2013-08-06 15:17:44 +0200 Thibault Saunier <thibault.saunier@collabora.com> * gst/isomp4/qtdemux.c: - qtdemux: fix sample leak when processing private qt tags - https://bugzilla.gnome.org/show_bug.cgi?id=696355 + qtdemux: Raw buffer DTS should always be CLOCK_TIME_NONE -2013-03-22 02:24:01 +0100 Matej Knopp <matej.knopp@gmail.com> +2013-08-06 11:58:38 +0200 Thibault Saunier <thibault.saunier@collabora.com> - * gst/isomp4/gstqtmux.c: - qtmux: set stream language code from tag - https://bugzilla.gnome.org/show_bug.cgi?id=696358 + * gst/videomixer/videomixer2.c: + videomixer: Make sure to send EOS if the buffer end time equals the segment end time + Otherwize EOS never gets sent in that particular case. -2013-03-19 18:09:31 -0700 Michael Smith <msmith@rdio.com> +2013-08-05 08:49:50 +0200 Sjoerd Simons <sjoerd.simons@collabora.co.uk> - * gst/isomp4/gstqtmux.c: - mp4mux: in faststart mode, don't output up to 4 kB of garbage at the end. + * gst/goom/gstgoom.c: + goom: Ensure src caps are writable + In some cases the src caps determined by goom weren't writable, causing + a bunch of assertion failures and failed caps. Fixed by always + explicitely making the caps writable + https://bugzilla.gnome.org/show_bug.cgi?id=705475 -2013-03-18 14:59:35 +0000 Bastien Nocera <hadess@hadess.net> +2013-08-04 23:18:29 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/v4l2/v4l2_calls.c: - v4l2: fix compilation against newer kernel headers as on FC19 + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + session: use common send_rtcp method + Reuse the send_rtcp method that already asks for the current time when + requesting a keyframe. -2013-03-14 14:12:05 +0100 Kishore Arepalli <kishore.arepalli@gmail.com> +2013-08-04 23:12:50 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/deinterlace/gstdeinterlace.c: - deinterlace: fix infinite loop on EOS with non-default methods or fields - Fixes problem of infinite loop in gst_deinterlace_reset_history. - Last field in the history was never deinterlaced because idx becomes negative. - Happens e.g. with method=scalerbob fields=bottom or - method=greedyl fields=top - https://bugzilla.gnome.org/show_bug.cgi?id=695644 - https://bugzilla.gnome.org/show_bug.cgi?id=693173 + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + session: Don't use ClockTimeDiff for unsigned delays -2013-03-12 09:48:31 +0000 Kishore Arepalli <kishore.arepalli@gmail.com> +2013-08-04 16:52:15 +0200 Edward Hervey <edward@collabora.com> - * ext/dv/gstdvdemux.c: - dvdemux: don't return FALSE when dropping sink events - Fixes problem in conjunction with avidemux. - https://bugzilla.gnome.org/show_bug.cgi?id=695643 + * gst/isomp4/gstqtmux.c: + qtmux: Use buffer PTS if DTS is not set + Avoids ending up with completely bogus scaled duration/pts when new + buffers have invalid DTS. -2013-03-11 14:50:41 +0100 Ognyan Tonchev <ognyan@axis.com> +2013-08-04 14:32:47 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/rtp/gstrtph264pay.c: - rtph264pay: Don't use upstream caps with peer_query_caps () - Calling gst_pad_peer_query_caps () on the src pad with the caps - upstream can produce as a filter from gst_rtp_h264_pay_getcaps () - is wrong and makes caps negotiation fail if upstream caps are not - NULL. - https://bugzilla.gnome.org/show_bug.cgi?id=695629 + * tests/check/elements/souphttpsrc.c: + tests: skip https test if there's no TLS support in soup/glib -2013-02-22 19:06:52 +0100 Arnaud Vrac <avrac@freebox.fr> +2013-08-04 11:20:41 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/isomp4/qtdemux.c: - qtdemux: skip disabled tracks - ISO/IEC 14496-12 specifies disabled tracks should be completely - ignored, so just do it. - Avoids deadlock during prerolling for some files. - Also prevents 'chapter' subtitle tracks from showing up. - https://bugzilla.gnome.org/show_bug.cgi?id=693993 - https://bugzilla.gnome.org/show_bug.cgi?id=628790 + * gst/rtsp/gstrtpdec.c: + rtpdec: use generic marshaller -2013-02-26 14:18:20 -0500 Olivier Crête <olivier.crete@collabora.com> +2013-08-04 10:52:33 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/rtp/gstrtpmp4gdepay.c: - rtpmp4gdepay: streamtype is not put by all RTSP server, not make it optional - Specific case here is Wowza 3.5.0 + * Makefile.am: + * sys/v4l2/.gitignore: + * sys/v4l2/Makefile.am: + * sys/v4l2/gstv4l2-marshal.list: + * sys/v4l2/tuner-marshal.list: + * sys/v4l2/tuner.c: + * sys/v4l2/tuner.h: + * win32/MANIFEST: + * win32/common/tuner-enumtypes.c: + * win32/common/tuner-enumtypes.h: + * win32/common/tuner-marshal.c: + * win32/common/tuner-marshal.h: + v4l2: remove unused enumtypes and use generic marshaller -2013-02-25 09:58:13 +0000 Tim-Philipp Müller <tim@centricular.net> +2013-08-04 10:47:38 +0100 Tim-Philipp Müller <tim@centricular.net> - * tests/check/elements/level.c: - tests: re-add suppression for GValueArray warnings to unit test as well + * Makefile.am: + * gst/udp/.gitignore: + * win32/common/gstudp-enumtypes.c: + * win32/common/gstudp-enumtypes.h: + * win32/common/gstudp-marshal.c: + * win32/common/gstudp-marshal.h: + udp: remove unused marshal and enumtypes files -2013-02-25 00:35:18 +0100 Thomas Vander Stichele <thomas (at) apestaart (dot) org> +2013-08-04 09:38:19 +0100 Tim-Philipp Müller <tim@centricular.net> - * gst/level/gstlevel.c: - level: put back deprecation warnings + * Makefile.am: + * gst/rtpmanager/.gitignore: + * gst/rtpmanager/Makefile.am: + * gst/rtpmanager/gstrtpbin-marshal.list: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpptdemux.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/gstrtpssrcdemux.c: + * gst/rtpmanager/rtpsession.c: + * win32/MANIFEST: + * win32/common/gstrtpbin-marshal.c: + * win32/common/gstrtpbin-marshal.h: + rtpmanager: use generic marshaller -2013-02-24 19:05:07 +0100 Thomas Vander Stichele <thomas (at) apestaart (dot) org> +2013-08-04 00:13:07 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/level/gstlevel.c: - * tests/check/elements/level.c: - level: send last message on EOS + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: send event in right direction -2013-02-23 14:34:35 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> +2013-08-02 17:38:34 -0700 David Schleef <ds@schleef.org> - * gst/avi/gstavidemux.c: - avidemux: push mode: handle some more 0-size buffer cases - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=684944 + * configure.ac: + * tests/check/Makefile.am: + tests: create/remove orc directory at proper time + Before automake creates .deps directories, and during distclean. -2013-02-13 10:46:54 +0100 Paul HENRYS <visechelle@gmail.com> +2013-08-03 00:25:44 +0200 Wim Taymans <wim.taymans@collabora.co.uk> * gst/rtpmanager/rtpsession.c: - rtpsession: Fix wrong code organisation in case of collision - change_ssrc field of RTPSession should be set before calling - rtp_session_schedule_bye_locked () as this function will call reconsider function - that will wake up rtcp_thread which will call rtp_session_on_timeout () that will - check change_ssrc to change the ssrc. - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=694184 + session: add FIR and PLI like other RTCP packets + Add the FIR and PLI packets like the other RTCP packet instead of from the + on-sending-rtcp default signal handler. -2013-02-20 15:46:43 +0100 Ognyan Tonchev <ognyan@axis.com> +2013-08-02 17:22:55 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/auparse/gstauparse.c: - auparse: do not leak src_caps - https://bugzilla.gnome.org/show_bug.cgi?id=694275 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: fix property ranges -2013-02-18 16:32:13 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> +2013-08-02 16:42:52 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/isomp4/qtdemux.c: - qtdemux: fix potential crash on short MOOV atom - Don't unmap short MOOV atom buffer twice, which happened - in the case where we don't fix up the MOOV atom. - Fixes crashes when thumbnailing partial mp4 file where - the MOOV atom is still incomplete. - https://bugzilla.gnome.org/show_bug.cgi?id=694010 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: push retransmission events -2013-02-15 16:21:21 +0100 Benjamin Gaignard <benjamin.gaignard@stericsson.com> +2013-08-02 14:12:16 +0200 Lubosz Sarnecki <lubosz@gmail.com> - * sys/v4l2/gstv4l2bufferpool.c: - v4l2: don't check stride for encoded formats - Don't try to check the stride for encoded formats. Some drivers output - something != 0 and then we don't want to fail on that. + * configure.ac: + build: add subdir-objects to AM_INIT_AUTOMAKE + Fixes warnings with automake 1.14 + https://bugzilla.gnome.org/show_bug.cgi?id=705350 -2013-02-07 22:51:45 +0000 Tim-Philipp Müller <tim@centricular.net> +2013-08-02 14:54:56 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * configure.ac: - build: fix build with automake 1.13 - AM_CONFIG_HEADER -> AC_CONFIG_HEADERS - https://bugzilla.gnome.org/show_bug.cgi?id=693373 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: add support for retransmission retry + When we didn't receive a packet after requesting retransmission, retry + asking for retransmission for a certain period. -2013-01-29 10:48:17 +0100 Paul HENRYS <visechelle@gmail.com> +2013-08-02 14:19:54 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/rtpmanager/gstrtpptdemux.c: - rtpptdemux: forward sticky events and then set caps - When a new src pad is added, first forward the sticky events and then - set the caps on the src pad - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692786 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: add properties + Add properties to control retransmission parameters -2013-02-07 14:32:26 +0100 Markovtsev Vadim <v.markovtsev at samsung.com> +2013-08-02 12:44:58 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/rtpmanager/rtpjitterbuffer.c: - rtpjitterbuffer: improve debug output - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=688935 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: use corrected timeout when rescheduling + When we recalculate the timeout, use the corrected timeout value depending on + the timer type. -2013-02-07 11:40:35 +0100 Tim 'mithro' Ansell <gnome at mithis.com> +2013-08-02 12:43:00 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/videomixer/videomixer2.c: - videomixer2: avoid caps leak - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=693307 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: update timers after queueing + Else we might update the timer needlessly for duplicates. -2013-02-06 13:52:26 +0100 Wim Taymans <wim.taymans@collabora.co.uk> +2013-08-02 12:42:08 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/rtsp/gstrtspsrc.c: - rtspsrc: only EOS when our source sends BYE - Only EOS when we receive a BYE event from the SSRC of our stream. - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=675453 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: move method up -2013-02-06 13:47:51 +0100 Wim Taymans <wim.taymans@collabora.co.uk> +2013-08-02 06:28:32 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/rtsp/gstrtspsrc.c: - rtspsrc: save the stream SSRC + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: small cleanup + +2013-08-01 23:26:06 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: unschedule old expected packets + When we receive a new packet, unschedule old outstanding packets when their + seqnum is too far away. + +2013-08-01 23:29:23 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: refactor timer update + +2013-08-01 23:24:29 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: update timers when removing + Update the timers when we remove a timer. + Handle canceled timers, make them unschedule the current timer and + trigger the timeout code. + +2013-08-01 23:22:02 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: fix typo + +2013-08-01 15:40:52 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: improve timeout management + If we change the seqnum of an existing timer and we were waiting for + that timer, unschedule it. If we change the timeout of an existing timer and we + were waiting on it, only unschedule when the new time is smaller. + +2013-08-01 15:05:35 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: install timer for expected arrival + Install a timer that is triggered when the expected arrival time of a packet + expired. + +2013-08-01 14:56:00 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: improve unschedule of timers Conflicts: - gst/rtsp/gstrtspsrc.c + gst/rtpmanager/gstrtpjitterbuffer.c -2013-02-06 13:18:18 +0100 Wim Taymans <wim.taymans@collabora.co.uk> +2013-08-01 12:21:53 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/rtsp/gstrtspsrc.c: - rtspsrc: flush connection when stopping - When we stop, we can flush all pending commands so that we can stop and - join the task. - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=684924 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: move code around -2013-02-03 13:14:50 +0100 Olivier Crête <olivier.crete@collabora.com> +2013-08-01 12:07:11 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/level/gstlevel.c: - level: Add missing coma between formats + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: estimate inter packet spacing + When we see two packets with consecutive seqnums and a different RTP time, use + the DTS difference as the inter packet spacing estimate. -2013-01-31 22:55:18 +1100 Matthew Waters <ystreet00@gmail.com> +2013-08-01 12:01:15 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/videomixer/videomixer2.c: - videomixer: fix eos timestamp check - fixes hang in videotestsrc num-buffers=20 ! videomixer ! fakesink - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692935 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: keep track of current timeout -2013-01-18 21:08:12 +0400 Alexey Chernov <achernov@neosphere.com> +2013-08-01 11:49:10 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/osxvideo/cocoawindow.h: - * sys/osxvideo/cocoawindow.m: - osxvideosink: Make GstNavigation key input events in osxvideosink compatible with x(v)imagesink ones + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: cleanup timer handling -2013-01-27 12:54:15 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> +2013-08-01 11:40:41 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/isomp4/qtdemux.c: - qtdemux: push mode: only parse moov 1 once - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=691570 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: reset is only possible with a GAP -2013-01-23 21:35:25 -0500 Olivier Crête <olivier.crete@collabora.com> +2013-08-01 11:29:32 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/ximage/gstximagesrc.c: - * sys/ximage/ximageutil.c: - * sys/ximage/ximageutil.h: - ximagesrc: Set the pixel aspect ratio correctly in the caps + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.c: + jitterbuffer: operate on DTS + Make the jitterbuffer schedule the timeouts based on the DTS instead + of the PTS. This makes it all smoother with reordered frames and gives + the decoder time to reorder the frames in time. -2013-01-22 18:12:10 +0100 Benjamin Gaignard <benjamin.gaignard@st.com> +2013-08-01 11:14:12 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * autogen.sh: - autogen.sh: allow calling from out-of-tree - Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com> - https://bugzilla.gnome.org/show_bug.cgi?id=692309 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: rename timout variable -2013-01-19 13:27:48 +0000 Tim-Philipp Müller <tim@centricular.net> +2013-07-31 17:08:58 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * ext/pulse/pulsesink.c: - pulsesink: don't error out if pa_stream_proplist_update() with new tags fails - Shouldn't really happen these days, but if it does, it's not really - a problem either. - https://bugzilla.gnome.org/show_bug.cgi?id=656068 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: small cleanup -2013-01-11 19:24:43 +0400 Alexey Chernov <achernov@neosphere.com> +2013-07-31 16:59:58 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/osxvideo/cocoawindow.m: - * sys/osxvideo/osxvideosink.m: - osxvideosink: Fix crash in osxvideosink with external window output + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: block output in paused or buffering -2013-01-16 12:04:59 +0400 Alexey Chernov <achernov@neosphere.com> +2013-07-31 16:59:09 +0200 Wim Taymans <wim.taymans@collabora.co.uk> - * sys/osxvideo/cocoawindow.m: - osxvideosink: Make GstGLView propagate input events to its parent view - Fixes bug #691832 + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: store pts in timer + Only store the pts in the timer so that we can both do timeouts with timings on + the input and output of the jitterbuffer. + +2013-07-30 23:14:24 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: refactor jitterbuffer + Refactor the jitterbuffer code. Make separate function for peeking a buffer, + pushing the next buffer, waiting for timeouts and handling the timeouts. + The main loop now tries to push as many buffers as it can until it runs out of + buffers or when it detects a seqnum discont. Then it will wait for some event to + happen before attempting to push more buffers. + Make methods to register timeouts in an array. These timeouts are registered + when we detect a missing packet, sync for the first packet or when we find an + estimation for the end-of-stream. + This greatly simplifies and clarifies the code and also makes it possible to + register more complicated timeout schemes later. + +2013-07-30 18:52:58 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: use NULL to ignore percent + If we pass NULL to pop and push we ignore the percent result. + +2013-07-30 07:00:19 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: refactor + Move eos estimation into separate function + +2013-07-30 14:28:19 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/flv/gstflvdemux.c: + flvdemux: don't leak stream_id string + https://bugzilla.gnome.org/show_bug.cgi?id=705142 + +2013-07-29 19:53:52 +0100 Tim-Philipp Müller <tim@centricular.net> + + * po/LINGUAS: + * po/da.po: + * po/de.po: + * po/el.po: + * po/gl.po: + * po/hr.po: + * po/hu.po: + * po/ja.po: + * po/nb.po: + * po/nl.po: + * po/pl.po: + * po/ru.po: + * po/sl.po: + * po/tr.po: + * po/uk.po: + * po/vi.po: + * po/zh_CN.po: + po: update translations + +2013-07-29 19:48:54 +0100 Tim-Philipp Müller <tim@centricular.net> + + * tests/check/elements/.gitignore: + tests: ignore new test binaries + +2013-07-29 14:47:49 +0200 Sebastian Dröge <slomo@circular-chaos.org> -=== release 1.0.5 === + * configure.ac: + Back to development -2013-01-08 01:19:07 +0000 Tim-Philipp Müller <tim@centricular.net> +=== release 1.1.3 === + +2013-07-29 13:42:18 +0200 Sebastian Dröge <slomo@circular-chaos.org> * ChangeLog: * NEWS: * RELEASE: * configure.ac: + * docs/plugins/gst-plugins-good-plugins.args: * docs/plugins/inspect/plugin-1394.xml: * docs/plugins/inspect/plugin-aasink.xml: * docs/plugins/inspect/plugin-alaw.xml: @@ -1390,6 +1674,7 @@ * 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: @@ -1408,6 +1693,7 @@ * docs/plugins/inspect/plugin-jpeg.xml: * docs/plugins/inspect/plugin-level.xml: * docs/plugins/inspect/plugin-matroska.xml: + * docs/plugins/inspect/plugin-monoscope.xml: * docs/plugins/inspect/plugin-mulaw.xml: * docs/plugins/inspect/plugin-multifile.xml: * docs/plugins/inspect/plugin-multipart.xml: @@ -1440,641 +1726,7629 @@ * docs/plugins/inspect/plugin-ximagesrc.xml: * docs/plugins/inspect/plugin-y4menc.xml: * gst-plugins-good.doap: - * po/ja.po: - * po/nb.po: - * po/sl.po: * win32/common/config.h: - Release 1.0.5 + Release 1.1.3 -2013-01-04 13:53:45 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> +2013-07-29 13:42:05 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * docs/plugins/gst-plugins-good-plugins-docs.sgml: - * docs/plugins/gst-plugins-good-plugins-sections.txt: - docs: add gdkpixbufoverlay element to docs - -2013-01-01 12:19:23 +0000 Tim-Philipp Müller <tim@centricular.net> - - * docs/plugins/Makefile.am: - * docs/plugins/gst-plugins-good-plugins-docs.sgml: - * docs/plugins/gst-plugins-good-plugins-sections.txt: - * docs/plugins/gst-plugins-good-plugins.hierarchy: - * docs/plugins/inspect/plugin-cairo.xml: - docs: fix docs build and update after removal of old cairo elements + * po/af.po: + * po/az.po: + * po/bg.po: + * po/ca.po: + * po/cs.po: + * po/da.po: + * po/de.po: + * po/el.po: + * po/en_GB.po: + * po/eo.po: + * po/es.po: + * po/eu.po: + * po/fi.po: + * po/fr.po: + * po/gl.po: + * po/hu.po: + * po/id.po: + * po/it.po: + * po/ja.po: + * po/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 -2013-01-01 11:52:09 +0000 Tim-Philipp Müller <tim@centricular.net> +2013-07-29 12:12:41 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * configure.ac: - * ext/cairo/.gitignore: - * ext/cairo/Makefile.am: - * ext/cairo/gstcairo-marshal.list: - * ext/cairo/gstcairo.c: - * ext/cairo/gstcairooverlay.c: - * ext/cairo/gstcairooverlay.h: - * tests/examples/Makefile.am: - * tests/examples/cairo/Makefile.am: - * tests/examples/cairo/cairo_overlay.c: - cairo: port cairooverlay to 0.11 - The other elements are not that interesting now that we're - using pangocairo in the pango plugin, and should probably - just be removed. + * gst/avi/gstavidemux.c: + * gst/flv/gstflvdemux.c: + * gst/isomp4/qtdemux.c: + * gst/matroska/matroska-demux.c: + gst: Don't swap start/stop for negative rates in the SEGMENT query -2012-12-31 18:59:18 +0000 Tim-Philipp Müller <tim@centricular.net> +2013-07-29 11:18:40 +0200 Matej Knopp <matej.knopp@gmail.com> - * tests/examples/rtp/server-decodebin-H263p-AMR.sh: - examples: check for uri argument in decodebin-h264p-amr server example - Otherwise people get a rather confusing error message. + * gst/isomp4/qtdemux.c: + qtdemux: Check for data size when parsing h264 codec data from strf atom -2013-01-04 10:03:32 +0100 Robert Krakora <rob.krakora@messagenetsystems.com> +2013-07-29 10:53:54 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * sys/v4l2/v4l2_calls.c: - v4l2: Also handle the new ENOENT return value of VIDIOC_QUERYCTRL - https://bugzilla.gnome.org/show_bug.cgi?id=691098 + * gst/matroska/matroska-demux.c: + matroskademux: Implement SEGMENT query -2012-10-25 12:18:03 -0700 Michael Smith <msmith@rdio.com> +2013-07-29 10:53:47 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/flv/gstflvdemux.c: + flvdemux: Implement SEGMENT query + +2013-07-29 10:50:59 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/avi/gstavidemux.c: + avidemux: Implement SEGMENT query + +2013-07-27 18:10:22 +0200 Matej Knopp <matej.knopp@gmail.com> * gst/isomp4/qtdemux.c: * gst/isomp4/qtdemux_fourcc.h: - qtdemux: read video format header fully (so we can find 'pasp' atoms) for more fourccs. Fixes aspect ratio of prores files. + qtdemux: Support H264 fourcc + https://bugzilla.gnome.org/show_bug.cgi?id=704996 -2012-12-17 15:17:12 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-07-28 18:09:33 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * ext/flac/gstflacenc.c: + flacenc: Fix handling of image tags + The caps should be used to get the mimetype and there is + only an info structure for the GstSample if the image-type + is not NONE. + +2013-07-28 18:04:32 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * ext/flac/gstflacenc.c: + flacenc: Don't crash if there is no image tag information + https://bugzilla.gnome.org/show_bug.cgi?id=705018 + +2013-07-28 17:38:56 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/avi/gstavidemux.c: + avidemux: Fix duration reporting in push mode + https://bugzilla.gnome.org/show_bug.cgi?id=700933 + +2013-07-28 17:32:27 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/avi/gstavidemux.c: + avidemux: Don't forget unmapping and unreffing buffer + +2013-07-26 21:06:17 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/avi/gstavidemux.c: + avidemux: unmap buffer + https://bugzilla.gnome.org/show_bug.cgi?id=704951 + +2013-07-26 22:31:41 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: don't make buffer writable prematurely + There is no reason to make the SR buffer writable at this point. This is better + delayed until needed. + +2013-07-26 22:25:50 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: ignore RTCP for inactive sources + +2013-07-26 22:25:17 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: small cleanup + +2013-07-26 17:17:31 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpsource.h: + session: handle partial RTCP report blocks + When we have more SSRCs to report than what fit in an RTCP packet, use a + generation counter to make sure all of them end up in a packet eventually. + +2013-07-26 17:23:10 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: create SSRC before doing session cleanup + Make the internal source before we do session cleanup + +2013-07-26 17:21:08 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: reorganize the report block code + +2013-07-26 16:02:01 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/matroska/matroska-demux.c: + matroskademux: fix memory leak in check_subtitle_buffer + https://bugzilla.gnome.org/show_bug.cgi?id=704921 + +2013-07-26 14:21:40 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: refactor active and sender checks + +2013-07-26 12:06:35 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: remove internal sources on timeout + When an internal source times out and becomes a receiver, remove it. + +2013-07-26 11:47:56 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: create an internal source for RTCP + When we need to do RTCP and we don't have an internal source yet, + make one. + +2013-07-26 10:47:28 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpsource.c: + session: remove old code to change SSRC + Remove code used to change the SSRC after a collision. We now send + a RECONFIGURE event upstream to make the upstream element change the SSRC. + +2013-07-26 10:42:44 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsource.c: + source: don't update packet SSRC + Remove the code to update the SSRC in packets, it can never be called now that + we always use a source with matching packet SSRC. + +2013-07-26 10:24:22 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + session: delay allocation of internal source + Allocate the internal source when we receive a caps with the SSRC or when we see + a buffer with the SSRC. + +2013-07-26 10:00:58 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + session: generate reconfigure on collision + When we detect a collision, change the SSRC that we suggest upstream + and trigger RECONFIGURE. This should make upstream select a new SSRC. + +2013-07-26 09:37:24 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + session: produce RTCP for all internal sources + Loop over all the internal sources and produce RTCP. We also need + to queue the RTCP packets and send them when we are finished. + +2013-07-26 01:40:20 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + session: deprecate internal source and ssrc properties + Deprecate the internal source and internal ssrc properties. There might + be more than one internal source. + +2013-07-26 01:29:08 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: internal sources don't use probation + +2013-07-26 01:24:07 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + session: give caps to session + Let the session parse the caps and update its SSRC when needed. + +2013-07-26 01:14:04 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + session: make method to suggest available SSRC + Make a method to suggest the best available SSRC. This is the SSRC of the last + created internal source and is used to instruct upstream to produce this + SSRC. + +2013-07-26 01:01:49 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + session: keep SDES and set on new internal sources + Keep track of the SDES ourselves and set it on all newly created + internal sources. + +2013-07-26 00:48:25 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: make method to make internal sources + Add a method to obtain an internal source and use it to create + our internal source + +2013-07-26 00:29:41 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpstats.h: + session: count internal sources and how many are senders + +2013-07-26 00:14:29 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + rtpsession: separate BYE marking and scheduling + First mark sources with BYE and then schedule the BYE RTCP message. + +2013-07-25 23:56:46 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: get SSRC from RTCP packet itself + Get the SSRC from the RTCP packet instead. + +2013-07-25 23:51:34 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: fix bandwidth calculation + We iterate over all sources and the internal one is also in the + hashtable so avoid adding it twice. + +2013-07-25 23:38:08 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: add some docs + +2013-07-25 23:11:05 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: Rearrange RTCP reporting a little + Make a function to generate an RTCP packet for a source, pass the source as a + parameter. + Move timeout of collisions to session cleanup phase. + +2013-07-25 22:39:04 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: move check for is_early around + Move the check for the early RTCP to where it is needed and used. + +2013-07-25 17:35:02 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: parse packet outside of the session lock + +2013-07-25 17:34:06 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: do nicer checks for internal sources + +2013-07-25 17:15:37 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + session: let source keep track if it sent BYE + +2013-07-25 17:06:22 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsource.c: + source: reset more + +2013-07-25 16:49:41 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + source: also use the source for bye_reason + Store the BYE reason in our internal source object. Rename the methods on the + source object a little because now the BYE can be received in RTCP or + set when the session wants to send BYE. + +2013-07-25 16:24:04 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + session: configure sdes with structure only + Remove code to configure the SDES with methods and types, only + allow configuration with GstStructure + +2013-07-25 15:56:39 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: refactor add and find source + Make functions to find and add a source to the hashtable. + +2013-07-25 15:43:11 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + session: remove source from sync_rtcp + We don't need to know the sender source of the session in the + callback, the SR packet is for all participants in the session. + +2013-07-24 14:18:14 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: add some more debug + +2013-07-15 17:11:45 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> + + * gst/audioparsers/Makefile.am: * gst/audioparsers/gstaacparse.c: - * gst/audioparsers/gstac3parse.c: - * gst/audioparsers/gstamrparse.c: - * gst/audioparsers/gstdcaparse.c: - * gst/audioparsers/gstflacparse.c: - * gst/audioparsers/gstmpegaudioparse.c: - * gst/audioparsers/gstwavpackparse.c: - audioparsers: Make sure the caps are actually writable before changing them + * gst/audioparsers/gstaacparse.h: + aacparse: allow conversion from ADTS to raw AAC + Some muxers (eg, qtmux) only support raw AAC, so this allows linking + an encoder that outputs ADTS only to those muxers. + The conversion is simple (omit the first 7 or 9 bytes of the frame), + but has to be done in pre_push instead of handle_frame as 1.0 does + not seem to allow skipping bytes there as 0.10 used to. + Other conversions are not supported (yet). -2012-12-17 15:01:02 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> +2013-07-15 17:15:44 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * gst/audioparsers/gstaacparse.c: - * gst/audioparsers/gstac3parse.c: - * gst/audioparsers/gstamrparse.c: - * gst/audioparsers/gstdcaparse.c: - * gst/audioparsers/gstflacparse.c: - * gst/audioparsers/gstmpegaudioparse.c: - * gst/audioparsers/gstwavpackparse.c: - audioparsers: Use the peer caps for restrictions instead of the srcpad allowed caps - Otherwise we will intersect with the srcpad template caps and add all the caps fields - that the parser will ever set, no matter if downstream restricts this field or not. - This requires upstream to set this field on the caps to successfully negotiate. - https://bugzilla.gnome.org/show_bug.cgi?id=690184 + aacparse: fix object_type parsing off-by-one in ADTS frame + According to http://wiki.multimedia.cx/index.php?title=ADTS, + the value stored in ADTS headers is one less than the object + type of the AAC stream. + A look at ffmpeg shows it also adds 1 to the value read off + the ADTS header. + Note that this might break other things that happen to have + an inverse off by one to match the existing code. -2012-12-20 17:12:30 +0100 Wim Taymans <wim.taymans@collabora.co.uk> +2013-07-25 11:13:01 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> - * gst/rtsp/gstrtspsrc.c: - rtspsrc: fix cmd comparison - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=690476 + * gst/avi/gstavidemux.c: + avidemux: fix seqnum handling for seeks + Use the same seqnum as the seek for flushes/segments that are + caused by the seek. Also do the same for segment events + Fixes #676242 -2012-12-20 17:12:20 +0100 Wim Taymans <wim.taymans@collabora.co.uk> +2013-07-25 01:39:58 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> - * gst/rtsp/gstrtspsrc.c: - rtspsrc: add some more debug + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-demux.h: + matroskademux: fix seqnum handling for seeks + Use the same seqnum as the seek for flushes/segments that are + caused by the seek. Also do the same for segment events + Fixes #676242 -2012-12-20 15:55:02 +0100 Wim Taymans <wim.taymans@collabora.co.uk> +2013-07-25 01:11:31 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: correctly handle seqnum for seeks and segments + Use the same seqnum on messages and events for derived events. + Fixed for flushes / stream-start / segment after a seek, and segment + after a segment. + Fixes #676242 + +2013-07-12 20:01:42 +0200 Arnaud Vrac <avrac@freebox.fr> + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: always ignore HEAD errors + https://bugzilla.gnome.org/show_bug.cgi?id=704241 + +2013-07-25 14:26:07 +0200 Sebastian Dröge <slomo@circular-chaos.org> * ext/jpeg/gstjpegenc.c: - * ext/jpeg/gstjpegenc.h: - jpegenc: pass flowreturn upstream + jpegenc: Clean up reset/start/stop handling -=== release 1.0.4 === +2013-07-25 14:13:10 +0200 Sebastian Dröge <slomo@circular-chaos.org> -2012-12-18 19:11:37 +0000 Tim-Philipp Müller <tim@centricular.net> + * ext/jpeg/gstjpegdec.c: + * ext/jpeg/gstjpegdec.h: + jpegdec: Use base class error handling function instead of replicating it here - * ChangeLog: - * NEWS: - * RELEASE: - * configure.ac: - * 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-cutter.xml: - * docs/plugins/inspect/plugin-debug.xml: - * docs/plugins/inspect/plugin-deinterlace.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.0.4 +2013-07-25 14:12:56 +0200 Sebastian Dröge <slomo@circular-chaos.org> -2012-12-18 18:53:14 +0000 Tim-Philipp Müller <tim@centricular.net> + * ext/jpeg/gstjpegdec.c: + jpegdec: Clean up handling of reset/start/stop - * po/LINGUAS: - * po/da.po: - * po/de.po: - * po/el.po: - * po/gl.po: - * po/hr.po: - * po/hu.po: - * po/nb.po: - * po/nl.po: - * po/pl.po: - * po/ru.po: - * po/tr.po: - * po/uk.po: - * po/vi.po: - * po/zh_CN.po: - po: update translations +2013-07-25 10:41:22 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> -2012-12-18 15:56:59 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + * tests/files/id3-407349-1.tag: + * tests/files/id3-407349-2.tag: + * tests/files/id3-447000-wcop.tag: + tests: fix test ID3 tags up not to rely on dodgy typefinding code + Change 0xff 0xfb 'mp3' marker to 'fLaC' marker, so we can fix + the typefinder. + https://bugzilla.gnome.org/show_bug.cgi?id=681368 - * ext/wavpack/gstwavpackenc.c: - wavpack: use appropriate printf format for gsize +2013-07-25 08:22:45 +0200 Alessandro Decina <alessandro.d@gmail.com> -2012-12-18 15:55:43 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + * sys/osxaudio/gstosxaudiosink.c: + osxaudiosink: intersect the probed caps with the filter passed to get_caps() - * ext/taglib/gstid3v2mux.cc: - taglib: use appropriate printf format for gsize +2013-07-24 14:17:45 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2012-12-18 15:54:08 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + * gst/rtpmanager/gstrtpbin.c: + bin: fix compilation - * ext/gdk_pixbuf/gstgdkpixbufdec.c: - gdkpixbuf: use appropriate printf format for gsize +2013-07-24 12:42:31 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2012-12-18 15:46:56 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + * gst/rtp/gstrtpvrawdepay.c: + vrawdepay: fix UYVP format - * gst/deinterlace/gstdeinterlace.c: - deinterlace: use appropriate printf format for gsize +2013-07-24 12:41:58 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2012-12-17 16:35:56 +0100 Philippe Normand <philn@igalia.com> + * gst/rtp/gstrtpvrawpay.c: + vrawpay: fix UYVP format - * gst/interleave/interleave.c: - * gst/interleave/interleave.h: - interleave: set src pad caps upon last sink pad CAPS event - Gather caps on all sink pads before setting the src pad caps. This is - specially needed when the audio channel mapping is set on the sink - pads and the element needs to preserve it on its src pad. - https://bugzilla.gnome.org/show_bug.cgi?id=690267 +2013-07-24 12:41:44 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2012-12-14 22:25:08 +0000 Koop Mast <kwm@rainbow-runner.nl> + * gst/rtp/gstrtpvrawpay.c: + vrawpay: fix caps - * configure.ac: - * sys/v4l2/gstv4l2object.h: - v4l2: Teach where the videodev2.h header lives on freebsd. - https://bugzilla.gnome.org/show_bug.cgi?id=690233 +2013-07-24 10:49:03 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2012-12-13 09:27:14 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: fix locking + Take the lock earlier so that we do things that follow with the right + locking. + +2013-07-23 17:40:02 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + rtpsession: don't use invalid times in RTCP timeouts + An invalid timeout can be calculated when we disabled RTCP by setting the + bandwidth to 0. Make sure all code can handle this case. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674626 + +2013-07-23 17:38:20 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + rtpsession: lock session when changing bandwidth + Take the session lock when changing the bandwidth properties so that we don't + end up with inconsistent behaviour. + +2013-07-23 17:37:05 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + session: reset some RTCP variables + The early_send time was set to 0 and always triggering an early RTCP packet. + +2013-07-23 15:03:31 +0200 Edward Hervey <edward@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: Add all the mpeg XDCAM variants + This should cover all known XDCAM variants (which are all mpeg2 video) + Fixes #672227 + +2013-07-03 18:41:42 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + rtpbin: added custom downstream sync event + rtpbin can now send a custom in-band downstream event which informs + downstream that the bin has received an RTCP SR packet. This is useful + for applications which want to drop the initial unsynchronized received + RTP packets. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703560 + Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> + +2013-07-22 18:00:16 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: fix on-the-fly changing of "mode" and "fields" properties + We call setcaps() to reconfigure ourselves, but we need to pass + the current *sink* caps, not the source caps then. Also fix a + caps leak. + https://bugzilla.gnome.org/show_bug.cgi?id=641599 + +2013-07-22 15:23:39 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/wavparse/gstwavparse.c: + wavparse: Add support for group-id in the stream-start event + +2013-07-22 15:23:20 +0200 Sebastian Dröge <slomo@circular-chaos.org> * gst/rtsp/gstrtspsrc.c: - rtspsrc: fix TCP reconnect - Ignore other commands when reconnecting, otherwise the loop function would pause - and the reconnection would not happen. Continue looping after doing a reconnect - so that we have a chance to actually read the new data. + rtspsrc: Add support for group-id in the stream-start event -2012-12-12 12:07:34 +0100 Philippe Normand <philn@igalia.com> +2013-07-22 15:23:11 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * gst/interleave/deinterleave.c: - deinterleave: properly set srcpad channel position - The src pad caps always describe a single audio channel so only the - first position matters if deinterleave is configured to keep channel - positions in its src pads. + * gst/rtpmanager/gstrtpsession.c: + rtpsession: Add support for group-id in the stream-start event -2012-12-10 11:44:26 +0000 Alexey Chernov <4ernov@gmail.com> +2013-07-22 15:22:55 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * sys/osxvideo/osxvideosink.m: - osxvideosink: Fix resizing the Cocoa window on receiving new caps - Fixes bug #689732. + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-demux.h: + matroskademux: Add support for group-id in the stream-start event -2012-09-27 12:17:58 -0700 Aleix Conchillo Flaque <aleix@oblong.com> +2013-07-22 15:22:47 +0200 Sebastian Dröge <slomo@circular-chaos.org> - rtspsrc: do not change state to PLAYING if currently chaning state - * gst/rtsp/gstrtspsrc.c (gst_rtspsrc_play): state change might be - happening in the application thread, so we don't change the state to - PLAYING in the gstrtspsrc thread unless it is safe. - A specific case is when chaning the state to NULL from the application - thread. This will synchronously try to stop the task (with the element - state lock acquired), but we will try a gst_element_set_state from - gstrtspsrc thread which will block on the element state lock causing a - deadlock. - https://bugzilla.gnome.org/show_bug.cgi?id=684312 + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + qtdemux: Add support for group-id in the stream-start event -2012-11-30 17:22:59 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> +2013-07-22 15:22:36 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * ext/shout2/gstshout2.c: - shout2send: accept audio/webm as well as video/webm - https://bugzilla.gnome.org/show_bug.cgi?id=689336 + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvdemux.h: + flvdemux: Add support for group-id in the stream-start event -2012-11-30 17:20:18 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> +2013-07-22 15:22:16 +0200 Sebastian Dröge <slomo@circular-chaos.org> - * gst/matroska/matroska-mux.c: + * gst/avi/gstavidemux.c: + * gst/avi/gstavidemux.h: + avidemux: Add support for group-id in the stream-start event + +2013-07-22 15:21:49 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * ext/dv/gstdvdemux.c: + * ext/dv/gstdvdemux.h: + dvdemux: Add support for group-id in the stream-start event + +2013-07-19 22:59:15 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/videomixer2.c: + videomixer: use gst_util_uint64_scale*_round. + There could be a case where: + 1) you do a new set_caps after buffers have been processed. + 2) ts_offset gets set to a different value, eg 0.033333333 + 3) your pads get EOS, but the check dor that doesn't work + because you use ts_offset + a truncated value < segment.stop + 4) so in the next collected, you end up comparing for example: + 0.9999999999 > 1., which is false and means you don't send EOS. + Also adds scale_round in two other places where it potentially could + have caused problems. + +2013-07-15 17:55:19 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux_fourcc.h: + qtdemux: Add WRLE support + +2013-07-19 19:35:26 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux_fourcc.h: + qtdemux: make files from Vivotek camera play + Skip tracks of 'vivo' subtype with empty stsd instead of + erroring out saying that the file is broken. + https://bugzilla.gnome.org/show_bug.cgi?id=699791 + +2013-07-19 17:14:06 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/isomp4/gstqtmux.c: + qtmux: when streaming don't try to seek when stopping + It might cause errors in sinks that are not seekable and + have reported this (like e.g. fdsink) + https://bugzilla.gnome.org/show_bug.cgi?id=696228 + +2013-07-19 17:26:54 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: simplify some helpers + Some helper functions are not needed anymore or can be simplified. + +2013-07-19 17:12:37 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: for non-raw video, move palette in caps + We only need to append the palette to raw video buffers, non-raw video has the + palette in the caps still. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=704292 + +2013-07-19 01:49:20 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/isomp4/qtdemux.c: + qtdemux: nitpicking in esds parsing + +2013-07-19 01:49:07 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/isomp4/qtdemux.c: + qtdemux: set proper caps for mpeg-1 audio + Remove AAC specific fields from mpeg-1 audio caps, remove assumption + that the mpeg1 audio layer is 3, and set `parsed' field. + https://bugzilla.gnome.org/show_bug.cgi?id=704548 + +2013-06-17 21:27:37 +0200 Arnaud Vrac <avrac@freebox.fr> + + * ext/vpx/gstvp8dec.h: + * ext/vpx/gstvp8enc.h: + * ext/vpx/gstvp9dec.h: + * ext/vpx/gstvp9enc.h: + vpx: fix compilation when encoder or decoder headers are not installed + https://bugzilla.gnome.org/show_bug.cgi?id=704547 + +2013-07-16 20:41:15 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/videocrop.c: + videocrop: Fix unit for GRAY16 formats + +2013-07-16 22:17:17 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/isomp4/qtdemux.c: + qtdemux: remove chapter stream + Remove all streams that are actually table of contents, since we will + never need the data after parsing them. + +2013-07-16 21:59:37 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/isomp4/qtdemux.c: + qtdemux: send gap event for sparse streams in push mode + This allows to pre-roll at least if the next subtitle buffer + is far away. + +2013-07-16 21:56:07 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/isomp4/qtdemux.c: + qtdemux: do not use indexes from sparse stream when seeking in push mode + This makes seeking more accurate in push mode, since the previous + keyframe on a sparse stream might be far away. + +2013-07-16 21:04:07 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/isomp4/qtdemux.c: + qtdemux: advertise subtitle streams as sparse + +2013-07-17 17:11:44 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/matroska/matroska-demux.c: + mastrokademux: do not push discont buffers if they aren't discont + Unset the discont flag instead of posssibly pushing a buffer with + a flag that's still set. + https://bugzilla.gnome.org/show_bug.cgi?id=682110 + +2013-07-17 15:10:00 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: extract the palette from stsd + Sometimes a palette is inside the stsd, extract it instead of always using + the default one + +2013-07-17 14:30:16 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/goom2k1/gstgoom.c: + goom2k1: Fix event handling and negotiate as soon as possible + +2013-07-17 14:27:57 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/goom/gstgoom.c: + goom: Fix event handling and negotiate as soon as possible + +2013-07-11 19:45:17 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * sys/osxvideo/osxvideosink.m: + osxvideosink: warn about the future deprecation of the "embed" property + +2013-07-17 09:56:01 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: add support for WRAW + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=704292 + +2013-07-17 09:54:58 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: palette is appended to buffers, not in caps + Fix the palette handling, in 1.0 we append the palette to the buffer instead of + placing it on the caps. + See also https://bugzilla.gnome.org/show_bug.cgi?id=704292 + +2013-07-16 15:37:49 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpmp2tpay.c: + * gst/rtp/gstrtpmp4gpay.c: + * gst/rtp/gstrtpmp4vpay.c: + * gst/rtp/gstrtpmpapay.c: + * gst/rtp/gstrtpmpvpay.c: + rtp: Use gst_adapter_take_buffer_fast() where possible in RTP payloaders + +2013-07-15 16:24:07 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/isomp4/qtdemux.c: + qtdemux: reset segment on flush stop + cca2f555d14 introduces a regression, where the demux segment is not + reset on flush stop, so the next upstream segment event will calculate + an invalid base time on the new segment to be sent downstream. + https://bugzilla.gnome.org/show_bug.cgi?id=704255 + +2013-07-06 17:20:49 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + qtdemux: offset samples according to edit list + https://bugzilla.gnome.org/show_bug.cgi?id=700264 + +2013-07-14 12:50:13 +1200 Douglas Bagnall <douglas@halo.gen.nz> + + * tests/examples/spectrum/spectrum-example.c: + level: Fix the spectrum example for 1.0 + The "message" property has been replaced by "post-messages". + Pre-patch output: + (test_spectrum:23101): GLib-GObject-WARNING **: g_object_set_valist: + object class `GstSpectrum' has no property named `message' + New spectrum message, endtime 0:00:00.100000000 + (test_spectrum:23101): GStreamer-CRITICAL **: + gst_value_list_get_value: assertion `GST_VALUE_HOLDS_LIST (value)' failed + [...] + Post-patch: + New spectrum message, endtime 0:00:00.100000000 + band 0 (freq 400): magnitude -65.988777 dB phase 1.533397 + band 1 (freq 1200): magnitude -65.545563 dB phase -0.780900 + band 2 (freq 2000): magnitude -64.791946 dB phase -0.799611 + band 3 (freq 2800): magnitude -64.556175 dB phase -0.063615 + [...] + https://bugzilla.gnome.org/show_bug.cgi?id=704179 + +2013-07-13 20:56:26 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/audioparsers/gstaacparse.c: + aacparse: be less verbose when parsing LOAS streams + https://bugzilla.gnome.org/show_bug.cgi?id=704162 + +2013-07-12 12:31:39 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * ext/pulse/pulsesink.h: + sink: alaw/mulaw caps don't have a layout property + +2013-07-12 12:27:53 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * ext/pulse/pulseutil.c: + pulse: relax mulaw and alaw format checks + The audio library considers them as encoded formats and does not fill in the + sample width. The audio ringbuffers identifies the format as alaw/mulaw and that + is always 8 bits. + +2013-07-11 16:13:05 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + * gst/isomp4/qtdemux_fourcc.h: + * gst/isomp4/qtdemux_types.c: + qtdemux: unselect instead of ignoring disabled track, detect chapter track + https://bugzilla.gnome.org/show_bug.cgi?id=704007 + +2013-07-11 20:41:23 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: ignore errors from HEAD request + HEAD requests are used to check the server headers to see if it + seekable. Ignore errors from those requests as they shouldn't be + critical. + https://bugzilla.gnome.org/show_bug.cgi?id=704053 + +2013-07-12 03:24:08 +0800 Kyosuke Nekomura <supercatexpert@gmail.com> + + * gst/audiofx/audioecho.c: + audioecho: Fix handling of delay property in PLAYING/PAUSED state + https://bugzilla.gnome.org/show_bug.cgi?id=703901 + +2013-07-09 17:56:57 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Enable proxy caps on the src pads + +2013-07-11 16:57:15 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * configure.ac: + Back to development + +=== release 1.1.2 === + +2013-07-11 15:58:51 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * ChangeLog: + * NEWS: + * RELEASE: + * configure.ac: + * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * 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-monoscope.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.1.2 + +2013-07-11 15:58:29 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * po/af.po: + * po/az.po: + * po/bg.po: + * po/ca.po: + * po/cs.po: + * po/da.po: + * po/de.po: + * po/el.po: + * po/en_GB.po: + * po/eo.po: + * po/es.po: + * po/eu.po: + * po/fi.po: + * po/fr.po: + * po/gl.po: + * po/hu.po: + * po/id.po: + * po/it.po: + * po/ja.po: + * po/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 + +2013-07-09 15:34:04 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * sys/osxvideo/osxvideosink.h: + * sys/osxvideo/osxvideosink.m: + osxvideosink: defer the window handle setup to the main thread + +2013-07-09 15:33:18 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * sys/osxvideo/osxvideosink.m: + osxvideosink: default to the main in case we are not setup yet + +2013-07-07 22:16:05 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * sys/osxvideo/osxvideosink.m: + osxvideosink: close the internal window correctly + +2013-07-07 21:14:22 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * sys/osxvideo/osxvideosink.h: + * sys/osxvideo/osxvideosink.m: + osxvideosink: only create the NS app thread for Cocoa once + The helper thread for Cocoa, in case no NS run loop is running, + should be started only once and shared across all the instances + running + +2013-07-09 19:10:17 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/qtdemux.c: + qtdemux: correct argument order in gst_util_uint64_scale_int_round + https://bugzilla.gnome.org/show_bug.cgi?id=703350 + +2013-07-09 17:42:59 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Keep caps order from the peer or the filter + +2013-07-09 12:42:17 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/videomixer/videomixer2.c: + videomixer: Fix handling of buffers without a duration + We'll have to pop buffer from collectpads and store it + internally only to get the timestamp of the next buffer. + If we continue to keep it in collectpads, no new buffer + to calculate the end time will ever arrive. + https://bugzilla.gnome.org/show_bug.cgi?id=703743 + +2013-07-09 11:53:07 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/videomixer/videomixer2.c: + videomixer: Fix negotiation with 0/1 framerates + https://bugzilla.gnome.org/show_bug.cgi?id=703743 + +2013-07-09 11:17:59 +0200 Jonas Holmberg <jonashg@axis.com> + + * gst/matroska/matroska-demux.c: + matroskademux: Unlock stream lock after use + Stream lock of sink pad was not unlocked after non-updating seek. + +2013-06-27 13:26:31 +0200 Ognyan Tonchev <ognyan@axis.com> + + * gst/multipart/multipartmux.c: + multipartmux: Re-set need_segment flag after FLUSH_STOP + https://bugzilla.gnome.org/show_bug.cgi?id=703182 + +2013-07-05 11:51:04 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: bufferpool: don't forget to release buffer on error + If the pool is stopped while gst_v4l2_buffer_pool_dqbuf() waits for a + buffer then the return value is GST_FLOW_FLUSHING. In this case the buffer + to queue must also be released. Otherwise is will never be deleted or + returned to its pool. + https://bugzilla.gnome.org/show_bug.cgi?id=703764 + +2013-07-08 14:15:10 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * tests/check/elements/rtp-payloading.c: + rtp: Fail payloading unit test if an error message is received + +2013-07-08 14:09:37 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/rtp/gstrtph263ppay.c: + rtph263ppay: Don't pass upstream filter caps to downstream + Downstream usually can't accept video/x-h263 but only application/x-rtp, + so we would always get an empty intersection here. + https://bugzilla.gnome.org/show_bug.cgi?id=702632 + +2013-07-05 22:00:37 +0200 Piotr DrÄ…g <piotrdrag@gmail.com> + + * po/POTFILES.in: + po: update POTFILES.in + https://bugzilla.gnome.org/show_bug.cgi?id=703685 + +2013-07-02 11:13:25 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: avoid some strdup + +2013-07-02 10:37:50 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: add select-stream signal + Add a signal to let the app select what streams will be selected. + See https://bugzilla.gnome.org/show_bug.cgi?id=634419 + +2013-07-02 10:37:35 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: avoid strdup + +2013-07-02 10:12:17 +0200 J. Rick Ramstetter <rick.ramstetter@gmail.com> + + * gst/rtp/README: + * gst/rtpmanager/gstrtpbin.c: + rtp: Fix documentation and comments to use rtpbin instead of old gstrtpbin + https://bugzilla.gnome.org/show_bug.cgi?id=703426 + +2013-07-01 16:55:01 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + v4l2: don't extract data from caps twice + gst_video_info_from_caps() always extract width, height, interlace mode and + framerate now. It is no longer necessary to do it again for encoded + formats. + https://bugzilla.gnome.org/show_bug.cgi?id=703399 + +2013-06-20 09:41:48 -0300 Andoni Morales Alastruey <ylatuya@gmail.com> + + * ext/soup/gstsouphttpsrc.c: + * ext/soup/gstsouphttpsrc.h: + souphttpsrc: also consider stop positions in seeks + Use seek stop position as range end for requests + https://bugzilla.gnome.org/show_bug.cgi?id=702206 + +2013-06-19 14:06:40 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * ext/soup/gstsouphttpsrc.c: + * ext/soup/gstsouphttpsrc.h: + souphttpsrc: allow seeks in ready + On is_seekable, check if the server's headers have already been + received. If not, do a HEAD request to get them before responding + to basesrc. + https://bugzilla.gnome.org/show_bug.cgi?id=702206 + +2013-07-01 17:28:55 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: add signal to notify of the SDP + This way, the app can look and modify the SDP. + +2013-06-21 18:10:28 +0200 Kishore Arepalli <kishore.arepalli@gmail.com> + + * ext/gdk_pixbuf/gstgdkpixbufoverlay.c: + gdkpixbufoverlay: Allow negative offsets to specify offset from bottom/right + https://bugzilla.gnome.org/show_bug.cgi?id=702826 + +2013-06-30 21:01:20 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/Makefile.am: + * gst/isomp4/qtdemux.c: + qtdemux: compute framerate from average sample duration + https://bugzilla.gnome.org/show_bug.cgi?id=703350 + +2013-06-25 21:16:38 +0200 Alban Browaeys <prahal@yahoo.com> + + * gst/flv/gstflvdemux.c: + flvdemux: Add flvversion 1 to the flash-video caps + This allows using avdec_flv which requires this field to be + present in the caps. FLV only supports flash-video version 1 + right now. + https://bugzilla.gnome.org/show_bug.cgi?id=703076 + +2013-07-01 11:37:00 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/interleave/deinterleave.c: + deinterleave: Don't hold object lock while sending events downstream + Based on a patch by Kishore Arepalli <kishore.arepalli@gmail.com> + https://bugzilla.gnome.org/show_bug.cgi?id=703114 + +2013-07-01 10:59:07 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/matroska/matroska-demux.c: + matroskademux: Add MPEG4 video profile/level to the caps + +2013-07-01 10:56:28 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/matroska/matroska-demux.c: + matroskademux: Add AAC profile/level to the caps + https://bugzilla.gnome.org/show_bug.cgi?id=703312 + +2013-06-28 15:21:56 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpvorbispay.c: + * gst/rtp/gstrtpvorbispay.h: + vorbispay: add support for config-interval + Align code with the theora payloader and add support for the config-interval to + periodically send out the config headers. + +2013-06-28 15:21:12 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtptheorapay.c: + theorapay: small cleanups + +2013-06-28 12:08:19 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtptheorapay.c: + theorapay: handle streamheaders as well + +2013-06-28 12:06:21 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpvorbispay.c: + vorbispay: always collect headers on data + When we see a data packet, always check if we need to collect any previous + headers. + +2013-06-28 11:43:17 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpvorbispay.c: + vorbispay: handle streamheader as well + Take config strings from the streamheader when we can + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=664312 + +2013-06-27 07:40:29 +0200 David Svensson Fors <davidsf@axis.com> + + * gst/rtp/gstrtph264pay.c: + rtph264pay: avoid double buffer unmap on error + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703171 + +2013-06-27 17:02:14 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: reset-sync before play + Call reset-sync on the rtpbin before we go to playing. This makes us require SR + packets for all streams again before we attempt to sync them. If we don't reset, + it might be that we combine SR packets from before and after the PAUSE/PLAYING + state change and end up with huge bogus offsets. + +2013-06-27 16:23:20 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: improve sync on first packets + Don't throw away the first RTCP packet if it arrives before the first + RTP packet but remember and use it to signal sync once we get the + RTP packet. + See https://bugzilla.gnome.org/show_bug.cgi?id=691400 + +2013-06-27 16:15:45 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: only signal loop when active + Only signal the loop function when it is active. + +2013-06-27 16:13:37 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: signal timestamp discont + We can now use the RESYNC buffer flag to mark a timestamp discont when we update + the ts-offset property. + +2013-06-26 20:49:41 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpjpegpay.c: + jpegpay: turn some errors into warnings + Turn some errors into warnings, we can continue processing so this should + not be fatal. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=657079 + +2013-06-26 14:58:53 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: avoid some flushes + +2013-06-26 14:41:00 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: handle data message when waiting for reply + When we are waiting for a server reply, handle data messages instead of + ignoring them. + +2013-06-26 14:27:34 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: handle data messages in separate method + Refactor and make a method to handle a data message. + +2013-06-25 20:36:18 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: add some more docs to handle-request signal + See https://bugzilla.gnome.org/show_bug.cgi?id=702705 + +2013-06-10 17:20:30 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + Send a clock_provide message on the bus when we get a netclock + +2013-06-10 17:20:14 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: Expose use-pipeline-clock property + +2013-06-24 17:11:35 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/udp/gstmultiudpsink.c: + udpsink: bind to the given interface + Actually call BINDTODEVICE to bind to the interface as given by the + property. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702819 + +2013-06-22 10:59:17 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * ext/vpx/gstvp8dec.c: + vp8dec: Error out gracefully if we get an unsupported color format + In theory we can only get I420 though, just to be on the safe side. + +2013-06-22 10:57:41 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9enc.c: + vp9: Add support for YV12, Y42B and Y444 color formats + The encoder does not work with Y42B and Y444 yet it seems. + +2013-06-22 10:26:18 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * ext/vpx/gstvp9dec.c: + vp9dec: Update default postproc settings from vp9_dx_iface.c + +2013-06-21 13:11:32 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.h: + * gst/matroska/matroska-mux.c: + * gst/matroska/webm-mux.c: + matroska: Add initial VP9 support + +2013-06-21 13:07:30 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * configure.ac: + * ext/vpx/Makefile.am: + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9dec.h: + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvp9enc.h: + * ext/vpx/plugin.c: + vpx: Add initial, experimental VP9 support + +2013-06-21 10:32:30 +0200 Youness Alaoui <youness.alaoui at collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtsp: go back into the loop after doing pause + After we do a pause request, go back to loop mode so that we can listen + for server messages again. + See https://bugzilla.gnome.org/show_bug.cgi?id=702705 + +2013-06-20 23:16:17 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpptdemux.c: + rtpptdemux: Wait after the caps to forward the other events + First forward the stream-start, then the caps, then the rest + +2013-06-21 00:42:02 +0100 Tim-Philipp Müller <tim@centricular.net> + + * sys/ximage/gstximagesrc.c: + ximagesrc: clear dts on buffer acquired from pool + When setting timestamps on outgoing buffers, clear the + dts explicitly, otherwise it may end up being set to a + bogus value from last time it was used. Avoids every + second or so buffer's dts being set to 0. Not that it + should matter for raw video. + +2013-06-20 15:35:11 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * sys/v4l2/gstv4l2.c: + v4l2: don't redefine the PERFORMANCE debug variable + It is already defined in core. + fixes https://bugzilla.gnome.org/show_bug.cgi?id=702732 + +2013-06-20 14:43:47 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: fix race in state change to paused + When we go to paused, we first flush the connection and then send the pause + command. As a result of the flushing, the scheduled paused command can get + lost. Wait until the connection is completely flushed and the rtsp task is + waiting before issuing the paused or playing request. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702705 + +2013-06-20 11:31:22 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: handle SEGMENT query + +2013-06-19 12:37:31 +0200 Sjoerd Simons <sjoerd.simons@collabora.co.uk> + + * sys/v4l2/gstv4l2src.c: + v4l2: Optimize negotiation by removing the query filter + As cameras tend to have a quite specific set of capabilities (specific + framerates for each resolution), getting the peer caps filtered by our + probed caps can cause a big increase in the caps size which slows down + things quire a bit. + As for negotiation v4l2 iterates through the caps of the peer to find the + first intersection with the probed caps, getting the fully expanded + intersection of capabilities is not useful. + Using the same testcase as for bug #702632, adding this patch on top of + the patches suggested there speeds up getting the inital frame from + around ~14-15 seconds to around ~3-4 seconds. + https://bugzilla.gnome.org/show_bug.cgi?id=702638 + +2013-06-19 10:30:56 +0200 Kishore Arepalli <kishore.arepalli@gmail.com> + + * gst/avi/gstavidemux.c: + avidemux: duration query returns zero for DV video in avi + https://bugzilla.gnome.org/show_bug.cgi?id=702625 + +2013-06-19 11:06:37 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/isomp4/qtdemux.c: + qtdemux: Disable usage of allocation queries + This can only reliably work if demuxers have a + separate streaming thread per srcpad. This should be + done in a demuxer base class, which integrates parts + of multiqueue + https://bugzilla.gnome.org/show_bug.cgi?id=701856 + +2013-06-11 15:02:21 +0100 Alex Ashley <bugzilla@ashley-family.net> + + * gst/isomp4/qtdemux.c: + Avoid skipping moov atoms for fragmented MP4 files. + bug #700505 + Following a representation change that causes a resolution change, + the video decoder fails to decode correctly. Dashdemux detects the + representation change and pushes a new caps event and an + initialization segment (a new moov atom) to the downstream qtdemux, + but it doesn't handle this new moov yet, it will only parse the + first one it receives. + This commit changes qtdemux to accept a new moov in a dash bitstream + switching scenario. + +2013-06-19 00:42:54 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: send stream-start only once for each stream + Do not send stream start again when reconfiguring a pad for new caps. + That is common for adaptive streams + +2013-06-05 17:02:49 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * sys/osxvideo/cocoawindow.m: + * sys/osxvideo/osxvideosink.m: + osxvideosink: fix support in VM's without hardware acceleration + +2013-06-15 12:29:31 +0200 Jens Georg <mail@jensge.org> + + * gst/rtp/gstrtpmp2tdepay.c: + rtpmp2tdepay: accept mislabelled streams from GStreamer 0.10 as well + The mp2t payloader in 0.10 mislabelled the streams as MP2T-ES + instead of MP2T, so accept that as well for compatibility reasons. + https://bugzilla.gnome.org/show_bug.cgi?id=702457 + +2013-06-16 05:40:13 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: manage element state ourselves + Lock the state of the all our elements and manage their states + outselves. Because we are working async, we can't rely on the state + change function to set the state at the right time or to return the + right return value from the state change function. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702046 + +2013-06-14 14:09:50 +0200 Bruno Gonzalez <stenyak@gmail.com> + + * gst/matroska/matroska-demux.c: + matroskademux: Don't unlock stream lock without locking it first + https://bugzilla.gnome.org/show_bug.cgi?id=702167 + +2013-06-13 16:00:33 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + rtpsession: Use the right hashtable to calculate bandwidth + Don't use an unused hashtable to iterate source to calculate bandwidth. + Remove unused code. + +2013-06-12 16:27:24 -0600 Brendan Long <b.long@cablelabs.com> + + * configure.ac: + pulsesink: Require PulseAudio >= 2.0 + This is needed for pa_format_info_get_prop_* functions. + https://bugzilla.gnome.org/show_bug.cgi?id=686459 + +2013-06-13 14:23:08 +0530 Arun Raghavan <arun.raghavan@collabora.co.uk> + + * configure.ac: + * ext/pulse/pulsesink.c: + * ext/pulse/pulseutil.c: + Revert "pulsesink: Make 2.0 dependency optional" + This reverts commit 01457027e0d384aca3e551ae684e0aa074ee5498. + We'll just depend on PulseAudio 2.0 or above instead of having the bug + partially fixed based on the installed libpulse version. + +2013-06-13 12:40:15 +0530 Arun Raghavan <arun.raghavan@collabora.co.uk> + + * configure.ac: + * ext/pulse/pulsesink.c: + * ext/pulse/pulseutil.c: + pulsesink: Make 2.0 dependency optional + The getcaps function we added uses some pa_format_info_get_prop... + accessor functions that were only added in 2.0, so we only have our + getcaps implementation exist if we're compiling against libpulse 2.0 or + above. + Eventually, we could bump the minimum requirement to 2.0 or above. + https://bugzilla.gnome.org/show_bug.cgi?id=686459 + +2013-06-12 18:23:46 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/videomixer/videomixer2.c: + Revert "videomixer: When all sinkpads are eos, update output segment stop and forward it" + This reverts commit 2d3910fc7901b5f29e16c0fdd4e9067a6d7f66fe. + It's not solving any problem and instead causes code to fall apart. + https://bugzilla.gnome.org/show_bug.cgi?id=701519 + +2013-01-09 09:39:33 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/matroska/matroska-demux.c: + matroskademux: mark subtitle streams as sparse in stream-start event + And also mark the streams that should be selected by default if + marked so in the headers. + https://bugzilla.gnome.org/show_bug.cgi?id=600648 + +2013-06-11 22:12:58 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/audiofx/audiopanoramaorc-dist.c: + * gst/audiofx/audiopanoramaorc-dist.h: + audiopanorama: add prebuilt files + +2013-06-11 20:27:51 +0200 Stefan Sauer <ensonic@users.sf.net> + + * tests/check/elements/audiopanorama.c: + audiopanorama: cleanup and expand the tests + Split out two more tests. Extract more common code into helpers. Add coverage for float. + +2013-06-10 21:15:20 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/audiofx/audiopanorama.c: + audiopanorama: cleanup of transform() + Only map input if we are reading it. Cleanup the logging and the comments a bit. + +2013-06-09 20:35:18 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/audiofx/Makefile.am: + * gst/audiofx/audiopanorama.c: + * gst/audiofx/audiopanorama.h: + * gst/audiofx/audiopanoramaorc.orc: + audiopanorama: use orc to speedup processing + Use special variants for the case when we don't change the panorama (pan=0.0). + Simplify the processing functions by passing the panorama value directy instead + of the instance. Use orc for clearing buffers too. + +2013-06-11 19:24:49 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/videomixer2.c: + videomixer: check last end_time after conversion to running segment + The last end_time was saved after conversion, so the comparison + had to be made after conversion for it to make sense. + https://bugzilla.gnome.org/show_bug.cgi?id=701385 + +2013-06-11 19:22:20 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/videomixer2.c: + videomixer: add mix->segment.start to output_end_time + When the segment start is not 0, this created a situation where + the output_end_time is inferior to output_start_time, and the duration + of the next buffer ended up underflowing. + https://bugzilla.gnome.org/show_bug.cgi?id=701385 + +2013-06-11 13:54:53 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/matroska/matroska-demux.c: + matroskademux: Send stream headers after the segment event + https://bugzilla.gnome.org/show_bug.cgi?id=700799 + +2013-06-11 12:26:24 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/isomp4/qtdemux.c: + qtdemux: Do allocation query after exposing all pads and no-more-pads + Also configure video streams as early as possible. + Related https://bugzilla.gnome.org/show_bug.cgi?id=701856 + but not fixing that. + +2013-06-11 12:25:46 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/flv/gstflvdemux.c: + flvdemux: Don't forward CAPS events from upstream + Just use the default pad event handler. + https://bugzilla.gnome.org/show_bug.cgi?id=701976 + +2013-05-26 08:18:04 +0530 Arun Raghavan <arun.raghavan@collabora.co.uk> + + * ext/pulse/pulsesink.c: + pulsesink: Cache the getcaps/acceptcaps probe stream + getcaps is called frequently during stream setup, and creating a new + stream each time is very inefficient. There's some more room for + optimisation by caching the queried sink formats as well, but this needs + some more changes to listen for format changes on the sink (for when + supported formats change between probe stream creation and sink + querying). + https://bugzilla.gnome.org/show_bug.cgi?id=686459 + +2013-05-23 21:39:08 +0530 Arun Raghavan <arun.raghavan@collabora.co.uk> + + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesink.h: + * ext/pulse/pulseutil.c: + * ext/pulse/pulseutil.h: + pulsesink: Add a getcaps function + This allows us to have more fine-tuned caps in READY or above. However, + this is _really_ inefficient since we create a new stream and query sink + for every getcaps in READY, which on a simple gst-launch line happens + about 35 times. The next step is to cache getcaps results. + https://bugzilla.gnome.org/show_bug.cgi?id=686459 + +2013-05-10 11:32:44 +0530 Arun Raghavan <arun.raghavan@collabora.co.uk> + + * ext/pulse/pulsesink.c: + pulsesink: Take a lock on the ringbuffer in acceptcaps + This is needed as a concurrent state change could pull the context or + stream out from under our feet. + https://bugzilla.gnome.org/show_bug.cgi?id=686459 + +2013-06-09 20:29:09 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/audiofx/audiopanorama.c: + * gst/audiofx/audiopanorama.h: + audiopanorama: move the enum to the header and use instead of gint + Move the enum for the processing method to the header so that we can use the + type for the instance struct. + +2013-06-09 20:32:22 +0200 Stefan Sauer <ensonic@users.sf.net> + + * tests/check/elements/level.c: + level: rework the tests to cover other formats too + +2013-06-05 16:32:30 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: make sure the element is not deleted before the pool + The pool accesses data from the v4l2object so it must exist at least + as long as the pool. Refcount the element which controls the object + live-time. + https://bugzilla.gnome.org/show_bug.cgi?id=701650 + +2013-06-07 15:38:25 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/libpng/Makefile.am: + png: Link with libgstbase for GstByteReader and GstAdapter + +2013-06-07 15:15:15 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/wavenc/Makefile.am: + wavenc: Link with libgstbase for GstByteWriter + +2013-06-07 13:26:35 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/wavparse/gstwavparse.c: + wavparse: Push stream-start event in pull mode before anything else + +2013-05-10 12:09:19 +0530 Arun Raghavan <arun.raghavan@collabora.co.uk> + + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesink.h: + pulsesink: Get rid of acceptcaps side-effects + The sink info callback should not have side-effects on the GstPulseSink + object since we are sometimes using with a dummy stream in acceptcaps. + https://bugzilla.gnome.org/show_bug.cgi?id=686459 + +2013-06-05 18:36:40 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * configure.ac: + Back to development + +=== release 1.1.1 === + +2013-06-05 17:58:51 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ChangeLog: + * NEWS: + * RELEASE: + * common: + * configure.ac: + * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * docs/plugins/gst-plugins-good-plugins.interfaces: + * 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: + * gst/deinterlace/tvtime-dist.c: + * gst/deinterlace/tvtime-dist.h: + * gst/videobox/gstvideoboxorc-dist.c: + * gst/videobox/gstvideoboxorc-dist.h: + * gst/videomixer/blendorc-dist.c: + * gst/videomixer/blendorc-dist.h: + * win32/common/config.h: + Release 1.1.1 + +2013-06-05 16:35:19 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * po/af.po: + * po/az.po: + * po/bg.po: + * po/ca.po: + * po/cs.po: + * po/da.po: + * po/de.po: + * po/el.po: + * po/en_GB.po: + * po/eo.po: + * po/es.po: + * po/eu.po: + * po/fi.po: + * po/fr.po: + * po/gl.po: + * po/hu.po: + * po/id.po: + * po/it.po: + * po/ja.po: + * po/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 + +2013-06-05 15:50:04 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/wavenc/gstwavenc.c: + wavenc: Fix taglist ref handling that made the unit test fail + +2013-06-05 15:14:54 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * common: + Automatic update of common submodule + From 098c0d7 to 01a7a46 + +2013-06-03 09:17:43 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/v4l2_calls.c: + v4l2: iterate controls with V4L2_CTRL_FLAG_NEXT_CTRL if possible + In v2.6.18 control classes where added to the v4l2 API. + Iterating over CIDs starting with V4L2_CID_BASE will only find controls for + the first control class. + By iterating with V4L2_CTRL_FLAG_NEXT_CTRL all controls are found. + This is necessary to make controls from other control classes available in + the extra-controls property. + If V4L2_CTRL_FLAG_NEXT_CTRL is not defined at compile time or not supported + at runtime then the old mechanism for iterating is used. + https://bugzilla.gnome.org/show_bug.cgi?id=701540 + +2013-06-05 12:12:53 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/udp/gstudpsink.c: + udpsink: avoid leaking the host + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701586 + +2013-06-04 08:26:33 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + v4l2: improve pixel aspect ratio handling + Instead of just assuming a aspect ratio of 1/1 use VIDIOC_CROPCAP to ask + the device. + This also add a pixel-aspect-ratio property to overwrite the value from the + driver and a force-aspect-ratio property to ignore it. + https://bugzilla.gnome.org/show_bug.cgi?id=700285 + +2013-06-04 17:04:11 +0200 Stirling Westrup <swestrup@gmail.com> + + * sys/v4l2/v4l2_calls.c: + v4l2: Fix compilation with older kernels + https://bugzilla.gnome.org/show_bug.cgi?id=701595 + +2013-06-03 17:07:10 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: call VIDIOC_REQBUFS with count = 0 in pool_finalize + Without this the following sequence fails: + - set_caps() + - object_stop() (does nothing) + - set_format() -> VIDIOC_S_FMT + - set_config() -> VIDIOC_REQBUFS with count = N + - set_caps() + - object_stop() + - pool_finalize() + - set_format() -> VIDIOC_S_FMT => EBUSY + Usually the pool is started after set_config(), in which case object_stop() + will result in a pool_stop and therefore VIDIOC_REQBUFS with count = 0 but + that is not guaranteed. + Also calling VIDIOC_REQBUFS with count = 0 in pool_finalize() if necessary + fixes this problem. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701543 + +2013-05-28 19:14:15 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: rework sink buffer refcounting + This is a followup patch for #700781, which is not quite correct. + The buffer handling is quite complicated here. + The original code intended to the the following: + - gst_v4l2_buffer_pool_process() calls QBUF and adds the buffer to the + local list. + - The sink calls gst_buffer_unref() which returns the buffer to the pool + but not the 'free list'. + - Some time later DQBUF returns the buffer and + gst_v4l2_buffer_pool_release_buffer() puts in on the 'free list'. + If the buffer must be copied then (parent_class)->acquire_buffer() is + called directly to keep the buffer in the pool. + This has two problems: + 1. If gst_v4l2_buffer_pool_release_buffer() is called before the buffer is + returned to the pool, then the buffer is put on the 'free list' twice. + This can happen if a reference to the buffer is kept outside the sink, + of if DQBUF returns the buffer, that was just queued with QBUF. + 2. If buffers are copied, then all buffers are in the pool at all times. As + a result gst_v4l2_buffer_pool_stop() and gst_v4l2_buffer_pool_dqbuf() + can access pool->buffers at the same time, which can lead to memory + corruption. + The patch for #700781 fixes those problems, but with the side effect that + there are always buffers outside the pool (because they are queued) and + the pool is never stopped. + This patch fixes this by releasing the reference to the buffer after + handling it (to avoid problem 2.) so it can be returned to the pool. + gst_v4l2_buffer_pool_release_buffer() is only called if the buffer is + already in the pool (to avoid problem 1.). + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701375 + +2013-06-02 15:24:38 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: make sure taglist is writable before adding tags + Avoids assertions + +2013-05-30 19:24:13 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: effectively skip tracks that weren't listed on the 1st moov + Without this, stream is NULL and the code will try to access it, leading + to segfaults. + +2013-05-30 19:23:50 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: skip redundant check + !got_moov is already checked the line above + +2013-06-02 13:03:40 +0200 Stefan Sauer <ensonic@users.sf.net> + + * tests/check/elements/level.c: + tests: cleanup level tests + Split out a few more tests to avoid checking the same stuff over and over again. + +2013-06-01 21:33:46 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/level/gstlevel.h: + level: remove unused variables in instance struct + +2013-05-31 18:13:02 +0200 Stefan Sauer <ensonic@users.sf.net> + + * tests/check/elements/level.c: + level: add a test for continous timestamps + A test that checks that msg[n].ts + msg[n].dur == msg[n+1].ts. + +2013-04-12 16:02:44 +0300 Anton Belka <antonbelka@gmail.com> + + * gst/wavenc/gstwavenc.c: + * gst/wavenc/gstwavenc.h: + wavenc: add tags & toc support + Write tags as LIST INFO chunk. Format the toc as cue + LIST adtl chunk. Remove + old #ifdef'ed code. + +2013-05-31 15:12:08 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtph264pay.c: + Revert "rtph264pay: Restructuring to allow for adding optional caps" + This reverts commit 61666898cfe89a1b21d3e6850ab44f5b1633ed79. + This commit changes what the set_sps_pps() function does, not it doesn't + set caps anymore (and should have been renamed). The main problem is that + not all call sites are updated and thus leak the string. + +2013-05-31 15:11:12 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264depay.h: + * gst/rtp/gstrtph264pay.c: + * tests/check/elements/rtp-payloading.c: + Revert "rtph264pay/depay: Add frame dimensions a payloaded caps" + This reverts commit 3dca756a5dba55266256f239e3e12a3d058e185a. + The H264 RTP spec has no attributes for width and height. + +2013-05-31 15:09:51 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264depay.h: + * gst/rtp/gstrtph264pay.c: + Revert "rtph264pay/depay: Add optional framerate caps for use in SDP" + This reverts commit d8825e2a5c0bfb883ff88e2c9da499c800ebca0a. + There is no framerate attribute in the h264 RTP spec. + +2013-05-31 15:08:16 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpjpegdepay.c: + * gst/rtp/gstrtpjpegpay.c: + Revert "rtpjpegpay/depay: Replace framesize caps with width/height" + This reverts commit 0075d111b475ca27895ee9476154260b6902940b. + Extra application/x-rtp are SDP fields, which are strings. + +2013-05-31 15:05:51 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpjpegdepay.c: + * gst/rtp/gstrtpjpegpay.c: + * tests/check/elements/rtp-payloading.c: + Revert "rtpjpegpay/depay: Replace framerate caps field with fraction" + This reverts commit 9fd25a810b859e0ec205176578735100d83de4af. + We deal with sdp attributes in application/sdp, which are always strings. + +2013-05-31 12:33:21 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: add extra TLS url protocols + We also support TLS protocols now. + +2013-05-30 14:48:42 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/videomixer/videomixer2.c: + videomixer: Add FIXME comment about the DURATION query from adder + Currently the code just takes with maximum upstream duration, which + is wrong. It should be the maximum upstream duration in running time. + +2013-05-30 21:20:59 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/videomixer2.c: + videomixer: Set a reference to mix->current_caps as the QUERY_CAPS result. + +2013-05-30 17:37:13 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/level/gstlevel.c: + level: misc cleanups + Fix some oudated comments. Sort out some confusion of interval_frames and num_frames. + +2013-05-29 20:35:41 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * sys/v4l2/v4l2_calls.c: + v4l2: Only conditionally use V4L2_CTRL_TYPE_INTEGER_MENU, it's not available in older versions + +2013-05-20 16:45:37 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/v4l2_calls.c: + * sys/v4l2/v4l2_calls.h: + v4l2: add a property for arbitrary v4l2 controls + This makes it possible to set any controls that can be set with + VIDIOC_S_CTRL. + The controls are set when the property is set (if the device is open) + and when the device is opened. + https://bugzilla.gnome.org/show_bug.cgi?id=698837 + +2013-05-28 18:31:07 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/level/gstlevel.c: + level: fix discontinuities in timestamps + +2013-05-28 15:46:43 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/gdk_pixbuf/gstgdkanimation.c: + * ext/gdk_pixbuf/gstgdkpixbufdec.c: + * ext/gdk_pixbuf/gstgdkpixbufdec.h: + gdkpixbufdec: Keep serialized events in order, and don't send SEGMENT before CAPS + +2013-05-28 15:45:49 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: create and push stream-start in TCP mode + +2013-05-28 15:10:07 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: remove some obsolete code + It is not needed to do a state change from the _play() function on + ourselves. The state change function already did that and we don't want to + interfere with that (or use hacks to avoid interference). + +2013-05-28 12:24:37 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: set RTCP caps on the RTCP pads + +2013-05-28 12:23:37 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: send stream-start and segment events + Also send stream-start and segment event on the RTCP pad. + We don't need to send anything on the sync_src pad because we + already forwarded all incomming events. + +2013-04-25 15:25:06 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: add signal to handle server requests + Add a signal to be notified of a server request. The signal handler can then + construct the response message for the server. + See https://bugzilla.gnome.org/show_bug.cgi?id=632207 + +2013-05-27 22:43:25 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/videomixer/videomixer2.c: + videomixer: Maintain z-order when new pad are added + https://bugzilla.gnome.org/show_bug.cgi?id=701109 + +2013-03-06 13:17:54 +0000 Tom Greenwood <tcdgreenwood@hotmail.com> + + * ext/vpx/gstvp8enc.c: + * ext/vpx/gstvp8enc.h: + vp8enc: Add property to manually specify the timebase of the encoder + https://bugzilla.gnome.org/show_bug.cgi?id=695709 + +2013-05-25 12:17:40 -0400 Thibault Saunier <thibault.saunier@collabora.com> + + * gst/videomixer/videomixer2.c: + videomixer: Always handle flush_stop_pending atomically + It is not protected with the COLLECT_PADS_STREAM_LOCK anymore + +2013-05-23 18:14:17 -0400 Thibault Saunier <thibault.saunier@collabora.com> + + * tests/check/Makefile.am: + * tests/check/elements/videomixer.c: + tests: videomixer: Add a testsuite for videomixer + This is mostly copy pasted from -base/tests/check/elements/adder.c + +2013-05-25 10:57:02 -0400 Thibault Saunier <thibault.saunier@collabora.com> + + * gst/videomixer/videomixer2.c: + videomixer: Do not take COLLECT_PADS_STREAM_LOCK when unnecessary + Collectpad takes the lock itself when receiving serialized events + and we should not take it for not serialized ones + +2013-05-24 19:34:05 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/flx/gstflxdec.c: + flxdec: Properly skip non-frame chunks + +2013-05-24 19:31:14 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/flx/gstflxdec.c: + flxdec: Flush data from adapter after reading it + Otherwise we're going in an infinite loop, reading the same data + over and over again. + +2013-04-24 15:39:54 +0000 Andoni Morales Alastruey <ylatuya@gmail.com> + + * gst/goom2k1/Makefile.am: + goom2k1: fix more duplicated symbols + +2013-05-22 02:40:52 +0200 Sebastian Rasmussen <sebrn@axis.com> + + * gst/rtp/gstrtpjpegdepay.c: + * gst/rtp/gstrtpjpegpay.c: + * tests/check/elements/rtp-payloading.c: + rtpjpegpay/depay: Replace framerate caps field with fraction + The previous implementation had the formatting of SDP attributes happen + in each RTP payloader, now instead the constituent values are propagated + as caps fields. This allows for applications to do SDP offer/answer + based on caps negotiation. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700748 + +2013-05-22 01:58:57 +0200 Sebastian Rasmussen <sebrn@axis.com> + + * gst/rtp/gstrtpjpegdepay.c: + * gst/rtp/gstrtpjpegpay.c: + rtpjpegpay/depay: Replace framesize caps with width/height + The previous implementation had the formatting of SDP attributes happen + in each RTP payloader, now instead the constituent values are propagated + as caps fields. This allows for applications to do SDP offer/answer + based on caps negotiation. + Keep parsing a-framerate, x-framerate and x-dimensions in rtpjpegdepay + to be backwards compatible with previous payloaders. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700748 + +2013-05-22 03:18:07 +0200 Sebastian Rasmussen <sebrn@axis.com> + + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264depay.h: + * gst/rtp/gstrtph264pay.c: + rtph264pay/depay: Add optional framerate caps for use in SDP + This allows for applications to format SDP attributes and still do SDP + offer/answer based on caps negotiation. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700749 + +2013-05-22 03:09:44 +0200 Sebastian Rasmussen <sebrn@axis.com> + + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264depay.h: + * gst/rtp/gstrtph264pay.c: + * tests/check/elements/rtp-payloading.c: + rtph264pay/depay: Add frame dimensions a payloaded caps + This allows for applications to format SDP attributes and still do SDP + offer/answer based on caps negotiation. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700749 + +2013-05-20 22:14:44 +0200 Sebastian Rasmussen <sebrn@axis.com> + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Restructuring to allow for adding optional caps + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700749 + +2013-05-23 18:42:09 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/udp/gstdynudpsink.c: + * gst/udp/gstdynudpsink.h: + * gst/udp/gstmultiudpsink.c: + * gst/udp/gstmultiudpsink.h: + (dyn|multi)udpsink: Add properties to specify the bind address and port + By default we use the any addresses and a random port for binding the socket. + +2013-05-23 18:05:07 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/udp/gstdynudpsink.c: + * gst/udp/gstmultiudpsink.c: + (dyn|multi)udpsink: Bind socket before using it + https://bugzilla.gnome.org/show_bug.cgi?id=700878 + +2013-05-23 17:25:29 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/udp/gstmultiudpsink.c: + (multi)udpsink: Add missing getters for socket-v6 and used-socket-v6 properties + +2013-05-22 21:01:48 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/videomixer/videomixer2.c: + videomixer: Don't hold stream-lock while pushing non-serialized events + https://bugzilla.gnome.org/show_bug.cgi?id=700868 + +2013-05-22 21:00:45 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/videomixer/videomixer2.c: + videomixer: Don't hold object lock while sending events + https://bugzilla.gnome.org/show_bug.cgi?id=700868 + +2013-05-22 17:32:33 +0200 Sebastian Dröge <slomo@circular-chaos.org> + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: The return value of gst_pad_set_caps() is not relevant anymore + Caps can fail to be set because the pad is not linked yet for example. + +2013-05-15 16:39:36 -0700 David Schleef <ds@schleef.org> + + * gst/isomp4/qtdemux.c: + qtdemux: Add error if file has playready drm + +2013-05-18 15:06:49 -0400 Thibault Saunier <thibault.saunier@collabora.com> + + * gst/videomixer/videomixer2.c: + videomixer: Send a reconfigure event upstream if sinkpad caps are not usable + https://bugzilla.gnome.org/show_bug.cgi?id=684237 + +2013-05-21 12:02:51 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: keep a reference to all queued buffers + Without this, a queued buffer may be required, filled and queued before it + is dequeued. + Calling gst_buffer_pool_acquire_buffer() ensures that the buffer is set up + correctly and gst_buffer_unref() calls buffer_release(). + https://bugzilla.gnome.org/show_bug.cgi?id=700781 + +2013-05-21 13:33:59 +0200 Alexander Schrab <alexas@axis.com> + + * gst/law/mulaw-decode.c: + mulawdec: Handle NULL buffers in handle_frame + https://bugzilla.gnome.org/show_bug.cgi?id=698894 + +2013-05-20 21:44:13 +0200 Sebastian Rasmussen <sebrn@axis.com> + + * gst/rtp/gstrtpjpegdepay.c: + * gst/rtp/gstrtpjpegpay.c: + rtpjpegpay/depay: Add framesize caps for use in SDP + The format of the value adheres to RFC6064 and it is meant to be parsed + and included in the SDP sent by gst-rtsp-server to its clients. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700748 + +2013-05-20 21:34:13 +0200 Sebastian Rasmussen <sebrn@axis.com> + + * gst/rtp/gstrtpjpegpay.c: + rtpjpegpay: Add optional framerate caps for use in SDP + The format of the value adheres to RFC4566 and it is meant to be parsed + and included in the SDP sent by gst-rtsp-server to its clients. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700748 + +2013-05-20 19:59:13 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/videomixer2.c: + videomixer: When all sinkpads are eos, update output segment stop and forward it + https://bugzilla.gnome.org/show_bug.cgi?id=699793 + +2013-05-20 19:51:07 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/videomixer2.c: + videomixer: Don't reset the output segment on flush stop + Only init it when getting from READY to PAUSED, and change it on seek events. + https://bugzilla.gnome.org/show_bug.cgi?id=699793 + +2013-05-17 10:16:48 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2sink.c: + * sys/v4l2/gstv4l2src.c: + v4l2: Don't stop streaming when set_caps is called with unchanged caps + This can happen if other parts of the pipeline are reconfigured. + Stop streaming even for a short amount of time can be quite visible, so it + should be avoided if possible. + https://bugzilla.gnome.org/show_bug.cgi?id=700503 + +2013-05-18 15:39:36 -0400 Thibault Saunier <thibault.saunier@collabora.com> + + * tests/check/pipelines/simple-launch-lines.c: + tests: Re-enable videomixer test + https://bugzilla.gnome.org/show_bug.cgi?id=684237 + +2013-05-18 14:36:39 -0400 Thibault Saunier <thibault.saunier@collabora.com> + + * gst/videomixer/videomixer2.c: + * gst/videomixer/videomixer2.h: + videomixer: Send caps event from the streaming thread + This way we avoid races in caps negotiation and we make sure + that the caps are sent after stream-start. + https://bugzilla.gnome.org/show_bug.cgi?id=684237 + +2013-05-05 20:25:20 +0100 Thibault Saunier <thibault.saunier@collabora.com> + + * gst/videomixer/videomixer2.c: + videomixer: Do not send flush_stop when receiving a seek + There is no reason to send a flush-stop when receiving a seek event. + In the case of a flushing seek, we could eventually want to, but in + the code path were we check if the seek is "flushing", we have the + following comment that makes sense: + "we can't send FLUSH_STOP here since upstream could start pushing data + after we unlock mix->collect. + We set flush_stop_pending to TRUE instead and send FLUSH_STOP after + forwarding the seek upstream or from gst_videomixer_collected, + whichever happens first." + https://bugzilla.gnome.org/show_bug.cgi?id=684237 + +2013-05-05 20:24:49 +0100 Thibault Saunier <thibault.saunier@collabora.com> + + * gst/videomixer/videomixer2.c: + videomixer2: Protect flush_stop_pending with the collectpad stream lock + And make sure to expect a flush-stop after a flush-start + https://bugzilla.gnome.org/show_bug.cgi?id=684237 + +2013-05-17 12:37:59 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * gst/rtp/gstrtpmp4apay.c: + rtpmp4apay: clear config buffer before using it + This is necessary because parts of the memory are only modified with "|=" + https://bugzilla.gnome.org/show_bug.cgi?id=700514 + +2013-05-14 17:30:07 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: Do not expect EOS after a segment event if upstream is mss + In case qtdemux is handling a mss stream, do not mark the stream to wait + for EOS after a segment. Even if it seems to be the last one according to + the current streams information. + MSS handling is different here because there is another demuxer driving + the pipeline + +2013-05-14 16:32:51 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: only set channels and rate if qtdemux knows it + Setting both of those to 0 is pointless and means that qtdemux + doesn't know the real value. Avoid setting it in this case. + +2013-05-14 15:23:08 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/isomp4/qtdemux.c: + qtdemux: set alac caps using info from codec buffer + The samplerate field in the STSD atom is not right for some ALAC files + (usually when audio is 96kHz/24bits), so the audio caps must be + extracted from the codec data. + https://bugzilla.gnome.org/show_bug.cgi?id=700382 + +2013-05-15 11:13:12 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/avi/gstavidemux.c: + avidemux: do not push discont buffers if they aren't discont + https://bugzilla.gnome.org/show_bug.cgi?id=682110 + +2013-05-15 10:51:38 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * common: + Automatic update of common submodule + From 5edcd85 to 098c0d7 + +2013-05-14 10:28:10 -0400 Joshua M. Doe <oss@nvl.army.mil> + + * gst/videocrop/gstaspectratiocrop.c: + * gst/videocrop/gstvideocrop.c: + videocrop: Add support for GRAY16_LE/GRAY16_BE + https://bugzilla.gnome.org/show_bug.cgi?id=700331 + +2013-05-14 17:29:58 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/replaygain/gstrgvolume.c: + rgvolume: Send all events through the proxypads instead of just sending to the target + Otherwise the sticky events are missing on the proxypads. + +2013-05-14 17:29:18 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/rgvolume.c: + rgvolume: Fix event handling in the unit test + +2013-05-14 16:34:54 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/rglimiter.c: + rglimiter: Fix event handling in unit tests + +2013-05-14 16:31:57 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/rganalysis.c: + rganalysis: Fix event handling in unit test + +2013-05-14 16:08:54 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/qtmux.c: + qtmux: Fix event handling in unit test + +2013-05-14 16:00:58 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/multifile.c: + multifile: Fix event handling in unit test + +2013-05-14 13:58:01 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/mulawdec.c: + * tests/check/elements/mulawenc.c: + mulaw: Fix event handling in unit test + +2013-05-14 13:52:18 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/matroska/matroska-parse.c: + matroskaparse: Make sure to send a segment event before dataflow + +2013-05-14 10:52:19 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + v4l2: only add interlace-mode to the caps for raw formats + https://bugzilla.gnome.org/show_bug.cgi?id=700280 + +2013-05-14 12:03:03 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + v4l2: copy and set the actual size of the content + https://bugzilla.gnome.org/show_bug.cgi?id=700282 + +2013-05-14 10:25:56 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/interleave.c: + interleave: Fix event handling in unit test + +2013-05-14 09:45:12 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Improve handling of min/max buffer numbers of the buffer pool + +2013-05-14 03:42:59 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: set caps for buffer pool config + +2013-05-13 13:30:38 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/multifile/gstmultifilesink.c: + multifilesink: Let the base class do get_times + This will make sync=TRUE work, the default is still sync=FALSE + +2013-05-11 23:08:23 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/interleave/interleave.c: + interleave: Send stream-start before caps event + +2013-05-11 23:24:36 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + * tests/check/elements/rtpmux.c: + rtpmux: Send stream-start before caps + +2013-05-11 23:28:12 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer-test: Send stream-start before caps followed by segment + +2013-05-11 23:34:36 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * tests/check/elements/rtpbin.c: + rtpbin-test: Send missing stream-start and segment events + +2013-05-13 15:36:19 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/level.c: + * tests/check/elements/matroskamux.c: + tests: Fix some more event handling in tests + +2013-05-13 15:19:36 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/icydemux.c: + icydemux: Fix event handling in unit test + +2013-05-13 15:19:25 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/icydemux/gsticydemux.c: + icydemux: Fix sticky event handling + +2013-05-13 15:06:03 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/flv/gstflvmux.c: + flvmux: Push sticky events in the right order + +2013-05-13 14:55:14 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/deinterleave.c: + deinterleave: Fix event handling in test + +2013-05-13 14:07:11 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/interleave/deinterleave.c: + deinterleave: Fix sticky event handling + +2013-05-13 13:55:44 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/interleave/deinterleave.c: + deinterleave: Code style fixes + +2013-05-13 10:43:32 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: First let baseclass handle events, then put them into the stream + Fixes handling of sticky events. + https://bugzilla.gnome.org/show_bug.cgi?id=700213 + +2013-05-09 22:05:24 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * tests/check/elements/shapewipe.c: + shapewipe-test: Send inital events + https://bugzilla.gnome.org/show_bug.cgi?id=700033 + +2013-05-09 18:32:23 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/spectrum.c: + spectrum-test: Send inital events + https://bugzilla.gnome.org/show_bug.cgi?id=700033 + +2013-05-09 18:25:17 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/videofilter.c: + videofilter-test: Send inital events + https://bugzilla.gnome.org/show_bug.cgi?id=700033 + +2013-05-09 18:23:30 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/wavpackparse.c: + wavpackparse-test: Send inital events + https://bugzilla.gnome.org/show_bug.cgi?id=700033 + +2013-05-09 18:21:54 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/y4menc.c: + y4menc-test: Send inital events + https://bugzilla.gnome.org/show_bug.cgi?id=700033 + +2013-05-10 14:00:33 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/multipart/multipartdemux.c: + multipartdemux: fix example pipeline + Need jpegparse. + +2013-05-10 13:34:16 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/alphacolor.c: + * tests/check/elements/aspectratiocrop.c: + * tests/check/elements/audioamplify.c: + * tests/check/elements/audiochebband.c: + * tests/check/elements/audiocheblimit.c: + * tests/check/elements/audiodynamic.c: + * tests/check/elements/audioecho.c: + * tests/check/elements/audioinvert.c: + * tests/check/elements/audiopanorama.c: + * tests/check/elements/audiowsincband.c: + * tests/check/elements/audiowsinclimit.c: + * tests/check/elements/avimux.c: + * tests/check/elements/avisubtitle.c: + * tests/check/elements/capssetter.c: + * tests/check/elements/deinterlace.c: + * tests/check/elements/dtmf.c: + * tests/check/elements/equalizer.c: + tests: Fix some more unit tests + +2013-05-10 13:10:29 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/parser.c: + tests: Fix parser tests + +2013-05-09 22:20:28 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/shapewipe/gstshapewipe.c: + shapewipe: Can't map twice the same buffer for writing + I took the opportunity to simplify that code a bit. We now use + gst_buffer_make_writable() to make the buffer writable and map twice the + same buffer, with first map being read/write, and second read only. This + get rid of the critical: + GStreamer-CRITICAL **: gst_structure_set_name: assertion `IS_MUTABLE + https://bugzilla.gnome.org/show_bug.cgi?id=700044 + +2013-05-09 22:15:54 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/shapewipe/gstshapewipe.c: + shapewipe: Ensure caps are writable + The exist one case where that we endup with original caps in ret, in which + case we are not guaratied to have writable caps. Simply ensure this is the + caps are writable before entering the loop. + https://bugzilla.gnome.org/show_bug.cgi?id=700044 + +2013-05-09 22:13:51 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/shapewipe/gstshapewipe.c: + shapewipe: Fix sample pipeline in documentation + https://bugzilla.gnome.org/show_bug.cgi?id=700044 + +2013-05-09 18:05:02 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/jpegenc.c: + jpegenc-test: Send inital events + https://bugzilla.gnome.org/show_bug.cgi?id=700033 + +2013-05-09 17:49:03 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/vp8enc.c: + vp8enc-test: Send inital events + https://bugzilla.gnome.org/show_bug.cgi?id=700033 + +2013-05-09 17:20:18 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/vp8dec.c: + vp8dec-test: Send inital events + https://bugzilla.gnome.org/show_bug.cgi?id=700033 + +2013-05-09 17:19:53 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/wavpackdec.c: + wavpackdec-test: Send initial events + https://bugzilla.gnome.org/show_bug.cgi?id=700033 + +2013-05-09 16:26:19 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/videomixer/videomixer2.c: + Revert "videomixer2: Take into account new segments" + This reverts commit 84ae670ab40b258a10e1e21471e6dc9d786bf086. + Actually this is not how it is supposed to work. videomixer + creates a [0,-1] segment and then puts frames of the different + streams there based on their running times in their own segments. + +2013-05-06 23:43:03 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/videomixer2.c: + videomixer2: Take into account new segments + Also forward the event downstream on the next opportunity. + https://bugzilla.gnome.org/show_bug.cgi?id=699793 + +2013-05-09 09:07:38 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/rtsp/gstrtspsrc.c: + Revert "gstrtspsrc: set buffer-size for multicast buffers" + This reverts commit 2481e95d038b42297a016f1d2dc1af26d2175b42. + This is already done five lines above, it was added a year + ago in commit 561b131e. + +2013-05-08 19:54:19 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * tests/check/elements/videofilter.c: + videofilter: Unit test send SEGMENT before CAPS + https://bugzilla.gnome.org/show_bug.cgi?id=699966 + +2013-05-08 19:22:31 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * tests/check/elements/avimux.c: + avimux: Unit test sends SEGMENT before caps + https://bugzilla.gnome.org/show_bug.cgi?id=699966 + +2013-05-08 19:08:24 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * tests/check/elements/audiowsincband.c: + audiowsincband: Test should send segment after CAPS + This makes the unit test pass again. + https://bugzilla.gnome.org/show_bug.cgi?id=699966 + +2013-05-08 19:00:28 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * tests/check/elements/audiowsinclimit.c: + audiowsinclimit: Test should send segment after CAPS + This makes the unit test pass again. + https://bugzilla.gnome.org/show_bug.cgi?id=699966 + +2013-05-08 18:44:32 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/audiofx/audiowsinclimit.c: + audiowsinclimit: Frequence property renamed cutoff + Updating the documentation to reflect this change. + See: https://bugzilla.gnome.org/show_bug.cgi?id=699964 + +2013-05-08 15:25:58 -0300 Aha Unsworth <aha.unsworth@gmail.com> + + * gst/rtsp/gstrtspsrc.c: + gstrtspsrc: set buffer-size for multicast buffers + For receiving video data via RTSP when the video is sent via + multicast there is no way to specify the udpsrc buffer-size. + On windows the native network buffer is not large and with video + i-frames being huge the buffer is to small and you get i-frame corruption, + it looks terrible, and there is no (easy) way to set the udpsrc buffer-size. + https://bugs.freedesktop.org/show_bug.cgi?id=52264 + +2013-05-08 16:02:05 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/videomixer/videomixer2.c: + videomixer2: Send stream-start before caps event + https://bugzilla.gnome.org/show_bug.cgi?id=699895 + +2013-05-07 19:15:49 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * ext/jpeg/gstjpegdec.c: + jpegdec: fix compiler warning on type check + +2013-04-18 07:49:54 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: push new caps events when caps change + Whenever the demuxer has a new caps on a stream, it should set the + new_caps variable to true and a new caps event will be pushed before + the next buffer + +2013-04-17 16:54:22 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: do not push discont buffers if they aren't discont + qtdemux takes its buffers from a GstAdapter. Those buffers are created + from the larger buffer that it obtained from upstream and they carry + the same flags, including DISCONT if it is set. In these cases, all + buffers that qtdemux is going to push would be marked as DISCONT. + This scenario can make parsers/decoders flush on every buffer leading + to no decoding at all hapenning. This patch prevents this by unsetting + the flag if it shouldn't be set. + +2013-04-12 09:08:16 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + qtdemux: some code cleanup for mss handling code + * Explicitly init variables for fragmented formats at init + * Do not use GstClockTime type if the variable isn't a timestamp + * Fix a style/readability issue at an if block + * Group 2 mss mode conditional blocks together to improve readability + Conflicts: + gst/isomp4/qtdemux.c + +2013-04-12 10:21:11 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: avoid storing non-time newsegments to push later + This can confuse downstream when they get a byte segment after receiving + the natural time segment from qtdemux that it sends when starting to + push buffers. This is specially the case with parsers that try to + convert the position from byte to time format and might miss the + correct position for playback to start. + +2013-04-10 18:02:28 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: avoid setting fields to non-writable caps + +2013-03-10 04:15:06 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: don't send so many segment events + Only send one segment event in the beginning of the stream, not + after each moov and moof atom. + Conflicts: + gst/isomp4/qtdemux.c + +2013-03-08 16:02:26 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: place incomming timestamps on output + Place the incomming timestamp (if any) directly onto the outgoing buffers + and interpollate other timestamps. + Conflicts: + gst/isomp4/qtdemux.c + +2013-05-07 10:16:18 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: improve reset of internal status + Reset different variables on state changes to ready and when + handling a flush-stop. For handling flush stops we should check + if there is an upstream adaptive demuxer driving the pipeline as this + means that qtdemux will get a new moov atom. For 'standard' isomedia + streams this isn't true and qtdemux should keep the previous moov + information around. + Conflicts: + gst/isomp4/qtdemux.c + +2013-02-08 00:29:20 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: prepare qtdemux to accept multiple dash moovs in a row + Whenever dashdemux switches bitrates it sends a new moov with the + new stream configuration. qtdemux should now handle this by splitting + the exposing and configuration of streams into separate functions. When + the stream is new it is configured and exposed, when it is a new bitrate + of an existing stream it is only reconfigured. + Conflicts: + gst/isomp4/qtdemux.c + +2013-02-07 14:12:53 -0200 Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: Move FLUSH_STOP/PAUSED_TO_READY handling to a reset method. + Conflicts: + gst/isomp4/qtdemux.c + +2013-01-23 10:55:33 -0500 Louis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + qtdemux: Remove old pads when exposing streams and other general fixes. + Conflicts: + gst/isomp4/qtdemux.c + +2013-04-16 10:41:43 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + qtdemux: handle mss streams + smoothstreaming streams should be handled as a special kind of + fragmented isomedia. In MSS the fragments will not contain a + 'moov' atom with the media descriptions, this has to be extracted + from the caps. + Additionally, there should be another demuxer upstream that is likely + going to be the one to answer/act on queries and events, so qtdemux has + to forward those upstream. + +2013-05-06 16:54:02 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: request 0 buffers when stopping + Without this stopping the pool in *_set_caps() is useless. + S_FMT will still fail with EBUSY. + https://bugzilla.gnome.org/show_bug.cgi?id=699835 + +2013-05-07 16:32:03 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/jpeg/gstjpegdec.c: + jpegdec: By default assume that we're working on non-packetized input + Only detecting this in set_format() does not work because we might + not get any caps at all, e.g. from filesrc. + +2013-05-07 16:30:59 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/libpng/gstpngdec.c: + pngdec: Implement parsing functionality + This allows to plug pngdec directly without a parser if that + is desired. + Parsing code is based on pngparse. + +2013-05-07 15:54:24 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/libcaca/gstcacasink.c: + cacasink: Fix support for RGB formats and add support for more of them + +2013-05-04 13:19:53 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: Don't consider the content size from the HTTP headers as absolutely correct + The HTTP server could give wrong information, e.g. if the HTTP stream is + chunk-encoded or compressed, or if the server does not know the complete size + at the time when the file is requested by the client. + Also see + https://bugs.webkit.org/show_bug.cgi?id=115354 + +2012-08-20 09:52:32 +0200 Philipp Zabel <p.zabel@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: fill out v4l2_buffer.bytesused field for v4l2sink + When queuing a buffer for a sink, bytesused must contain the actual + amount of data. + For a source, the driver must overwrite this, so it doesn't matter + what is set here. + https://bugzilla.gnome.org/show_bug.cgi?id=699598 + +2013-05-03 23:43:26 +0200 Sebastian Rasmussen <sebras@gmail.com> + + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: fix invalid memory access in event handler + First process event in payloader, then hand it to the + base class which takes ownership of the event. + https://bugzilla.gnome.org/show_bug.cgi?id=699637 + +2013-05-04 09:48:02 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/audioparsers/gstac3parse.c: + * gst/audioparsers/gstdcaparse.c: + ac3parse, dcaparse: check buffer size before trimming + and unref old buffer as soon as possible. + +2013-05-02 15:00:22 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * gst/audioparsers/gstdcaparse.c: + * gst/audioparsers/gstdcaparse.h: + dcaparse: add support for "audio/x-private1-dts" + +2013-05-02 14:56:02 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * gst/audioparsers/gstac3parse.c: + * gst/audioparsers/gstac3parse.h: + ac3parse: add support for "audio/x-private1-ac3" + +2013-05-03 12:46:37 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + v4l2: always generate video info from caps + In the past gst_video_info_from_caps() only video/x-raw. Now it also + supports other video/* and image/* formats. + With this patch the format won't be GST_VIDEO_FORMAT_UNKOWN and + gst_v4l2_buffer_pool_set_config() handles strides correctly. + https://bugzilla.gnome.org/show_bug.cgi?id=699570 + +2013-05-02 09:41:01 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2bufferpool.h: + v4l2: try to allocate new buffers with VIDIOC_CREATE_BUFS if needed + If max_buffers is 0 then an arbitrary number of buffers (currently 4) is + allocated. If this is not enough v4l2src starts copying buffers. + With this patch VIDIOC_CREATE_BUFS is used to allocate a new buffer. If + this fails v4l2src falls back to copying buffers. + https://bugzilla.gnome.org/show_bug.cgi?id=699447 + +2013-04-15 17:37:01 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * sys/osxvideo/osxvideosink.h: + * sys/osxvideo/osxvideosink.m: + osxvideosink: fix setting window handle after transition + The destroyed flag was not reset properly and it's also not needed + as we can check osxwindow != NULL + +2013-05-02 13:45:55 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * gst/rtp/Makefile.am: + rtp: fix duplicated symbols with libvpx + +2013-04-29 10:58:08 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> + + * gst/goom2k1/Makefile.am: + goom2k1: fix duplicated symbols with goom + +2013-05-01 15:49:45 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/rtp/gstrtph264pay.c: + rtph264pay: If the adapter is empty on EOS don't try to map its content + https://bugzilla.gnome.org/show_bug.cgi?id=699314 + +2013-04-30 14:36:38 +0200 Ognyan Tonchev <ognyan@axis.com> + + * gst/matroska/matroska-demux.c: + matroskademux: add stream-format=raw to aac caps + https://bugzilla.gnome.org/show_bug.cgi?id=699303 + +2013-04-30 13:07:37 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: fix and cleanup VIDIOC_EXPBUF handling + clear the struct, and provide a correct error message + https://bugzilla.gnome.org/show_bug.cgi?id=699337 + +2012-07-05 18:02:27 +0200 Philipp Zabel <p.zabel@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + v4l2: handle return value -ENOTTY for unimplemented VIDIOC_G_PARM + Newer kernels return -ENOTTY, older kernels return -EINVAL if the ioctl + is not implemented. With this patch, GStreamer handles both cases. + https://bugzilla.gnome.org/show_bug.cgi?id=698825 + +2013-04-30 09:16:07 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + v4l2: fix broken boolean expression to detect non-frame buffers + https://bugzilla.gnome.org/show_bug.cgi?id=699294 + +2013-04-29 11:07:56 +0530 Arun Raghavan <arun.raghavan@collabora.co.uk> + + * ext/pulse/pulsesink.c: + pulsesink: Better error message when server version is too old + We check for the library version at configure time, but the server + version can only really be checked at run-time. + https://bugzilla.gnome.org/show_bug.cgi?id=698768 + +2013-04-27 11:24:38 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/udp/gstudp.c: + udp: log WARNING debug message if UDP multicast is likely to be broken + +2013-04-27 11:16:54 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/udp/gstudpsrc.c: + udpsrc: add includes to get socklen_t defined on Windows + https://bugzilla.gnome.org/show_bug.cgi?id=692400 + +2013-04-27 09:39:45 +0100 Yury Delendik <async.processingjs@yahoo.com> + + * gst/isomp4/qtdemux.c: + qtdemux: add support for VP6F VP6 flash codec + https://bugzilla.gnome.org/show_bug.cgi?id=699010 + +2012-09-05 16:39:31 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/v4l2_calls.c: + v4l2: also poll for output devices + Note that the V4L2 API defines that for output devices POLLOUT + indicates that a buffer is ready to be dequeued. + https://bugzilla.gnome.org/show_bug.cgi?id=698992 + +2012-08-20 09:52:34 +0200 Philipp Zabel <p.zabel@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + v4l2: fix copying of encoded buffers + The existence of a GstVideoFormatInfo does not guarantee, that + the buffer contains video frames, so the format must be checked. + Also, for encoded buffers the length is variable and must be set. + https://bugzilla.gnome.org/show_bug.cgi?id=698949 + +2012-07-10 15:29:40 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2object.c: + v4l2: add support for mpeg4 and H.263 + https://bugzilla.gnome.org/show_bug.cgi?id=698826 + +2013-04-26 12:16:49 +0200 Edward Hervey <edward@collabora.com> + + * gst/monoscope/gstmonoscope.c: + monoscope: Fix debug statement + +2013-04-25 21:50:33 +0200 Alexander Schrab <meros@meros-desktop.(none)> + + * gst/law/mulaw-decode.c: + * gst/law/mulaw-decode.h: + * tests/check/Makefile.am: + * tests/check/elements/mulawdec.c: + mulawdec: change base class to GstAudioDecoder + https://bugzilla.gnome.org/show_bug.cgi?id=698894 + +2013-04-25 20:59:52 +0200 Mathieu Duponchelle <mathieu.duponchelle@epitech.eu> + + * gst/videomixer/videomixer2.c: + * gst/videomixer/videomixer2.h: + videomixer: send stream-start event. + +2012-10-18 10:37:35 +0200 Philipp Zabel <p.zabel@pengutronix.de> + + * sys/v4l2/v4l2_calls.c: + v4l2: handle ENODATA return value for VIDIOC_ENUMSTD + In kernel v3.7-rc1, VIDIOC_ENUMSTD returns ENODATA if the current input + does not support the STD API. + https://bugzilla.gnome.org/show_bug.cgi?id=698827 + +2013-04-25 13:19:35 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * docs/plugins/gst-plugins-good-plugins-docs.sgml: + * docs/plugins/gst-plugins-good-plugins-sections.txt: + * gst/rtp/gstrtpL16depay.c: + * gst/rtp/gstrtpL16pay.c: + * gst/rtp/gstrtpac3depay.c: + * gst/rtp/gstrtpac3pay.c: + * gst/rtp/gstrtpamrdepay.c: + * gst/rtp/gstrtpamrpay.c: + * gst/rtp/gstrtpbvdepay.c: + * gst/rtp/gstrtpbvpay.c: + docs: add some pay/depayloaders + See https://bugzilla.gnome.org/show_bug.cgi?id=551631 + +2013-04-25 12:44:15 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/law/mulaw-encode.c: + * tests/check/elements/mulawenc.c: + mulaw: Some minor memleak fixes and cleanup + +2013-04-24 13:56:56 +0200 Alexander Schrab <alexas@axis.com> + + * gst/law/mulaw-encode.c: + * gst/law/mulaw-encode.h: + * tests/check/Makefile.am: + * tests/check/elements/mulawenc.c: + mulawenc: change to gstaudioencoder base, added bitrate tags + +2012-05-03 16:07:27 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: bufferpool: reset buffer size in release_buffer + The buffer might still be in use elsewhere when dequeuing buffers for + outputs. + https://bugzilla.gnome.org/show_bug.cgi?id=698822 + +2012-04-20 09:53:35 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: bufferpool: remove unused includes + The hacks that needed these are long gone. + https://bugzilla.gnome.org/show_bug.cgi?id=698821 + +2013-04-25 12:12:23 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/udp/gstmultiudpsink.c: + * gst/udp/gstmultiudpsink.h: + (multi)udpsink: Use separate sockets for IPv4 and IPv6 + https://bugzilla.gnome.org/show_bug.cgi?id=534243 + +2013-04-25 10:44:44 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/udp/gstdynudpsink.c: + * gst/udp/gstdynudpsink.h: + dynudpsink: Use separate sockets for IPv4 and IPv6 + https://bugzilla.gnome.org/show_bug.cgi?id=534243 + +2013-04-25 10:43:56 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/udp/Makefile.am: + udp: Don't include removed gstudp.h in noinst_HEADERS + +2013-04-17 16:47:31 -0700 Todd Agulnick <todd@agulnick.com> + + * sys/osxaudio/gstosxaudiosink.c: + osxaudio: Use gst_audio_channel_positions_to_mask() to create mask + https://bugzilla.gnome.org/show_bug.cgi?id=698807 + +2013-04-17 16:12:26 -0700 Todd Agulnick <todd@agulnick.com> + + * sys/osxaudio/gstosxaudiosink.c: + osxaudio: Remove unused code + +2013-04-25 09:16:14 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/udp/Makefile.am: + * gst/udp/gstdynudpsink.h: + * gst/udp/gstmultiudpsink.h: + * gst/udp/gstudp.h: + * gst/udp/gstudpsink.h: + * gst/udp/gstudpsrc.h: + udp: Remove unused enum type + +2013-04-25 09:13:51 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/udp/Makefile.am: + * gst/udp/gstdynudpsink.c: + * gst/udp/gstmultiudpsink.c: + * gst/udp/gstudp-marshal.list: + udp: Use the generic marshaller instead of generating marshallers + +2013-04-25 09:07:41 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/udp/gstudpsrc.c: + * gst/udp/gstudpsrc.h: + udpsrc: Rename instance variable from host to multi_group + This is more consistent as it's used for the multicast-group property. + +2013-04-25 09:03:56 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/udp/gstudpsrc.c: + udpsrc: Add bind-address property + This is equivalent to multicast-group currently for backwards compatibility. + In 2.0 this should be handled separately, the former only being the multicast + group and the latter always being the address the socket is bound to, even if + a multicast group is given. + +2013-04-24 16:24:25 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpvrawdepay.c: + vrawdepay: return output buffer from process + Return the output buffer from the process function instead of pushing + it ourselves. This way, the subclass can actually deal with the return + value of the push. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=693727 + +2012-10-01 09:29:21 -0300 Diogo Carbonera Luvizon <diogo.luvizon@ensitec.com.br> + + * sys/v4l2/gstv4l2object.c: + v4l2: save the format correctly + If TRY_FMT is not implemented, gst_v4l2_object_get_nearest_size will + use S_FMT and will change the device's operation mode. To save the + old device mode we need to set the type field or else it will fail + to save the previous format. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=685209 + +2013-04-24 15:38:50 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpL16depay.c: + * gst/rtp/gstrtpamrdepay.c: + * gst/rtp/gstrtpbvdepay.c: + * gst/rtp/gstrtpg722depay.c: + * gst/rtp/gstrtpg723depay.c: + * gst/rtp/gstrtpg726depay.c: + * gst/rtp/gstrtpg729depay.c: + * gst/rtp/gstrtpgsmdepay.c: + * gst/rtp/gstrtpilbcdepay.c: + * gst/rtp/gstrtpmpadepay.c: + * gst/rtp/gstrtppcmadepay.c: + * gst/rtp/gstrtppcmudepay.c: + rtp: a marker bit should translate to RESYNC + A marker bit on an audio packet does not mean a DISCONT (in the GStreamer sense + of missing data) but it means that the packet is the end of a talkspurt and thus + a good opportunity to resync to the clock. Use the RESYNC buffer flag to note + this. + Real discontinuities are marked with DISCONT still when the seqnum has a GAP or + when the input buffer has the DISCONT flag set. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=627204 + +2013-04-22 23:51:38 +0100 Tim-Philipp Müller <tim@centricular.net> + + * MAINTAINERS: + * README: + * README.static-linking: + * common: + Automatic update of common submodule + From 3cb3d3c to 5edcd85 + +2013-04-22 10:19:29 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/rtp/gstrtpjpegdepay.c: + rtpjpegdepay: Drop frame if it's less than 2 bytes large + https://bugzilla.gnome.org/show_bug.cgi?id=677560 + +2013-04-18 12:20:08 +0300 Sreerenj Balachandran <sreerenj.balachandran@intel.com> + + * gst/autodetect/gstautoaudiosink.c: + * gst/autodetect/gstautoaudiosrc.c: + * gst/autodetect/gstautovideosink.c: + * gst/autodetect/gstautovideosrc.c: + autodetect: use _plugin_feature_rank_compare API instead of duplicating the code. + +2013-04-18 09:37:30 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * sys/osxaudio/gstosxaudioringbuffer.h: + osxaudio: Include gstaudioringbuffer.h to fix compilation in 1.0 + +2013-04-17 21:05:14 +0200 Philippe Normand <philn@igalia.com> + + * sys/osxaudio/gstosxaudiosink.c: + osxaudiosink: channel-mask configuration fixes + Set channel-mask according to sink's layout in case of stereo layout. + Also initialize and reset the mask when an unrecognized channel is detected. + https://bugzilla.gnome.org/show_bug.cgi?id=698224 + +2013-04-15 19:53:28 -0400 Olivier Crête <olivier.crete@collabora.com> + + * sys/v4l2/gstv4l2src.c: + v4l2src: Disable renegotiation in the negotiate method + This way, we don't block the initial negotiation. + Thanks to Jeremy Whiting for doing all the testing. + https://bugzilla.gnome.org/show_bug.cgi?id=695981 + +2013-04-15 19:46:12 -0400 Olivier Crête <olivier.crete@collabora.com> + + * sys/v4l2/gstv4l2src.c: + Revert "v4l2: disable renegotiation" + This reverts commit d1b26e1d594ab2b63324e43a36330475e98cdf18. + This causes the initial negotiation to never happen if a reconfigure + event is received after gst_base_src_start_complete() but before the loop + starts. + https://bugzilla.gnome.org/show_bug.cgi?id=695981 + +2013-04-17 21:12:55 +0200 Stefan Sauer <ensonic@users.sf.net> + + * ext/flac/gstflactag.c: + flactag: forward caps event + This ensures that the downstream element will get the event and negotiates. Add + a FIXME for updating the streamheader field on th caps. + +2013-04-17 07:50:27 +0200 Stefan Sauer <ensonic@users.sf.net> + + * ext/flac/gstflacenc.c: + * ext/flac/gstflactag.c: + flac: add more logging + +2013-04-17 20:24:48 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * sys/osxaudio/gstosxcoreaudiocommon.h: + osxaudio: Fix merge conflicts + +2013-04-17 10:10:46 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * configure.ac: + osxaudio: Fix configure check for osxaudio plugin + +2013-04-17 09:50:43 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * sys/osxaudio/gstosxaudioringbuffer.c: + osxaudioringbuffer: First check the type, then cast + +2013-04-16 22:46:00 +0900 Takashi Nakajima <ted.nakajima@gmail.com> + + * sys/osxaudio/gstosxaudioringbuffer.c: + * sys/osxaudio/gstosxaudiosink.h: + osxaudio: use GST_IS_OSX_AUDIO_SINK in ring buffer. + +2013-04-10 21:06:16 +0900 Takashi Nakajima <ted.nakajima@gmail.com> + + * sys/osxaudio/gstosxaudioringbuffer.c: + * sys/osxaudio/gstosxaudiosink.c: + * sys/osxaudio/gstosxaudiosink.h: + osxaudio: call set_channel_positions() in osxaudioringbuffer acquire() + +2013-04-12 12:18:04 -0700 Todd Agulnick <todd@agulnick.com> + + * sys/osxaudio/gstosxaudioringbuffer.c: + osxaudio: use GST_AUDIO_INFO_* accessors + Changes include the following: + * Update classname references + * Replace GST_BOILERPLATE_FULL with G_DEFINE_TYPE + * Use new GstAudioInfo struct and methods + * Use new buffer memory allocation scheme + Conflicts: + sys/osxaudio/gstosxaudioringbuffer.c + +2013-04-12 11:51:46 -0700 Todd Agulnick <todd@agulnick.com> + + * sys/osxaudio/gstosxcoreaudiocommon.h: + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: adjust for changes to glib mutex api. + +2013-04-10 01:21:49 +0900 Takashi Nakajima <ted.nakajima@gmail.com> + + * sys/osxaudio/gstosxaudiosink.c: + * sys/osxaudio/gstosxaudiosrc.c: + osxaudio: try to fix up according to Sebastian's comments + +2013-04-05 10:02:38 +0200 Philippe Normand <philn@igalia.com> + + * configure.ac: + * sys/osxaudio/gstosxaudioringbuffer.h: + * sys/osxaudio/gstosxaudiosink.c: + * sys/osxaudio/gstosxaudiosink.h: + * sys/osxaudio/gstosxaudiosrc.h: + osxaudio: build fixes + Enable the osxaudio plugin build in configure.ac and fix some + include directive order issues. + +2013-04-02 22:28:09 +0900 ted-n <ted.nakajima@gmail.com> + + * sys/osxaudio/gstosxaudiosrc.c: + osxaudio: fix layout for osxaudiosrc + +2013-03-30 22:49:34 +0900 ted-n <ted.nakajima@gmail.com> + + * sys/osxaudio/Makefile.am: + * sys/osxaudio/gstosxaudioelement.c: + * sys/osxaudio/gstosxaudioringbuffer.c: + * sys/osxaudio/gstosxaudioringbuffer.h: + * sys/osxaudio/gstosxaudiosink.c: + * sys/osxaudio/gstosxaudiosink.h: + * sys/osxaudio/gstosxaudiosrc.c: + * sys/osxaudio/gstosxaudiosrc.h: + * sys/osxaudio/gstosxcoreaudiocommon.c: + * sys/osxaudio/gstosxcoreaudiocommon.h: + * sys/osxaudio/gstosxringbuffer.c: + * sys/osxaudio/gstosxringbuffer.h: + osxaudio: port to v.1.0 + +2013-04-16 19:29:48 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/videomixer/videomixer2.c: + videomixer: Don't unref query, we don't own it + Fixes double-unref bug. Bug found by Youness Alaoui + +2013-04-16 20:41:10 +0200 Philippe Normand <philn@igalia.com> + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: fix SCHEDULING query support + Chain the query up to parent before adding _BANDWIDTH_LIMITED flag, + so that all the other flags get set, and push mode gets added as + supported activation mode. + https://bugzilla.gnome.org/show_bug.cgi?id=693484 + https://bugzilla.gnome.org/show_bug.cgi?id=698156 + +2013-03-31 12:05:49 +0200 Philippe Normand <philn@igalia.com> + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: basic scheduling query support + Answer to scheduling queries with default parameters and the new + _BANDWIDTH_LIMITED_FLAG so that downstream is advised to minimize seek + operations and perform on-disk buffering if possible. + Bug 693484 + +2013-04-15 14:32:46 +0000 Andoni Morales Alastruey <ylatuya@gmail.com> + + * sys/osxvideo/osxvideosink.m: + osxvideosink: fix segfault accessing osxwindow when not set yet + +2012-10-24 12:14:50 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * configure.ac: + * ext/aalib/Makefile.am: + * ext/cairo/Makefile.am: + * ext/dv/Makefile.am: + * ext/flac/Makefile.am: + * ext/gdk_pixbuf/Makefile.am: + * ext/jack/Makefile.am: + * ext/jpeg/Makefile.am: + * ext/libcaca/Makefile.am: + * ext/libpng/Makefile.am: + * ext/mikmod/Makefile.am: + * ext/pulse/Makefile.am: + * ext/raw1394/Makefile.am: + * ext/shout2/Makefile.am: + * ext/soup/Makefile.am: + * ext/speex/Makefile.am: + * ext/taglib/Makefile.am: + * ext/vpx/Makefile.am: + * ext/wavpack/Makefile.am: + * gst/alpha/Makefile.am: + * gst/apetag/Makefile.am: + * gst/audiofx/Makefile.am: + * gst/audioparsers/Makefile.am: + * gst/auparse/Makefile.am: + * gst/autodetect/Makefile.am: + * gst/avi/Makefile.am: + * gst/cutter/Makefile.am: + * gst/debugutils/Makefile.am: + * gst/deinterlace/Makefile.am: + * gst/dtmf/Makefile.am: + * gst/effectv/Makefile.am: + * gst/equalizer/Makefile.am: + * gst/flv/Makefile.am: + * gst/flx/Makefile.am: + * gst/goom/Makefile.am: + * gst/goom2k1/Makefile.am: + * gst/icydemux/Makefile.am: + * gst/id3demux/Makefile.am: + * gst/imagefreeze/Makefile.am: + * gst/interleave/Makefile.am: + * gst/isomp4/Makefile.am: + * gst/law/Makefile.am: + * gst/level/Makefile.am: + * gst/matroska/Makefile.am: + * gst/monoscope/Makefile.am: + * gst/multifile/Makefile.am: + * gst/multipart/Makefile.am: + * gst/replaygain/Makefile.am: + * gst/rtp/Makefile.am: + * gst/rtpmanager/Makefile.am: + * gst/rtsp/Makefile.am: + * gst/shapewipe/Makefile.am: + * gst/smpte/Makefile.am: + * gst/spectrum/Makefile.am: + * gst/udp/Makefile.am: + * gst/videobox/Makefile.am: + * gst/videocrop/Makefile.am: + * gst/videofilter/Makefile.am: + * gst/videomixer/Makefile.am: + * gst/wavenc/Makefile.am: + * gst/wavparse/Makefile.am: + * gst/y4m/Makefile.am: + * sys/directsound/Makefile.am: + * sys/oss/Makefile.am: + * sys/oss4/Makefile.am: + * sys/osxaudio/Makefile.am: + * sys/osxvideo/Makefile.am: + * sys/sunaudio/Makefile.am: + * sys/v4l2/Makefile.am: + * sys/waveform/Makefile.am: + * sys/ximage/Makefile.am: + gst: Add better support for static plugins + +2013-04-12 19:26:11 +0000 Andoni Morales Alastruey <ylatuya@gmail.com> + + * gst/goom2k1/Makefile.am: + goom2k1: fix duplicated symbol with goom + +2013-03-10 17:17:17 +0000 Josep Torra <n770galaxy@gmail.com> + + * sys/osxaudio/gstosxaudioelement.c: + * sys/osxaudio/gstosxcoreaudiocommon.h: + osxaudio: Fixes error: "GST_LEVEL_DEFAULT" redefined + +2013-03-10 17:27:30 +0000 Josep Torra <n770galaxy@gmail.com> + + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: fixes implicit declaration of function 'getpid' + +2013-04-14 17:55:02 +0100 Tim-Philipp Müller <tim@centricular.net> + + * autogen.sh: + * common: + Automatic update of common submodule + From aed87ae to 3cb3d3c + +2013-04-14 12:32:06 +0100 Tim-Philipp Müller <tim@centricular.net> + + * ext/soup/gstsouphttpsrc.c: + * ext/soup/gstsouphttpsrc.h: + souphttpsrc: add back "iradio-mode" property to disable sending of icecast request headers + In 1.0 we now always send the icecast request headers by default, which + makes the server send icecasts metadata inserted into the stream if it + supports that. However, there are some use cases where this is not + desirable, like when just saving a radio stream to disk, so add back + the "iradio-mode" property to allow people to disable this. + https://bugzilla.gnome.org/show_bug.cgi?id=697984 + +2013-04-12 16:16:41 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtp.c: + rtp: register tag image types + The rtpgstdepay needs the type to be available in order to deserialize the + event. + +2013-04-12 16:08:58 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpgstdepay.c: + rtpgstdepay: handle event parse failures better + +2013-04-11 22:25:05 +0300 Anton Belka <antonbelka@gmail.com> + + * gst/wavenc/gstwavenc.c: + wavenc: add TOC setter support + +2013-04-12 12:31:30 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/wavenc/gstwavenc.c: + wavenc: small cleanups for toc handling + Don't add empty labl/note chunks. Always pass instance as the first param. Add more logging. + +2013-04-12 12:58:50 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: Proxy the ntp-sync property of rtpbin + +2013-04-12 12:51:05 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Give the manager always the name "manager" + This allows to use the GstChildProxy interface to adjust + properties on it. + +2013-04-11 22:53:28 +0100 Tim-Philipp Müller <tim@centricular.net> + + * tests/check/elements/alphacolor.c: + * tests/check/elements/apev2mux.c: + * tests/check/elements/id3v2mux.c: + * tests/check/pipelines/flacdec.c: + tests: fix some printf format issues in debug messages + +2013-04-11 19:27:15 +0300 Anton Belka <antonbelka@gmail.com> + + * gst/wavenc/gstwavenc.c: + * gst/wavenc/gstwavenc.h: + wavenc: add 'note' chunk support + +2013-04-11 20:46:26 +0200 Stefan Sauer <ensonic@users.sf.net> + + * ext/pulse/pulsesink.c: + pulsesink: add a little more docs to the audioclock + +2013-04-11 15:00:05 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/Makefile.am: + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: add support for NetClientClock + When the server suggests a GstNetTimeProvider in the SDP, set up a + GstNetClientClock that slaves to the remote clock and suggest this clock in + provide_clock. + +2013-04-11 14:57:11 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/udp/gstmultiudpsink.c: + * gst/udp/gstmultiudpsink.h: + udpsink: avoid alloc and free in render function + Avoid doing alloc and free in the render function for each buffer. Instead, + allocate the needed arrays in _init and use those. + +2013-04-10 08:36:00 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/wavparse/gstwavparse.c: + waveparse: remove superfluous g_list_first() calls + The variables already point to the start of the list. + +2013-04-09 23:13:18 +0100 Andreas Fenkart <andreas.fenkart@streamunlimited.com> + + * gst/rtp/gstrtpsbcdepay.c: + rtpsbcdepay: fix sbc frame length calculation for mono and stereo modes + https://bugzilla.gnome.org/show_bug.cgi?id=697463 + +2013-03-25 14:35:02 +0300 Anton Belka <antonbelka@gmail.com> + + * gst/wavparse/gstwavparse.c: + * gst/wavparse/gstwavparse.h: + wavparse: add 'note' chunk support + Add 'note' chunk support in TOC as GST_TAG_COMMENT + https://bugzilla.gnome.org/show_bug.cgi?id=696549 + +2013-04-08 17:53:09 -0700 David Schleef <ds@schleef.org> + + * gst/isomp4/qtdemux.c: + qtdemux: check value inside enda to set endianness + +2013-04-09 21:00:12 +0200 Stefan Sauer <ensonic@users.sf.net> + + * common: + Automatic update of common submodule + From 04c7a1e to aed87ae + +2013-04-09 17:34:12 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/icydemux/gsticydemux.c: + icydemux: avoid copy when we can + +2013-04-09 16:52:21 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpgstpay.c: + gstpay: use bufferlist to avoid memcpy + +2013-04-09 16:50:56 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/udp/gstmultiudpsink.c: + udpsink: improve debug + +2013-04-09 00:28:54 +0100 Tim-Philipp Müller <tim@centricular.net> + + * tests/check/elements/wavparse.c: + tests: refactor new wavparse test a little + Use fakesrc instead of filesrc with /dev/null. + https://bugzilla.gnome.org/show_bug.cgi?id=696684 + +2013-04-08 11:38:33 +0200 Alexander Schrab <alexas@axis.com> + + * gst/wavparse/gstwavparse.c: + * tests/check/Makefile.am: + * tests/check/elements/wavparse.c: + wavparse: error out if we receive eos before any valid data + https://bugzilla.gnome.org/show_bug.cgi?id=696684 + +2013-04-07 01:47:56 +0200 Matej Knopp <matej.knopp@gmail.com> + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: force deinterlacing in "interlaced" mode + https://bugzilla.gnome.org/show_bug.cgi?id=697467 + +2013-04-06 12:45:28 -0300 Thibault Saunier <thibault.saunier@collabora.com> + + * ext/gdk_pixbuf/gstgdkpixbufsink.c: + gdkpixbufsink: Add timestamp/running-time/stream-time to the emited message + +2013-04-05 14:38:43 +0200 Nicola Murino <nicola.murino@gmail.com> + + * gst/rtp/gstrtpsbcdepay.c: + rtpsbcdepay: fix printf format compiler warnings + https://bugzilla.gnome.org/show_bug.cgi?id=697343 + +2013-04-05 09:34:23 +0100 Todd Agulnick <todd@agulnick.com> + + * sys/osxvideo/osxvideosink.m: + osxvideo: include pthread.h to fix compiler warning + https://bugzilla.gnome.org/show_bug.cgi?id=697303 + +2013-04-04 22:48:45 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/level/gstlevel.c: + * gst/level/gstlevel.h: + level: resync on discont + Drop pending data on discont and start a new cycle with a new base timestamp. + Cleanup some variables. + +2013-04-03 23:52:47 +0100 Tom Greenwood <tgreenwood@Toms-MacBook-Pro.local> + + * ext/vpx/gstvp8dec.c: + vp8dec: Improve logging when vpx_codec_peek_stream_info fails + Decode failures and missing keyframes should get different debug + output. + https://bugzilla.gnome.org/show_bug.cgi?id=697232 + +2013-04-03 18:24:29 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtp/gstrtpsbcdepay.c: + rtpsbcdepay: Rank as secondary + This way, it will be selected by decodebin + Bug reported by andreas.fenkart@streamunlimited.com + https://bugzilla.gnome.org/show_bug.cgi?id=697227 + +2013-04-03 19:05:38 +0200 Stefan Sauer <ensonic@users.sf.net> + + * gst/level/gstlevel.c: + * tests/check/elements/level.c: + level: subdivide buffers for sample accurate interval handling + Previously we would skip level message when processing buffers > the requested + interval. Also the message frequency would contain quite some jitter due to only + considering them at the end of buffers. + Cleanup the tests while we're at it. + +2013-03-19 08:23:25 +0100 Stefan Sauer <ensonic@users.sf.net> + + * ext/flac/gstflacenc.c: + flacenc: remove old since comments and update logging + Don't pretend that we have a timestamp on a buffer when we never set one. + +2013-03-18 20:59:23 +0100 Stefan Sauer <ensonic@users.sf.net> + + * gst/spectrum/gstspectrum.c: + spectrum: remove old since comment + +2013-04-03 17:53:13 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: Proxy the multicast-iface property of udpsrc + +2013-04-03 11:09:50 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: free all queued buffers + Don't just loop over the first num_queued buffers but loop over + all the buffers and check if they need to be freed. It is possible that + not all buffers are queued and then the entry in our array will be NULL. + Those buffers that are not queued were freed in stop(). + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=696651 + +2013-04-03 11:09:37 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: improve debug + +2013-04-02 23:42:23 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpssrcdemux.c: + rtpssrcdemux: Only forward stick events while holding the sinkpad stream lock + Otherwise we get a race where if the RTCP packet comes in first and while + it is added the pads, the segment event arrives on the RTP stream, the event + may be lost completely and never forwarded. + +2013-04-02 23:35:06 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpssrcdemux.c: + rtpssrcdemux: No need to explicitely forward the caps + They are forwarded with the other events + +2013-04-02 22:29:38 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpssrcdemux.c: + * gst/rtpmanager/gstrtpssrcdemux.h: + rtpssrcdemux: Remove unused GstSegment + +2013-04-02 22:26:02 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpssrcdemux.c: + rtpssrcdemux: Simplify event forwarding + Use the gst_pad_forward() mechanic, this way we won't miss pads that are + added while we are pushing + +2013-04-02 21:53:10 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpssrcdemux.c: + rtpssrcdemux: Don't cross the internal links + We had the wrong condition to check for the internal links, so RTP and RTCP + pads got crossed! + +2013-03-31 17:54:16 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/matroska/matroska-demux.c: + matroskademux: fix some debug messages + +2013-04-02 23:36:22 +0100 Tim-Philipp Müller <tim@centricular.net> + + * sys/v4l2/v4l2_calls.c: + v4l2: fix printf format compiler warning in debug message + +2012-08-29 17:24:00 +0200 Arnaud Vrac <avrac@freebox.fr> + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.h: + matroskademux: handle TrueHD audio codec id + https://bugzilla.gnome.org/show_bug.cgi?id=697113 + +2013-03-31 19:14:04 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtptheoradepay.c: + theorapay: add delta-unit to output frames + +2013-03-23 05:22:23 +0100 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/gstqtmux.c: + qtmux: use timestamp delta as duration if possible + https://bugzilla.gnome.org/show_bug.cgi?id=696437 + +2013-03-30 09:44:41 +0100 Josep Torra <n770galaxy@gmail.com> + + * gst/rtp/gstrtpsbcdepay.c: + rtp: fixes debug message printf related compiler warnings in SBC depayloader + +2013-03-28 16:46:36 +0000 Arun Raghavan <arun.raghavan@collabora.co.uk> + + * gst/rtp/Makefile.am: + * gst/rtp/gstrtp.c: + * gst/rtp/gstrtpsbcdepay.c: + * gst/rtp/gstrtpsbcdepay.h: + rtp: Add an rtpsbcdepay element + Pretty straightforward - takes SBC encapsulated in RTP, depayloads, and + pushes out SBC buffers. + https://bugzilla.gnome.org/show_bug.cgi?id=690582 + +2013-03-27 22:18:34 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/rtp/gstrtpsbcpay.c: + rtp: fix SBC payloader + Init RTP buffer on stack correctly, so mapping it works + without criticals and the payloader actually works. + +2013-03-26 14:44:36 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * sys/directsound/gstdirectsoundsink.c: + directsoundsink: Check for a subset instead of non-empty intersection in accept-caps + +2013-03-26 14:39:53 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * sys/directsound/gstdirectsoundsink.c: + directsoundsink: Properly handle the filter caps in get_caps() + +2013-03-26 14:35:38 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * sys/directsound/gstdirectsoundsink.c: + directsoundsink: Don't unnecessarily get the parent class in class_init + The trampoline generated by G_DEFINE_TYPE does that already. + +2013-03-25 18:02:10 -0700 David Schleef <ds@schleef.org> + + * gst/avi/gstavidemux.c: + * gst/isomp4/qtdemux.c: + * gst/matroska/matroska-demux.c: + Use %03u for format in gst_pad_create_stream_id_printf() + +2013-03-25 10:12:03 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/debugutils/gstcapssetter.c: + capssetter: Prevent unneeded caps copying and allocation + +2013-02-01 14:33:41 +0100 Dirk Van Haerenborgh <vhdirk@gmail.com> + + * gst/debugutils/gstcapssetter.c: + capssetter: Pass any or filter caps upstream + capsetter accepts anything and just forwards different caps, + as such it should return ANY caps on the sinkpad. + https://bugzilla.gnome.org/show_bug.cgi?id=693005 + +2013-03-06 13:17:54 +0000 Tom Greenwood <tgreenwood@Toms-MacBook-Pro.local> + + * ext/vpx/gstvp8enc.c: + vp8enc: Fix for divide by zero when using 0/1 framerate + https://bugzilla.gnome.org/show_bug.cgi?id=695709 + +2013-03-24 17:55:55 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/wavparse/gstwavparse.c: + wavparse: expose CUE sheet items as tracks not chapter entries in TOC + https://bugzilla.gnome.org/show_bug.cgi?id=677306 + +2013-03-23 13:11:02 +0000 Tim-Philipp Müller <tim@centricular.net> + + * ext/flac/gstflacenc.c: + flacenc: add more example pipelines + +2013-03-23 12:59:26 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/wavenc/gstwavenc.c: + wavenc: add some example pipelines + +2013-03-20 21:38:40 +0300 Anton Belka <antonbelka@gmail.com> + + * gst/wavenc/gstwavenc.c: + * gst/wavenc/gstwavenc.h: + wavenc: add TOC support + https://bugzilla.gnome.org/show_bug.cgi?id=680998 + +2013-03-23 04:56:36 +0100 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/qtdemux.c: + qtdemux: make empty subtitle buffer recognition more robust + https://bugzilla.gnome.org/show_bug.cgi?id=696244 + +2013-03-04 15:49:06 -0800 David Schleef <ds@schleef.org> + + * ext/libpng/gstpngenc.c: + pngenc: unmap source frame when done + +2013-03-22 15:14:15 -0700 David Schleef <ds@schleef.org> + + * gst/isomp4/gstqtmux.c: + qtmux: Fix test regression with one buffer streams + +2013-03-05 17:00:17 -0800 David Schleef <ds@schleef.org> + + * gst/isomp4/qtdemux.c: + qtdemux: split large raw audio samples + In order to deal with a file that has samples that are 24 seconds + long. Seeking still doesn't work with such files. + +2013-03-22 11:54:08 -0700 David Schleef <ds@schleef.org> + + * gst/isomp4/gstqtmux.c: + qtmux: Remove documentation for dts-method + +2013-03-22 13:24:33 -0700 David Schleef <ds@schleef.org> + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: deprecate dts-method property + +2013-03-13 17:08:03 -0700 David Schleef <ds@schleef.org> + + * gst/isomp4/gstqtmux.c: + qtmux: Fix problems causing bad durations in file + - Fix up out-of-order incoming DTS values. + - Fix duration of initial sample. + +2013-03-12 19:08:26 -0700 David Schleef <ds@schleef.org> + + * gst/isomp4/gstqtmux.c: + qtmux: fix all timestamps once first_ts is determined + +2013-02-14 16:34:34 -0800 David Schleef <ds@schleef.org> + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: Use PTS/DTS from incoming buffers + Remove old DTS guessing code. + +2013-03-18 12:30:50 +0100 Nicola Murino <nicola.murino@gmail.com> + + * gst/isomp4/gstqtmuxmap.c: + qtmux: expose mulaw caps + https://bugzilla.gnome.org/show_bug.cgi?id=696052 + +2013-03-22 10:50:34 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * configure.ac: + Require Orc >= 0.4.17 + Orc 0.4.17 fixes a bunch crashes on i386 and RPi when orc + functions can't be compiled and the fallback function is + supposed to be used. Also fixes some issues on PowerPC. + https://bugzilla.gnome.org/show_bug.cgi?id=684399 + https://bugzilla.gnome.org/show_bug.cgi?id=693862 + +2013-03-22 08:47:17 +0000 Rodolfo Schulz de Lima <rodolfo@rodsoft.org> + + * gst/isomp4/qtdemux.c: + qtdemux: fix sample leak when processing private qt tags + https://bugzilla.gnome.org/show_bug.cgi?id=696355 + +2013-03-22 02:24:01 +0100 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/gstqtmux.c: + qtmux: set stream language code from tag + https://bugzilla.gnome.org/show_bug.cgi?id=696358 + +2013-03-21 02:55:06 +0100 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/qtdemux.c: + qtdemux: send GAP events for subtitle streams + https://bugzilla.gnome.org/show_bug.cgi?id=696244 + +2013-03-21 02:53:24 +0100 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/qtdemux.c: + qtdemux: ignore empty subtitle buffers + https://bugzilla.gnome.org/show_bug.cgi?id=696244 + +2013-03-21 02:52:07 +0100 Matej Knopp <matej.knopp@gmail.com> + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux_fourcc.h: + qtdemux: recognize SBTL subtype for subtitles + https://bugzilla.gnome.org/show_bug.cgi?id=696244 + +2013-03-17 16:27:03 +0300 Anton Belka <antonbelka@gmail.com> + + * gst/audioparsers/gstflacparse.c: + flacparse: add support for the toc-select event + Select tracks from the CUE sheet by sending a toc-select + event based on the uid in the TOC. + https://bugzilla.gnome.org/show_bug.cgi?id=540891 + +2013-03-19 18:09:31 -0700 Michael Smith <msmith@rdio.com> + + * gst/isomp4/gstqtmux.c: + mp4mux: in faststart mode, don't output up to 4 kB of garbage at the end. + +2013-03-20 00:35:17 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/audioparsers/gstsbcparse.c: + sbcparse: pack multiple frames into one output buffer + Don't output a single buffer for every tiny SBC frame + +2013-03-18 14:59:35 +0000 Bastien Nocera <hadess@hadess.net> + + * sys/v4l2/v4l2_calls.c: + v4l2: fix compilation against newer kernel headers as on FC19 + +2013-03-14 14:12:05 +0100 Kishore Arepalli <kishore.arepalli@gmail.com> + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: fix infinite loop on EOS with non-default methods or fields + Fixes problem of infinite loop in gst_deinterlace_reset_history. + Last field in the history was never deinterlaced because idx becomes negative. + Happens e.g. with method=scalerbob fields=bottom or + method=greedyl fields=top + https://bugzilla.gnome.org/show_bug.cgi?id=695644 + https://bugzilla.gnome.org/show_bug.cgi?id=693173 + +2013-03-12 09:48:31 +0000 Kishore Arepalli <kishore.arepalli@gmail.com> + + * ext/dv/gstdvdemux.c: + dvdemux: don't return FALSE when dropping sink events + Fixes problem in conjunction with avidemux. + https://bugzilla.gnome.org/show_bug.cgi?id=695643 + +2013-03-12 00:16:18 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/avi/gstavimux.c: + avimux: change raw video caps order so that GRAY8 is last + People like colours. + https://bugzilla.gnome.org/show_bug.cgi?id=695543 + +2013-03-11 14:50:41 +0100 Ognyan Tonchev <ognyan@axis.com> + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Don't use upstream caps with peer_query_caps () + Calling gst_pad_peer_query_caps () on the src pad with the caps + upstream can produce as a filter from gst_rtp_h264_pay_getcaps () + is wrong and makes caps negotiation fail if upstream caps are not + NULL. + https://bugzilla.gnome.org/show_bug.cgi?id=695629 + +2013-03-10 09:10:18 +0100 Dirk Van Haerenborgh <vhdirk@gmail.com> + + * gst/avi/gstavimux.c: + avimux: support raw BGR + https://bugzilla.gnome.org/show_bug.cgi?id=695543 + +2013-03-10 09:25:34 +0100 Dirk Van Haerenborgh <vhdirk@gmail.com> + + * gst/avi/gstavidemux.c: + avidemux: support raw video with negative height + https://bugzilla.gnome.org/show_bug.cgi?id=695541 + +2013-03-05 14:40:56 +0100 Jonas Holmberg <jonashg@axis.com> + + * tests/check/elements/autodetect.c: + autodetect checktest: Do not fail without videosink + If there is no videosink available autovideosink will contain a + fakesink instead which needs special treatment in the unit test. + +2013-03-09 01:18:30 +0000 Tim-Philipp Müller <tim@centricular.net> + + * Android.mk: + * configure.ac: + * docs/plugins/Makefile.am: + * docs/plugins/gst-plugins-good-plugins-docs.sgml: + * docs/plugins/gst-plugins-good-plugins-sections.txt: + * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * docs/plugins/gst-plugins-good-plugins.signals: + * docs/plugins/inspect/plugin-audiofx.xml: + * docs/plugins/inspect/plugin-avi.xml: + * docs/plugins/inspect/plugin-dtmf.xml: + * docs/plugins/inspect/plugin-jpeg.xml: + * docs/plugins/inspect/plugin-level.xml: + * docs/plugins/inspect/plugin-rtp.xml: + * docs/plugins/inspect/plugin-shout2send.xml: + * gst-plugins-good.spec.in: + * gst/dtmf/gstdtmf.c: + * gst/dtmf/gstdtmfcommon.h: + * tests/check/Makefile.am: + * tests/check/elements/.gitignore: + dtmf: move dtmf plugin from -bad to -good + https://bugzilla.gnome.org/show_bug.cgi?id=687416 + +2013-03-09 00:30:38 +0000 Tim-Philipp Müller <tim@centricular.net> + + Merge branch 'dtmf-moved-from-bad' + https://bugzilla.gnome.org/show_bug.cgi?id=687416 + +2013-03-05 21:22:18 +0100 Andoni Morales Alastruey <ylatuya@gmail.com> + + * configure.ac: + * sys/osxaudio/Makefile.am: + * sys/osxaudio/gstosxaudioelement.h: + * sys/osxaudio/gstosxaudiosink.c: + * sys/osxaudio/gstosxcoreaudio.c: + * sys/osxaudio/gstosxcoreaudioremoteio.c: + osxaudio: add support for iOS using the RemoteIO AudioUnit + +2013-03-05 21:17:52 +0100 Andoni Morales Alastruey <ylatuya@gmail.com> + + * sys/osxaudio/Makefile.am: + * sys/osxaudio/gstosxaudiosink.c: + * sys/osxaudio/gstosxaudiosrc.c: + * sys/osxaudio/gstosxcoreaudio.c: + * sys/osxaudio/gstosxcoreaudio.h: + * sys/osxaudio/gstosxcoreaudiocommon.c: + * sys/osxaudio/gstosxcoreaudiocommon.h: + * sys/osxaudio/gstosxcoreaudiohal.c: + * sys/osxaudio/gstosxringbuffer.c: + * sys/osxaudio/gstosxringbuffer.h: + osxaudio: add a façade for the CoreAudio API + +2013-03-07 00:00:41 +0000 Tim-Philipp Müller <tim@centricular.net> + + * common: + Automatic update of common submodule + From 2de221c to 04c7a1e + +2013-03-03 11:59:31 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/matroska/lzo.c: + matroska: Include config.h, it's needed for _stdint.h + +2013-03-03 11:53:04 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/audioparsers/gstflacparse.c: + flacparse: Fix (wrong) use of uninitialized variable compiler warning + +2013-03-02 13:59:52 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/isomp4/qtdemux.c: + qtdemux: add variant field to H.263 caps + avdec_h263 won't get plugged otherwise. + +2013-02-22 19:06:52 +0100 Arnaud Vrac <avrac@freebox.fr> + + * gst/isomp4/qtdemux.c: + qtdemux: skip disabled tracks + ISO/IEC 14496-12 specifies disabled tracks should be completely + ignored, so just do it. + Avoids deadlock during prerolling for some files. + Also prevents 'chapter' subtitle tracks from showing up. + https://bugzilla.gnome.org/show_bug.cgi?id=693993 + https://bugzilla.gnome.org/show_bug.cgi?id=628790 + +2013-02-25 09:58:13 +0000 Tim-Philipp Müller <tim@centricular.net> + + * tests/check/elements/level.c: + tests: re-add suppression for GValueArray warnings to unit test as well + +2013-02-28 13:25:06 +0100 Jonas Holmberg <jonashg@axis.com> + + * tests/check/elements/dtmf.c: + tests: use relative include for out-of-tree builds in dtmf test + +2013-02-28 08:46:59 +0100 Stefan Sauer <ensonic@users.sf.net> + + * gst/spectrum/gstspectrum.c: + spectrum: remove the since doc-comment from 0.10 + +2013-02-28 08:44:18 +0100 Stefan Sauer <ensonic@users.sf.net> + + * gst/level/gstlevel.c: + * gst/level/gstlevel.h: + * tests/examples/level/level-example.c: + level: add a "post-messages" property and deprecate "message" + In spectrum this was changed from 0.10 to 1.0, lets do this here too. + +2013-02-27 18:56:50 -0500 Olivier Crête <olivier.crete@collabora.com> + + * tests/check/elements/dtmf.c: + tests: Add tests for dtmfsrc + +2013-02-27 16:15:27 -0500 Olivier Crête <olivier.crete@collabora.com> + + * tests/check/elements/dtmf.c: + tests: Fix ref leak in dtmf test + +2013-02-26 14:18:20 -0500 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtp/gstrtpmp4gdepay.c: + rtpmp4gdepay: streamtype is not put by all RTSP server, not make it optional + Specific case here is Wowza 3.5.0 + +2013-02-25 00:35:58 +0100 Thomas Vander Stichele <thomas (at) apestaart (dot) org> + + * gst/level/gstlevel.c: + level: put back deprecation warnings + +2013-02-24 17:00:14 +0100 Thomas Vander Stichele <thomas (at) apestaart (dot) org> + + * gst/level/gstlevel.c: + * tests/check/elements/level.c: + level: send last message on EOS + +2013-02-23 14:34:35 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> + + * gst/avi/gstavidemux.c: + avidemux: push mode: handle some more 0-size buffer cases + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=684944 + +2013-02-23 18:50:52 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/matroska/matroska-mux.c: + matroskamux: fix up example pipeline in docs + +2012-11-20 12:14:07 +0530 Arun Raghavan <arun.raghavan@collabora.co.uk> + + * ext/pulse/pulsesink.c: + pulsesink: Update segdone periodically + This makes sure that we update segdone based on the read index received + during latency updates. As the comment notes, we make some compromises + to deal with the fact that segdone is a segment multiple, while the read + index offers finer granularity. The updates are also not very often + (100ms since that is how often automatic timing updates are provided). + All this is required for the baseaudiosink sample alignment code to work + at all. + https://bugzilla.gnome.org/show_bug.cgi?id=694257 + +2013-02-13 10:46:54 +0100 Paul HENRYS <visechelle@gmail.com> + + * gst/rtpmanager/rtpsession.c: + rtpsession: Fix wrong code organisation in case of collision + change_ssrc field of RTPSession should be set before calling + rtp_session_schedule_bye_locked () as this function will call reconsider function + that will wake up rtcp_thread which will call rtp_session_on_timeout () that will + check change_ssrc to change the ssrc. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=694184 + +2013-02-21 11:15:23 -0500 Jean-François Fortin Tam <nekohayo@gmail.com> + + * gst/alpha/gstalpha.c: + alpha: improve descriptions of chroma keying-related properties and enums + https://bugzilla.gnome.org/show_bug.cgi?id=694374 + +2013-02-21 15:01:15 -0500 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/alpha/gstalpha.c: + alpha: Do not override the method with custom r/g/b values + Depending on the order g_object_set() calls aare made, the + target r/g/b settings will override the method if set to + green/blue. Change that so we do not use the target-r/g/b values + unless the method is set to custom. + https://bugzilla.gnome.org/show_bug.cgi?id=694374 + +2013-02-20 15:46:43 +0100 Ognyan Tonchev <ognyan@axis.com> + + * gst/auparse/gstauparse.c: + auparse: do not leak src_caps + https://bugzilla.gnome.org/show_bug.cgi?id=694275 + +2013-02-20 21:03:27 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: only delay RTCP when we are a sender + Only delay the RTCP thread when we are a sender, which we can know because we + have a send_rtp_src pad. Otherwise we might delay the RTCP thread if we + are only a receiver and then there is no code path that wakes up the + RTCP thread and we end up without RTCP packets. + +2013-02-19 11:47:20 +0100 Benjamin Gaignard <benjamin.gaignard@linaro.org> + + * configure.ac: + * sys/v4l2/Makefile.am: + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2src.c: + v4l2: Add support of dmabuf + v4l has add a new IOCTL to export a buffer by using dmabuf. + This patch allow to use this new IOTCL if it has been defined in videodev2.h + I introduce a new IO mode (GST_V4L2_IO_DMABUF) to enable this way of working. + https://bugzilla.gnome.org/show_bug.cgi?id=693826 + +2013-02-18 20:04:05 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: fix up dodgy code that tries to fix up a broken moov atom + After gst_buffer_new_and_alloc() gst_buffer_copy_into() will likely + append to the already-existing memory instead of filling it. + +2013-02-18 16:32:13 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: fix potential crash on short MOOV atom + Don't unmap short MOOV atom buffer twice, which happened + in the case where we don't fix up the MOOV atom. + Fixes crashes when thumbnailing partial mp4 file where + the MOOV atom is still incomplete. + https://bugzilla.gnome.org/show_bug.cgi?id=694010 + +2013-02-16 16:49:22 +0000 Tim-Philipp Müller <tim@centricular.net> + + * ext/soup/Makefile.am: + souphttpsrc: set SOUP_VERSION_{MIN_REQUIRED,MAX_ALLOWED} to suppress deprecations with newer versions + https://bugzilla.gnome.org/show_bug.cgi?id=693911 + +2013-02-16 15:47:02 +0000 Tim-Philipp Müller <tim@centricular.net> + + * configure.ac: + * ext/soup/gstsouphttpsrc.c: + soup: use default proxy resolver instead of deprecated GNOME proxy resolver + Apparently there's no reason to use it any longer. Drop libsoup-gnome + dependency while at it, now that we don't need anything from it any + more (it only consists entirely of deprecated API now anyways). + https://bugzilla.gnome.org/show_bug.cgi?id=693911 + +2013-02-15 15:43:43 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * tests/check/pipelines/tagschecking.c: + tests: fix some h264 caps + Doesn't fix anything in particular, but is + still needed here for correctness. + +2013-02-15 08:19:24 +0100 Stefan Sauer <ensonic@users.sf.net> + + * gst/audiofx/audiopanorama.c: + audiopanorama: remove channel-mask from caps + The channel-mask is only needed for channels>2 which we don't do. + +2013-02-15 16:21:21 +0100 Benjamin Gaignard <benjamin.gaignard@stericsson.com> + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2: don't check stride for encoded formats + Don't try to check the stride for encoded formats. Some drivers output + something != 0 and then we don't want to fail on that. + +2013-02-15 14:11:36 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/udp/gstudpsrc.c: + udpsrc: use g_socket_set_option() to set buffer size with newer GLib versions + So we have to worry less about portability. + https://bugzilla.gnome.org/show_bug.cgi?id=692400 + +2013-02-14 14:13:27 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * ext/jpeg/gstjpegdec.c: + jpegdec: remove sof-marker from template caps for now + Now that the subset check actually works, this breaks + things with demuxers that don't put a "sof-marker" + in their jpeg caps, and we don't have a good parser + to plug either yet. + +2013-02-13 12:32:10 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/jpeg/gstjpegenc.c: + * ext/jpeg/gstjpegenc.h: + jpegenc: Put the SOF marker into the caps + +2013-02-13 12:02:46 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/rtp/gstrtpamrdepay.c: + * tests/check/elements/rtp-payloading.c: + rtp-payloading: Fix unit test caps and AMR depayloader sink template caps + Fields were missing from the actual caps, or too many fields + existed in the template caps. + +2013-02-13 11:53:01 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/aacparse.c: + aacparse: Fix caps used in the unit test + The AAC caps passed were incomplete. + +2013-02-13 11:49:40 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * tests/check/elements/wavpackenc.c: + * tests/check/elements/wavpackparse.c: + wavpack: Fix unit tests, width is now called depth in the caps in 1.0 + +2013-02-12 23:31:22 +0000 Tim-Philipp Müller <tim@centricular.net> + + * tests/check/elements/souphttpsrc.c: + tests: make souphttpsrc unit test work even if http_proxy is set + We're testing with an http server on localhost, but don't support + an exception list for the http_proxy, so just unset the environment + variable to make sure we can run this test properly even if the + environment has http_proxy set. + Also, don't skip all tests if there is an issue with the SSL server, + just run the non-SSL tests then. + https://jenkins.qa.ubuntu.com/view/Raring/view/JHBuild%20Gnome/job/jhbuild-amd64-gst-plugins-good/ + +2013-02-12 12:53:52 -0800 Michael Smith <msmith@rdio.com> + + * gst/isomp4/qtdemux.c: + qtdemux: extract codec_data for ProRes + +2013-02-08 01:02:10 +1100 Tim 'mithro' Ansell <mithro@mithis.com> + + * gst/avi/gstavimux.c: + avimux: Fixing buffer leak in gst_avi_mux_do_buffer + gst_avi_mux_do_buffer was leaking data from gst_collect_pads_pop. + +2013-02-10 15:10:32 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> + + * gst/avi/gstavidemux.c: + avidemux: correct duration for audio VBR buffers in pull mode + +2013-02-08 21:28:02 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> + + * gst/avi/gstavidemux.c: + avidemux: proper position reporting and push mode timestamping + ... and align current_total semantics in push and pull mode, + which tracks bytes for CBR and blocks for VBR. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=691481 + +2013-02-08 17:05:27 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: delay RTCP until first RTP packet + Delay sending the first RTCP packet until we have sent the first RTP packet. + Otherwise we will send out a Receiver Report instead of a sender report. + See https://bugzilla.gnome.org/show_bug.cgi?id=691400 + +2013-02-07 15:06:40 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + rtpsession: remove dead code + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=668355 + +2013-01-29 10:48:17 +0100 Paul HENRYS <visechelle@gmail.com> + + * gst/rtpmanager/gstrtpptdemux.c: + rtpptdemux: forward sticky events and then set caps + When a new src pad is added, first forward the sticky events and then + set the caps on the src pad + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692786 + +2013-02-07 14:32:26 +0100 Markovtsev Vadim <v.markovtsev at samsung.com> + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: improve debug output + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=688935 + +2011-09-26 14:42:51 -0700 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: rework cleanup of streams + Move the work of cleaning up the client streams in the free_stream + function. This allows us to properly clean up the client streams when we + remove an RTP stream as well. + Based on patch by Sujay <sdatar@cisco.com> + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=660156 + +2013-02-07 11:40:35 +0100 Tim 'mithro' Ansell <gnome at mithis.com> + + * gst/videomixer/videomixer2.c: + videomixer2: avoid caps leak + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=693307 + +2013-02-06 17:15:11 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpjitterbuffer.c: + jitterbuffer: do skew estimation only for new timestamps + Only run the skew estimation code when we have a new RTP timestamp. If we have + the same RTP timestamp, we simply use the previous estimation. This works + because the new observation with the same RTP timestamp has to have a bigger + receiver time and is thus not going to influence the estimation except for + causing more jitter. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=640023 + +2013-02-06 13:52:26 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: only EOS when our source sends BYE + Only EOS when we receive a BYE event from the SSRC of our stream. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=675453 + +2013-02-06 13:47:51 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: save the stream SSRC + Conflicts: + gst/rtsp/gstrtspsrc.c + +2013-02-06 13:18:18 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: flush connection when stopping + When we stop, we can flush all pending commands so that we can stop and + join the task. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=684924 + +2013-02-05 22:02:13 +0100 Stefan Sauer <ensonic@users.sf.net> + + * gst/spectrum/README: + spectrum: remove outdates readme + Lets remove the readme from pre-0.1.0 that is completely irrelevant now. + +2013-02-05 07:32:29 +0100 Stefan Sauer <ensonic@users.sf.net> + + * gst/audiofx/audiopanorama.c: + audiopanorama: add more debug logging + +2013-02-05 08:26:14 +0100 Stefan Sauer <ensonic@users.sf.net> + + * tests/examples/level/level-example.c: + level-example. avoid taking the arrays again for each channel for clarity + Also introduce some blank lines for better readability and update the comments. + +2013-02-04 18:38:41 +0000 Rico Tzschichholz <ricotz@ubuntu.com> + + * gst/audioparsers/Makefile.am: + audioparsers: fix typo in noinst_headers + +2013-02-04 11:08:23 +0100 Stefan Sauer <ensonic@users.sf.net> + + * gst/audiofx/audiopanorama.c: + audiopanorama: further port to 1.0 + Transformcaps is not called with caps containing single structures anymore. Also add missing filter handling. Still does not negotiate though. + +2013-02-03 22:45:52 +0100 Stefan Sauer <ensonic@users.sf.net> + + * gst/audiofx/audiopanorama.c: + audiopanorama: fix caps + We don't turn float into 32bit pcm. Looks like a typo from updating the caps. + +2013-02-03 13:14:50 +0100 Olivier Crête <olivier.crete@collabora.com> + + * gst/level/gstlevel.c: + level: Add missing coma between formats + +2013-01-31 22:55:18 +1100 Matthew Waters <ystreet00@gmail.com> + + * gst/videomixer/videomixer2.c: + videomixer: fix eos timestamp check + fixes hang in videotestsrc num-buffers=20 ! videomixer ! fakesink + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692935 + +2013-01-31 11:35:09 +0100 Dirk Van Haerenborgh <vhdirk@gmail.com> + + * gst/avi/gstavimux.c: + avimux: add support for raw monochrome 8-bit video + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692932 + +2013-01-18 21:08:12 +0400 Alexey Chernov <achernov@neosphere.com> + + * sys/osxvideo/cocoawindow.h: + * sys/osxvideo/cocoawindow.m: + osxvideosink: Make GstNavigation key input events in osxvideosink compatible with x(v)imagesink ones + +2013-01-29 10:30:32 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: avoid '...is used uninitialized' + +2013-01-09 13:24:49 -0500 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: set interleaved layout correctly for LPCM audio + https://bugzilla.gnome.org/show_bug.cgi?id=663458 + +2013-01-08 20:45:21 -0500 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: add support for LPCM fourcc (uncompressed audio in Quicktime7) + https://bugzilla.gnome.org/show_bug.cgi?id=663458 + +2013-01-08 20:42:35 -0500 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: print all debug for sound sample description v2 + https://bugzilla.gnome.org/show_bug.cgi?id=663458 + +2013-01-08 20:14:17 -0500 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: sound sample description v2 doesn't override samples_per_packet + https://bugzilla.gnome.org/show_bug.cgi?id=663458 + +2013-01-08 19:57:50 -0500 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: pass stsd data to qtdemux_audio_caps() + We will need that later for LPCM format support. Disable + QDM2 parsing of stsd data which dead code before as well + because data was always NULL. + https://bugzilla.gnome.org/show_bug.cgi?id=663458 + +2013-01-08 19:56:46 -0500 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/isomp4/qtdemux.c: + qtdemux: add len check for sound sample descriptions v1 and v2 + https://bugzilla.gnome.org/show_bug.cgi?id=663458 + +2013-01-28 22:42:25 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/rtpmanager/gstrtpssrcdemux.c: + rtpmanager: use C89-style comments + +2013-01-28 18:06:15 -0500 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpsession.c: + gstrtpsession: Fix double-declared variable + +2013-01-28 17:58:20 -0500 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/gstrtpssrcdemux.c: + rtp: Fix compilation errors in previous patches + +2011-04-28 22:59:28 +0200 Haakon Sporsheim <haakon.sporsheim@gmail.com> + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: Ensure MT safe event handling and plug event leak. + https://bugzilla.gnome.org/show_bug.cgi?id=667826 + +2011-10-17 23:45:37 +0200 Idar Tollefsen <itollefs@cisco.com> + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: mt-safe event-push + By taking a ref of the sink-pad under lock, it won't dissappear + while the push is taking place + https://bugzilla.gnome.org/show_bug.cgi?id=667816 + +2012-01-04 10:29:45 +0100 Pascal Buhler <pabuhler@cisco.com> + + * gst/rtpmanager/gstrtpssrcdemux.c: + rtpssrcdemux: Safely push on pads that might be removed due to a RTCP BYE + https://bugzilla.gnome.org/show_bug.cgi?id=667815 + +2013-01-28 20:42:26 +0100 Stefan Sauer <ensonic@users.sf.net> + + * common: + Automatic update of common submodule + From a942293 to 2de221c + +2013-01-28 11:54:54 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/audioparsers/gstsbcparse.c: + sbcparse: init some variables to avoid bogus compiler warnings + +2013-01-28 12:41:04 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtp/gstrtpL16depay.c: + * gst/rtp/gstrtpac3depay.c: + * gst/rtp/gstrtpamrdepay.c: + * gst/rtp/gstrtpbvdepay.c: + * gst/rtp/gstrtpceltdepay.c: + * gst/rtp/gstrtpdvdepay.c: + * gst/rtp/gstrtpg722depay.c: + * gst/rtp/gstrtpg723depay.c: + * gst/rtp/gstrtpg726depay.c: + * gst/rtp/gstrtpg729depay.c: + * gst/rtp/gstrtpgsmdepay.c: + * gst/rtp/gstrtpgstdepay.c: + * gst/rtp/gstrtph263depay.c: + * gst/rtp/gstrtpilbcdepay.c: + * gst/rtp/gstrtpj2kdepay.c: + * gst/rtp/gstrtpjpegdepay.c: + * gst/rtp/gstrtpmp1sdepay.c: + * gst/rtp/gstrtpmp2tdepay.c: + * gst/rtp/gstrtpmp4adepay.c: + * gst/rtp/gstrtpmp4gdepay.c: + * gst/rtp/gstrtpmpadepay.c: + * gst/rtp/gstrtpmparobustdepay.c: + * gst/rtp/gstrtpmpvdepay.c: + * gst/rtp/gstrtppcmadepay.c: + * gst/rtp/gstrtppcmudepay.c: + * gst/rtp/gstrtpqcelpdepay.c: + * gst/rtp/gstrtpqdmdepay.c: + * gst/rtp/gstrtpsirendepay.c: + * gst/rtp/gstrtpspeexdepay.c: + * gst/rtp/gstrtpsv3vdepay.c: + * gst/rtp/gstrtptheoradepay.c: + * gst/rtp/gstrtpvorbisdepay.c: + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvrawdepay.c: + rtpdepay: remove payload type restrictions + Remove the pt restrictions for all the depayloaders that have an + encoding-name. We can use this to autoplug decoders. + Remove the encoding-name for all the payloaders with a fixed payload + type. + We now either have an encoding-name or a pt in the sinkpad caps of + a depayloader. + See https://bugzilla.gnome.org/show_bug.cgi?id=639292 + +2013-01-28 12:23:41 +0100 Marc Leeman <marc.leeman@gmail.com> + + * gst/rtp/gstrtph263depay.c: + * gst/rtp/gstrtph263pdepay.c: + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtpmp4vdepay.c: + rtp: remove payload requirements from selected depayloaders + encoding name is required in the caps and is a better fit for autoplugging than + the pt value. Hardware manufacturers have a bad habit of skimming through RFCs + and in this case; use unassigned numbers for encoders instead of dynamic + numbers. + In essence, this patch will add support for a lot of Bosch hardware encoders + without breaking autoplugging. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=639292 + +2013-01-27 10:17:59 +0530 B.Prathibha <bosslinux@cdac.in> + + * tests/examples/jack/jack_client.c: + * tests/examples/rtp/server-alsasrc-PCMA.c: + * tests/icles/ximagesrc-test.c: + tests: use g_timeout_add_seconds instead of g_timeout_add + https://bugzilla.gnome.org/show_bug.cgi?id=692615 + +2013-01-27 12:54:15 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> + + * gst/isomp4/qtdemux.c: + qtdemux: push mode: only parse moov 1 once + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=691570 + +2013-01-26 22:58:29 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/dtmf/gstrtpdtmfsrc.c: + rtpdtmfsrc: fix compiler warning + gstrtpdtmfsrc.c: In function 'gst_dtmf_src_prepare_message.isra.1': + gstrtpdtmfsrc.c:669:3: error: 's' may be used uninitialized in this function + +2013-01-25 21:06:05 -0500 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstrtpdtmfdepay.c: + rtpdtmfdepay: Fix missing work in doc + +2013-01-24 21:00:08 -0500 Olivier Crête <olivier.crete@collabora.com> + + * tests/check/elements/dtmf.c: + tests: Add test for rtpdtmfdepay and rtpdtmfsrc + +2013-01-25 20:39:33 -0500 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstrtpdtmfsrc.c: + rtpdtmfsrc: Post the messages after the clock wait + This way, the messages will be closer in time to when the packets are sent out + +2013-01-25 20:37:53 -0500 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstrtpdtmfsrc.c: + rtpdtmfsrc: Only set the duration when starting to send + The duration depends on the clock rate, which could change due to renegotiation + +2013-01-25 20:37:09 -0500 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstrtpdtmfsrc.c: + rtpdtmfsrc: remove "ssrc" from caps + ssrc is uint and we don't have a uint range type + +2013-01-24 21:08:51 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/isomp4/atoms.h: + qtmux: set language to 'undefined' instead of English by default + +2013-01-23 21:35:25 -0500 Olivier Crête <olivier.crete@collabora.com> + + * sys/ximage/gstximagesrc.c: + * sys/ximage/ximageutil.c: + * sys/ximage/ximageutil.h: + ximagesrc: Set the pixel aspect ratio correctly in the caps + +2013-01-08 08:56:45 +0100 Sjoerd Simons <sjoerd@luon.net> + + * sys/v4l2/gstv4l2src.c: + v4l2: Re-enable prepare-format emission + With the port to gstreamer 1.0 the prepare-format signal stopped being + emitted. Start emitting this again for use in uvch264src. While there + change the emission to include the caps for extra flexibility instead of + fource, width, height. + https://bugzilla.gnome.org/show_bug.cgi?id=692042 + +2013-01-22 18:12:10 +0100 Benjamin Gaignard <benjamin.gaignard@st.com> + + * autogen.sh: + autogen.sh: allow calling from out-of-tree + Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com> + https://bugzilla.gnome.org/show_bug.cgi?id=692309 + +2013-01-22 19:26:09 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> + + * gst/audioparsers/gstsbcparse.c: + audioparsers: sbc: fix bogus compiler warning + gst-plugins-good/gst/audioparsers/gstsbcparse.c: In function 'gst_sbc_parse_handle_frame': + gst-plugins-good/gst/audioparsers/gstsbcparse.c:210:32: error: 'ch_mode' may be used uninitialized i + +2013-01-19 13:27:48 +0000 Tim-Philipp Müller <tim@centricular.net> + + * ext/pulse/pulsesink.c: + pulsesink: don't error out if pa_stream_proplist_update() with new tags fails + Shouldn't really happen these days, but if it does, it's not really + a problem either. + https://bugzilla.gnome.org/show_bug.cgi?id=656068 + +2013-01-16 18:01:23 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * tests/check/elements/souphttpsrc.c: + tests: skip souphttpsrc tests if there is no local http server to use + Skip tests if the server couldn't be started or we can't connect + to it for some reason (e.g. draconic build bot environments). + +2013-01-16 14:32:56 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + + * gst/audioparsers/gstsbcparse.c: + autoparsers: use appropriate printf format for gsize + +2013-01-15 15:05:43 +0100 Martin Pitt <martinpitt@gnome.org> + + * tests/check/Makefile.am: + tests: use _1_0 variants for the various registry variables + These override the variants without version suffix. Makes 'make check' work + properly in environments that set the suffixed variant for 1.0, such as + jhbuild. + +2013-01-11 19:24:43 +0400 Alexey Chernov <achernov@neosphere.com> + + * sys/osxvideo/cocoawindow.m: + * sys/osxvideo/osxvideosink.m: + osxvideosink: Fix crash in osxvideosink with external window output + +2013-01-16 12:04:59 +0400 Alexey Chernov <achernov@neosphere.com> + + * sys/osxvideo/cocoawindow.m: + osxvideosink: Make GstGLView propagate input events to its parent view + Fixes bug #691832 + +2013-01-16 10:19:36 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: update some fields in the caps to their new name + and to match the parser. "mode" got renamed to "channel-mode" + and "allocation" to "allocation-method". + +2013-01-15 17:44:33 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * docs/plugins/gst-plugins-good-plugins-docs.sgml: + * docs/plugins/gst-plugins-good-plugins-sections.txt: + * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * docs/plugins/inspect/plugin-audioparsers.xml: + * docs/plugins/inspect/plugin-rtp.xml: + docs: add sbcparse and rtpsbcpay to plugin docs + +2013-01-15 17:38:24 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/audioparsers/Makefile.am: + * gst/audioparsers/gstsbcparse.c: + * gst/audioparsers/gstsbcparse.h: + * gst/audioparsers/plugin.c: + audioparsers: add SBC audio parser + From-scratch rewrite, the bluez one was useless and broken. + https://bugzilla.gnome.org/show_bug.cgi?id=690582 + +2013-01-15 15:05:04 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * common: + Automatic update of common submodule + From a72faea to a942293 + +2013-01-10 12:38:13 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/rtp/Makefile.am: + * gst/rtp/gstrtp.c: + * gst/rtp/gstrtpsbcpay.c: + * gst/rtp/gstrtpsbcpay.h: + rtp: import rtpsbcpay from bluez and port to 1.0 + Compiles, but not tested yet (sbc elements still need to be ported). + https://bugzilla.gnome.org/show_bug.cgi?id=690582 + +2013-01-09 19:59:16 -0500 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/Makefile.am: + * gst/dtmf/gstdtmf.c: + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/gstdtmfdetect.h: + * gst/dtmf/tone_detect.c: + * gst/dtmf/tone_detect.h: + dtmf/spandsp: Move dtmfdetect to use libspandsp + Remove our copy of the tone_detect.c file and use the original + from libspandsp. Also move the element to the spandsp plugin. + +2011-02-13 17:51:45 -0800 Marcel Holtmann <marcel@holtmann.org> + + * gst/rtp/gstrtpsbcpay.h: + rtpsbcpay: Remove workaround for compiler warnings + +2010-05-19 16:59:30 +0200 Marcel Holtmann <marcel@holtmann.org> + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: Add pragma based workaround for GStreamer warnings + +2010-01-01 17:08:17 -0800 Marcel Holtmann <marcel@holtmann.org> + + * gst/rtp/gstrtpsbcpay.c: + * gst/rtp/gstrtpsbcpay.h: + rtpsbcpay: Update copyright information + +2009-01-30 00:31:15 +0100 Marcel Holtmann <marcel@holtmann.org> + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: Fix signed/unsigned comparison issue within GStreamer plugin + +2009-01-01 19:33:20 +0100 Marcel Holtmann <marcel@holtmann.org> + + * gst/rtp/gstrtpsbcpay.c: + * gst/rtp/gstrtpsbcpay.h: + rtpsbcpay: Update copyright information + +2008-12-23 05:25:50 +0100 Marcel Holtmann <marcel@holtmann.org> + + * gst/rtp/gstrtpsbcpay.h: + rtpsbcpay: First attempt in fixing compiler warnings (still needs cleanup) + +2008-12-20 21:42:49 +0200 Johan Hedberg <johan.hedberg@nokia.com> + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: More coding style fixes + +2008-02-29 19:37:15 +0000 Luiz Augusto von Dentz <luiz.dentz@openbossa.org> + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: Remove possible extra memcpy for gstreamer plugin. + +2008-02-28 19:38:53 +0000 Luiz Augusto von Dentz <luiz.dentz@openbossa.org> + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: Fix bug sending empty packages and remove a buffer copy. + +2008-02-20 13:37:00 +0000 Luiz Augusto von Dentz <luiz.dentz@openbossa.org> + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: Fix runtime warnings of gstreamer plugin. + +2008-02-19 19:49:24 +0000 Luiz Augusto von Dentz <luiz.dentz@openbossa.org> + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: Update gstreamer plugin to use new sbc API. + +2008-02-02 03:37:05 +0000 Marcel Holtmann <marcel@holtmann.org> + + * gst/rtp/gstrtpsbcpay.c: + * gst/rtp/gstrtpsbcpay.h: + rtpsbcpay: Update copyright information + +2008-01-30 14:21:43 +0000 Luiz Augusto von Dentz <luiz.dentz@openbossa.org> + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: Fixes gstreamer caps and code cleanup. + +2008-01-24 14:25:29 +0000 Luiz Augusto von Dentz <luiz.dentz@openbossa.org> + + * gst/rtp/gstrtpsbcpay.c: + rtpsbcpay: Fix gtreamer payloader sending fragmented frames. + +2008-01-23 19:17:33 +0000 Luiz Augusto von Dentz <luiz.dentz@openbossa.org> + + * gst/rtp/gstrtpsbcpay.c: + * gst/rtp/gstrtpsbcpay.h: + rtpsbcpay: Fix use of gstreamer plugin with rhythmbox and banshee and rtp timestamps. + +2008-01-23 13:14:02 +0000 Luiz Augusto von Dentz <luiz.dentz@openbossa.org> + + * gst/rtp/gstrtpsbcpay.c: + * gst/rtp/gstrtpsbcpay.h: + rtpsbcpay: Make a2dpsink to act like a bin and split the payloader. + +2013-01-08 16:27:42 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + rtp: small improvements + +2013-01-07 15:50:33 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: refactor handle sync code + Move the code that combines the last SR packet and the current jitterbuffer sync + values into a sync structure, into its own function. We want to reuse this bit + later. + +2013-01-07 15:45:10 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + rtp: include downstream latency in SR calculations + When we make a mapping between an RTP timestamp and an NTP timestamp, include + the downstream latency applied to the sinks. This makes it possible to have + both sinks run with different latencies and still have correct sync on the + client. It also is more correct because the RTP timestamp in the SR report will + actually correspond more closely to the NTP time it was sent on the server. + For pipelines with high latency on the sender side, this actually allows a + GStreamer receiver to perform synchronisation instead of dropping the RTCP + packets. + +2013-01-07 14:25:14 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: don't cast event functions + There is no need to cast the event functions and only causes problems later when + we change the signature later and things silently compiles wrong code. + +2013-01-07 14:23:34 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpsession.c: + rtp: more debug + +2013-01-07 14:22:48 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: + rtpsession: improve debug + +2013-01-02 00:03:27 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/udp/gstudpsrc.c: + udpsrc: sanity check size of available packet data for reading to avoid memory waste + On Windows and OS/X, _get_available_bytes() may not return the size + of the next pending packet, but the size of all pending packets in + the kernel-side buffer, which might be rather large depending on + configuration. Sanity-check the size returned by _get_available_bytes() + to make sure we never allocate more memory than the max. size for + a packet, if it's an IPv4 socket. + https://bugzilla.gnome.org/show_bug.cgi?id=610364 + +2013-01-04 10:03:32 +0100 Robert Krakora <rob.krakora@messagenetsystems.com> + + * sys/v4l2/v4l2_calls.c: + v4l2: Also handle the new ENOENT return value of VIDIOC_QUERYCTRL + https://bugzilla.gnome.org/show_bug.cgi?id=691098 + +2013-01-01 19:14:36 +0000 Tim-Philipp Müller <tim@centricular.net> + + * tests/check/elements/souphttpsrc.c: + tests: add test for souphttpsrc error handling with data + https://bugzilla.gnome.org/show_bug.cgi?id=678429 + +2012-06-22 21:56:52 +0000 Norbert Waschbuesch <nwaschbu@opentv.com> + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: error out properly when receiving data along with an error status + When receiving an error code from the http server, such as 404, + data might be sent along with it, like a web page. We don't want + to output that data in this case, and we also want to pass the + FLOW_ERROR return back to the base class, so it can stop properly. + https://bugzilla.gnome.org/show_bug.cgi?id=678429 + +2013-01-01 12:20:20 +0000 Tim-Philipp Müller <tim@centricular.net> + + * docs/plugins/gst-plugins-good-plugins.args: + docs: update for new rtspsrc proxy-id and proxy-pw properties + +2013-01-01 12:19:23 +0000 Tim-Philipp Müller <tim@centricular.net> + + * docs/plugins/Makefile.am: + * docs/plugins/gst-plugins-good-plugins-docs.sgml: + * docs/plugins/gst-plugins-good-plugins-sections.txt: + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * docs/plugins/inspect/plugin-cairo.xml: + docs: fix docs build and update after removal of old cairo elements + +2013-01-01 12:12:02 +0000 Tim-Philipp Müller <tim@centricular.net> + + * ext/cairo/Makefile.am: + * ext/cairo/gstcairo.c: + * ext/cairo/gstcairorender.c: + * ext/cairo/gstcairorender.h: + * ext/cairo/gsttextoverlay.c: + * ext/cairo/gsttextoverlay.h: + * ext/cairo/gsttimeoverlay.c: + * ext/cairo/gsttimeoverlay.h: + cairo: remove old cairo-based text renderering element + They haven't worked well or at all in a very long time + and were rather bit-rotten, and there's no need for them + any more. + +2013-01-01 11:52:09 +0000 Tim-Philipp Müller <tim@centricular.net> + + * configure.ac: + * ext/cairo/.gitignore: + * ext/cairo/Makefile.am: + * ext/cairo/gstcairo-marshal.list: + * ext/cairo/gstcairo.c: + * ext/cairo/gstcairooverlay.c: + * ext/cairo/gstcairooverlay.h: + * tests/examples/Makefile.am: + * tests/examples/cairo/Makefile.am: + * tests/examples/cairo/cairo_overlay.c: + cairo: port cairooverlay to 0.11 + The other elements are not that interesting now that we're + using pangocairo in the pango plugin, and should probably + just be removed. + +2012-12-31 18:59:18 +0000 Tim-Philipp Müller <tim@centricular.net> + + * tests/examples/rtp/server-decodebin-H263p-AMR.sh: + examples: check for uri argument in decodebin-h264p-amr server example + Otherwise people get a rather confusing error message. + +2012-12-31 00:22:27 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: add "proxy-id" and "proxy-pw" properties + to match souphttpsrc. user/password passed via the URI + will still take precedence though. + https://bugzilla.gnome.org/show_bug.cgi?id=395427 + +2012-12-25 16:48:43 +0000 Tim-Philipp Müller <tim@centricular.net> + + * sys/oss4/oss4-sink.c: + oss4sink: notify "volume" property on open to make apps query initial volume + The initial volume might not be the property default, so + emit a notify on the volume property to make apps get + an up-to-date reading of the current volume. + https://bugzilla.gnome.org/show_bug.cgi?id=631053 + +2012-12-20 17:12:30 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: fix cmd comparison + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=690476 + +2012-12-20 17:12:20 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: add some more debug + +2012-12-20 16:44:24 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * ext/raw1394/gst1394clock.c: + 1394clock: mark our clock type as OTHER + +2012-12-20 16:15:13 +0100 Jonas Holmberg <jonashg@axis.com> + + * tests/check/elements/rtp-payloading.c: + tests: add jpegpay unit test + See also https://bugzilla.gnome.org/show_bug.cgi?id=684955 + +2012-12-20 15:55:02 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * ext/jpeg/gstjpegenc.c: + * ext/jpeg/gstjpegenc.h: + jpegenc: pass flowreturn upstream + +2012-09-27 15:42:56 +0200 Jonas Holmberg <jonashg@axis.com> + + * gst/rtp/gstrtpjpegpay.c: + rtpjpegpay: handle width and height > 2040 + If width or height is greater than 2040 set width and height to zero in + the rtp header and add x-dimensions to outcaps. + Solves #684955 + +2012-12-20 13:03:41 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/avi/gstavidemux.c: + avidemux: cleanup in flag define + +2012-12-20 13:02:57 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/avi/gstavidemux.c: + avidemux: improve debug + +2012-12-18 15:56:59 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + + * ext/wavpack/gstwavpackenc.c: + wavpack: use appropriate printf format for gsize + +2012-12-18 15:55:43 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + + * ext/taglib/gstid3v2mux.cc: + taglib: use appropriate printf format for gsize + +2012-12-18 15:54:08 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + + * ext/gdk_pixbuf/gstgdkpixbufdec.c: + gdkpixbuf: use appropriate printf format for gsize + +2012-12-18 15:51:46 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + + * gst/rtp/gstrtpgstdepay.c: + rtp: use appropriate printf format for gsize + +2012-12-18 15:46:56 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: use appropriate printf format for gsize + +2012-12-17 16:35:56 +0100 Philippe Normand <philn@igalia.com> + + * gst/interleave/interleave.c: + * gst/interleave/interleave.h: + interleave: set src pad caps upon last sink pad CAPS event + Gather caps on all sink pads before setting the src pad caps. This is + specially needed when the audio channel mapping is set on the sink + pads and the element needs to preserve it on its src pad. + https://bugzilla.gnome.org/show_bug.cgi?id=690267 + +2012-12-17 22:55:12 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/matroska/matroska-read-common.c: + matroskademux: skip empty tags + instead of trying to add tags with empty strings, which + causes criticals at runtime. + https://bugzilla.gnome.org/show_bug.cgi?id=690358 + +2012-12-17 15:17:12 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/audioparsers/gstaacparse.c: + * gst/audioparsers/gstac3parse.c: + * gst/audioparsers/gstamrparse.c: + * gst/audioparsers/gstdcaparse.c: + * gst/audioparsers/gstflacparse.c: + * gst/audioparsers/gstmpegaudioparse.c: + * gst/audioparsers/gstwavpackparse.c: + audioparsers: Make sure the caps are actually writable before changing them + +2012-12-17 15:01:02 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/audioparsers/gstaacparse.c: + * gst/audioparsers/gstac3parse.c: + * gst/audioparsers/gstamrparse.c: + * gst/audioparsers/gstdcaparse.c: + * gst/audioparsers/gstflacparse.c: + * gst/audioparsers/gstmpegaudioparse.c: + * gst/audioparsers/gstwavpackparse.c: + audioparsers: Use the peer caps for restrictions instead of the srcpad allowed caps + Otherwise we will intersect with the srcpad template caps and add all the caps fields + that the parser will ever set, no matter if downstream restricts this field or not. + This requires upstream to set this field on the caps to successfully negotiate. + https://bugzilla.gnome.org/show_bug.cgi?id=690184 + +2012-12-14 22:25:08 +0000 Koop Mast <kwm@rainbow-runner.nl> + + * configure.ac: + * sys/v4l2/gstv4l2object.h: + v4l2: Teach where the videodev2.h header lives on freebsd. + https://bugzilla.gnome.org/show_bug.cgi?id=690233 + +2012-12-16 23:27:41 +0000 Alexey Fisher <bug-track@fisher-privat.net> + + * gst/matroska/matroska-mux.c: + matroskamux: set appropriate block header flag for VP8 invisible frames + Useful for debugging mostly. + https://bugzilla.gnome.org/show_bug.cgi?id=654259 + +2012-12-16 15:25:03 +0000 Tim-Philipp Müller <tim@centricular.net> + + * docs/plugins/Makefile.am: + * docs/plugins/gst-plugins-good-plugins-docs.sgml: + * docs/plugins/gst-plugins-good-plugins-sections.txt: + * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * docs/plugins/inspect/plugin-rtpmanager.xml: + * gst/rtpmanager/gstrtpdtmfmux.c: + docs: add rtpmux and rtpdtmfmux to plugin docs + https://bugzilla.gnome.org/show_bug.cgi?id=629117 + +2012-12-16 15:13:38 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/rtpmanager/Makefile.am: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/gstrtpmuxer.c: + * tests/check/Makefile.am: + * tests/check/elements/.gitignore: + rtpmanager: move rtpmux and rtpdtmfmux elements from -bad + https://bugzilla.gnome.org/show_bug.cgi?id=629117 + +2012-11-03 20:38:00 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpdtmfmux.h: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + * gst/rtpmanager/gstrtpmuxer.c: + * tests/check/elements/rtpmux.c: + rtpmux: Fix FSF address + https://bugzilla.gnome.org/show_bug.cgi?id=687520 + +2012-10-17 17:34:26 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Use gst_element_class_set_static_metadata() + where possible. Avoids some string copies. Also re-indent + some stuff. Also some indent fixes here and there. + +2012-09-10 20:38:14 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpmux.c: + * tests/check/elements/rtpmux.c: + rtpmux: Misc fix for 0.11 + Convert the incoming caps before proxying them + Clear the last_pad when going to ready + tests: Implement accept_caps, don't leak event + +2012-07-17 16:39:02 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: update for RTP buffer api changes + +2012-04-05 18:02:56 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/rtpmanager/gstrtpmuxer.c: + rtpmux: Update for GST_PLUGIN_DEFINE() API changes + +2012-04-02 11:07:18 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: fix compilation + +2012-03-11 19:06:59 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: fix for caps api changes + +2012-01-26 06:58:46 -0500 Matej Knopp <matej.knopp@gmail.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Fix compiler warnings + +2012-01-29 18:01:05 +0000 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Unref non-forwarded events + Also, don't unref forwarded ones + +2012-01-28 16:57:03 +0000 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: resync iterator on resync + +2012-01-27 12:08:52 +0100 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpmux: Re-push sticky events on input pad change + +2012-01-25 15:43:01 +0100 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Don't leak gvalue from iterator + +2012-01-25 16:46:44 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: more porting + +2012-01-24 14:20:52 +0100 Olivier Crête <olivier.crete@collabora.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + * tests/check/elements/rtpmux.c: + rtpmux: port to 0.11 + +2011-11-04 12:22:37 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + rtpmux: make request pads take _%u + +2011-04-14 14:34:26 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpdtmfmux: Add last-stop to dtmf-event upstream events + Add the running time of the last outputted buffer to the + upstream "dtmf-event" events so that the dtmf source does not + leave a gap. + +2010-11-25 19:21:11 +0100 Edward Hervey <bilboed@bilboed.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Remove dead assignments + +2010-10-19 13:43:14 +0300 Stefan Kost <ensonic@users.sf.net> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: add missing G_PARAM_STATIC_STRINGS flags + Canonicalize property names as needed. + +2010-09-30 16:07:29 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Improve documentation + Add an example pipeline, and try to explain a bit more what it does. + +2010-09-24 13:29:55 +0300 Stefan Kost <ensonic@users.sf.net> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpdtmfmux: remove unused variable + +2010-09-24 13:25:22 +0300 Stefan Kost <ensonic@users.sf.net> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpdtmfmux: remove unused signal boilerplate + +2010-09-24 13:24:48 +0300 Stefan Kost <ensonic@users.sf.net> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: no need to ref pad in _chain() + +2010-08-25 22:56:03 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Unlock the right mutex + The mutex locked is for the 'mux' object, but we unlock the + pad, which means that if the rtpmux gets a flush, then the + object lock will stay locked forever, causing it to freeze + the next time it tries to take it. + Fixes bug #627991 + +2010-07-01 15:19:12 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpmux: Add support for GstBufferList + Factor out most of the buffer handling and implement a chain_list + function. Also, the DTMF muxer has been modified to just have a + function to accept or reject a buffer instead of having to subclass + both chain and chain_list. + +2010-07-01 15:15:49 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Don't leak invalid buffers + +2010-06-03 10:43:20 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpmux: fix missing debug log message argument + +2010-05-10 18:37:55 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpdtmfmux: Add some debug messages + +2010-05-07 18:56:57 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpdtmfmux.h: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpdtmfmux: Remove stream-lock event handling + +2010-05-07 18:54:49 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpdtmfmux: Update doc for simplification + +2010-05-07 18:40:30 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * tests/check/elements/rtpmux.c: + tests: Change tests to not use the priority pads instead of the events + +2010-05-06 19:51:59 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpdtmfmux.h: + rtpdtmfmux: Drop buffers on non-priority sinks when something is incoming on the priority sink + +2010-05-06 18:11:40 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpdtmfmux: Add priority sink pads + +2010-05-07 17:15:47 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpdtmfmux: Cleanup event function + +2010-05-07 16:42:22 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + * tests/check/elements/rtpmux.c: + rtpmux: Aggregate incoming segments + +2010-05-06 19:09:48 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpdtmfmux: Update documentation + +2010-05-06 18:10:45 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpmux: Simplify request pad creation + +2010-03-21 21:39:18 +0100 Benjamin Otte <otte@redhat.com> + + * tests/check/elements/rtpmux.c: + Add -Wmissing-declarations -Wmissing-prototypes to configure flags + And fix all warnings + +2010-03-18 17:30:26 +0100 Benjamin Otte <otte@redhat.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + rtpmux: gst_element_class_set_details => gst_element_class_set_details_simple + +2009-11-18 16:38:33 +0100 unknown <havard.graff@.eu.tandberg.int> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: update the current_ssrc from the caps + Fixes #604101 + +2009-12-09 14:42:21 +0100 HÃ¥vard Graff <havard.graff@tandberg.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: release pads when disposing + Because of an allocated priv (GstRTPMuxPadPrivate), the element will + leak memory if not gst_rtp_mux_release_pad() is called. This would + previously only happen if release_request_pad() was called explicitly, + somthing that should not be neccesary. + Fixes #604099 + +2009-12-09 13:40:43 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + dtmfmux: method name cleanups + +2009-10-08 19:06:26 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * tests/check/elements/rtpmux.c: + tests: Add test for rtpdtmfmux locking + +2009-09-28 19:54:53 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * tests/check/elements/rtpmux.c: + tests: Add unit test for rtpmux + +2009-09-28 13:36:44 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Don't ignore requested pad name + +2009-07-29 17:23:31 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Remove empty finalize + +2009-07-21 15:31:33 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Free the pad private data on pad release + Free the pad private data on pad release instead of using a weak ref, + which is not thread safe. Also, lock the content of the pad private using the element's + object lock. + +2009-04-28 16:10:21 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Reject wrong caps + +2009-04-28 16:03:19 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Fix leak Fixed a leak discovered by Laurent Glayal <spegle@yahoo.fr> + +2009-04-28 15:58:41 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Fix leak + Fixed a leak discovered by Laurent Glayal <spegle@yahoo.fr> + +2009-04-22 18:01:07 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Fix warning + +2009-04-20 20:00:15 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Set different caps depending on the input + +2009-04-22 16:25:07 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Only free pad private when pad is disposed + +2009-04-20 18:41:39 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Remove useless caps mangling + +2009-04-20 18:36:42 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Rename variable for more clarity + +2009-04-20 17:43:39 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Use GST_BOILERPLATE + +2009-04-20 17:42:40 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpdtmfmux.h: + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Do the includes locally + +2009-04-15 13:23:01 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Add GST_DEBUG_FUNCPTRs + +2009-04-15 13:15:55 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpdtmfmux: Release locked pad on release_pad + Release the special pad if the pad is removed from the muxer. + +2009-04-15 13:09:27 -0400 Laurent Glayal <spglegle@yahoo.fr> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpdtmfmux: Release special on pad dispose + Fixes #577690 + +2009-02-25 11:45:05 +0200 Stefan Kost <ensonic@users.sf.net> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + docs: various doc fixes + No short-desc as we have them in the element details. + Also keep things (Makefile.am and sections.txt) sorted. + Reword ambigous returns. No text after since please. + +2009-02-10 17:02:24 +0000 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmuxer.c: + rtpmux: Move rtpmux from gst-plugins-farsight to -bad + +2009-02-20 17:45:50 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpdtmfmux.h: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + * gst/rtpmanager/gstrtpmuxer.c: + rtpmux: Re-indent to Gst style + +2009-02-10 19:11:15 +0000 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Document rtp muxer a bit + +2009-02-20 13:30:49 -0500 Laurent Glayal <spglegle@yahoo.fr> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpdtmfmux.h: + rtpmux: Add signals before stream lock and after unlocking + +2009-02-18 20:18:46 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Let ssrc through getcaps + +2009-02-18 19:58:58 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Rename have_base to have_ts_base + +2009-02-18 18:14:52 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpmux: Protect the seqnum with object lock in rtpmux + +2009-02-18 18:07:44 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.h: + rtpmux: Remove unused sink_ts_base + +2009-02-18 15:20:58 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Have getcaps to force the same clockrate on all pads + +2009-02-18 17:05:13 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Validate RTP data in RTP Mux + +2009-02-18 14:16:00 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpmux: Remove unused clock-rate property + +2009-02-18 13:56:36 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpdtmfmux.h: + rtpmux: Clarify locking in rtpdtmfmux + +2009-02-18 13:32:56 -0500 Laurent Glayal <spglegle@yahoo.fr> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Missing format parameter + +2008-12-01 17:55:22 -0500 HÃ¥vard Graff <havard.graff@tandberg.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Update seqnum base in rtp muxer + With help from Wim + +2008-12-01 17:54:58 -0500 HÃ¥vard Graff <havard.graff@tandberg.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Fix some more leaks + +2008-12-01 17:48:29 -0500 HÃ¥vard Graff <havard.graff@tandberg.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpmux: Fix leak + +2008-09-29 15:03:05 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Don't unref caps we don't know (thanks Wim) + +2008-08-12 12:48:02 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Put per-buffer debug at level LOG + +2008-08-12 12:47:14 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Make debug print accurate + +2008-08-12 12:46:23 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Set our caps on the buffers + +2008-08-12 12:46:07 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Take the clock-base stored from the last setcaps + +2008-08-12 12:41:59 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Store the clock-base on setcaps + +2008-08-12 12:30:52 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Add padprivate to the request pads + +2008-08-11 21:20:06 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Make indentation more correct + +2008-08-11 21:05:34 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Fix typo + +2008-08-11 21:03:22 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Set seqnum-base and clock-base in caps from rtpmuxer + +2007-08-15 13:50:38 +0000 Zeeshan Ali <first.last@nokia.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpmux: more debug + 20070815135038-f3f1e-9c7a5490a525c6e8753cb1b8c03354df99132b5c.gz + +2007-08-20 18:50:32 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: missing comment + 20070820185032-4f0f6-0ab67b6ac40dd4e35a8fe53f3cb6daff65ce43b9.gz + +2007-07-12 19:53:36 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Make buffer writable before writing into it + 20070712195336-3e2dc-91a5fb797cfa4919d4e2f9a728c6d6fbd3b83d93.gz + +2007-07-06 20:24:59 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Set pads active when adding them to a potentially running element + 20070706202459-3e2dc-a3731f885725594def0a7be997fc7b3a739ee967.gz + +2007-06-07 12:01:21 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Fix multiple ref leaks (patches by SP GLE) + 20070607120121-3e2dc-061e9ef7a47b1b84fa8f8092f4b8bcc0e6db8c8c.gz + +2007-05-28 15:25:05 +0000 Zeeshan Ali <first.last@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: send event to all src pads + 20070528152505-f3f1e-039216c73dc93f64c49962c77a0253cb9cfec4d3.gz + +2007-05-28 12:37:49 +0000 Zeeshan Ali <first.last@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: print a warning if receive an error iterating sinkpads + 20070528123749-f3f1e-4c1eb3f511b5610143610a65a94d117f2c3d2580.gz + +2007-05-28 12:28:08 +0000 Zeeshan Ali <first.last@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: deal with all the gst_iterator_next() return values + 20070528122808-f3f1e-d301644c3be7633ec6dc5e28596e9346d2da6a50.gz + +2007-05-25 12:31:16 +0000 Zeeshan Ali <first.last@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Return correct value from the event handler + 20070525123116-f3f1e-131b37b5f4521618fe2f1320409a47e65b35ad2d.gz + +2007-05-25 10:27:09 +0000 Zeeshan Ali <first.last@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Ville's original patch to fix the traversal of dtmf event + 20070525102709-f3f1e-6c41d1ef934068a4f4e810e7e981b420075b0c98.gz + +2007-03-29 13:52:50 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Set the correct ts-offset on the get_prop value + 20070329135250-65035-a43e222d91d57c0a61cb3287586aaa29abf78674.gz + +2007-03-29 13:52:23 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Refactorize state_change + 20070329135223-65035-23a0107b2e397710f035c6e88cc0e49b65bb4d5d.gz + +2007-03-29 13:36:22 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpmux: set SSRC on the packets + 20070329133622-65035-1be6e0aa85a71389f7d257b9cd3e13a73d6b745b.gz + +2007-03-29 13:19:36 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Code clean-up and more debug output + 20070329131936-65035-9d499e209e0d7a409c3aa0d1040778babf076179.gz + +2007-03-28 11:22:19 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpmux: Use own clock-base + 20070328112219-65035-1ba5fefbc65059e9b0c860528a31062ceb6a7331.gz + +2007-03-23 16:31:39 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpmux: Only accept RTP streams that have the same clock-rate + 20070323163139-65035-fc0b17b0b8a7a041f48994c4f26e96568168bf95.gz + +2007-03-22 16:15:52 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpmux: Some more code-cleanups + 20070322161552-65035-bda96165e146b4f1d5fea1cc9576a7ab3abebc9e.gz + +2007-03-22 15:42:51 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: return newpad instead of NULL and warn if failed to create a pad + 20070322154251-65035-cdb6651e61c2eb0205cc8c24693b43f98a2da718.gz + +2007-03-22 12:41:32 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Refactorize the RTPMux code + 20070322124132-65035-0a3278147546e33f687097a43b775b3f6aa99f93.gz + +2007-03-22 12:14:53 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpmux: Some more doc fixing + 20070322121453-65035-12d602272217b51bd97df4e5790024c399622dd3.gz + +2007-03-22 11:32:28 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpmux: More Refactoring + 20070322113228-65035-bae34a79599e7de5293ed77b022361ccff822bb9.gz + +2007-03-22 11:31:54 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpmux: More documentation + 20070322113154-65035-624850541a5b5fc3df231204be5a83d07239db28.gz + +2007-03-21 16:33:11 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + rtpmux: Refactor the event handler function + 20070321163311-65035-987e7f25d1ab5335b79f44b277abf15e4e37d317.gz + +2007-03-21 14:52:44 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpdtmfmux.h: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + * gst/rtpmanager/gstrtpmuxer.c: + rtpmux: Add RTPDTMFMux element + 20070321145244-65035-9a01390b0dee3398e53199a1fa1d9352004f338e.gz + +2007-03-21 12:31:49 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpmux.h: + rtpmux: Remove DTMF-specific code from RTP muxer and make it extendable + 20070321123149-65035-b8a8f55ff78eed8cbb0042e827885edfc5438242.gz + +2007-03-20 12:05:24 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Put more helpful description + 20070320120524-65035-db27a7cf6307b511aeb3d996d26e790e367a7bad.gz + +2007-03-16 15:16:41 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: remove the (commented-out) code for blocking the pads + 20070316151641-65035-0123af387951f88594797c722e882cfe70240aff.gz + +2007-03-16 13:14:44 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Drop buffers instead of blocking the sinkpads + 20070316131444-65035-9c1345ad96108881f455d4b55a7f623cd302d0ed.gz + +2007-03-14 17:16:18 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Implement stream locking, needed for DTMF + 20070314171618-65035-e4d24b1606ce0a3e2e739f01833f61e4d7555eac.gz + +2007-03-14 10:20:58 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: use GST_*_OBJECT instead of g_* + 20070314102058-65035-e2442888f2e3e5a3a7659ad7954a4fba34749ce2.gz + +2007-03-14 10:18:54 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: No need to manage pads, parent does that for us + 20070314101854-65035-ef5f4abde227102a1128835ab325905eae4c3726.gz + +2007-03-14 09:03:58 +0000 zeenix@gmail.com <zeenix@gmail.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: Fix copyright header + 20070314090358-d014a-3a6d3eeeaaf5cb8ca3bca6a33e99a551f598bd48.gz + +2007-03-07 08:53:07 +0000 zeeshan.ali@nokia.com <zeeshan.ali@nokia.com> + + * gst/rtpmanager/gstrtpmux.c: + rtpmux: The first implementation of RTP muxer + 20070307085307-65035-833402413f99cb3f8be4883e92bad4c8722510c9.gz + +2012-12-15 21:27:01 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/audiofx/gstscaletempo.c: + * gst/audiofx/gstscaletempo.h: + scaletempo: no need for a private struct + +2012-12-14 15:13:31 +0000 Tim-Philipp Müller <tim@centricular.net> + + * docs/plugins/inspect/plugin-rtp.xml: + * docs/plugins/inspect/plugin-shout2send.xml: + * docs/plugins/inspect/plugin-videocrop.xml: + * docs/plugins/inspect/plugin-videofilter.xml: + docs: update plugin docs + +2012-12-14 15:13:19 +0000 Tim-Philipp Müller <tim@centricular.net> + + * docs/plugins/Makefile.am: + * docs/plugins/gst-plugins-good-plugins-docs.sgml: + * docs/plugins/gst-plugins-good-plugins-sections.txt: + * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * docs/plugins/inspect/plugin-audiofx.xml: + docs: add scaletempo to docs + +2012-11-06 13:36:39 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/audiofx/Makefile.am: + * gst/audiofx/audiofx.c: + audiofx: move scaletempo element from -bad + https://bugzilla.gnome.org/show_bug.cgi?id=687262 + +2012-10-23 14:33:21 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/audiofx/gstscaletempo.c: + scaletempo: Fix event leak + +2012-10-23 14:32:24 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/audiofx/gstscaletempo.c: + scaletempo: Fix timestamp tracking + +2012-10-23 14:06:37 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/audiofx/gstscaletempo.c: + scaletempo: Implement LATENCY query + +2012-10-23 13:39:17 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/audiofx/gstscaletempo.c: + * gst/audiofx/gstscaletempo.h: + scaletempo: Store instance private data in the instance struct + Getting it over and over again via G_TYPE_INSTANCE_GET_PRIVATE() + is really slow. + +2012-10-17 17:34:26 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/audiofx/gstscaletempo.c: + scaletempo: use gst_element_class_set_static_metadata() + where possible. Avoids some string copies. Also re-indent + some stuff. Also some indent fixes here and there. + +2012-09-14 17:08:49 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> + + * gst/audiofx/gstscaletempo.c: + scaletempo: replace gst_element_class_set_details_simple with gst_element_class_set_metadata + +2012-09-14 16:45:34 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/audiofx/gstscaletempo.c: + scaletempo: ffmpegcolorspace is no more + +2012-04-05 18:02:56 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/audiofx/gstscaletempoplugin.c: + scaletempo: Update for GST_PLUGIN_DEFINE() API changes + +2012-03-18 18:32:55 +0100 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> + + * gst/audiofx/gstscaletempo.c: + scaletempo: port to 0.11 + +2011-07-07 10:52:50 -0700 Stefan Kost <ensonic@users.sf.net> + + * gst/audiofx/gstscaletempo.c: + scaletempo: improve the docs + Fix the syntax, add more explanation and xref the properties. + +2011-03-22 13:46:42 +0100 Chris E Jones <chris@chrisejones.com> + + * gst/audiofx/gstscaletempo.c: + scaletempo: Correctly handle newsegment events with stop==-1 + Fixes bug #645420. + +2010-10-19 13:43:14 +0300 Stefan Kost <ensonic@users.sf.net> + + * gst/audiofx/gstscaletempo.c: + scaletempo: add missing G_PARAM_STATIC_STRINGS flags + Canonicalize property names as needed. + +2010-03-18 17:30:26 +0100 Benjamin Otte <otte@redhat.com> + + * gst/audiofx/gstscaletempo.c: + scaletempo: gst_element_class_set_details => gst_element_class_set_details_simple + +2009-11-05 13:40:38 -0300 Thiago Santos <thiago.sousa.santos@collabora.co.uk> + + * gst/audiofx/gstscaletempo.c: + scaletempo: properly update new segments + Scaletempo was missing an update of 'stop' in + new segment parameters when pushing it downstream, + which caused files to end earlier when rate < 1. + Fixes #599903 + Based on patch by: Bastian Hecht <hechtb@gmail.com> + +2009-06-14 20:00:51 +0200 Maximilian Högner <pbmaxi@hoegners.de> + + * gst/audiofx/gstscaletempo.c: + scaletempo: Explicitely cast to signed integers to fix a segfault + Fixes bug #585660. + +2009-02-13 12:18:48 -0800 Michael Smith <msmith@songbirdnest.com> + + * gst/audiofx/gstscaletempo.c: + scaletempo: Do not use void pointer arithmetic. + +2008-10-30 12:13:18 +0000 Stefan Kost <ensonic@users.sourceforge.net> + + scaletempo: Return the result of parent_class->event() + Original commit message from CVS: + * gst/audiofx/gstscaletempo.c: + Return the result of parent_class->event(). + +2008-08-31 12:20:33 +0000 Rov Juvano <rovjuvano@users.sourceforge.net> + + Add scaletempo plugin, which allows to scale the speed of audio without changing the pitch by handling seeks with a r... + Original commit message from CVS: + Patch by: Rov Juvano <rovjuvano at users dot sourceforge dot net> + * configure.ac: + * docs/plugins/Makefile.am: + * docs/plugins/gst-plugins-bad-plugins-docs.sgml: + * docs/plugins/gst-plugins-bad-plugins-sections.txt: + * docs/plugins/inspect/plugin-scaletempo.xml: + * examples/scaletempo/Makefile.am: + * examples/scaletempo/demo-gui.c: (pop_status_bar), + (status_bar_printf), (demo_gui_seek_bar_format), (update_position), + (demo_gui_seek_bar_change), (demo_gui_do_change_rate), + (demo_gui_do_set_rate), (demo_gui_do_rate_entered), + (demo_gui_do_toggle_advanced), (demo_gui_do_toggle_disabled), + (demo_gui_do_seek), (demo_gui_do_play), (demo_gui_do_pause), + (demo_gui_do_play_pause), (demo_gui_do_open_file), + (demo_gui_do_playlist_prev), (demo_gui_do_playlist_next), + (demo_gui_do_about_dialog), (demo_gui_do_quit), + (demo_gui_request_set_stride), (demo_gui_request_set_overlap), + (demo_gui_request_set_search), (demo_gui_rate_changed), + (demo_gui_playing_started), (demo_gui_playing_paused), + (demo_gui_playing_ended), (demo_gui_player_errored), + (demo_gui_stride_changed), (demo_gui_overlap_changed), + (demo_gui_search_changed), (demo_gui_set_player_func), + (demo_gui_set_playlist_func), (build_gvalue_array), + (create_action), (demo_gui_show_func), (demo_gui_set_player), + (demo_gui_set_playlist), (demo_gui_show), (demo_gui_get_property), + (demo_gui_set_property), (demo_gui_init), (demo_gui_class_init), + (demo_gui_get_type): + * examples/scaletempo/demo-gui.h: + * examples/scaletempo/demo-main.c: (handle_error_message), + (handle_quit), (main): + * examples/scaletempo/demo-player.c: (no_pipeline), + (demo_player_event_listener), (demo_player_state_changed_cb), + (demo_player_eos_cb), (demo_player_build_pipeline), (_set_rate), + (demo_player_scale_rate_func), (demo_player_set_rate_func), + (_set_state_and_wait), (demo_player_load_uri_func), + (demo_player_play_func), (demo_player_pause_func), (_seek_to), + (demo_player_seek_by_func), (demo_player_seek_to_func), + (demo_player_get_position_func), (demo_player_get_duration_func), + (demo_player_scale_rate), (demo_player_set_rate), + (demo_player_load_uri), (demo_player_play), (demo_player_pause), + (demo_player_seek_by), (demo_player_seek_to), + (demo_player_get_position), (demo_player_get_duration), + (demo_player_get_property), (demo_player_set_property), + (demo_player_init), (demo_player_class_init), + (demo_player_get_type): + * examples/scaletempo/demo-player.h: + * gst/audiofx/Makefile.am: + * gst/audiofx/gstscaletempo.c: (best_overlap_offset_float), + (best_overlap_offset_s16), (output_overlap_float), + (output_overlap_s16), (fill_queue), (reinit_buffers), + (gst_scaletempo_transform), (gst_scaletempo_transform_size), + (gst_scaletempo_sink_event), (gst_scaletempo_set_caps), + (gst_scaletempo_get_property), (gst_scaletempo_set_property), + (gst_scaletempo_base_init), (gst_scaletempo_class_init), + (gst_scaletempo_init): + * gst/audiofx/gstscaletempo.h: + * gst/audiofx/gstscaletempoplugin.c: (plugin_init): + Add scaletempo plugin, which allows to scale the speed of audio without + changing the pitch by handling seeks with a rate!=1.0. + Integrate it into the docs and add the example application for it. + Fixes bug #537700. + +2012-12-13 12:36:20 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * tests/check/elements/rtpjitterbuffer.c: + check: add (but disable) more rtp jitterbuffer tests + Tests need to be ported to 1.0 before they can be enabled but added here so they + don't get forgotten. + See https://bugzilla.gnome.org/show_bug.cgi?id=667838 + +2012-01-13 01:11:31 +0100 Havard Graff <havard.graff@tandberg.com> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + jitterbuffer: bundle together late lost-events + The scenario where you have a gap in a steady flow of packets of + say 10 seconds (500 packets of with duration of 20ms), the jitterbuffer + will idle up until it receives the first buffer after the gap, but will + then go on to produce 499 lost-events, to "cover up" the gap. + Now this is obviously wrong, since the last possible time for the earliest + lost-events to be played out has obviously expired, but the fact that + the jitterbuffer has a "length", represented with its own latency combined + with the total latency downstream, allows for covering up at least some + of this gap. + So in the case of the "length" being 200ms, while having received packet + 500, the jitterbuffer should still create a timeout for packet 491, which + will have its time expire at 10,02 seconds, specially since it might + actually arrive in time! But obviously, waiting for packet 100, that had + its time expire at 2 seconds, (remembering that the current time is 10) + is useless... + The patch will create one "big" lost-event for the first 490 packets, + and then go on to create single ones if they can reach their + playout deadline. + See https://bugzilla.gnome.org/show_bug.cgi?id=667838 + +2012-12-13 09:27:14 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: fix TCP reconnect + Ignore other commands when reconnecting, otherwise the loop function would pause + and the reconnection would not happen. Continue looping after doing a reconnect + so that we have a chance to actually read the new data. + +2012-12-13 01:02:34 +0400 РуÑлан Ижбулатов <lrn1986@gmail.com> + + * sys/directsound/gstdirectsoundsink.c: + * sys/directsound/gstdirectsoundsink.h: + * sys/waveform/gstwaveformsink.h: + directsound, waveform: fix compilation errors caused by circular includes + https://bugzilla.gnome.org/show_bug.cgi?id=690124 + +2012-12-12 17:35:04 +0000 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/jack/gstjack.c: + * ext/jack/gstjack.h: + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosrc.c: + * ext/jack/gstjackutil.h: + * ext/libpng/gstpngenc.c: + * ext/pulse/pulseprobe.c: + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesink.h: + * ext/pulse/pulsesrc.c: + * ext/pulse/pulseutil.c: + * ext/vpx/gstvp8enc.c: + * sys/oss/common.h: + * sys/oss/gstossaudio.c: + * sys/oss/gstosssrc.c: + * sys/oss4/oss4-audio.h: + ext/sys: Fix some compilation errors caused by circular includes + +2012-12-12 12:07:34 +0100 Philippe Normand <philn@igalia.com> + + * gst/interleave/deinterleave.c: + deinterleave: properly set srcpad channel position + The src pad caps always describe a single audio channel so only the + first position matters if deinterleave is configured to keep channel + positions in its src pads. + +2012-12-12 11:09:42 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: timeout on udpsrc is in nanoseconds + +2012-12-12 11:08:13 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/udp/gstudpsrc.c: + udpsrc: improve timeouts + Make it possible to set the timeout after we went to the READY state by using + the timeout when checking the condition. This also makes it possible to set the + timeout with a higher granularity than seconds. + +2012-12-11 13:00:46 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/deinterlace/gstdeinterlace.c: + * gst/deinterlace/gstdeinterlace.h: + * gst/deinterlace/gstdeinterlacemethod.c: + * gst/deinterlace/gstdeinterlacemethod.h: + * gst/deinterlace/tvtime/greedy.c: + * gst/deinterlace/tvtime/greedyh.c: + * gst/deinterlace/tvtime/linear.c: + * gst/deinterlace/tvtime/linearblend.c: + * gst/deinterlace/tvtime/scalerbob.c: + * gst/deinterlace/tvtime/tomsmocomp/TomsMoCompAll.inc: + * gst/deinterlace/tvtime/vfir.c: + * gst/deinterlace/tvtime/weave.c: + * gst/deinterlace/tvtime/weavebff.c: + * gst/deinterlace/tvtime/weavetff.c: + deinterlace: add support for strides + Implement stride support correctly by taking it from the GstVideoFrame. + Propose a bufferpool upstream when not operating in passthrough. + +2012-09-27 12:17:58 -0700 Aleix Conchillo Flaque <aleix@oblong.com> + + rtspsrc: do not change state to PLAYING if currently chaning state + * gst/rtsp/gstrtspsrc.c (gst_rtspsrc_play): state change might be + happening in the application thread, so we don't change the state to + PLAYING in the gstrtspsrc thread unless it is safe. + A specific case is when chaning the state to NULL from the application + thread. This will synchronously try to stop the task (with the element + state lock acquired), but we will try a gst_element_set_state from + gstrtspsrc thread which will block on the element state lock causing a + deadlock. + https://bugzilla.gnome.org/show_bug.cgi?id=684312 + +2012-12-10 11:44:26 +0000 Alexey Chernov <4ernov@gmail.com> + + * sys/osxvideo/osxvideosink.m: + osxvideosink: Fix resizing the Cocoa window on receiving new caps + Fixes bug #689732. + +2012-11-30 20:37:47 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * configure.ac: + * sys/v4l2/Makefile.am: + v4l2src: link against -lrt for clock_gettime() + Need to explicitly link against -lrt for clock_gettime(), which + we don't get in the libs any more, because core moved the + gmodule-no-export-2.0 bit into Requires.Private. + Not required for newer glibc, but for older ones, so check for that. + +2012-11-30 17:22:59 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * ext/shout2/gstshout2.c: + shout2send: accept audio/webm as well as video/webm + https://bugzilla.gnome.org/show_bug.cgi?id=689336 + +2012-11-30 17:20:18 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/matroska/matroska-mux.c: + * tests/check/elements/matroskamux.c: + webmux: fix linking with shout2send element + Shout2send only accepts webm format, not matroska, but due + to a bug in matroskamux, webmmux's source pad is also created + with the matroska source pad template as pad template, which + makes the link function think it can't link webmmux to shout2send. + Also add unit test. + https://bugzilla.gnome.org/show_bug.cgi?id=689336 + +2012-11-27 11:13:37 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: use new option parser function + +2012-11-26 15:17:13 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/law/mulaw-conversion.c: + law: fix accidental file permissions change + https://bugzilla.gnome.org/show_bug.cgi?id=687469 + +2012-11-25 16:05:11 +0000 Tim-Philipp Müller <tim@centricular.net> + + * sys/v4l2/gstv4l2object.c: + v4l2: remove unused define + +2012-11-25 14:16:09 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/isomp4/qtdemux.c: + qtdemux: avoid criticals if unknown fourcc has space at beginning or end + https://bugzilla.gnome.org/show_bug.cgi?id=682936 + +2012-11-24 19:32:51 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/videobox/gstvideobox.c: + videobox: fix border filling for planar YUV formats + We would get a green border instead of a black one, for + example. + https://bugzilla.gnome.org/show_bug.cgi?id=684991 + +2012-11-24 14:27:33 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/law/mulaw-conversion.c: + mulaw: const-ify some arrays + +2012-11-02 12:38:44 -0400 Roland Krikava <rkrikava@gmail.com> + + * gst/law/mulaw-conversion.c: + mulawdec: fix integer overrun + There might be more than 65535 samples in a chunk of data. + https://bugzilla.gnome.org/show_bug.cgi?id=687469 + +2012-11-22 11:34:31 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: pause the task instead of spinning + Actually pause the loop task instead of spinning forever. + +2012-11-19 03:31:37 -0500 Joshua M. Doe <oss@nvl.army.mil> + + * gst/videofilter/gstvideoflip.c: + videoflip: Add gray 8/16 support + +2012-11-19 11:25:14 +0000 Tim-Philipp Müller <tim@centricular.net> + + * common: + Automatic update of common submodule + From b497c4f to a72faea + +2012-11-16 15:38:29 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: handle segment event + Make a segment event when we send a new range header to a client (first PLAY + request or after a seek). Send the segment event in interleaved mode. + Clean the segment event on cleanup + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=688382 + +2012-11-16 15:18:07 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: fix check for active streams + A stream can be active without a srcpad yet and we want to send + events on those streams as well. + +2012-11-16 13:31:04 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: create and add pads outside of lock + Create and add the ghostpad for the new stream outside of the lock because it + is not needed and causes deadlocks. + +2012-09-12 22:11:20 -0700 Aleix Conchillo Flaque <aleix@oblong.com> + + rtspsrc: allow client to disable reconnection + * gst/rtsp/gstrtspsrc.[ch]: added new "udp-reconnect" property. Before, + rtspsrc always tried to reconnect to the server when the RTSP + connection was closed by the server. This property lets the user + decide whether it wants rtspsrc to reconnect or not. + https://bugzilla.gnome.org/show_bug.cgi?id=683912 + +2012-11-16 12:16:05 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: clear variables before retrying + Else we might unref an old udpsrc twice in cleanup. + +2012-11-16 12:00:14 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: propose ports in multicast + When the user configured a port-range, propose ports from this range + as the multicast ports. The server is free to ignore this request but if it + honours it, increment our ports so that we suggest the next port pair for the + next stream. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=639420 + +2012-11-16 11:58:53 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: add more debug + +2012-11-16 09:09:38 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/multifile/gstmultifilesink.c: + multifilesink: post messages in max-size mode as well + No reason not to really. + +2012-11-15 14:37:44 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/udp/gstudpsrc.c: + udpsrc: post error before stopping + +2012-11-14 00:13:36 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/goom/gstgoom.c: + * gst/goom2k1/gstgoom.c: + * gst/rtp/gstrtpmp4adepay.c: + * gst/rtp/gstrtpmparobustdepay.c: + gst_adapter_prev_timestamp -> gst_adapter_prev_pts + https://bugzilla.gnome.org/show_bug.cgi?id=675598 + +2012-11-12 19:23:41 +0100 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/videofilter/gstvideoflip.c: + videoflip: Add NV12/NV21 support + https://bugzilla.gnome.org/show_bug.cgi?id=688225 + +2012-11-12 13:01:23 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/vpx/gstvp8enc.c: + vp8enc: Don't leak GstVideoCodecFrames that cause the creation of invisible frames + Fixes bug #682714. + +2012-11-12 11:47:17 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/pulse/pulsesink.c: + pulse: Use new GType for GThread instead of just G_TYPE_POINTER + +2012-11-12 11:14:34 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsource.c: + rtpsource: protect against invalid RTP packets + +2012-11-12 10:44:01 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/libpng/gstpngdec.c: + pngdec: Actually use the stop() vfunc implementation + +2012-11-12 10:31:59 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/vpx/gstvp8dec.c: + vp8dec: Fix last commit + +2012-11-12 10:10:15 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/libpng/gstpngdec.c: + pngdec: Keep the input state in reset() + It's still valid after a flush and we might not get a new one. + +2012-11-12 10:08:57 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/vpx/gstvp8dec.c: + vp8dec: Also destroy decoder in set_format() if it was created already + Fixes a memory leak. + +2012-11-12 09:48:45 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * ext/vpx/gstvp8dec.c: + vp8dec: Don't clear input state in reset() + The input state is still valid after flushing until + new caps arrive. + Fixes bug #688092. + +2012-11-10 18:21:28 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/videocrop/gstvideocrop.c: + videocrop: add support for YV12 + We can do I420, so we can do YV12 as well. + +2012-11-10 12:39:08 +0100 Alessandro Decina <alessandro.d@gmail.com> + + * gst/multifile/gstmultifilesink.c: + multifilesink: don't write stream headers with key-unit-event + Don't write stream headers, let upstream elements insert them in the stream if + all_headers=true is set in key unit events. + +2012-11-09 13:27:16 +0100 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + videocrop: Add NV12/NV21 support + https://bugzilla.gnome.org/show_bug.cgi?id=687964 + +2012-11-09 16:31:05 +0100 Debarshi Ray <rishi@gnu.org> + + * ext/vpx/gstvp8dec.c: + vp8dec: Don't give up so easily if failed to decode a frame + https://bugzilla.gnome.org/show_bug.cgi?id=687436 + +2012-11-09 11:22:30 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/udp/gstudpsrc.c: + udpsrc: Also clear GError + +2012-11-09 11:20:27 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/udp/gstudpsrc.c: + udpsrc: Don't error out if we get an ICMP destination-unreachable message when trying to read packets + See bug #529454 and #687782 and commit + 751f2bb3646f2beff3698c9f09900dbd0ea08abb + +2012-11-07 20:35:50 +0000 Tim-Philipp Müller <tim@centricular.net> + + * configure.ac: + configure.ac: update courtesy of autoupdate + +2012-11-07 18:48:49 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * common: + * configure.ac: + configure: let AG_GST_PLUGIN_DOCS check for python + And update common for move from AS_PATH_PYTHON to AM_PATH_PYTHON, + which as a side-effect should pick up newer python versions as + well. + https://bugzilla.gnome.org/show_bug.cgi?id=563903 + +2012-11-07 13:36:33 +0100 Christian Fredrik Kalager Schaller <uraeus@linuxrisin.org> + + * gst/rtp/Makefile.am: + Fix vp8rtp header names in Makefile + +2012-11-06 15:03:55 +0100 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + * tests/check/elements/videocrop.c: + videocrop: Add support for automatic cropping + This change enable automatic cropping using -1 set to left, top, right or + bottom property. In the case both side are set to automatic cropping, the + croping will be done equally on both side (in the odd case, right and + bottom cropping will be 1 pixel more). + https://bugzilla.gnome.org/show_bug.cgi?id=687761 + +2012-11-02 16:39:28 +0100 Debarshi Ray <rishi@gnu.org> + + * ext/speex/gstspeexdec.c: + speexdec: Don't unmap or finish_frame an invalid GstBuffer + https://bugzilla.gnome.org/show_bug.cgi?id=687464 + +2012-11-06 13:22:58 +0100 Marc Leeman <marc.leeman@gmail.com> + + * gst/rtsp/gstrtspsrc.c: + rtsp: the RTCP port number is inclusive + The configured port number pair has its upper bound set to the maximum + allowed RTCP port, inclusive. + See https://bugzilla.gnome.org/show_bug.cgi?id=639420 + +2012-11-03 20:38:00 +0000 Tim-Philipp Müller <tim@centricular.net> + + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/gstdtmfdetect.h: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfdepay.h: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + Fix FSF address + https://bugzilla.gnome.org/show_bug.cgi?id=687520 + +2012-11-04 00:07:18 +0000 Tim-Philipp Müller <tim@centricular.net> + + * ext/aalib/gstaasink.c: + * ext/aalib/gstaasink.h: + * ext/cairo/gstcairo.c: + * ext/cairo/gstcairooverlay.c: + * ext/cairo/gstcairooverlay.h: + * ext/cairo/gstcairorender.c: + * ext/cairo/gstcairorender.h: + * ext/cairo/gsttextoverlay.c: + * ext/cairo/gsttimeoverlay.c: + * ext/cairo/gsttimeoverlay.h: + * ext/dv/gstdv.c: + * ext/dv/gstdvdec.c: + * ext/dv/gstdvdec.h: + * ext/dv/gstdvdemux.c: + * ext/dv/gstdvdemux.h: + * ext/dv/gstsmptetimecode.c: + * ext/dv/gstsmptetimecode.h: + * ext/flac/gstflac.c: + * ext/flac/gstflacdec.c: + * ext/flac/gstflacdec.h: + * ext/flac/gstflacenc.c: + * ext/flac/gstflacenc.h: + * ext/flac/gstflactag.c: + * ext/flac/gstflactag.h: + * ext/gdk_pixbuf/gstgdkanimation.c: + * ext/gdk_pixbuf/gstgdkanimation.h: + * ext/gdk_pixbuf/gstgdkpixbufdec.c: + * ext/gdk_pixbuf/gstgdkpixbufdec.h: + * ext/gdk_pixbuf/gstgdkpixbufoverlay.h: + * ext/gdk_pixbuf/gstgdkpixbufplugin.c: + * ext/gdk_pixbuf/gstgdkpixbufsink.c: + * ext/gdk_pixbuf/gstgdkpixbufsink.h: + * ext/gdk_pixbuf/pixbufscale.c: + * ext/gdk_pixbuf/pixbufscale.h: + * ext/jack/gstjack.c: + * ext/jack/gstjack.h: + * ext/jack/gstjackaudioclient.c: + * ext/jack/gstjackaudioclient.h: + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosink.h: + * ext/jack/gstjackaudiosrc.c: + * ext/jack/gstjackaudiosrc.h: + * ext/jack/gstjackringbuffer.h: + * ext/jack/gstjackutil.c: + * ext/jack/gstjackutil.h: + * ext/jpeg/gstjpeg.c: + * ext/jpeg/gstjpeg.h: + * ext/jpeg/gstjpegdec.c: + * ext/jpeg/gstjpegdec.h: + * ext/jpeg/gstjpegenc.c: + * ext/jpeg/gstjpegenc.h: + * ext/jpeg/gstsmokedec.c: + * ext/jpeg/gstsmokedec.h: + * ext/jpeg/gstsmokeenc.c: + * ext/jpeg/gstsmokeenc.h: + * ext/jpeg/smokecodec.c: + * ext/jpeg/smokecodec.h: + * ext/jpeg/smokeformat.h: + * ext/libcaca/gstcacasink.c: + * ext/libcaca/gstcacasink.h: + * ext/libpng/gstpng.c: + * ext/libpng/gstpng.h: + * ext/libpng/gstpngdec.c: + * ext/libpng/gstpngdec.h: + * ext/libpng/gstpngenc.c: + * ext/libpng/gstpngenc.h: + * ext/mikmod/README: + * ext/mikmod/gstmikmod.c: + * ext/mikmod/gstmikmod.h: + * ext/mikmod/mikmod_types.c: + * ext/mikmod/mikmod_types.h: + * ext/pulse/plugin.c: + * ext/pulse/pulseprobe.c: + * ext/pulse/pulseprobe.h: + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesink.h: + * ext/pulse/pulsesrc.c: + * ext/pulse/pulsesrc.h: + * ext/pulse/pulseutil.c: + * ext/pulse/pulseutil.h: + * ext/raw1394/gst1394.c: + * ext/raw1394/gst1394clock.c: + * ext/raw1394/gst1394clock.h: + * ext/raw1394/gst1394probe.c: + * ext/raw1394/gst1394probe.h: + * ext/raw1394/gstdv1394src.c: + * ext/raw1394/gstdv1394src.h: + * ext/raw1394/gsthdv1394src.c: + * ext/raw1394/gsthdv1394src.h: + * ext/shout2/gstshout2.c: + * ext/shout2/gstshout2.h: + * ext/soup/gstsouphttpclientsink.h: + * ext/speex/gstspeex.c: + * ext/speex/gstspeexdec.c: + * ext/speex/gstspeexdec.h: + * ext/speex/gstspeexenc.c: + * ext/speex/gstspeexenc.h: + * ext/taglib/gstapev2mux.cc: + * ext/taglib/gstapev2mux.h: + * ext/taglib/gstid3v2mux.cc: + * ext/taglib/gstid3v2mux.h: + * ext/taglib/gsttaglibplugin.c: + * ext/vpx/gstvp8dec.c: + * ext/vpx/gstvp8dec.h: + * ext/vpx/gstvp8enc.c: + * ext/vpx/gstvp8enc.h: + * ext/vpx/gstvp8utils.c: + * ext/vpx/gstvp8utils.h: + * ext/vpx/plugin.c: + * ext/wavpack/gstwavpack.c: + * ext/wavpack/gstwavpackcommon.c: + * ext/wavpack/gstwavpackcommon.h: + * ext/wavpack/gstwavpackdec.c: + * ext/wavpack/gstwavpackdec.h: + * ext/wavpack/gstwavpackenc.c: + * ext/wavpack/gstwavpackenc.h: + * ext/wavpack/gstwavpackstreamreader.c: + * ext/wavpack/gstwavpackstreamreader.h: + * gst-libs/gst/gettext.h: + * gst-libs/gst/glib-compat-private.h: + * gst-libs/gst/gst-i18n-plugin.h: + * gst/alpha/gstalpha.c: + * gst/alpha/gstalpha.h: + * gst/alpha/gstalphacolor.c: + * gst/alpha/gstalphacolor.h: + * gst/apetag/gstapedemux.c: + * gst/apetag/gstapedemux.h: + * gst/audiofx/audioamplify.c: + * gst/audiofx/audioamplify.h: + * gst/audiofx/audiochebband.c: + * gst/audiofx/audiochebband.h: + * gst/audiofx/audiocheblimit.c: + * gst/audiofx/audiocheblimit.h: + * gst/audiofx/audiodynamic.c: + * gst/audiofx/audiodynamic.h: + * gst/audiofx/audioecho.c: + * gst/audiofx/audioecho.h: + * gst/audiofx/audiofirfilter.c: + * gst/audiofx/audiofirfilter.h: + * gst/audiofx/audiofx.c: + * gst/audiofx/audiofxbasefirfilter.c: + * gst/audiofx/audiofxbasefirfilter.h: + * gst/audiofx/audiofxbaseiirfilter.c: + * gst/audiofx/audiofxbaseiirfilter.h: + * gst/audiofx/audioiirfilter.c: + * gst/audiofx/audioiirfilter.h: + * gst/audiofx/audioinvert.c: + * gst/audiofx/audioinvert.h: + * gst/audiofx/audiokaraoke.c: + * gst/audiofx/audiokaraoke.h: + * gst/audiofx/audiopanorama.c: + * gst/audiofx/audiopanorama.h: + * gst/audiofx/audiowsincband.c: + * gst/audiofx/audiowsincband.h: + * gst/audiofx/audiowsinclimit.c: + * gst/audiofx/audiowsinclimit.h: + * gst/audiofx/math_compat.h: + * gst/audioparsers/gstaacparse.c: + * gst/audioparsers/gstaacparse.h: + * gst/audioparsers/gstac3parse.c: + * gst/audioparsers/gstac3parse.h: + * gst/audioparsers/gstamrparse.c: + * gst/audioparsers/gstamrparse.h: + * gst/audioparsers/gstdcaparse.c: + * gst/audioparsers/gstdcaparse.h: + * gst/audioparsers/gstflacparse.c: + * gst/audioparsers/gstflacparse.h: + * gst/audioparsers/gstmpegaudioparse.c: + * gst/audioparsers/gstmpegaudioparse.h: + * gst/audioparsers/gstwavpackparse.c: + * gst/audioparsers/gstwavpackparse.h: + * gst/audioparsers/plugin.c: + * gst/auparse/gstauparse.c: + * gst/auparse/gstauparse.h: + * gst/autodetect/gstautoaudiosink.c: + * gst/autodetect/gstautoaudiosink.h: + * gst/autodetect/gstautoaudiosrc.c: + * gst/autodetect/gstautoaudiosrc.h: + * gst/autodetect/gstautodetect.c: + * gst/autodetect/gstautodetect.h: + * gst/autodetect/gstautovideosink.c: + * gst/autodetect/gstautovideosink.h: + * gst/autodetect/gstautovideosrc.c: + * gst/autodetect/gstautovideosrc.h: + * gst/avi/avi-ids.h: + * gst/avi/gstavi.c: + * gst/avi/gstavidemux.c: + * gst/avi/gstavidemux.h: + * gst/avi/gstavimux.c: + * gst/avi/gstavimux.h: + * gst/avi/gstavisubtitle.c: + * gst/cutter/gstcutter.c: + * gst/cutter/gstcutter.h: + * gst/debugutils/breakmydata.c: + * gst/debugutils/cpureport.c: + * gst/debugutils/cpureport.h: + * gst/debugutils/gstcapsdebug.c: + * gst/debugutils/gstcapsdebug.h: + * gst/debugutils/gstdebug.c: + * gst/debugutils/gstnavigationtest.c: + * gst/debugutils/gstnavigationtest.h: + * gst/debugutils/gstnavseek.c: + * gst/debugutils/gstnavseek.h: + * gst/debugutils/gstpushfilesrc.c: + * gst/debugutils/gstpushfilesrc.h: + * gst/debugutils/gsttaginject.c: + * gst/debugutils/gsttaginject.h: + * gst/debugutils/progressreport.c: + * gst/debugutils/progressreport.h: + * gst/debugutils/rndbuffersize.c: + * gst/debugutils/testplugin.c: + * gst/debugutils/tests.c: + * gst/debugutils/tests.h: + * gst/deinterlace/gstdeinterlace.c: + * gst/deinterlace/gstdeinterlace.h: + * gst/deinterlace/gstdeinterlacemethod.c: + * gst/deinterlace/gstdeinterlacemethod.h: + * gst/deinterlace/tvtime/greedy.c: + * gst/deinterlace/tvtime/greedyh.asm: + * gst/deinterlace/tvtime/greedyh.c: + * gst/deinterlace/tvtime/greedyhmacros.h: + * gst/deinterlace/tvtime/linear.c: + * gst/deinterlace/tvtime/linearblend.c: + * gst/deinterlace/tvtime/plugins.h: + * gst/deinterlace/tvtime/scalerbob.c: + * gst/deinterlace/tvtime/tomsmocomp.c: + * gst/deinterlace/tvtime/tomsmocomp/TomsMoCompAll.inc: + * gst/deinterlace/tvtime/vfir.c: + * gst/deinterlace/tvtime/weave.c: + * gst/deinterlace/tvtime/weavebff.c: + * gst/deinterlace/tvtime/weavetff.c: + * gst/deinterlace/tvtime/x86-64_macros.inc: + * gst/effectv/gstaging.c: + * gst/effectv/gstaging.h: + * gst/effectv/gstdice.c: + * gst/effectv/gstdice.h: + * gst/effectv/gstedge.c: + * gst/effectv/gstedge.h: + * gst/effectv/gsteffectv.c: + * gst/effectv/gsteffectv.h: + * gst/effectv/gstop.c: + * gst/effectv/gstop.h: + * gst/effectv/gstquark.c: + * gst/effectv/gstquark.h: + * gst/effectv/gstradioac.c: + * gst/effectv/gstradioac.h: + * gst/effectv/gstrev.c: + * gst/effectv/gstrev.h: + * gst/effectv/gstripple.c: + * gst/effectv/gstripple.h: + * gst/effectv/gstshagadelic.c: + * gst/effectv/gstshagadelic.h: + * gst/effectv/gststreak.c: + * gst/effectv/gststreak.h: + * gst/effectv/gstvertigo.c: + * gst/effectv/gstvertigo.h: + * gst/effectv/gstwarp.c: + * gst/effectv/gstwarp.h: + * gst/equalizer/gstiirequalizer.c: + * gst/equalizer/gstiirequalizer.h: + * gst/equalizer/gstiirequalizer10bands.c: + * gst/equalizer/gstiirequalizer10bands.h: + * gst/equalizer/gstiirequalizer3bands.c: + * gst/equalizer/gstiirequalizer3bands.h: + * gst/equalizer/gstiirequalizernbands.c: + * gst/equalizer/gstiirequalizernbands.h: + * gst/flv/amfdefs.h: + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvdemux.h: + * gst/flv/gstflvmux.c: + * gst/flv/gstflvmux.h: + * gst/flv/gstindex.c: + * gst/flv/gstindex.h: + * gst/flv/gstmemindex.c: + * gst/flx/flx_color.c: + * gst/flx/flx_color.h: + * gst/flx/flx_fmt.h: + * gst/flx/gstflxdec.c: + * gst/flx/gstflxdec.h: + * gst/goom/config_param.c: + * gst/goom/convolve_fx.c: + * gst/goom/drawmethods.c: + * gst/goom/drawmethods.h: + * gst/goom/filters.c: + * gst/goom/filters_mmx.s: + * gst/goom/flying_stars_fx.c: + * gst/goom/goom.h: + * gst/goom/goom_config.h: + * gst/goom/goom_config_param.h: + * gst/goom/goom_core.c: + * gst/goom/goom_filters.h: + * gst/goom/goom_fx.h: + * gst/goom/goom_graphic.h: + * gst/goom/goom_plugin_info.h: + * gst/goom/goom_tools.c: + * gst/goom/goom_tools.h: + * gst/goom/goom_typedefs.h: + * gst/goom/goom_visual_fx.h: + * gst/goom/graphic.c: + * gst/goom/gstgoom.c: + * gst/goom/gstgoom.h: + * gst/goom/lines.c: + * gst/goom/lines.h: + * gst/goom/mathtools.c: + * gst/goom/mathtools.h: + * gst/goom/motif_goom1.h: + * gst/goom/motif_goom2.h: + * gst/goom/plugin_info.c: + * gst/goom/ppc_drawings.h: + * gst/goom/ppc_drawings.s: + * gst/goom/ppc_zoom_ultimate.h: + * gst/goom/ppc_zoom_ultimate.s: + * gst/goom/sound_tester.c: + * gst/goom/sound_tester.h: + * gst/goom/surf3d.c: + * gst/goom/surf3d.h: + * gst/goom/tentacle3d.c: + * gst/goom/tentacle3d.h: + * gst/goom/v3d.c: + * gst/goom/v3d.h: + * gst/goom2k1/gstgoom.c: + * gst/goom2k1/gstgoom.h: + * gst/icydemux/gsticydemux.c: + * gst/icydemux/gsticydemux.h: + * gst/id3demux/gstid3demux.c: + * gst/id3demux/gstid3demux.h: + * gst/imagefreeze/gstimagefreeze.c: + * gst/imagefreeze/gstimagefreeze.h: + * gst/interleave/deinterleave.c: + * gst/interleave/deinterleave.h: + * gst/interleave/interleave.c: + * gst/interleave/interleave.h: + * gst/interleave/plugin.c: + * gst/interleave/plugin.h: + * gst/isomp4/atoms.c: + * gst/isomp4/atoms.h: + * gst/isomp4/atomsrecovery.c: + * gst/isomp4/atomsrecovery.h: + * gst/isomp4/descriptors.c: + * gst/isomp4/descriptors.h: + * gst/isomp4/fourcc.h: + * gst/isomp4/ftypcc.h: + * gst/isomp4/gstqtmoovrecover.c: + * gst/isomp4/gstqtmoovrecover.h: + * gst/isomp4/gstqtmux-doc.c: + * gst/isomp4/gstqtmux-doc.h: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + * gst/isomp4/gstqtmuxmap.c: + * gst/isomp4/gstqtmuxmap.h: + * gst/isomp4/gstrtpxqtdepay.c: + * gst/isomp4/gstrtpxqtdepay.h: + * gst/isomp4/isomp4-plugin.c: + * gst/isomp4/properties.c: + * gst/isomp4/properties.h: + * gst/isomp4/qtatomparser.h: + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + * gst/isomp4/qtdemux_dump.c: + * gst/isomp4/qtdemux_dump.h: + * gst/isomp4/qtdemux_fourcc.h: + * gst/isomp4/qtdemux_lang.c: + * gst/isomp4/qtdemux_lang.h: + * gst/isomp4/qtdemux_types.c: + * gst/isomp4/qtdemux_types.h: + * gst/isomp4/qtpalette.h: + * gst/law/alaw-decode.c: + * gst/law/alaw-decode.h: + * gst/law/alaw-encode.c: + * gst/law/alaw-encode.h: + * gst/law/alaw.c: + * gst/law/mulaw-decode.c: + * gst/law/mulaw-decode.h: + * gst/law/mulaw-encode.c: + * gst/law/mulaw-encode.h: + * gst/law/mulaw.c: + * gst/level/gstlevel.c: + * gst/level/gstlevel.h: + * gst/matroska/ebml-ids.h: + * gst/matroska/ebml-read.c: + * gst/matroska/ebml-read.h: + * gst/matroska/ebml-write.c: + * gst/matroska/ebml-write.h: + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-demux.h: + * gst/matroska/matroska-ids.c: + * gst/matroska/matroska-ids.h: + * gst/matroska/matroska-mux.c: + * gst/matroska/matroska-mux.h: + * gst/matroska/matroska-parse.c: + * gst/matroska/matroska-parse.h: + * gst/matroska/matroska-read-common.c: + * gst/matroska/matroska-read-common.h: + * gst/matroska/matroska.c: + * gst/matroska/webm-mux.c: + * gst/matroska/webm-mux.h: + * gst/monoscope/convolve.c: + * gst/monoscope/convolve.h: + * gst/monoscope/gstmonoscope.c: + * gst/monoscope/gstmonoscope.h: + * gst/multifile/gstmultifile.c: + * gst/multifile/gstmultifilesink.c: + * gst/multifile/gstmultifilesink.h: + * gst/multifile/gstmultifilesrc.c: + * gst/multifile/gstmultifilesrc.h: + * gst/multifile/gstsplitfilesrc.c: + * gst/multifile/gstsplitfilesrc.h: + * gst/multifile/patternspec.c: + * gst/multifile/patternspec.h: + * gst/multipart/multipart.c: + * gst/multipart/multipartdemux.c: + * gst/multipart/multipartdemux.h: + * gst/multipart/multipartmux.c: + * gst/multipart/multipartmux.h: + * gst/rtp/fnv1hash.c: + * gst/rtp/fnv1hash.h: + * gst/rtp/gstasteriskh263.c: + * gst/rtp/gstasteriskh263.h: + * gst/rtp/gstrtp.c: + * gst/rtp/gstrtpL16depay.c: + * gst/rtp/gstrtpL16depay.h: + * gst/rtp/gstrtpL16pay.c: + * gst/rtp/gstrtpL16pay.h: + * gst/rtp/gstrtpac3depay.c: + * gst/rtp/gstrtpac3depay.h: + * gst/rtp/gstrtpac3pay.c: + * gst/rtp/gstrtpac3pay.h: + * gst/rtp/gstrtpamrdepay.c: + * gst/rtp/gstrtpamrdepay.h: + * gst/rtp/gstrtpamrpay.c: + * gst/rtp/gstrtpamrpay.h: + * gst/rtp/gstrtpbvdepay.c: + * gst/rtp/gstrtpbvdepay.h: + * gst/rtp/gstrtpbvpay.c: + * gst/rtp/gstrtpbvpay.h: + * gst/rtp/gstrtpceltdepay.c: + * gst/rtp/gstrtpceltpay.c: + * gst/rtp/gstrtpchannels.c: + * gst/rtp/gstrtpchannels.h: + * gst/rtp/gstrtpdvdepay.c: + * gst/rtp/gstrtpdvdepay.h: + * gst/rtp/gstrtpdvpay.c: + * gst/rtp/gstrtpdvpay.h: + * gst/rtp/gstrtpg722depay.c: + * gst/rtp/gstrtpg722depay.h: + * gst/rtp/gstrtpg722pay.c: + * gst/rtp/gstrtpg722pay.h: + * gst/rtp/gstrtpg723depay.c: + * gst/rtp/gstrtpg723depay.h: + * gst/rtp/gstrtpg723pay.c: + * gst/rtp/gstrtpg723pay.h: + * gst/rtp/gstrtpg726depay.c: + * gst/rtp/gstrtpg726pay.c: + * gst/rtp/gstrtpg729depay.c: + * gst/rtp/gstrtpg729depay.h: + * gst/rtp/gstrtpg729pay.c: + * gst/rtp/gstrtpg729pay.h: + * gst/rtp/gstrtpgsmdepay.c: + * gst/rtp/gstrtpgsmdepay.h: + * gst/rtp/gstrtpgsmpay.c: + * gst/rtp/gstrtpgsmpay.h: + * gst/rtp/gstrtpgstdepay.c: + * gst/rtp/gstrtpgstdepay.h: + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpgstpay.h: + * gst/rtp/gstrtph263depay.c: + * gst/rtp/gstrtph263depay.h: + * gst/rtp/gstrtph263pay.c: + * gst/rtp/gstrtph263pay.h: + * gst/rtp/gstrtph263pdepay.c: + * gst/rtp/gstrtph263pdepay.h: + * gst/rtp/gstrtph263ppay.c: + * gst/rtp/gstrtph263ppay.h: + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264depay.h: + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph264pay.h: + * gst/rtp/gstrtpilbcdepay.c: + * gst/rtp/gstrtpilbcdepay.h: + * gst/rtp/gstrtpilbcpay.c: + * gst/rtp/gstrtpilbcpay.h: + * gst/rtp/gstrtpj2kdepay.c: + * gst/rtp/gstrtpj2kdepay.h: + * gst/rtp/gstrtpj2kpay.c: + * gst/rtp/gstrtpj2kpay.h: + * gst/rtp/gstrtpjpegdepay.c: + * gst/rtp/gstrtpjpegdepay.h: + * gst/rtp/gstrtpjpegpay.c: + * gst/rtp/gstrtpjpegpay.h: + * gst/rtp/gstrtpmp1sdepay.c: + * gst/rtp/gstrtpmp1sdepay.h: + * gst/rtp/gstrtpmp2tdepay.c: + * gst/rtp/gstrtpmp2tdepay.h: + * gst/rtp/gstrtpmp2tpay.c: + * gst/rtp/gstrtpmp2tpay.h: + * gst/rtp/gstrtpmp4adepay.c: + * gst/rtp/gstrtpmp4adepay.h: + * gst/rtp/gstrtpmp4apay.c: + * gst/rtp/gstrtpmp4apay.h: + * gst/rtp/gstrtpmp4gdepay.c: + * gst/rtp/gstrtpmp4gdepay.h: + * gst/rtp/gstrtpmp4gpay.c: + * gst/rtp/gstrtpmp4gpay.h: + * gst/rtp/gstrtpmp4vdepay.c: + * gst/rtp/gstrtpmp4vdepay.h: + * gst/rtp/gstrtpmp4vpay.c: + * gst/rtp/gstrtpmp4vpay.h: + * gst/rtp/gstrtpmpadepay.c: + * gst/rtp/gstrtpmpadepay.h: + * gst/rtp/gstrtpmpapay.c: + * gst/rtp/gstrtpmpapay.h: + * gst/rtp/gstrtpmparobustdepay.c: + * gst/rtp/gstrtpmparobustdepay.h: + * gst/rtp/gstrtpmpvdepay.c: + * gst/rtp/gstrtpmpvdepay.h: + * gst/rtp/gstrtpmpvpay.c: + * gst/rtp/gstrtpmpvpay.h: + * gst/rtp/gstrtppcmadepay.c: + * gst/rtp/gstrtppcmapay.c: + * gst/rtp/gstrtppcmudepay.c: + * gst/rtp/gstrtppcmupay.c: + * gst/rtp/gstrtpqcelpdepay.c: + * gst/rtp/gstrtpqcelpdepay.h: + * gst/rtp/gstrtpqdmdepay.c: + * gst/rtp/gstrtpqdmdepay.h: + * gst/rtp/gstrtpsirendepay.c: + * gst/rtp/gstrtpsirendepay.h: + * gst/rtp/gstrtpsirenpay.c: + * gst/rtp/gstrtpsirenpay.h: + * gst/rtp/gstrtpspeexdepay.c: + * gst/rtp/gstrtpspeexpay.c: + * gst/rtp/gstrtpsv3vdepay.c: + * gst/rtp/gstrtpsv3vdepay.h: + * gst/rtp/gstrtptheoradepay.c: + * gst/rtp/gstrtptheoradepay.h: + * gst/rtp/gstrtptheorapay.c: + * gst/rtp/gstrtptheorapay.h: + * gst/rtp/gstrtpvorbisdepay.c: + * gst/rtp/gstrtpvorbisdepay.h: + * gst/rtp/gstrtpvorbispay.c: + * gst/rtp/gstrtpvorbispay.h: + * gst/rtp/gstrtpvrawdepay.c: + * gst/rtp/gstrtpvrawdepay.h: + * gst/rtp/gstrtpvrawpay.c: + * gst/rtp/gstrtpvrawpay.h: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpjitterbuffer.h: + * gst/rtpmanager/gstrtpmanager.c: + * gst/rtpmanager/gstrtpptdemux.c: + * gst/rtpmanager/gstrtpptdemux.h: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/gstrtpsession.h: + * gst/rtpmanager/gstrtpssrcdemux.c: + * gst/rtpmanager/gstrtpssrcdemux.h: + * gst/rtpmanager/rtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.h: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpsource.h: + * gst/rtpmanager/rtpstats.c: + * gst/rtpmanager/rtpstats.h: + * gst/rtsp/gstrtpdec.c: + * gst/rtsp/gstrtpdec.h: + * gst/rtsp/gstrtsp.c: + * gst/rtsp/gstrtsp.h: + * gst/rtsp/gstrtspext.c: + * gst/rtsp/gstrtspext.h: + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + * gst/shapewipe/gstshapewipe.c: + * gst/shapewipe/gstshapewipe.h: + * gst/smpte/barboxwipes.c: + * gst/smpte/gstmask.c: + * gst/smpte/gstmask.h: + * gst/smpte/gstsmpte.c: + * gst/smpte/gstsmpte.h: + * gst/smpte/gstsmptealpha.c: + * gst/smpte/gstsmptealpha.h: + * gst/smpte/paint.c: + * gst/smpte/paint.h: + * gst/smpte/plugin.c: + * gst/spectrum/gstspectrum.c: + * gst/spectrum/gstspectrum.h: + * gst/udp/gstdynudpsink.c: + * gst/udp/gstdynudpsink.h: + * gst/udp/gstmultiudpsink.c: + * gst/udp/gstmultiudpsink.h: + * gst/udp/gstudp.c: + * gst/udp/gstudp.h: + * gst/udp/gstudpnetutils.c: + * gst/udp/gstudpnetutils.h: + * gst/udp/gstudpsink.c: + * gst/udp/gstudpsink.h: + * gst/udp/gstudpsrc.c: + * gst/udp/gstudpsrc.h: + * gst/videobox/gstvideobox.c: + * gst/videobox/gstvideobox.h: + * gst/videocrop/gstaspectratiocrop.c: + * gst/videocrop/gstaspectratiocrop.h: + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + * gst/videofilter/gstgamma.c: + * gst/videofilter/gstgamma.h: + * gst/videofilter/gstvideobalance.c: + * gst/videofilter/gstvideobalance.h: + * gst/videofilter/gstvideoflip.c: + * gst/videofilter/gstvideoflip.h: + * gst/videofilter/gstvideomedian.c: + * gst/videofilter/gstvideomedian.h: + * gst/videofilter/gstvideotemplate.c: + * gst/videofilter/plugin.c: + * gst/videomixer/blend.c: + * gst/videomixer/blend.h: + * gst/videomixer/videomixer2.c: + * gst/videomixer/videomixer2.h: + * gst/videomixer/videomixer2pad.h: + * gst/wavenc/gstwavenc.c: + * gst/wavenc/gstwavenc.h: + * gst/wavparse/gstwavparse.c: + * gst/wavparse/gstwavparse.h: + * gst/y4m/gsty4mencode.c: + * gst/y4m/gsty4mencode.h: + * sys/directsound/gstdirectsoundplugin.c: + * sys/directsound/gstdirectsoundsink.c: + * sys/directsound/gstdirectsoundsink.h: + * sys/oss/common.h: + * sys/oss/gstossaudio.c: + * sys/oss/gstossdmabuffer.c: + * sys/oss/gstossdmabuffer.h: + * sys/oss/gstosshelper.c: + * sys/oss/gstosshelper.h: + * sys/oss/gstosssink.c: + * sys/oss/gstosssink.h: + * sys/oss/gstosssrc.c: + * sys/oss/gstosssrc.h: + * sys/oss4/oss4-audio.c: + * sys/oss4/oss4-audio.h: + * sys/oss4/oss4-property-probe.c: + * sys/oss4/oss4-property-probe.h: + * sys/oss4/oss4-sink.c: + * sys/oss4/oss4-sink.h: + * sys/oss4/oss4-source.c: + * sys/oss4/oss4-source.h: + * sys/osxaudio/gstosxaudio.c: + * sys/osxaudio/gstosxaudioelement.c: + * sys/osxaudio/gstosxaudioelement.h: + * sys/osxaudio/gstosxaudiosink.c: + * sys/osxaudio/gstosxaudiosink.h: + * sys/osxaudio/gstosxaudiosrc.c: + * sys/osxaudio/gstosxaudiosrc.h: + * sys/osxaudio/gstosxcoreaudio.h: + * sys/osxaudio/gstosxringbuffer.c: + * sys/osxaudio/gstosxringbuffer.h: + * sys/osxvideo/cocoawindow.h: + * sys/osxvideo/cocoawindow.m: + * sys/osxvideo/osxvideosink.h: + * sys/osxvideo/osxvideosink.m: + * sys/sunaudio/gstsunaudio.c: + * sys/sunaudio/gstsunaudiomixer.c: + * sys/sunaudio/gstsunaudiomixer.h: + * sys/sunaudio/gstsunaudiomixerctrl.c: + * sys/sunaudio/gstsunaudiomixerctrl.h: + * sys/sunaudio/gstsunaudiomixeroptions.c: + * sys/sunaudio/gstsunaudiomixeroptions.h: + * sys/sunaudio/gstsunaudiomixertrack.c: + * sys/sunaudio/gstsunaudiomixertrack.h: + * sys/sunaudio/gstsunaudiosink.c: + * sys/sunaudio/gstsunaudiosink.h: + * sys/sunaudio/gstsunaudiosrc.c: + * sys/sunaudio/gstsunaudiosrc.h: + * sys/v4l2/gstv4l2.c: + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2bufferpool.h: + * sys/v4l2/gstv4l2colorbalance.c: + * sys/v4l2/gstv4l2colorbalance.h: + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2radio.c: + * sys/v4l2/gstv4l2radio.h: + * sys/v4l2/gstv4l2sink.c: + * sys/v4l2/gstv4l2sink.h: + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/gstv4l2src.h: + * sys/v4l2/gstv4l2tuner.c: + * sys/v4l2/gstv4l2tuner.h: + * sys/v4l2/gstv4l2videooverlay.c: + * sys/v4l2/gstv4l2videooverlay.h: + * sys/v4l2/gstv4l2vidorient.c: + * sys/v4l2/gstv4l2vidorient.h: + * sys/v4l2/tuner.c: + * sys/v4l2/tuner.h: + * sys/v4l2/tunerchannel.c: + * sys/v4l2/tunerchannel.h: + * sys/v4l2/tunernorm.c: + * sys/v4l2/tunernorm.h: + * sys/v4l2/v4l2_calls.c: + * sys/v4l2/v4l2_calls.h: + * sys/waveform/gstwaveformplugin.c: + * sys/waveform/gstwaveformsink.c: + * sys/waveform/gstwaveformsink.h: + * sys/ximage/gstximagesrc.c: + * sys/ximage/gstximagesrc.h: + * sys/ximage/ximageutil.c: + * sys/ximage/ximageutil.h: + * tests/check/elements/aacparse.c: + * tests/check/elements/ac3parse.c: + * tests/check/elements/alphacolor.c: + * tests/check/elements/amrparse.c: + * tests/check/elements/apev2mux.c: + * tests/check/elements/aspectratiocrop.c: + * tests/check/elements/audioamplify.c: + * tests/check/elements/audiodynamic.c: + * tests/check/elements/audioecho.c: + * tests/check/elements/audioinvert.c: + * tests/check/elements/audiopanorama.c: + * tests/check/elements/autodetect.c: + * tests/check/elements/avimux.c: + * tests/check/elements/avisubtitle.c: + * tests/check/elements/capssetter.c: + * tests/check/elements/deinterlace.c: + * tests/check/elements/deinterleave.c: + * tests/check/elements/flacparse.c: + * tests/check/elements/flvdemux.c: + * tests/check/elements/flvmux.c: + * tests/check/elements/gdkpixbufsink.c: + * tests/check/elements/icydemux.c: + * tests/check/elements/id3demux.c: + * tests/check/elements/id3v2mux.c: + * tests/check/elements/imagefreeze.c: + * tests/check/elements/interleave.c: + * tests/check/elements/jpegdec.c: + * tests/check/elements/jpegenc.c: + * tests/check/elements/level.c: * tests/check/elements/matroskamux.c: - webmux: fix linking with shout2send element - Shout2send only accepts webm format, not matroska, but due - to a bug in matroskamux, webmmux's source pad is also created - with the matroska source pad template as pad template, which - makes the link function think it can't link webmmux to shout2send. - Also add unit test. - https://bugzilla.gnome.org/show_bug.cgi?id=689336 + * tests/check/elements/matroskaparse.c: + * tests/check/elements/mpegaudioparse.c: + * tests/check/elements/multifile.c: + * tests/check/elements/parser.c: + * tests/check/elements/parser.h: + * tests/check/elements/qtmux.c: + * tests/check/elements/rtp-payloading.c: + * tests/check/elements/rtpbin.c: + * tests/check/elements/rtpbin_buffer_list.c: + * tests/check/elements/rtpjitterbuffer.c: + * tests/check/elements/shapewipe.c: + * tests/check/elements/souphttpsrc.c: + * tests/check/elements/spectrum.c: + * tests/check/elements/sunaudio.c: + * tests/check/elements/udpsink.c: + * tests/check/elements/udpsrc.c: + * tests/check/elements/videocrop.c: + * tests/check/elements/videofilter.c: + * tests/check/elements/vp8dec.c: + * tests/check/elements/vp8enc.c: + * tests/check/elements/wavpackdec.c: + * tests/check/elements/wavpackenc.c: + * tests/check/elements/wavpackparse.c: + * tests/check/elements/y4menc.c: + * tests/check/generic/states.c: + * tests/check/pipelines/effectv.c: + * tests/check/pipelines/flacdec.c: + * tests/check/pipelines/simple-launch-lines.c: + * tests/check/pipelines/tagschecking.c: + * tests/check/pipelines/wavenc.c: + * tests/check/pipelines/wavpack.c: + * tests/examples/audiofx/firfilter-example.c: + * tests/examples/audiofx/iirfilter-example.c: + * tests/examples/cairo/cairo_overlay.c: + * tests/examples/level/level-example.c: + * tests/examples/pulse/pulse.c: + * tests/examples/rtp/client-PCMA.c: + * tests/examples/rtp/server-alsasrc-PCMA.c: + * tests/examples/shapewipe/shapewipe-example.c: + * tests/examples/spectrum/demo-audiotest.c: + * tests/examples/spectrum/demo-osssrc.c: + * tests/examples/spectrum/spectrum-example.c: + * tests/examples/v4l2/camctrl.c: + * tests/icles/equalizer-test.c: + * tests/icles/gdkpixbufsink-test.c: + * tests/icles/test-oss4.c: + * tests/icles/v4l2src-test.c: + * tests/icles/videobox-test.c: + * tests/icles/videocrop-test.c: + * tests/icles/videocrop2-test.c: + * tests/icles/ximagesrc-test.c: + Fix FSF address + https://bugzilla.gnome.org/show_bug.cgi?id=687520 -2012-11-26 15:17:13 +0000 Tim-Philipp Müller <tim@centricular.net> +2012-11-02 18:47:26 +0000 Wim Taymans <wim.taymans@collabora.co.uk> - * gst/law/mulaw-conversion.c: - law: fix accidental file permissions change - https://bugzilla.gnome.org/show_bug.cgi?id=687469 + * gst/rtp/gstrtpvrawdepay.c: + vrawdepay: don't access rtp buffer after unmap + Read the marker bit before we unmap the rtp packet. -2012-11-25 14:16:09 +0000 Tim-Philipp Müller <tim@centricular.net> +2012-11-02 09:34:25 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> - * gst/isomp4/qtdemux.c: - qtdemux: avoid criticals if unknown fourcc has space at beginning or end - https://bugzilla.gnome.org/show_bug.cgi?id=682936 + * ext/vpx/gstvp8dec.c: + vp8dec: Immediately return if opening the decoder failed + Instead of ignoring any errors. -2012-11-24 19:32:51 +0000 Tim-Philipp Müller <tim@centricular.net> +2012-11-01 22:02:39 +0100 Debarshi Ray <rishi@gnu.org> - * gst/videobox/gstvideobox.c: - videobox: fix border filling for planar YUV formats - We would get a green border instead of a black one, for - example. - https://bugzilla.gnome.org/show_bug.cgi?id=684991 + * ext/vpx/gstvp8dec.c: + vp8dec: Short circuit gst_vp8_dec_handle_frame if keyframe is missing + https://bugzilla.gnome.org/show_bug.cgi?id=687376 -2012-11-24 14:27:33 +0000 Tim-Philipp Müller <tim@centricular.net> +2012-11-02 10:53:57 +1300 Douglas Bagnall <douglas@paradise.net.nz> - * gst/law/mulaw-conversion.c: - mulaw: const-ify some arrays + * gst/videomixer/blend.c: + videoconvert: Compare y offset with height, not width, when testing for overlap + This could have prevented images showing that should have when the + source height is greater than its width. + When width exceeds height, as is common, it probably only caused a + miniscule amount of unnecessary work. I haven't tested. -2012-11-02 12:38:44 -0400 Roland Krikava <rkrikava@gmail.com> +2012-11-01 21:09:56 +0000 Tim-Philipp Müller <tim@centricular.net> - * gst/law/mulaw-conversion.c: - mulawdec: fix integer overrun - There might be more than 65535 samples in a chunk of data. - https://bugzilla.gnome.org/show_bug.cgi?id=687469 + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8depay.h: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp8pay.h: + rtpvp8: include config.h and minor style fixes -2012-11-22 11:34:31 +0100 Wim Taymans <wim.taymans@collabora.co.uk> +2012-11-01 20:13:43 +0000 Tim-Philipp Müller <tim@centricular.net> - * gst/rtsp/gstrtspsrc.c: - rtspsrc: pause the task instead of spinning - Actually pause the loop task instead of spinning forever. + * gst/rtp/Makefile.am: + rtp: fix tabs/space mess in Makefile.am -2012-11-21 13:04:05 +0000 Tim-Philipp Müller <tim@centricular.net> +2012-11-01 20:05:49 +0000 Tim-Philipp Müller <tim@centricular.net> - * configure.ac: - * 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-cutter.xml: - * docs/plugins/inspect/plugin-debug.xml: - * docs/plugins/inspect/plugin-deinterlace.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: - * win32/common/config.h: - Back to development (bug fixing) + * gst/rtp/Makefile.am: + * gst/rtp/gstrtp.c: + * gst/rtp/gstrtpvp8.c: + rtp: move VP8 payloader and depayloader from -bad + Spec is still in draft state, but should hopefully not + change much now. Besides, we announce things as VP8-DRAFT-IETF-01 + in our caps, so even if things change in incompatible ways it + should not break anything. + https://bugzilla.gnome.org/show_bug.cgi?id=687263 + +2012-10-17 17:34:26 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8pay.c: + rtpvp8: use gst_element_class_set_static_metadata() + where possible. Avoids some string copies. Also re-indent + some stuff. Also some indent fixes here and there. -=== release 1.0.3 === +2012-09-14 17:08:49 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> -2012-11-21 10:22:01 +0000 Tim-Philipp Müller <tim@centricular.net> + * gst/rtp/gstrtpvp8pay.c: + rtpvp8: replace gst_element_class_set_details_simple with gst_element_class_set_metadata - * ChangeLog: - * NEWS: - * RELEASE: - * configure.ac: - * 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-cutter.xml: - * docs/plugins/inspect/plugin-debug.xml: - * docs/plugins/inspect/plugin-deinterlace.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.0.3 +2012-04-05 18:02:56 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> -2012-11-16 09:09:38 +0000 Tim-Philipp Müller <tim@centricular.net> + * gst/rtp/gstrtpvp8.c: + rtpvp8: update for GST_PLUGIN_DEFINE() API changes - * gst/multifile/gstmultifilesink.c: - multifilesink: post messages in max-size mode as well - No reason not to really. +2012-03-28 12:49:54 +0200 Wim Taymans <wim.taymans@collabora.co.uk> -2012-11-16 15:38:29 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtp/gstrtpvp8pay.c: + rtpvp8: update for buffer changes - * gst/rtsp/gstrtspsrc.c: - rtspsrc: handle segment event - Make a segment event when we send a new range header to a client (first PLAY - request or after a seek). Send the segment event in interleaved mode. - Clean the segment event on cleanup - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=688382 +2012-03-01 14:59:55 -0300 Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk> -2012-11-16 15:18:07 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8pay.c: + rtpvp8; fix compatibility with the third draft + https://bugzilla.gnome.org/show_bug.cgi?id=671073 - * gst/rtsp/gstrtspsrc.c: - rtspsrc: fix check for active streams - A stream can be active without a srcpad yet and we want to send - events on those streams as well. +2012-01-25 16:20:41 +0100 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> -2012-11-16 13:31:04 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtp/gstrtpvp8pay.c: + rtpvp8: port some more to new memory API - * gst/rtsp/gstrtspsrc.c: - rtspsrc: create and add pads outside of lock - Create and add the ghostpad for the new stream outside of the lock because it - is not needed and causes deadlocks. +2012-01-25 10:45:51 +0100 Olivier Crête <olivier.crete@collabora.com> -2012-11-16 12:16:05 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8depay.h: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp8pay.h: + rtpvp8: port to 0.11 - * gst/rtsp/gstrtspsrc.c: - rtspsrc: clear variables before retrying - Else we might unref an old udpsrc twice in cleanup. +2011-10-03 12:06:27 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> -2012-11-16 12:00:14 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtp/gstrtpvp8pay.c: + rtpvp8pay: Fix typo - * gst/rtsp/gstrtspsrc.c: - rtspsrc: propose ports in multicast - When the user configured a port-range, propose ports from this range - as the multicast ports. The server is free to ignore this request but if it - honours it, increment our ports so that we suggest the next port pair for the - next stream. - Fixes https://bugzilla.gnome.org/show_bug.cgi?id=639420 +2011-09-23 22:58:30 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> -2012-11-16 11:58:53 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp8pay.h: + rtpvp8: Update the pay/depay to the ietf-draft-01 spec - * gst/rtsp/gstrtspsrc.c: - rtspsrc: add more debug +2011-09-10 11:31:20 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> -2012-11-15 14:37:44 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtp/dboolhuff.c: + * gst/rtp/dboolhuff.h: + * gst/rtp/gstrtpvp8pay.c: + rtpvp8: fix bitstream parsing using the wrong kind of bitreader + VP8 uses a probabilistic bool coder, not a straight bit coder. + This fixes parsing when error-resilient is set. + This commit includes a copy of libvpx's bool coder, BSD licensed. + https://bugzilla.gnome.org/show_bug.cgi?id=652694 - * gst/udp/gstudpsrc.c: - udpsrc: post error before stopping +2011-07-12 18:03:53 -0400 Olivier Crête <olivier.crete@collabora.com> -2012-11-12 11:14:34 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtp/gstrtpvp8pay.c: + rtpvp8: Reject unknown bitstream versions - * gst/rtpmanager/rtpsource.c: - rtpsource: protect against invalid RTP packets +2011-03-04 11:59:44 +0100 Edward Hervey <edward.hervey@collabora.co.uk> -2012-11-12 13:01:23 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpvp8pay.c: + rtpvp8: Fix unitialized variable + Makes macosx compiler happy. - * ext/vpx/gstvp8enc.c: - vp8enc: Don't leak GstVideoCodecFrames that cause the creation of invisible frames - Fixes bug #682714. +2011-01-23 17:02:38 +0000 Sjoerd Simons <sjoerd@luon.net> -2012-11-12 10:44:01 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpvp8depay.c: + rtpvp8depay: Accept packets with only one byte of data + When fragmenting partions it can happen that an RTP packet only caries 1 + byte of RTP data. - * ext/libpng/gstpngdec.c: - pngdec: Actually use the stop() vfunc implementation +2011-01-23 16:42:17 +0000 Sjoerd Simons <sjoerd@luon.net> -2012-11-12 10:31:59 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp8pay.h: + rtpvp8pay: Treat the frame header just like any other partition + When setting up the initial mapping just act as if the global frame + information is another partition. This saves special-casing it later in + the actual packetizing code. - * ext/vpx/gstvp8dec.c: - vp8dec: Fix last commit +2010-05-16 17:23:17 +0100 Sjoerd Simons <sjoerd@luon.net> -2012-11-09 11:22:30 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/dboolhuff.LICENSE: + * gst/rtp/gstrtpvp8.c: + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8depay.h: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp8pay.h: + rtpvp8: Add simple payloaders and depayloaders for VP8 + Minimal implementation of http://www.webmproject.org/code/specs/rtp/, + version 0.3.2 - * gst/udp/gstudpsrc.c: - udpsrc: Also clear GError +2012-11-01 18:42:39 +0000 Wim Taymans <wim.taymans@collabora.co.uk> -2012-11-09 11:20:27 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpgstpay.c: + gstpay: fix for 1.0 events + Caps events are sometimes not followed by a buffer but by an event. Flush any + pending caps before we make a packet with the event. + Chain up to the parent event handler before we attempt to push RTP packets, it + might be a segment event. - * gst/udp/gstudpsrc.c: - udpsrc: Don't error out if we get an ICMP destination-unreachable message when trying to read packets - See bug #529454 and #687782 and commit - 751f2bb3646f2beff3698c9f09900dbd0ea08abb +2012-11-01 18:42:24 +0000 Wim Taymans <wim.taymans@collabora.co.uk> -2012-11-09 16:31:05 +0100 Debarshi Ray <rishi@gnu.org> + * gst/rtp/gstrtpgstdepay.c: + gstdepay: fix small leak - * ext/vpx/gstvp8dec.c: - vp8dec: Don't give up so easily if failed to decode a frame - https://bugzilla.gnome.org/show_bug.cgi?id=687436 +2012-11-01 17:44:11 +0000 Wim Taymans <wim.taymans@collabora.co.uk> -2012-11-12 09:48:45 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpgstdepay.c: + gstdepay: add support for events + Conflicts: + gst/rtp/gstrtpgstdepay.c - * ext/vpx/gstvp8dec.c: - vp8dec: Don't clear input state in reset() - The input state is still valid after flushing until - new caps arrive. - Fixes bug #688092. +2012-11-01 17:40:31 +0000 Wim Taymans <wim.taymans@collabora.co.uk> -2012-11-12 10:08:57 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpgstpay.h: + rtpgstpay: add support for sending events + We currently only send tags and custom events. The other events + might interfere with the receiver timings or are otherwise handled + by RTP. + Conflicts: + gst/rtp/gstrtpgstpay.c - * ext/vpx/gstvp8dec.c: - vp8dec: Also destroy decoder in set_format() if it was created already - Fixes a memory leak. +2012-11-01 15:54:58 +0000 Wim Taymans <wim.taymans@collabora.co.uk> -2012-11-12 10:10:15 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpgstpay.h: + gstpay: rewrite payloader + Use adapter to assemble the payload and make a flush function to + turn this payload into (fragmented) packets. + Conflicts: + gst/rtp/gstrtpgstpay.c + gst/rtp/gstrtpgstpay.h - * ext/libpng/gstpngdec.c: - pngdec: Keep the input state in reset() - It's still valid after a flush and we might not get a new one. +2012-11-01 13:03:44 +0000 Douglas Bagnall <douglas@paradise.net.nz> -2012-11-02 16:39:28 +0100 Debarshi Ray <rishi@gnu.org> + * gst/videomixer/blend.c: + videomixer: get height via GST_VIDEO_FRAME_HEIGHT, not _WIDTH + https://bugzilla.gnome.org/show_bug.cgi?id=687330 - * ext/speex/gstspeexdec.c: - speexdec: Don't unmap or finish_frame an invalid GstBuffer - https://bugzilla.gnome.org/show_bug.cgi?id=687464 +2012-11-01 13:02:16 +0000 Douglas Bagnall <douglas@paradise.net.nz> -2012-11-06 13:22:58 +0100 Marc Leeman <marc.leeman@gmail.com> + * gst/videobox/gstvideobox.c: + videbox: fix border filling for gray formats + Get the height via GST_VIDEO_FRAME_HEIGHT, not _WIDTH. + https://bugzilla.gnome.org/show_bug.cgi?id=687330 - * gst/rtsp/gstrtspsrc.c: - rtsp: the RTCP port number is inclusive - The configured port number pair has its upper bound set to the maximum - allowed RTCP port, inclusive. - See https://bugzilla.gnome.org/show_bug.cgi?id=639420 +2012-11-01 11:58:57 +0000 Wim Taymans <wim.taymans@collabora.co.uk> -2012-11-02 18:47:26 +0000 Wim Taymans <wim.taymans@collabora.co.uk> + * gst/rtp/gstrtpgstdepay.c: + gstdepay: check for correct fragment offset + Make sure we only insert the rtp packet in the adapter when the + frag_offset matches. When the first packet of a fragment is dropped, + it avoids putting the remaining packets in the adapter and processing + the partial fragment. + Conflicts: + gst/rtp/gstrtpgstdepay.c - * gst/rtp/gstrtpvrawdepay.c: - vrawdepay: don't access rtp buffer after unmap - Read the marker bit before we unmap the rtp packet. +2012-11-01 11:54:50 +0000 Wim Taymans <wim.taymans@collabora.co.uk> -2012-11-02 09:34:25 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * gst/rtp/gstrtpgstpay.c: + gstpay: set C flag on all buffers of the fragment + Set the C flags on all the fragments instead of only those with + caps in them. This makes it easier in the receiver to check if there + is a caps in the assembled fragments just by looking at the last RTP + packet flags. - * ext/vpx/gstvp8dec.c: - vp8dec: Immediately return if opening the decoder failed - Instead of ignoring any errors. +2012-11-01 10:55:03 +0000 Wim Taymans <wim.taymans@collabora.co.uk> -2012-11-01 22:02:39 +0100 Debarshi Ray <rishi@gnu.org> + * gst/rtp/gstrtpgstdepay.c: + gstdepay: use the capsversion + Take the caps from the input caps and store it in the slot given + by capsversion. - * ext/vpx/gstvp8dec.c: - vp8dec: Short circuit gst_vp8_dec_handle_frame if keyframe is missing - https://bugzilla.gnome.org/show_bug.cgi?id=687376 +2012-11-01 10:52:25 +0000 Wim Taymans <wim.taymans@collabora.co.uk> -2012-11-01 13:03:44 +0000 Douglas Bagnall <douglas@paradise.net.nz> + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtpgstpay.h: + gstpay: send caps inline + Place the capsversion on the outgoing caps so that they end up in + an SDP as well. Receivers need to know what capsversion a particular + caps is for to be able to match the caps to the CV in the RTP packets. + Place the caps inside the RTP packet whenever the caps change. + Based on patch by Andrzej Bieniek <andrzej.bieniek@pure.com> + Conflicts: + gst/rtp/gstrtpgstpay.c + gst/rtp/gstrtpgstpay.h - * gst/videomixer/blend.c: - videomixer: get height via GST_VIDEO_FRAME_HEIGHT, not _WIDTH - https://bugzilla.gnome.org/show_bug.cgi?id=687330 +2012-10-31 16:17:48 +0000 Andrzej Bieniek <andrzej.bieniek@pure.com> -2012-11-01 13:02:16 +0000 Douglas Bagnall <douglas@paradise.net.nz> + * gst/rtp/gstrtpgstpay.c: + gstpay: add debug + Conflicts: + gst/rtp/gstrtpgstpay.c - * gst/videobox/gstvideobox.c: - videbox: fix border filling for gray formats - Get the height via GST_VIDEO_FRAME_HEIGHT, not _WIDTH. - https://bugzilla.gnome.org/show_bug.cgi?id=687330 +2012-10-31 16:09:26 +0000 Andrzej Bieniek <andrzej.bieniek@pure.com> -2012-11-02 10:53:57 +1300 Douglas Bagnall <douglas@paradise.net.nz> + * gst/rtp/gstrtpgstdepay.c: + depay: correctly skip caps header size + Conflicts: + gst/rtp/gstrtpgstdepay.c - * gst/videomixer/blend.c: - videoconvert: Compare y offset with height, not width, when testing for overlap - This could have prevented images showing that should have when the - source height is greater than its width. - When width exceeds height, as is common, it probably only caused a - miniscule amount of unnecessary work. I haven't tested. +2012-09-28 00:43:38 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.c: + * gst/matroska/matroska-ids.h: + matroskademux: put streamheaders on vorbis/speex/flac/theora caps to make remuxing work + https://bugzilla.gnome.org/show_bug.cgi?id=640589 2012-10-28 00:07:46 +0100 Tim-Philipp Müller <tim@centricular.net> @@ -2111,6 +9385,87 @@ which are in gst-plugins-base. https://bugzilla.gnome.org/show_bug.cgi?id=687013 +2012-10-27 13:24:24 +0100 Alexey Fisher <bug-track@fisher-privat.net> + + * gst/matroska/matroska-demux.c: + matroskademux: mark invisible VP8 frames with the DECODE_ONLY flag + https://bugzilla.gnome.org/show_bug.cgi?id=654259 + +2012-10-26 10:55:28 +0100 Tim-Philipp Müller <tim@centricular.net> + + * tests/check/elements/multifile.c: + tests: add multifilesrc test for fix in previous commit + Make sure the stop-index set is honoured. + https://bugzilla.gnome.org/show_bug.cgi?id=654853 + +2012-10-26 10:33:03 +0100 Stas Sergeev <stsp@aknet.ru> + + * gst/multifile/gstmultifilesrc.c: + multifilesrc: fix stop index handling + Make sure the stop index is always honoured. Avoids + endless loop if one wants to read and output the same + file N times, for example. + https://bugzilla.gnome.org/show_bug.cgi?id=654853 + +2012-08-25 02:26:29 +0400 РуÑлан Ижбулатов <lrn1986@gmail.com> + + * gst/matroska/matroska-read-common.c: + matroskademux: Support recursive SimpleTags + Fixes #682644 + Depends on #682615 + +2012-08-24 13:55:41 +0400 РуÑлан Ижбулатов <lrn1986@gmail.com> + + * gst/matroska/matroska-ids.h: + * gst/matroska/matroska-read-common.c: + matroskademux: Expand the tag mapping. + * Also expose unknown tags as key=value pairs. + * Arrange tag map in the same order tags are listed in Matroska spec, leaving + unmapped tags as comments. + * More specific TODOs. + * Remove duplicate DATE define. + Fixes #682615 + Depends on #682524 + +2012-10-26 10:09:39 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/matroska/matroska-read-common.c: + matroskademux: Fix uninitialized variable compiler warning + +2012-08-23 15:07:22 +0400 РуÑлан Ижбулатов <lrn1986@gmail.com> + + * gst/matroska/matroska-ids.h: + * gst/matroska/matroska-read-common.c: + matroskademux: Matroska tag TargetType support + * Reads TargetType and TargetTypeValue from a Tag. + * After Tag is completely read, processes taglist, substituting some of the + tags depending on target type value and the presence of video/subtitle streams. + * Supports reading two new simpletags - PART_NUMBER and TOTAL_PARTS + Depends on #682448 + Fixes #682524 + +2012-08-22 15:32:41 +0400 РуÑлан Ижбулатов <lrn1986@gmail.com> + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.h: + * gst/matroska/matroska-read-common.c: + matroskademux: Per-track tags for Matroska + Requires Matroska file to have sane layout (track info before tag info). + Uses replace-merge. + Makes track UIDs 64-bit. + Fixes #682448 + +2012-10-25 20:18:36 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/multifile/gstmultifilesrc.c: + multifilesrc: fix typo in property description + +2012-10-25 12:18:03 -0700 Michael Smith <msmith@rdio.com> + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux_fourcc.h: + qtdemux: read video format header fully (so we can find 'pasp' atoms) for more fourccs. Fixes aspect ratio of prores files. + 2012-10-25 00:44:34 -0300 Thiago Santos <thiago.sousa.santos@collabora.com> * gst/imagefreeze/gstimagefreeze.c: @@ -2127,7 +9482,7 @@ fixate its framerate before sending the query downstream. https://bugzilla.gnome.org/show_bug.cgi?id=686837 -2012-10-25 12:32:03 +0100 Tim-Philipp Müller <tim@centricular.net> +2012-10-25 12:33:24 +0100 Tim-Philipp Müller <tim@centricular.net> * configure.ac: * docs/plugins/inspect/plugin-1394.xml: @@ -2195,7 +9550,7 @@ * docs/plugins/inspect/plugin-ximagesrc.xml: * docs/plugins/inspect/plugin-y4menc.xml: * win32/common/config.h: - Back to development (bug fixing) + Back to feature development === release 1.0.2 === @@ -2399,6 +9754,16 @@ Conflicts: gst/matroska/matroska-mux.c +2012-10-17 17:34:26 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfsrc.c: + Use gst_element_class_set_static_metadata() + where possible. Avoids some string copies. Also re-indent + some stuff. Also some indent fixes here and there. + 2012-10-17 17:03:39 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> * ext/jpeg/gstjpegdec.c: @@ -3126,6 +10491,11 @@ * gst/avi/gstavimux.c: avimux: send stream-start event +2012-09-22 15:00:27 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstrtpdtmfdepay.c: + rtpdtmfdepay: Use 1.0-style caps negotiation and audio/x-raw + 2012-09-22 16:08:05 +0100 Tim-Philipp Müller <tim@centricular.net> * common: @@ -4442,6 +11812,12 @@ * sys/osxaudio/gstosxaudiosink.c: replace _get_caps_reffed with _get_caps +2012-09-14 17:08:49 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + replace gst_element_class_set_details_simple with gst_element_class_set_metadata + 2012-09-14 17:07:26 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> * ext/jpeg/gstjpegdec.c: @@ -5396,6 +12772,12 @@ * tests/check/elements/rtp-payloading.c: rtph264pay: Make it actually work after cleanups +2012-08-08 17:40:34 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + gst: Set alignment at the correct place of GstAllocationParams + 2012-08-08 17:39:07 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> * ext/jpeg/gstjpegenc.c: @@ -6087,6 +13469,11 @@ Conflicts: gst/matroska/matroska-demux.c +2012-07-17 16:39:02 +0200 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfdepay.c: + update for RTP buffer api changes + 2012-07-17 16:38:27 +0200 Wim Taymans <wim.taymans@collabora.co.uk> * gst/isomp4/gstrtpxqtdepay.c: @@ -6191,6 +13578,12 @@ tests: Add some basic tests for jpegdec https://bugzilla.gnome.org/show_bug.cgi?id=676302 +2012-07-08 00:08:55 +0100 Tim-Philipp Müller <tim@centricular.net> + + * gst/dtmf/gstdtmfsrc.c: + dtmfsrc: pass unhandled non-custom events to the base class + https://bugzilla.gnome.org/show_bug.cgi?id=666626 + 2012-07-06 19:11:02 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> * gst/rtp/gstrtph264pay.c: @@ -8633,6 +16026,11 @@ Automatic update of common submodule From 7fda524 to 464fe15 +2012-04-05 18:02:56 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/dtmf/gstdtmf.c: + gst: Update for GST_PLUGIN_DEFINE() API changes + 2012-04-05 17:36:38 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> * ext/aalib/gstaasink.c: @@ -8722,6 +16120,11 @@ * tests/check/elements/qtmux.c: tests: qtmux: ensure initialized test buffer memory +2012-04-04 14:41:22 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + * gst/dtmf/Makefile.am: + gst: Update versioning + 2012-04-04 14:33:23 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk> * configure.ac: @@ -9586,6 +16989,12 @@ * sys/v4l2/gstv4l2bufferpool.c: update for bufferpool api change +2012-03-15 13:37:36 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + update for memory api changes + 2012-03-15 13:36:17 +0100 Wim Taymans <wim.taymans@collabora.co.uk> * ext/annodex/gstcmmldec.c: @@ -9802,6 +17211,12 @@ * gst/matroska/matroska-mux.c: gst: Fix some query leaks +2012-03-11 19:06:59 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + fix for caps api changes + 2012-03-11 19:06:37 +0100 Wim Taymans <wim.taymans@collabora.co.uk> * ext/aalib/gstaasink.c: @@ -10619,6 +18034,11 @@ * gst/udp/gstudpsrc.c: fix compiler warnings +2012-01-26 06:58:46 -0500 Matej Knopp <matej.knopp@gmail.com> + + * gst/dtmf/gstdtmfsrc.c: + Fix compiler warnings + 2012-02-18 11:38:36 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> * tests/check/elements/level.c: @@ -11044,6 +18464,12 @@ * sys/ximage/gstximagesrc.c: GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING +2012-02-08 16:37:13 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING + 2012-02-07 14:10:44 -0800 Ralph Giles <giles@mozilla.com> * ext/shout2/gstshout2.c: @@ -11477,6 +18903,13 @@ * gst/rtpmanager/rtpstats.h: rtpsession: Initialise the address pointer to NULL +2012-01-27 12:07:43 +0100 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + dtmf: Use new-style caps + 2012-01-27 16:37:19 +0100 Andoni Morales Alastruey <amorales@flumotion.com> * sys/directsound/gstdirectsoundsink.c: @@ -11647,6 +19080,13 @@ cairo: fix build, make sure libgstvideo can be found https://bugzilla.gnome.org/show_bug.cgi?id=668648 +2012-01-25 14:50:50 +0100 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + port to new memory API + 2012-01-25 13:19:12 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> * gst/rtpmanager/gstrtpbin.c: @@ -11798,6 +19238,15 @@ * gst/rtp/gstrtptheorapay.c: update for new memory API +2012-01-25 11:21:50 +0100 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfdepay.h: + * gst/dtmf/gstrtpdtmfsrc.c: + dtmf: port to 0.11 + 2012-01-25 11:38:11 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> * common: @@ -13823,6 +21272,10 @@ * tests/icles/v4l2src-test.c: fix for moved interfaces +2011-11-28 23:20:32 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + Merge commit '7521b597f4dc49d8d168f368f0e7ebaf98a72156' into 0.11 + 2011-11-28 21:27:53 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> Merge remote-tracking branch 'origin/master' into 0.11 @@ -14092,6 +21545,15 @@ various: fix pad template leaks https://bugzilla.gnome.org/show_bug.cgi?id=662664 +2011-11-28 13:08:27 +0000 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> + + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfsrc.c: + various: fix pad template ref leaks + https://bugzilla.gnome.org/show_bug.cgi?id=662664 + 2011-11-28 11:47:11 +0100 Chad <channa@caltech.edu> * gst/debugutils/gsttaginject.c: @@ -15298,6 +22760,12 @@ gst/audioparsers/gstflacparse.c gst/isomp4/qtdemux.c +2011-11-09 11:56:07 +0100 Thijs Vermeir <thijsvermeir@gmail.com> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + dtmf: fix compiler warning for uninitialized values + 2011-11-09 11:53:01 +0100 Wim Taymans <wim.taymans@collabora.co.uk> * ext/annodex/gstcmmldec.c: @@ -15313,6 +22781,21 @@ * gst/isomp4/qtdemux.c: qtdemux: minimal sanity check on creation datetime +2011-11-04 17:54:04 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + dtmfsrc: Reject start/stop requests that come out of order + +2011-10-29 18:24:26 +0200 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + dtmf: Post messages when starting to send/receive DTMF + This way, the UI can display the DTMF events as they as being sent. + 2011-11-02 12:58:12 -0400 Olivier Crête <olivier.crete@collabora.com> * gst/rtp/gstrtph263ppay.c: @@ -17030,6 +24513,63 @@ * ext/pulse/pulseutil.c: pulse: add some more channels +2011-07-12 21:48:37 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + dtmf: Add more debug + +2011-07-12 19:09:02 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstdtmfcommon.h: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + dtmf: Max event type is 15 + +2011-04-14 15:46:08 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + dtmfsrc: Align DTMF sound buffers with last-stop from event + Also make sure the timestamps never go backwards + +2011-07-11 21:31:07 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstrtpdtmfsrc.c: + rtpdtmfsrc: Correctly recognize the end of a buffer + +2011-07-11 20:47:23 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstrtpdtmfsrc.c: + rtpdtmfsrc: Make sure rtpdtmfsrc timestamps don't overlap + +2011-07-11 20:46:20 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstrtpdtmfsrc.c: + rtpdtmfsrc: Put the inter digit interval at the end, not at the start + The reason is to let rtpdtmfmux drop buffers during the inter digit interval, + this way, there will be more silence around the DTMF tones so IVFs will have + a better chance recognizing them. + +2011-04-14 17:08:57 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + rtpdtmfsrc: Start at the last_stop from the start event if there was one + The goal is to try to not have a GAP between the audio and the DTMF + +2011-04-14 16:49:39 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + rtpdtmfsrc: Respect ptime from the caps + Respect the ptime from the caps for the DTMF packets + +2011-07-11 21:30:28 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/dtmf/gstrtpdtmfsrc.c: + rtpdtmfsrc: Just error out if there is no clock + 2011-08-24 14:16:44 +0200 Wim Taymans <wim.taymans@collabora.co.uk> Merge branch 'master' into 0.11 @@ -21742,6 +29282,21 @@ * gst-plugins-good.spec.in: Add parser plugin +2011-04-13 21:58:36 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/Makefile.am: + * gst/dtmf/gstdtmfcommon.h: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfcommon.h: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfdepay.h: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + dtmf: Move duplicate #defines into a common include + Centralize duplicated constants so they have the same value. + Also standardise minimum tone duration to 250ms and minimum inter-tone + interval to 100ms. + 2011-03-24 14:34:24 -0700 David Schleef <ds@entropywave.com> * sys/directsound/gstdirectsoundsink.c: @@ -21871,6 +29426,13 @@ quicktime: move qtmux plugin from -bad to -good https://bugzilla.gnome.org/show_bug.cgi?id=636699 +2011-04-12 16:42:17 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + dtmf: Remove leftover MAEMO_BROKEN defines + Remove defines to work around bugs in old Maemo releases + 2011-04-04 12:21:23 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> * gst/quicktime/gstqtmux.c: @@ -23129,6 +30691,15 @@ Jack 1.9.7 was released 20.Mar.2011, need to handle the deprecated api for this version too. +2011-04-11 00:36:35 -0400 Thibault Saunier <thibault.saunier@collabora.co.uk> + + * gst/dtmf/Makefile.am: + android: make it ready for androgenizer + Remove the android/ top dir + Fixe the Makefile.am to be androgenized + To build gstreamer for android we are now using androgenizer which generates the needed Android.mk files. + Androgenizer can be found here: http://git.collabora.co.uk/?p=user/derek/androgenizer.git + 2011-04-10 18:56:52 -0400 Thibault Saunier <thibault.saunier@collabora.co.uk> * Android.mk: @@ -28480,6 +36051,24 @@ multiple subframes. fixes #625825 +2010-12-31 00:12:53 -0800 David Schleef <ds@schleef.org> + + * gst/dtmf/tone_detect.c: + dtmf: Fix build failure caused by previous commit + +2010-12-30 18:20:47 -0800 David Schleef <ds@schleef.org> + + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/tone_detect.c: + * gst/dtmf/tone_detect.h: + dtmf: build fixes for MSVC + Use gint16 and G_PI. + +2010-12-30 18:19:47 -0800 David Schleef <ds@schleef.org> + + * gst/dtmf/tone_detect.c: + dtmf: reindent + 2010-12-31 02:16:54 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> * ext/cairo/gsttimeoverlay.c: @@ -30116,6 +37705,11 @@ rtph264depay: fix segfault on empty payload https://bugzilla.gnome.org/show_bug.cgi?id=635843 +2010-11-25 19:06:27 +0100 Edward Hervey <bilboed@bilboed.com> + + * gst/dtmf/gstrtpdtmfdepay.c: + dtmf: Remove dead assignments + 2010-11-18 00:45:29 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> * configure.ac: @@ -30290,6 +37884,19 @@ gconf: Don't install schemas when GConf is disabled https://bugzilla.gnome.org/show_bug.cgi?id=632553 +2010-10-19 13:43:14 +0300 Stefan Kost <ensonic@users.sf.net> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfsrc.c: + various (gst): add missing G_PARAM_STATIC_STRINGS flags + Canonicalize property names as needed. + +2010-10-19 13:44:25 +0300 Stefan Kost <ensonic@users.sf.net> + + * gst/dtmf/gstdtmfsrc.c: + dtmfsrc: remove DEBUG_FUNCPTR from gobject vmethods + 2010-10-16 15:43:53 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> * configure.ac: @@ -31646,6 +39253,14 @@ content and try resuming from next cluster onwards. Fixes #620790. +2010-08-26 02:54:55 -0400 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + dtmfsrc: Make the dtmfsrc accept events sent with gst_element_send_event + The doc says to use gst_element_send_event on the pipeline, but if + we are to call it on the element itself, it's a noop. This should make it + handle the event properly before delegating it to basesrc. + 2010-09-06 12:22:11 +0200 American Dynamics <GStreamer-Bugs at tycosp.com> * gst/rtsp/gstrtspsrc.c: @@ -34391,6 +42006,12 @@ Also don't build the index in push mode for non-TIME seeks, things will go wrong here otherwise. +2010-06-07 11:15:26 -0400 Olivier Crête <tester@tester.ca> + + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/gstdtmfdetect.h: + dtmfdetect: Only works with rate=8000, fix in caps + 2010-06-02 19:16:20 +0100 Sjoerd Simons <sjoerd.simons@collabora.co.uk> * gst/rtp/gstrtph264pay.c: @@ -34591,6 +42212,12 @@ pulsesink: Add comments to remove the provide-clock message posting once we depend on base 0.10.30 baseaudiosink does all this for us now. +2010-05-07 18:42:06 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + dtmf: Remove rtpdtmfmux stream-lock code + 2010-06-02 16:36:11 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> * gst/flv/gstflvdemux.c: @@ -38181,6 +45808,27 @@ * gst/matroska/matroska-demux.c: matroskademux: prefer index of video track to perform seeking +2010-03-25 22:58:47 +0200 Stefan Kost <ensonic@users.sf.net> + + * gst/dtmf/gstdtmfdetect.c: + dtmfdetect: if we tell that we handle gap flags, then do so + +2010-03-25 22:55:32 +0200 Stefan Kost <ensonic@users.sf.net> + + * gst/dtmf/gstdtmfdetect.c: + dtmfdetect: use glib types + +2010-03-25 22:54:49 +0200 Stefan Kost <ensonic@users.sf.net> + + * gst/dtmf/gstdtmfdetect.c: + dtmfdetect: fix classification + +2010-03-25 22:53:20 +0200 Stefan Kost <ensonic@users.sf.net> + + * gst/dtmf/gstdtmfdetect.c: + dtmfdetect: reformat message docs + Use a list like in other element docs as an untweaked docbook table look ugly. + 2010-03-24 16:19:53 +0100 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> * gst/avi/gstavidemux.c: @@ -38239,6 +45887,25 @@ Don't inlcude locale.h which we include in gettext.h if needed. Guard the inlcude like we do in the simillar headers in core. +2010-03-22 13:16:33 +0100 Benjamin Otte <otte@redhat.com> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + Add -Wwrite-strings + and fix its warnings + +2010-03-22 12:02:16 +0100 Benjamin Otte <otte@redhat.com> + + * gst/dtmf/gstrtpdtmfsrc.c: + Add -Wredundant-decls flag + and fix warnings from it + +2010-03-21 21:39:18 +0100 Benjamin Otte <otte@redhat.com> + + * gst/dtmf/gstrtpdtmfdepay.h: + Add -Wmissing-declarations -Wmissing-prototypes to configure flags + And fix all warnings + 2010-03-21 17:46:06 +0100 Benjamin Otte <otte@redhat.com> * configure.ac: @@ -38430,6 +46097,14 @@ apetag: minor Makefile.am surgery -I$(top_srcdir)/gst-libs/ is already in $(GST_CFLAGS) +2010-03-18 17:30:26 +0100 Benjamin Otte <otte@redhat.com> + + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfsrc.c: + gst_element_class_set_details => gst_element_class_set_details_simple + 2010-03-04 22:12:35 +0100 Andoni Morales Alastruey <ylatuya@gmail.com> * ext/raw1394/gst1394clock.c: @@ -42923,6 +50598,20 @@ * gst/qtdemux/qtdemux.c: qtdemux: fix typo and grammar +2009-11-22 19:30:58 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/dtmf/Makefile.am: + Clean up LDFLAGS, LIBS, CFLAGS + Fix order, fix variables that don't exist, like GST_LIBS_LIBS, + use $(LIBM) instead of -lm, and move _LIBS from LDFLAGS to LIBADD. + Spotted by Havard Graff. + +2009-11-20 10:31:47 -0500 Olivier Crête <tester@tester.ca> + + * gst/dtmf/tone_detect.h: + dtmf: Use _stdint.h from configure + https://bugzilla.gnome.org/show_bug.cgi?id=602465 + 2009-11-20 10:30:00 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk> * gst/deinterlace/gstdeinterlace.c: @@ -42940,6 +50629,13 @@ * tests/check/elements/wavpackparse.c: wavpackparse: Fix unit test for recent position reporting changes +2009-11-19 20:33:07 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/tone_detect.c: + * gst/dtmf/tone_detect.h: + dtmf: Update dtmfdetect to make it MSVC friendly + https://bugzilla.gnome.org/show_bug.cgi?id=602465 + 2009-11-19 16:09:38 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk> * ext/wavpack/gstwavpackparse.c: @@ -43327,6 +51023,19 @@ * gst/equalizer/gstiirequalizer.c: equalizer: printf format fix +2009-11-04 22:19:58 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/Makefile.am: + * gst/dtmf/gstdtmf.c: + * gst/dtmf/gstdtmfdetect.c: + * gst/dtmf/gstdtmfdetect.h: + * gst/dtmf/tone_detect.c: + * gst/dtmf/tone_detect.h: + dtmfdetect: Add DTMF tone detector + It looks at raw audio data and emits messages when DTMF is detected. + The dtmf detector is the same Goertzel implementation used in FreeSwitch + and Asterisk. It is in the public domain. + 2009-11-05 12:13:44 -0300 Thiago Santos <thiago.sousa.santos@collabora.co.uk> * gst/avi/gstavimux.c: @@ -43373,6 +51082,21 @@ * gst/equalizer/gstiirequalizernbands.c: equalizer: Some cleanup +2009-11-04 22:21:35 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + dtmfsrc: Reject empty caps + +2009-11-04 22:21:22 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + dtmfsrc: Use log level for repeated debug messages + +2009-11-04 20:05:17 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + dtmfsrc: Allow for any samplerate + 2009-10-07 09:31:19 -0400 Gabriel Millaire <gabriel.millaire@collabora.co.uk> * gst/rtp/gstrtpceltdepay.c: @@ -43929,6 +51653,11 @@ initialized, even though they can't possibly actually be used uninitialized. +2009-10-11 11:35:23 +0200 Josep Torra <n770galaxy@gmail.com> + + * gst/dtmf/gstrtpdtmfdepay.c: + dtmf: fix warnings in macosx snow leopard + 2009-10-10 00:37:08 +0200 Josep Torra <n770galaxy@gmail.com> * ext/jpeg/gstjpegdec.c: @@ -45687,6 +53416,31 @@ is set we'll probe the formats again instead of using previously detected ones. Fixes bug #591747. +2009-08-11 16:42:51 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + dtmfsrc: Empty event queue on finalize + +2009-08-11 16:39:42 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + dtmf: Use GSlice for internal event structures + +2009-08-11 16:23:20 -0400 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + rtpdtmfsrc: Cleanup events on finalize + Problem found by Laurent Glayal + Fixes bug #591440 + +2009-08-11 16:23:20 -0400 Tim-Philipp Müller <tim.muller@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + rtpdtmfsrc: Cleanup events on finalize + Problem found by Laurent Glayal + Fixes bug #591440 + 2009-08-11 17:30:41 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk> * configure.ac: @@ -55578,6 +63332,11 @@ Make the state change function a bit more readable and only pause after the parent had a change to pause first. +2009-03-09 23:43:55 +0200 Stefan Kost <ensonic@users.sf.net> + + * gst/dtmf/Makefile.am: + Makefile.am: no static libs for plugins + 2009-03-20 17:22:32 +0100 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> * gst/qtdemux/qtdemux.c: @@ -56083,6 +63842,17 @@ Avoid a crash in avi with subtitles by only dereferencing the video description when we actually are dealing with video in the _invert function. +2009-02-25 11:45:05 +0200 Stefan Kost <ensonic@users.sf.net> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfsrc.c: + docs: various doc fixes + No short-desc as we have them in the element details. + Also keep things (Makefile.am and sections.txt) sorted. + Reword ambigous returns. No text after since please. + 2009-02-24 17:58:32 +0000 Jan Schmidt <thaytan@noraisin.net> * gst/udp/gstudpsrc.c: @@ -56299,6 +64069,443 @@ * configure.ac: Back to development -> 0.10.14.1 +2009-02-20 18:16:02 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfsrc.c: + Document rtpdtmfdepay a bit + +2009-02-20 17:41:37 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmf.c: + Moved dtmf elements from gst-plugins-farsight to -bad + +2009-02-20 17:40:57 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + * gst/dtmf/gstrtpdtmfdepay.h: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + Fix up documentation blobs SGML + +2009-02-20 17:37:43 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmf.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + * gst/dtmf/gstrtpdtmfcommon.h: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfdepay.h: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + Re-indent to Gst style + +2009-02-18 13:30:44 -0500 Laurent Glayal <spglegle@yahoo.fr> + + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Missing format directive + +2008-12-04 21:21:44 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfdepay.h: + [MOVED FROM GST-P-FARSIGHT] Allow setting a maximum duration to a RTP DTMF event + +2008-12-04 21:11:17 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfdepay.c: + [MOVED FROM GST-P-FARSIGHT] Improve the minimum quanta to make it impossible for the duration to fall down to 0 + +2008-12-01 18:31:48 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfdepay.h: + [MOVED FROM GST-P-FARSIGHT] Allow setting a minimum size of a sound quanta in the dtmf depayloader + +2008-12-11 17:54:18 -0500 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/.git-darcs-dir: + [MOVED FROM GST-P-FARSIGHT] Remove .git-darcs-dir files + +2008-12-01 17:37:10 -0500 HÃ¥vard Graff <havard.graff@tandberg.com> + + * gst/dtmf/gstrtpdtmfdepay.c: + [MOVED FROM GST-P-FARSIGHT] Do wierd casting of the volume to make MSVC happy + +2008-10-15 16:21:50 -0400 Olivier Crête <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Clarify the documentation of the "event-type" field when specifying dtmf events + +2008-07-22 21:39:38 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Remove g_debugs + 20080722213938-3e2dc-44a82d017fe66f3112301c410aa0b543de6156ad.gz + +2008-06-13 23:57:23 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Take rate from the peers caps if possible + 20080613235723-3e2dc-15690ee42708c539e1be12e20e076a5613faea96.gz + +2008-06-13 23:41:44 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Put the sample rate in dtmfsrc into a variable + 20080613234144-3e2dc-e60070943bec829b703b8821c7aa4351a02deebe.gz + +2008-06-13 23:30:06 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Take the clock-rate from the caps in rtpdtmfsrc + 20080613233006-3e2dc-a7d4e918643f4f8c1bb2cc2678558c654025920e.gz + +2008-04-28 22:22:37 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/Makefile.am: + [MOVED FROM GST-P-FARSIGHT] Link modules with libm where required + 20080428222237-3e2dc-b1e9120c1e9ca1a510bfd7c27e2d45f0d4a12504.gz + +2008-04-12 23:44:18 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + [MOVED FROM GST-P-FARSIGHT] Fix byte ordering issues with dtmfsrc and rtpdtmfdepay.. use of G_STRINGIFY to avoid error on MSVC + 20080412234418-4f0f6-4828d1613dfcd564afd236dfc8fb57a299092f83.gz + +2008-03-20 19:14:38 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfdepay.h: + [MOVED FROM GST-P-FARSIGHT] Fix copyrights again, per smcv's advice.. + 20080320191438-4f0f6-671c9db5d996a4601df017ceab4af6d16469c966.gz + +2008-03-19 21:17:31 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Make it clear that dtmfsrc also takes named events as input + 20080319211731-3e2dc-26c729f6dc8db27e71cf6b22646a81530dbf862f.gz + +2008-03-20 18:48:41 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfdepay.c: + [MOVED FROM GST-P-FARSIGHT] debug message made into errors because that's what they are... + 20080320184841-4f0f6-8a2d283297b02713dade0ae4acaa5f6e0f67eace.gz + +2008-03-20 18:39:37 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfdepay.c: + [MOVED FROM GST-P-FARSIGHT] Clean unused stuff... + 20080320183937-4f0f6-bcb841cdc07f9e9677512f4b50b4b659a58c6783.gz + +2008-03-20 18:39:12 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfdepay.h: + [MOVED FROM GST-P-FARSIGHT] Fix copyrights + 20080320183912-4f0f6-689365d5a406632e3d088fac74e4fb6f8a4eb0ea.gz + +2008-03-20 01:13:01 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/Makefile.am: + * gst/dtmf/gstdtmf.c: + * gst/dtmf/gstrtpdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Adding support for rtpdtmfdepay + 20080320011301-4f0f6-d36a5d24be20336e36c4796d75476c9b5ee1a7e1.gz + +2008-03-19 19:32:51 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] encoding name has to be upper-case + 20080319193251-3e2dc-1581b33be9b486e35ec4948009677ccd5ffdc098.gz + +2008-03-20 00:51:47 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfcommon.h: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfdepay.h: + [MOVED FROM GST-P-FARSIGHT] Adding necessary files for rtpdtmfdepay + 20080320005147-4f0f6-550fe22f70152f3aab3dcd7a6b02cbf81e89232d.gz + +2008-03-20 00:50:41 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Fix typos + 20080320005041-4f0f6-9d22fa5d155e35b605ea85b1fd9e7197a882a1f0.gz + +2008-02-16 13:41:40 +0000 Sjoerd Simons <sjoerd@luon.net> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] dtmfsrc: Correctly set the endianess in the caps to the machines endianess + 20080216134140-93b9a-40a3a9d7ac1679c5e0dfd24a6b91e4aba6cc6496.gz + +2007-09-17 17:52:33 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Search&Replace oops + 20070917175233-3e2dc-57f579c4b890993f49fa8e9e6470a3eb79d2b922.gz + +2007-09-17 17:51:33 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] events dont yet belong in the caps + 20070917175133-3e2dc-fd1d83b7826b898110fc571ae7c3440f1887434d.gz + +2007-09-17 16:08:20 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Add patch to make it work with maemo dsp sources that payload incorrectly + 20070917160820-3e2dc-06b1b1d1b0918b30dabea5a0714cb732b3b8d8dd.gz + +2007-09-17 04:26:49 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Oops, set to no preroll when playing->paused too + 20070917042649-3e2dc-94adb6aa0617e815a6e233232dabb4bbc48dc82c.gz + +2007-09-17 00:36:54 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Complete port to basesrc + 20070917003654-3e2dc-db0f84dabd9dd1ac929a0461865b8aaa8ef91a77.gz + +2007-09-17 00:24:12 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Add caps negotiation function + 20070917002412-3e2dc-ca266816e9629746e9083c5bb8b7f73b94a9b2b0.gz + +2007-09-17 00:16:59 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Properly free non-start events + 20070917001659-3e2dc-a571777e3ecfb90989f87412f554aa10a31cc2ca.gz + +2007-09-17 00:15:52 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Make interval and packet_redundancy into uint + 20070917001552-3e2dc-60032e547b3669b87317c981d985c156aab91b40.gz + +2007-09-16 19:44:08 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Make the rtp dtmf src use basesrc + 20070916194408-3e2dc-734000130dce2434a014acf843d641ff0e60aa5a.gz + +2007-09-16 19:41:01 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Make dtmf src code nicer + 20070916194101-3e2dc-a8be8c509c65400d1d3962da02e67d15d2054316.gz + +2007-09-14 04:20:42 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Implement stopping in a nice thread safe way + 20070914042042-3e2dc-1fe257ff4b72aca4b0eb5f285a14650b8df268c3.gz + +2007-09-14 04:18:34 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Remove get_times (Wim says its only good for really fake sources) + 20070914041834-3e2dc-fff4d5da2a145f19e7b610a1027d2c4d4bc5eae0.gz + +2007-09-13 21:21:45 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] using the unlock method of basesrc + 20070913212145-4f0f6-0e438a681bf1651c0cc0d8fa3269aed3f1668b6b.gz + +2007-09-13 21:12:26 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] more debug + 20070913211226-4f0f6-bc32b5828fc8e0323c8a6eee779a38145aacd593.gz + +2007-09-13 20:46:14 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] added debugs + 20070913204614-4f0f6-68c2a69ae7a1efca6e13c116dbad7f9b686f0242.gz + +2007-09-13 19:20:53 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Make sure to unlock the thread when going to ready and to flush the queue when moving to paused or playing + 20070913192053-4f0f6-76c3925380d1a30988286170535a65dea64a5583.gz + +2007-09-13 17:55:20 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Changed dtmfsrc into a subclass of GstBaseSrc + 20070913175520-4f0f6-16ca4bf93690072f3e836d1c8a5b52cf7a421916.gz + +2007-09-04 22:57:53 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Add another fix for a possible race condition + 20070904225753-4f0f6-5ba8c4260c002bb27eb98e9faba3c15799357b57.gz + +2007-09-04 21:52:24 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Add comment to explain push back + 20070904215224-3e2dc-d92ac1f403dcf571546a7c53f18809f840eea51d.gz + +2007-09-04 20:55:09 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Properly do the locking to avoid race conditions with clock unscheduling + 20070904205509-3e2dc-da19900b51af6aedb6547f4f392bef4d1061dec2.gz + +2007-09-01 00:03:24 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] oups, I did it again... + 20070901000324-4f0f6-3d8b46691ee520537b06c511a5e732f5b812b844.gz + +2007-08-31 23:54:28 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] oups, sorry.. DTMF, not RTP_DTMF for this file... + 20070831235428-4f0f6-00b606bfb4892e4f217c440b611cc794ab0de55a.gz + +2007-08-31 23:44:13 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Fixes the deadlock when pausing the dtmfsrc and rtpdtmfsrc. Had to push something on the async queue to release the blocking async_queue_pop(). Thanks to Olivier for the solution. + 20070831234413-4f0f6-793cf35fc43636e7275258cc7063fc068f5efa0a.gz + +2007-08-28 22:15:34 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] ClockID when waiting for buffer is now unscheduled when stopping the task. Various fixes to avoid bugs (thanks to -Wall -Werror). Fixes to allow the merge of the branch. + 20070828221534-4f0f6-b0d6a4fe48c4e2a16b9ff69cb310087c970ce48e.gz + +2007-08-28 17:15:46 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Cleaned up the code a bit, no use of GST_* and return value verification from gst_* + 20070828171546-4f0f6-bdeb4b1b7f99f9464aabe5c43bd4a4d2025262b6.gz + +2007-08-27 19:56:10 +0000 Olivier Crete <olivier.crete@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Fix overly long lines and tabs + 20070827195610-3e2dc-396a3fa01e16f184e4109c71fe2deb6e516bdf0d.gz + +2007-08-27 19:26:18 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] untabbified dtmfsrc + 20070827192618-4f0f6-77d68070464f1b5f9a46cb6eec2d922340143c04.gz + +2007-08-27 17:24:24 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Fix RTP timestamps by sending a new_segment event to the payloader + 20070827172424-4f0f6-d20907e3d436d50bfe74eb4fc3d2d6d7b6b6dbc5.gz + +2007-08-27 17:23:39 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Better handling of packets, we send the same duration for all packets to avoid huge packets when min duration defines are modified. + 20070827172339-4f0f6-cc93304437ea376fff6458c74c46c19f6920d329.gz + +2007-08-27 17:23:22 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] Changing minimum values to work better on some gateways + 20070827172322-4f0f6-5bf2bffa59a8244538dced795fa7d7649452ca91.gz + +2007-08-22 20:16:53 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] The DTMF tone generator now respects the volume argument passed in the event + 20070822201653-4f0f6-8b7ff874006e11f5a74d0fd91e5a9a43cd082ada.gz + +2007-08-22 18:01:33 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] don't know why I did that... + 20070822180133-4f0f6-6a7382f6c7d3630f91da384e1904763c7ea6fa1a.gz + +2007-08-22 17:55:33 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Ported the event queue work from dtmfsrc to rtpdtmfsrc + Added a queue based system for the rtpdtmfsrc. Now it waits for start/stop messages on the queue, and makes sure that the minimum duty cycle (120ms) is respected between each + tone, including inter-digit silence. + 20070822175533-4f0f6-f27414c406f1f7b00c9a9084a988cf3a7930fe5c.gz + +2007-08-22 17:54:44 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + [MOVED FROM GST-P-FARSIGHT] ouch, printing with arguments but without %s.. that made it segfault a few times... + 20070822175444-4f0f6-445ea6ce7a9668d04cf999af772a504ec74fb67a.gz + +2007-08-22 17:51:26 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Moved the timestamp from the event to dtmfsrc structure since we have only one event at a time, so let's keep it stored in the dtmfsrc struct + 20070822175126-4f0f6-53bcda2bd8ae8c56d29e62e69ac19a30e08ad350.gz + +2007-08-20 20:38:26 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Added a queue based system for the dtmfsrc. Now it waits for start/stop messages on the queue, and makes sure that the minimum duty cycle (120ms) is respected between each tone, including inter-digit silence. + 20070820203826-4f0f6-750a22b612a5e495e767666934465c34fe32074b.gz + +2007-08-20 18:48:52 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/Makefile.am: + * gst/dtmf/gstdtmf.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstdtmfsrc.h: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Added dtmfsrc, a DTMF Tone Generator, and made it part of the 'dtmf' plugin. + 20070820184852-4f0f6-a0d85e67708290aebafa89ab79d3cedd5815b620.gz + +2007-08-20 18:48:00 +0000 Youness Alaoui <youness.alaoui@collabora.co.uk> + + * gst/dtmf/.git-darcs-dir: + * gst/dtmf/Makefile.am: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/dtmf/gstrtpdtmfsrc.h: + [MOVED FROM GST-P-FARSIGHT] Moved rtpdtmf to dtmf directory + 20070820184800-4f0f6-fa33ea974510161de8c9951c39087af3613b65a4.gz + 2009-02-21 12:47:00 +0100 Thomas Vander Stichele <thomas (at) apestaart (dot) org> * ext/flac/gstflacdec.c: diff --git a/Makefile.am b/Makefile.am index 970cbd1f21ba546b3592c230a6737d9a46963bd5..3402551a9cbe2416226cbe944c9df8cd5e101e34 100644 --- a/Makefile.am +++ b/Makefile.am @@ -46,27 +46,6 @@ check-torture: endif win32-update: - for f in gst/udp/gstudp-marshal.c \ - gst/udp/gstudp-marshal.h \ - gst/udp/gstudp-enumtypes.c \ - gst/udp/gstudp-enumtypes.h \ - gst/rtpmanager/gstrtpbin-marshal.c \ - gst/rtpmanager/gstrtpbin-marshal.h \ - sys/v4l2/tuner-enumtypes.c \ - sys/v4l2/tuner-enumtypes.h \ - sys/v4l2/tuner-marshal.c \ - sys/v4l2/tuner-marshal.h; do \ - cp $(top_builddir)/$$f win32/common; done - $(top_srcdir)/common/gst-indent win32/common/gstudp-marshal.c - $(top_srcdir)/common/gst-indent win32/common/gstudp-marshal.c - $(top_srcdir)/common/gst-indent win32/common/gstudp-enumtypes.c - $(top_srcdir)/common/gst-indent win32/common/gstudp-enumtypes.c - $(top_srcdir)/common/gst-indent win32/common/gstrtpbin-marshal.c - $(top_srcdir)/common/gst-indent win32/common/gstrtpbin-marshal.c - $(top_srcdir)/common/gst-indent win32/common/tuner-enumtypes.c - $(top_srcdir)/common/gst-indent win32/common/tuner-enumtypes.c - $(top_srcdir)/common/gst-indent win32/common/tuner-marshal.c - $(top_srcdir)/common/gst-indent win32/common/tuner-marshal.c cp $(top_builddir)/win32/common/config.h-new \ $(top_srcdir)/win32/common/config.h diff --git a/Makefile.in b/Makefile.in index 787d37a7db1937cd854d2dd665f674e1cba0b9e8..a69f5ac69733623da80f8b66b90f101060ed93c6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -27,23 +26,51 @@ # set CRUFT_FILES and/or CRUFT_DIRS in your Makefile.am when you include this VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ esac; \ - test $$am__dry = yes; \ - } + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -63,16 +90,15 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/config.h.in $(srcdir)/gst-plugins-good.spec.in \ +DIST_COMMON = $(top_srcdir)/common/win32.mak \ + $(top_srcdir)/common/release.mak $(top_srcdir)/common/po.mak \ $(top_srcdir)/common/coverage/lcov.mak \ - $(top_srcdir)/common/cruft.mak $(top_srcdir)/common/po.mak \ - $(top_srcdir)/common/release.mak \ - $(top_srcdir)/common/win32.mak $(top_srcdir)/configure \ - ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS compile \ - config.guess config.rpath config.sub depcomp install-sh \ - ltmain.sh missing + $(top_srcdir)/common/cruft.mak INSTALL NEWS README AUTHORS \ + ChangeLog $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(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 subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -80,7 +106,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -118,21 +143,28 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = gst-plugins-good.spec CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -141,11 +173,33 @@ am__can_run_installinfo = \ HEADERS = $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +CSCOPE = cscope DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -155,6 +209,7 @@ am__remove_distdir = \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi +am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ @@ -182,6 +237,7 @@ am__relativize = \ reldir="$$dir2" GZIP_ENV = --best DIST_ARCHIVES = $(distdir).tar.xz +DIST_TARGETS = dist-xz distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' @@ -350,6 +406,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -606,8 +663,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): config.h: stamp-h1 - @if test ! -f $@; then rm -f stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 @@ -632,22 +689,25 @@ distclean-libtool: -rm -f libtool config.lt # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -662,57 +722,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -728,12 +743,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -745,15 +755,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -762,9 +768,31 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) @@ -835,39 +863,41 @@ distdir: $(DISTFILES) || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__remove_distdir) + $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) + $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-tarZ: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) + $(am__post_remove_distdir) dist-shar: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) + $(am__post_remove_distdir) -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__remove_distdir) +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another @@ -878,8 +908,6 @@ distcheck: dist GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ @@ -891,9 +919,9 @@ distcheck: dist *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod u+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ @@ -926,7 +954,7 @@ distcheck: dist && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 - $(am__remove_distdir) + $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' @@ -1062,14 +1090,13 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive +.MAKE: $(am__recursive_targets) all install-am install-strip -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am all-local am--refresh check check-am clean \ - clean-generic clean-libtool ctags ctags-recursive dist \ - dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-lzma \ - dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ + dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ @@ -1080,7 +1107,7 @@ uninstall-am: installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am + tags tags-am uninstall uninstall-am win32-debug: @@ -1123,11 +1150,17 @@ check-exports: if test $$fail != 0; then \ echo '-----------------------------------------------------------'; \ echo 'Run this to update the .def files:'; \ - echo 'make check-exports 2>&1 | patch -p1'; \ + echo 'make update-exports'; \ echo '-----------------------------------------------------------'; \ fi; \ exit $$fail +update-exports: + make check-exports 2>&1 | patch -p1 + git add win32/common/libgst*.def + git diff --cached -- win32/common/ + echo '^^^--- updated and staged changes above' + # complain about nonportable printf format strings (%lld, %llu, %zu etc.) check-nonportable-print-format: @fail=0 ; \ @@ -1186,30 +1219,9 @@ check-valgrind: @HAVE_GST_CHECK_FALSE@ true win32-update: - for f in gst/udp/gstudp-marshal.c \ - gst/udp/gstudp-marshal.h \ - gst/udp/gstudp-enumtypes.c \ - gst/udp/gstudp-enumtypes.h \ - gst/rtpmanager/gstrtpbin-marshal.c \ - gst/rtpmanager/gstrtpbin-marshal.h \ - sys/v4l2/tuner-enumtypes.c \ - sys/v4l2/tuner-enumtypes.h \ - sys/v4l2/tuner-marshal.c \ - sys/v4l2/tuner-marshal.h; do \ - cp $(top_builddir)/$$f win32/common; done - $(top_srcdir)/common/gst-indent win32/common/gstudp-marshal.c - $(top_srcdir)/common/gst-indent win32/common/gstudp-marshal.c - $(top_srcdir)/common/gst-indent win32/common/gstudp-enumtypes.c - $(top_srcdir)/common/gst-indent win32/common/gstudp-enumtypes.c - $(top_srcdir)/common/gst-indent win32/common/gstrtpbin-marshal.c - $(top_srcdir)/common/gst-indent win32/common/gstrtpbin-marshal.c - $(top_srcdir)/common/gst-indent win32/common/tuner-enumtypes.c - $(top_srcdir)/common/gst-indent win32/common/tuner-enumtypes.c - $(top_srcdir)/common/gst-indent win32/common/tuner-marshal.c - $(top_srcdir)/common/gst-indent win32/common/tuner-marshal.c cp $(top_builddir)/win32/common/config.h-new \ $(top_srcdir)/win32/common/config.h -.PHONY: lcov-reset lcov lcov-run lcov-report lcov-upload +.PHONY: lcov-reset lcov lcov-run lcov-report lcov-upload lcov-clean # run lcov from scratch, always lcov-reset: @@ -1220,10 +1232,14 @@ lcov-reset: lcov: $(MAKE) lcov-reset -# reset run coverage tests -@GST_GCOV_ENABLED_TRUE@lcov-run: +# reset lcov stats +@GST_GCOV_ENABLED_TRUE@lcov-clean: @GST_GCOV_ENABLED_TRUE@ @-rm -rf lcov @GST_GCOV_ENABLED_TRUE@ lcov --directory . --zerocounters + +# reset run coverage tests +@GST_GCOV_ENABLED_TRUE@lcov-run: +@GST_GCOV_ENABLED_TRUE@ -$(MAKE) lcov-clean @GST_GCOV_ENABLED_TRUE@ -if test -d tests/check; then $(MAKE) -C tests/check inspect; fi @GST_GCOV_ENABLED_TRUE@ -$(MAKE) check diff --git a/NEWS b/NEWS index 6405fc17ae0662b05225ac3244503fff45d6329a..b1d92ae85cd61edd0043fa6021f97c3f9d85f343 100644 --- a/NEWS +++ b/NEWS @@ -1,254 +1,2 @@ -This is GStreamer Good Plugins 1.0.10 +This is GStreamer Good Plugins 1.1.90 -Changes since 1.0.9: - - * qtdemux: add variant field to H.263 caps, fixing H.263 playback - * flvdemux: memory leak fix - * goom: fix issue with caps writability - -Bugs fixed since 1.0.9: - - * 705142 : flvdemux: leaks stream_id string - * 705475 : goom: negotiation fails when sink has ANY caps - * 705477 : directsoundsink: Glitches when playing S8 - * 705550 : rtpvp8depay: mark key frames and delta frames properly - * 706422 : jpegenc is sending wrong buffer on specific input/resolution - -Changes since 1.0.8: - - * udpsink, multiudpsink: unbreak IPv4 fallback on systems without - IPv6 support - * deinterlace: fix changing 'mode' property on-the-fly to - enable/disable deinterlacing - * rtp: fix autoplugging of depayloaders if there's only one of - the payload number and the encoding-name - * pulse: fixes for alaw/mulaw - * matroskademux, avidemux: fix some buffer leaks - * flacenc: fix image tag handling - -Bugs fixed since 1.0.8: - - * 641599 : deinterlace: changing " mode " property on-the-fly doesn't work - * 695981 : Segmentation fault on gst_v4l2_buffer_pool_process after sending " start-capture " signal to camerabin2 just after setting the pipeline state to PLAYING - * 704162 : aacparse: Too verbose when parsing LOAS stream - * 704533 : regression: rtppcmudpay no longer autoplugged for rtsp stream with mulaw audio - * 704553 : (dyn|multi)udpsink: broken on !IPv6 systems - * 705018 : flacenc: segfault when trying to encode from alac decoded file - -Changes since 1.0.7: - - * pngenc: fix massive memory leak - * pngdec: parse incoming data into frames before decoding - * osvideo: many osxvideosink fixes - * udpsink, multiudpsink, dynudpsink: bind socket before using it, fixes sending udp on windows - -Bugs fixed since 1.0.7: - - * 682110 : qtdemux: discont flag set on multiple buffers in push mode - * 692400 : udpsrc: fix socket options not getting set on windows, resulting in packet drop in high bitrate movie - * 693727 : rtpvrawpay/depay negotiation broken - * 699260 : pngenc: unmap source frame when done - * 699303 : matroskademux: stream-format=raw missing from aac caps - * 699314 : rtph264pay: CRITICAL **: gst_adapter_map: assertion `size > 0' failed - * 700047 : pngdec: make decoding work without png parser - * 700382 : qtdemux: handle 96kHz/24 bits ALAC audio - * 700514 : rtpmp4apay: clear config buffer before using it - * 700878 : udpsink: Not sending anything on Windows - * 701586 : rtspsrc memleak - * 702167 : matroskademux: missing mutex unlock leading to wrong STREAM_LOCK count - * 702457 : rtpmp2tdepay: unable to depay MPEG2-TS RTP streams from GStreamer 0.10 - * 702705 : rtspsrc does not pause properly (race condition) - * 702732 : v4l2: Does not link statically on linux - * 703076 : flvdemux: Add flvversion 1 to flash-video caps - * 703100 : osxvideosink: deadlock on re-use - * 703171 : rtph264pay: segfault because of double buffer unmap on error - * 703729 : osxvideosink doesn't display video anymore if once set to READY - * 691419 : osxvideosink: doesn't close internal window in case of window-id assignment - -Changes since 1.0.6: - - * osxaudio plugin ported to 1.0 - -Bugs fixed since 1.0.6: - - * 695709 : vp8enc plugin has invalid parameter error when framerate is " 0/1 " - * 697103 : osxaudio: port to 1.0 - * 677560 : rtpjpegdepay: crash in copy_into_unchecked - * 685209 : gst_v4l2_object_get_nearest_size VIDIOC_G_FMT bug - * 693005 : capssetter: do not return a copy of sink caps upstream - * 693727 : rtpvrawpay/depay negotiation broken - * 696052 : qtmux expose mulaw - * 696651 : v4l2loopback:gst_buffer_get_meta: assertion `buffer != NULL' failed. " - * 697113 : matroskademux: add TrueHD audio codec support - * 697303 : osxvideosink: compiler warning: implicit declaration of function 'pthread_self' - * 697984 : souphttpsrc: direct stream dump results in broken audio with internet radio - * 698224 : [osxaudio] caps negotiation fails due to invalid channel-mask - -Changes since 1.0.5: - - * auparse: fix caps leak - * avidemux: push mode: handle some more 0-size buffer cases - * deinterlace: fix infinite loop on EOS with non-default methods or fields - * dvdemux: don't return FALSE when dropping sink events, fixes flow errors - * level: send a last message on EOS - * mp4mux: in faststart mode, don't output up to 4 kB of garbage at the end - * osxvideosink: Fix crash in osxvideosink with external window output - * osxvideosink: Make GstGLView propagate input events to its parent view - * osxvideosink: Make GstNavigation key input events in osxvideosink compatible with x(v)imagesink ones - * pulsesink: don't error out if pa_stream_proplist_update() with new tags fails - * qtdemux: fix potential crash on short MOOV atom - * qtdemux: fix sample leak when processing private qt tags - * qtdemux: push mode: only parse moov 1 once - * qtdemux: skip disabled tracks - * qtmux: set stream language code from tag - * rtph264pay: Don't use upstream caps with peer_query_caps() - * rtpmp4gdepay: streamtype is not put by all RTSP server, not make it optional - * rtpptdemux: forward sticky events and then set caps - * rtpsession: Fix wrong code organisation in case of collision - * rtspsrc: flush connection when stopping - * rtspsrc: only EOS when our source sends BYE - * rtspsrc: save the stream SSRC - * v4l2: don't check stride for encoded formats - * v4l2: fix compilation against newer kernel headers as on FC19 - * videomixer2: avoid caps leak - * videomixer: fix eos timestamp check - * ximagesrc: Set the pixel aspect ratio correctly in the caps - * build: allow calling autogen.sh from out-of-tree - * build: fix build with automake 1.13 - -Bugs fixed since 1.0.5: - - * 628790 : qtdemux: OSD displays persistent chapters subtitles - * 656068 : pulsesink: errors out if pa_stream_proplist_update() fails with old pulseaudio versions - * 675453 : rtspsrc: only EOS if BYE came from SSRC of the stream - * 678429 : souphttpsrc: should return GST_FLOW_ERROR from create function in case of HTTP error 404 not found - * 684924 : rtspsrc: flush connection when going to null state - * 684944 : avidemux: " unhandled buffer size " error for cyuv.avi in push mode - * 688935 : rtpjitterbuffer not always correctly warns about resetting skew - * 689809 : osxvideosink: inconsistent keyboard navigation events - * 691484 : osxvideosink: crash when displaying on Qt widget - * 691570 : [isomp4/qtdemux] lots of critical warnings on this sample file - * 691580 : ximagesrc sets bad pixel-aspect-ratio caps - * 691832 : osxvideosink doesn't propagate input events to output window - * 692309 : allow autogen.sh to be call out-of-tree - * 692786 : CAPS event is forwarded before STREAM_START in rtpptdemux element - * 692935 : videomixer: hangs on eos - * 692950 : " rtpjitterbuffer " properties can't be changed after pipeline is started - * 693055 : level: 32-bit formats don't work because of typo in format list: S32LEF32LE - * 693173 : deinterlace method=greedyl fields=top does not complete - * 693307 : videomixer2 leaks caps reference - * 693373 : 1.0 branch is still using AM_CONFIG_HEADER - * 694010 : qtdemux: crash with partial mp4 / moov atom - * 694184 : Wrong code organisation in case of collision in rtpsession - * 694275 : auparse: src_caps are leaked - * 695629 : rtph264pay: caps negotiation fails if upstream caps is not NULL - * 695643 : dvdemux: returns wrong value when it is not processing the sink events - * 695644 : deinterlace: going to infinite loop on EOS with method=scalerbob fields=bff - * 696355 : qtdemux: sample leak in tag handling - * 696358 : qtmux: set language code on streams - -Changes since 1.0.4: - - * rtspsrc: fix regression that make rtspsrc hang when stopping - * audio/video parsers: fix negotiation with encoders in some transcoding cases - * cairo: port cairooverlay to 1.0 - * jpegenc: pass flow returns upstream - * qtdemux: fix pixel-aspect-ratio of some files with ProRes video - * cairo: port cairooverlay to 1.0 - -Bugs fixed since 1.0.4: - - * 690184 : [parsers] Return too strict caps on the sinkpads - * 690476 : regression: unable to stop rtsp stream - * 691098 : v4l2src: breaks because of changed ioctl error return code from driver on failed control query in 3.8-rc1 - -Changes since 1.0.3: - - * deinterleave: properly set srcpad channel position - * osxvideosink: Fix resizing the Cocoa window on receiving new caps - * rtspsrc fixes - * shout2send: also accept audio/webm in addition to video/webm - * videobox: fix border filling for planar YUV formats - * webmmux: fix linking to shout2send - * v4l2: fix build on FreeBSD - -Bugs fixed since 1.0.3: - - * 684312 : rtspsrc: mutex blocks going to NULL state - * 684991 : videobox: sometimes incorrectly crops producing visual artifacts, and green instead of black border - * 687469 : mulawdec: integer overrun with large chunks of data - * 689732 : osxvideosink can't resize Cocoa window on receiving caps - * 689336 : webmmux: can't link webmux to shout2send - -Changes since 1.0.2: - - * rtspsrc: numerous improvements - * build fix for gst-plugins-base installed in non-default prefix - * multifilesink: post messages in max-size mode as well - * vp8dec: improve robustness on decoding errors, e.g. for videocalls over RTP - -Bugs fixed since 1.0.2: - - * 639420 : RTSP setup, add client_ports - * 686837 : imagefreeze: improve caps negotiation - * 686985 : [pulsesrc] Assertion 'm' failed at pulse/thread-mainloop.c:166, function pa_threaded_mainloop_lock(). Aborting. - * 687013 : auparse,level,videocrop,y4m,caca: Fix missing GST_PLUGINS_BASE_LIBS dependency in Makefile.am - * 687154 : examples: error in level plugin example code - * 687330 : videobox, videomixer: height obtained using _WIDTH macros - * 687464 : speexdec: Don't unmap or finish_frame an invalid GstBuffer - * 688382 : rtspsrc doesn't work with the interleaved protocols - -Changes since 1.0.1: - - * Parallel installability with 0.10.x series - * avidemux: fix handling of paletted and other raw RGB data - * flacparse: ignore bad headers if we have a valid STREAMINFO header; improve coverart extraction - * jpegdepay: store quant tables in zigzag order - * matroskamux: do not use unoffical V_MJPEG codec id; fix subtitle request sink pad name and functionality - * videofilter: add videomedian element - * multiudpsink: add "force-ipv4" option and "multicast-iface" property - * pulsesink: fix caps leak and potential crasher in acceptcaps function - * pulsesink: start the ringbuffer on GAP events without duration - * qtdemux: add support for 'generic' samples; allow more streams - * qtdemux: support more ProRes variants; fix memory leak for MS/RIFF audio - * qtdemux: with raw audio, set a default channel-mask for multichannel audio - * rtpbin: set PTS and DTS in jitterbufffer - * rtpbin: use running-time for NTP time when use-pipeline-clock is set - * rtpsession: inform source when caps change - * udpsrc: use negotiated allocator or pool - * videobox: use out_info for out properties - * videocrop: port to videofilter - * videomixer2: Fix race condition where a src setcaps is ignored - * vp8enc: fix default target-bitrate value; set DECODE_ONLY flag on invisible frames - -Bugs fixed since 1.0.1: - - * 654216 : vp8enc: tag invisible frames - * 682481 : multiudpsink: add force-ipv4 option (problem when streaming RTP to multicast address) - * 683782 : Segfault in pulsesink.c:2077 gst_pulsesink_pad_acceptcaps() - * 683842 : Fix race condition in videomixer2 on 0.10 - * 684701 : flacparse: fails to parse flac file with broken header: " Invalid metablock size for STREAMINFO: 8196 " - * 685864 : Add multicast-iface property to multiudpsink - * 686008 : qtdemux: crashes in push mode with gst_qtdemux_guess_bitrate: assertion failed: (size > = qtdemux- > header_size) - * 686046 : avidemux: can't play 8-bit indexed RGB video - * 686550 : qtdemux: no streams found for journal.pone.0030940.s002.mov, m1v video fourcc - * 686642 : udpsrc: trivial typo causes compilation error - -Changes since 1.0.0: - - * interleave, deinterlave: channel handling fixes for mono audio - * videobalance now supports NV12 and NV21 as well - -Bugs fixed since 1.0.0: - - * 683622 : flvdemux: Internal flow error when demuxing speex - * 684972 : qtdemux: cannot play mp4 file when MOOV atom is at the end of file - * 684977 : Can't seek in AVI file in push mode - * 685059 : avidemux: cannot play video in push mode - * 685213 : rtph264pay: pushing unmapped data. - * 685512 : rtpgstdepay has a memory leak - -New features in 1.0.0: - - * Parallel installability with 0.10.x series - * See release notes for more details diff --git a/README b/README index 908386dbcaf43e5a8457bd6b57bc85b8d308d8bb..5df2d2b0568d51477124192db80693694201d266 100644 --- a/README +++ b/README @@ -1,3 +1,5 @@ +GStreamer 1.1.x development series + WHAT IT IS ---------- @@ -21,8 +23,8 @@ We track bugs in GNOME's bugzilla; see the website for details. You can join us on IRC - #gstreamer on irc.freenode.org -GStreamer 0.10 series ---------------------- +GStreamer 1.0 series +-------------------- Starring @@ -135,13 +137,14 @@ PLATFORMS --------- - Linux is of course fully supported -- FreeBSD is reported to work; other BSD's should work too +- FreeBSD is reported to work; other BSDs should work too - Solaris is reported to work; a specific sunaudiosink plugin has been written -- MacOSX is reported to work; specific audio and video sinks have been written -- Windows support is experimental but improving. Output sinks have been - written but are not yet included in the code. We support - - MSys/MingW builds - - Microsoft Visual Studio 6 builds (see win32/README.txt) +- MacOSX works, binary 1.x packages can be built using the cerbero build tool +- Windows works; binary 1.x packages can be built using the cerbero build tool + - MSys/MinGW builds + - Microsoft Visual Studio builds are not yet available or supported +- Android works, binary 1.x packages can be built using the cerbero build tool +- iOS works INSTALLING FROM PACKAGES ------------------------ @@ -154,7 +157,7 @@ Only in cases where you: - want to hack on GStreamer - want to verify that a bug has been fixed - do not have a sane distribution -should you choose to build from source tarballs or CVS. +should you choose to build from source tarballs or git. Find more information about the various packages at http://gstreamer.freedesktop.org/download/ @@ -190,13 +193,13 @@ COMPILING FROM SOURCE TARBALLS functionality you're probably looking for by now, so go on and read that README. -COMPILING FROM CVS +COMPILING FROM GIT ------------------ -When building from CVS sources, you will need to run autogen.sh to generate +When building from git sources, you will need to run autogen.sh to generate the build system files. -You will need a set of additional tools typical for building from CVS, +You will need a set of additional tools typical for building from git, including: - autoconf - automake @@ -208,10 +211,7 @@ them. You can also specify specific versions of automake and autoconf with Check autogen.sh options by running autogen.sh --help -autogen.sh can pass on arguments to configure - you just need to separate them -from autogen.sh with -- between the two. -prefix has been added to autogen.sh but will be passed on to configure because -some build scripts like that. +autogen.sh can pass on arguments to configure When you have done this once, you can use autoregen.sh to re-autogen with the last passed options as a handy shortcut. Use it. @@ -219,9 +219,17 @@ the last passed options as a handy shortcut. Use it. After the autogen.sh stage, you can follow the directions listed in "COMPILING FROM SOURCE" -You can also run your whole cvs stack uninstalled. The script in -the gstreamer module /docs/faq/gst-uninstalled) is helpful in setting -up your environment for this. +You can also run your whole git stack uninstalled in your home directory, +so that you can quickly test changes without affecting your system setup or +interfering with GStreamer installed from packages. Many GStreamer developers +use an uninstalled setup for their work. + +There is a 'create-uninstalled-setup.sh' script in + + http://cgit.freedesktop.org/gstreamer/gstreamer/tree/scripts/ + +to easily create an uninstalled setup from scratch. + PLUG-IN DEPENDENCIES AND LICENSES --------------------------------- diff --git a/RELEASE b/RELEASE index a1cd79411a9ab18451f8bb4075fd1dbd02efc6ea..ed805e25bf2de3310e337f7678a5e6a9cfd4d137 100644 --- a/RELEASE +++ b/RELEASE @@ -1,5 +1,5 @@ -Release notes for GStreamer Good Plugins 1.0.10 +Release notes for GStreamer Good Plugins 1.1.90 The GStreamer team is proud to announce a new bug-fix release @@ -55,19 +55,26 @@ contains a set of codecs plugins based on libav (formerly gst-ffmpeg) -Features of this release - - * qtdemux: add variant field to H.263 caps, fixing H.263 playback - * flvdemux: memory leak fix - * goom: fix issue with caps writability - Bugs fixed in this release - * 705142 : flvdemux: leaks stream_id string - * 705475 : goom: negotiation fails when sink has ANY caps - * 705477 : directsoundsink: Glitches when playing S8 - * 705550 : rtpvp8depay: mark key frames and delta frames properly - * 706422 : jpegenc is sending wrong buffer on specific input/resolution + * 646963 : rtpmanager: Only update last_rtcp_send_time when actually sending a report + * 687657 : rtpsession: Demux RTCP buffers from the RTP stream + * 695090 : rganalysis: fix tests + * 702004 : qtdemux: add support for the avc3 sample entry format of the AVC file format + * 704950 : videomixer: add colorspace conversion + * 705371 : souphttpsrc: Does network operations from the state change thread + * 706955 : autoaudiosink/autovideosink: Introduce " sync " property + * 707042 : udpsrc binds to INADDR_ANY instead of multicast group address + * 707303 : flacenc: 'Got data flow before stream-start event' warnings + * 707340 : qtmux: should NOT use PTS if DTS is missing + * 707411 : qtmux: what is purpose of MAX_TOLERATED_LATENESS? + * 707530 : qtdemux: Handle segments correctly in push mode seeks + * 707688 : matroskademux: leaking buffer and caps when parsing attachments + * 707734 : rtp: add payloader and depayloader for 24bit raw audio + * 707758 : v4l2: Incorrect UV plane stride value for NV12/NV21 formats + * 707886 : videomixer: build fails due to unrenamed files if orc is not installed + * 707933 : matroskademux: Wrong UTF8 detection causes wrong detection of subtitle encoding + * 708131 : videomixer: undefined reference to `videomixer_video_convert_orc_convert_I420_BGRA' ==== Download ==== @@ -104,7 +111,20 @@ subscribe to the gstreamer-devel list. Contributors to this release + * Alex Ashley + * Andreea Fulger + * Bernhard Miller + * Christoph Reiter + * David Holroyd + * Jan Schmidt + * Matej Knopp + * Mathieu Duponchelle + * Olivier Crête + * Rico Tzschichholz * Sebastian Dröge - * Sjoerd Simons + * Seán de Búrca + * Thiago Santos + * Thibault Saunier * Tim-Philipp Müller + * Wim Taymans  \ No newline at end of file diff --git a/aclocal.m4 b/aclocal.m4 index 848406f347b1ca5386ebce5753c3fecea2730b02..010051950a611d79262b4ff4e5e388e9552a5192 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,8 +1,7 @@ -# generated automatically by aclocal 1.11.6 -*- Autoconf -*- +# generated automatically by aclocal 1.14 -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, -# Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -12,33 +11,31 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' +[am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.6], [], +m4_if([$1], [1.14], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -54,21 +51,19 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.6])dnl +[AM_AUTOMAKE_VERSION([1.14])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Figure out how to run the assembler. -*- Autoconf -*- -# Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 - # AM_PROG_AS # ---------- AC_DEFUN([AM_PROG_AS], @@ -83,17 +78,15 @@ _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and @@ -112,7 +105,7 @@ _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you +# harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, @@ -138,22 +131,19 @@ am_aux_dir=`cd $ac_aux_dir && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 9 - # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl @@ -172,16 +162,14 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, -# 2010, 2011 Free Software Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 12 -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing @@ -191,7 +179,7 @@ fi])]) # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was @@ -204,12 +192,13 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], @@ -217,8 +206,8 @@ AC_CACHE_CHECK([dependency style of $depcc], # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -258,16 +247,16 @@ AC_CACHE_CHECK([dependency style of $depcc], : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -276,8 +265,8 @@ AC_CACHE_CHECK([dependency style of $depcc], test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -285,7 +274,7 @@ AC_CACHE_CHECK([dependency style of $depcc], fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -333,7 +322,7 @@ AM_CONDITIONAL([am__fastdep$1], [ # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl @@ -343,9 +332,13 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' @@ -360,20 +353,18 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -#serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files + # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -386,7 +377,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but + # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -398,21 +389,19 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. + # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue + test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` @@ -430,7 +419,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will +# is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], @@ -440,18 +429,21 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 16 - # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -464,7 +456,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl +[AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -493,31 +485,40 @@ AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl @@ -528,34 +529,78 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: <http://www.gnu.org/software/coreutils/>. + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -577,15 +622,12 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, -# Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. @@ -599,16 +641,14 @@ if test x"${install_sh}" != xset; then install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi -AC_SUBST(install_sh)]) +AC_SUBST([install_sh])]) -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2003-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], @@ -625,20 +665,17 @@ AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, -# 2011 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 - # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless `enable' is passed literally. -# For symmetry, `disable' may be passed as well. Anyway, the user +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), @@ -649,10 +686,11 @@ AC_DEFUN([AM_MAINTAINER_MODE], AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], -[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE @@ -660,18 +698,14 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) ] ) -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 - # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. @@ -689,7 +723,7 @@ am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. +# Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -714,52 +748,14 @@ AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) -# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_PROG_CC_C_O -# -------------- -# Like AC_PROG_CC_C_O, but changed for automake. -AC_DEFUN([AM_PROG_CC_C_O], -[AC_REQUIRE([AC_PROG_CC_C_O])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -dnl Make sure AC_PROG_CC is never called again, or it will override our -dnl setting of CC. -m4_define([AC_PROG_CC], - [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) -]) - # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 6 - # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], @@ -767,11 +763,10 @@ AC_DEFUN([AM_MISSING_PROG], $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) - # AM_MISSING_HAS_RUN # ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl @@ -784,29 +779,32 @@ if test x"${MISSING+set}" != xset; then esac fi # Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " else am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) + AC_MSG_WARN(['missing' script is too old or missing]) fi ]) -# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, -# Inc. +# Copyright (C) 2003-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_PROG_MKDIR_P # --------------- -# Check for `mkdir -p'. +# Check for 'mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl FIXME we are no longer going to remove this! adjust warning +dnl FIXME message accordingly. +AC_DIAGNOSE([obsolete], +[$0: this macro is deprecated, and will soon be removed. +You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead, +and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.]) dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. @@ -823,15 +821,12 @@ esac # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software -# Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 - # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], @@ -841,7 +836,7 @@ AC_DEFUN([_AM_MANGLE_OPTION], # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ @@ -855,13 +850,293 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 + +# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# --------------------------------------------------------------------------- +# Adds support for distributing Python modules and packages. To +# install modules, copy them to $(pythondir), using the python_PYTHON +# automake variable. To install a package with the same name as the +# automake package, install to $(pkgpythondir), or use the +# pkgpython_PYTHON automake variable. +# +# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as +# locations to install python extension modules (shared libraries). +# Another macro is required to find the appropriate flags to compile +# extension modules. +# +# If your package is configured with a different prefix to python, +# users will have to add the install directory to the PYTHONPATH +# environment variable, or create a .pth file (see the python +# documentation for details). +# +# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will +# cause an error if the version of python installed on the system +# doesn't meet the requirement. MINIMUM-VERSION should consist of +# numbers and dots only. +AC_DEFUN([AM_PATH_PYTHON], + [ + dnl Find a Python interpreter. Python versions prior to 2.0 are not + dnl supported. (2.0 was released on October 16, 2000). + m4_define_default([_AM_PYTHON_INTERPRETER_LIST], +[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl + python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) + + AC_ARG_VAR([PYTHON], [the Python interpreter]) + + m4_if([$1],[],[ + dnl No version check is needed. + # Find any Python interpreter. + if test -z "$PYTHON"; then + AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) + fi + am_display_PYTHON=python + ], [ + dnl A version check is needed. + if test -n "$PYTHON"; then + # If the user set $PYTHON, use it and don't search something else. + AC_MSG_CHECKING([whether $PYTHON version is >= $1]) + AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_ERROR([Python interpreter is too old])]) + am_display_PYTHON=$PYTHON + else + # Otherwise, try each interpreter until we find one that satisfies + # VERSION. + AC_CACHE_CHECK([for a Python interpreter with version >= $1], + [am_cv_pathless_PYTHON],[ + for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do + test "$am_cv_pathless_PYTHON" = none && break + AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) + done]) + # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. + if test "$am_cv_pathless_PYTHON" = none; then + PYTHON=: + else + AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) + fi + am_display_PYTHON=$am_cv_pathless_PYTHON + fi + ]) + + if test "$PYTHON" = :; then + dnl Run any user-specified action, or abort. + m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) + else + + dnl Query Python for its version number. Getting [:3] seems to be + dnl the best way to do this; it's what "site.py" does in the standard + dnl library. + + AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], + [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) + AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) + + dnl Use the values of $prefix and $exec_prefix for the corresponding + dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made + dnl distinct variables so they can be overridden if need be. However, + dnl general consensus is that you shouldn't need this ability. + + AC_SUBST([PYTHON_PREFIX], ['${prefix}']) + AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) + + dnl At times (like when building shared libraries) you may want + dnl to know which OS platform Python thinks this is. + + AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], + [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) + AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) + + # Just factor out some code duplication. + am_python_setup_sysconfig="\ +import sys +# Prefer sysconfig over distutils.sysconfig, for better compatibility +# with python 3.x. See automake bug#10227. +try: + import sysconfig +except ImportError: + can_use_sysconfig = 0 +else: + can_use_sysconfig = 1 +# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: +# <https://github.com/pypa/virtualenv/issues/118> +try: + from platform import python_implementation + if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': + can_use_sysconfig = 0 +except ImportError: + pass" + + dnl Set up 4 directories: + + dnl pythondir -- where to install python scripts. This is the + dnl site-packages directory, not the python standard library + dnl directory like in previous automake betas. This behavior + dnl is more consistent with lispdir.m4 for example. + dnl Query distutils for this directory. + AC_CACHE_CHECK([for $am_display_PYTHON script directory], + [am_cv_python_pythondir], + [if test "x$prefix" = xNONE + then + am_py_prefix=$ac_default_prefix + else + am_py_prefix=$prefix + fi + am_cv_python_pythondir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pythondir in + $am_py_prefix*) + am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` + am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` + ;; + *) + case $am_py_prefix in + /usr|/System*) ;; + *) + am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + ]) + AC_SUBST([pythondir], [$am_cv_python_pythondir]) + + dnl pkgpythondir -- $PACKAGE directory under pythondir. Was + dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is + dnl more consistent with the rest of automake. + + AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) + + dnl pyexecdir -- directory for installing python extension modules + dnl (shared libraries) + dnl Query distutils for this directory. + AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], + [am_cv_python_pyexecdir], + [if test "x$exec_prefix" = xNONE + then + am_py_exec_prefix=$am_py_prefix + else + am_py_exec_prefix=$exec_prefix + fi + am_cv_python_pyexecdir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pyexecdir in + $am_py_exec_prefix*) + am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` + am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` + ;; + *) + case $am_py_exec_prefix in + /usr|/System*) ;; + *) + am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + ]) + AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) + + dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) + + AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) + + dnl Run any user-specified action. + $2 + fi + +]) + + +# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# --------------------------------------------------------------------------- +# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. +# Run ACTION-IF-FALSE otherwise. +# This test uses sys.hexversion instead of the string equivalent (first +# word of sys.version), in order to cope with versions such as 2.2c1. +# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). +AC_DEFUN([AM_PYTHON_CHECK_VERSION], + [prog="import sys +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] +minverhex = 0 +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] +sys.exit(sys.hexversion < minverhex)" + AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- @@ -876,22 +1151,16 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 - # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -902,32 +1171,40 @@ case `pwd` in esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac -# Do `set' in a subshell so we don't clobber the current shell's +# Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done test "$[2]" = conftest.file ) then @@ -937,31 +1214,50 @@ else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi -AC_MSG_RESULT(yes)]) +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) -# Copyright (C) 2009, 2011 Free Software Foundation, Inc. +# Copyright (C) 2009-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT -# (`yes' being less verbose, `no' or empty being verbose). +# ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], -[ --enable-silent-rules less verbose build output (undo: `make V=1') - --disable-silent-rules verbose build output (undo: `make V=0')]) -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl -dnl A few `make' implementations (e.g., NonStop OS and NextStep) +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} @@ -979,7 +1275,7 @@ else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then - dnl Using `$V' instead of `$(V)' breaks IRIX make. + dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else @@ -996,44 +1292,40 @@ AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_PROG_INSTALL_STRIP # --------------------- -# One issue with vendor `install' (even GNU) is that you can't +# One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize +# always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. +# Copyright (C) 2006-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 3 - # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. @@ -1047,18 +1339,16 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. +# Copyright (C) 2004-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory @@ -1068,76 +1358,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar +# AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. + +# We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar <conftest.tar]) + AM_RUN_LOG([cat conftest.dir/file]) + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar <conftest.tar]) - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi -done -rm -rf conftest.dir -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR @@ -1147,7 +1475,6 @@ m4_include([common/m4/as-auto-alt.m4]) m4_include([common/m4/as-compiler-flag.m4]) m4_include([common/m4/as-gcc-inline-assembly.m4]) m4_include([common/m4/as-libtool.m4]) -m4_include([common/m4/as-python.m4]) m4_include([common/m4/as-scrub-include.m4]) m4_include([common/m4/as-version.m4]) m4_include([common/m4/ax_create_stdint_h.m4]) diff --git a/autogen.sh b/autogen.sh index 7a8f1df4a9f9f101cffe2c1986ff9850a7dfa9f1..95e1bfaefed95cdac832c3eff6ec86f48fdf4aec 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,5 +1,11 @@ #!/bin/sh +# +# gst-plugins-good autogen.sh +# # Run this to generate all the initial makefiles, etc. +# +# This file has been generated from common/autogen.sh.in via common/update-autogen + test -n "$srcdir" || srcdir=`dirname "$0"` test -n "$srcdir" || srcdir=. @@ -9,9 +15,8 @@ cd "$srcdir" DIE=0 package=gst-plugins-good -srcfile=gst/law/alaw.c +srcfile=gst-plugins-good.doap -echo "$(pwd)" # Make sure we have common if test ! -f common/gst-autogen.sh; then @@ -38,16 +43,22 @@ fi # GNU gettext automake support doesn't get along with git. # https://bugzilla.gnome.org/show_bug.cgi?id=661128 -touch -t 200001010000 po/gst-plugins-good-0.10.pot +if test -d po ; then + touch -t 200001010000 po/gst-plugins-good-1.0.pot +fi CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-gtk-doc' +if test "x$package" = "xgstreamer"; then + CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --enable-docbook --enable-failing-tests --enable-poisoning" +fi + autogen_options $@ printf "+ check for build tools" -if test ! -z "$NOCHECK"; then echo " skipped"; else echo; fi -version_check "autoconf" "$AUTOCONF autoconf autoconf270 autoconf269 autoconf268 autoconf267 autoconf266 autoconf265 autoconf264 autoconf263 autoconf262" \ - "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 62 || DIE=1 +if test ! -z "$NOCHECK"; then echo ": skipped version checks"; else echo; fi +version_check "autoconf" "$AUTOCONF autoconf autoconf270 autoconf269 autoconf268 " \ + "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 68 || DIE=1 version_check "automake" "$AUTOMAKE automake automake-1.11" \ "ftp://ftp.gnu.org/pub/gnu/automake/" 1 11 || DIE=1 version_check "autopoint" "autopoint" \ @@ -65,7 +76,7 @@ autoheader_check || DIE=1 die_check $DIE # if no arguments specified then this will be printed -if test -z "$*"; then +if test -z "$*" && test -z "$NOCONFIGURE"; then echo "+ checking for autogen.sh options" echo " This autogen script will automatically run ./configure as:" echo " ./configure $CONFIGURE_DEF_OPT" @@ -76,16 +87,17 @@ fi toplevel_check $srcfile # autopoint -# older autopoint (< 0.12) has a tendency to complain about mkinstalldirs -if test -x mkinstalldirs; then rm mkinstalldirs; fi # first remove patch if necessary, then run autopoint, then reapply if test -f po/Makefile.in.in; then - patch -p0 -R < common/gettext.patch + patch -p0 -R --forward < common/gettext.patch fi -tool_run "$autopoint --force" +tool_run "$autopoint" "--force" "patch -p0 < common/gettext.patch" patch -p0 < common/gettext.patch +# aclocal +if test -f acinclude.m4; then rm acinclude.m4; fi + tool_run "$libtoolize" "--copy --force" tool_run "$aclocal" "-I m4 -I common/m4 $ACLOCAL_FLAGS" tool_run "$autoheader" @@ -94,21 +106,8 @@ tool_run "$autoheader" echo timestamp > stamp-h.in 2> /dev/null tool_run "$autoconf" -tool_run "$automake" "-a -c" - -# if enable exists, add an -enable option for each of the lines in that file -if test -f enable; then - for a in `cat enable`; do - CONFIGURE_FILE_OPT="--enable-$a" - done -fi - -# if disable exists, add an -disable option for each of the lines in that file -if test -f disable; then - for a in `cat disable`; do - CONFIGURE_FILE_OPT="$CONFIGURE_FILE_OPT --disable-$a" - done -fi +debug "automake: $automake" +tool_run "$automake" "--add-missing --copy" test -n "$NOCONFIGURE" && { echo "+ skipping configure stage for package $package, as requested." @@ -119,12 +118,12 @@ test -n "$NOCONFIGURE" && { cd "$olddir" echo "+ running configure ... " -test ! -z "$CONFIGURE_DEF_OPT" && echo " $srcdir/configure default flags: $CONFIGURE_DEF_OPT" -test ! -z "$CONFIGURE_EXT_OPT" && echo " $srcdir/configure external flags: $CONFIGURE_EXT_OPT" -test ! -z "$CONFIGURE_FILE_OPT" && echo " $srcdir/configure enable/disable flags: $CONFIGURE_FILE_OPT" +test ! -z "$CONFIGURE_DEF_OPT" && echo " default flags: $CONFIGURE_DEF_OPT" +test ! -z "$CONFIGURE_EXT_OPT" && echo " external flags: $CONFIGURE_EXT_OPT" echo -"$srcdir/configure" $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT $CONFIGURE_FILE_OPT || { +echo "$srcdir/configure" $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT +"$srcdir/configure" $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT || { echo " configure failed" exit 1 } diff --git a/common/Makefile.in b/common/Makefile.in index f3ac26718a749f49af7262eb4bc5e674ec07b2df..ec7debd86ebd4b8fa4296d16638966ca5d2d2527 100644 --- a/common/Makefile.in +++ b/common/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,23 +14,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -52,14 +79,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = common -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ChangeLog \ + README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -95,21 +122,28 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -117,9 +151,29 @@ am__can_run_installinfo = \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) @@ -313,6 +367,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -536,22 +591,25 @@ clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -566,57 +624,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -632,12 +645,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -649,15 +657,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -666,6 +670,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -826,22 +845,20 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/common/README b/common/README new file mode 100644 index 0000000000000000000000000000000000000000..83a1b887deafa5f012df0393f87a7e6ee9563173 --- /dev/null +++ b/common/README @@ -0,0 +1,255 @@ +GStreamer @SERIES_VERSION@ + +WHAT IT IS +---------- + +This is GStreamer, a framework for streaming media. + +WHERE TO START +-------------- + +We have a website at +http://gstreamer.freedesktop.org/ + +You should start by going through our FAQ at +http://gstreamer.freedesktop.org/data/doc/gstreamer/head/faq/html/ + +There is more documentation; go to +http://gstreamer.freedesktop.org/documentation + +You can subscribe to our mailing lists; see the website for details. + +We track bugs in GNOME's bugzilla; see the website for details. + +You can join us on IRC - #gstreamer on irc.freenode.org + +GStreamer 1.0 series +-------------------- + +Starring + + GSTREAMER + +The core around which all other modules revolve. Base functionality and +libraries, some essential elements, documentation, and testing. + + BASE + +A well-groomed and well-maintained collection of GStreamer plug-ins and +elements, spanning the range of possible types of elements one would want +to write for GStreamer. + +And introducing, for the first time ever, on the development screen ... + + THE GOOD + + --- "Such ingratitude. After all the times I've saved your life." + +A collection of plug-ins you'd want to have right next to you on the +battlefield. Shooting sharp and making no mistakes, these plug-ins have it +all: good looks, good code, and good licensing. Documented and dressed up +in tests. If you're looking for a role model to base your own plug-in on, +here it is. + +If you find a plot hole or a badly lip-synced line of code in them, +let us know - it is a matter of honour for us to ensure Blondie doesn't look +like he's been walking 100 miles through the desert without water. + + THE UGLY + + --- "When you have to shoot, shoot. Don't talk." + +There are times when the world needs a color between black and white. +Quality code to match the good's, but two-timing, backstabbing and ready to +sell your freedom down the river. These plug-ins might have a patent noose +around their neck, or a lock-up license, or any other problem that makes you +think twice about shipping them. + +We don't call them ugly because we like them less. Does a mother love her +son less because he's not as pretty as the other ones ? No - she commends +him on his great personality. These plug-ins are the life of the party. +And we'll still step in and set them straight if you report any unacceptable +behaviour - because there are two kinds of people in the world, my friend: +those with a rope around their neck and the people who do the cutting. + + THE BAD + + --- "That an accusation?" + +No perfectly groomed moustache or any amount of fine clothing is going to +cover up the truth - these plug-ins are Bad with a capital B. +They look fine on the outside, and might even appear to get the job done, but +at the end of the day they're a black sheep. Without a golden-haired angel +to watch over them, they'll probably land in an unmarked grave at the final +showdown. + +Don't bug us about their quality - exercise your Free Software rights, +patch up the offender and send us the patch on the fastest steed you can +steal from the Confederates. Because you see, in this world, there's two +kinds of people, my friend: those with loaded guns and those who dig. +You dig. + +The Lowdown +----------- + + --- "I've never seen so many plug-ins wasted so badly." + +GStreamer Plug-ins has grown so big that it's hard to separate the wheat from +the chaff. Also, distributors have brought up issues about the legal status +of some of the plug-ins we ship. To remedy this, we've divided the previous +set of available plug-ins into four modules: + +- gst-plugins-base: a small and fixed set of plug-ins, covering a wide range + of possible types of elements; these are continuously kept up-to-date + with any core changes during the development series. + + - We believe distributors can safely ship these plug-ins. + - People writing elements should base their code on these elements. + - These elements come with examples, documentation, and regression tests. + +- gst-plugins-good: a set of plug-ins that we consider to have good quality + code, correct functionality, our preferred license (LGPL for the plug-in + code, LGPL or LGPL-compatible for the supporting library). + + - We believe distributors can safely ship these plug-ins. + - People writing elements should base their code on these elements. + +- gst-plugins-ugly: a set of plug-ins that have good quality and correct + functionality, but distributing them might pose problems. The license + on either the plug-ins or the supporting libraries might not be how we'd + like. The code might be widely known to present patent problems. + + - Distributors should check if they want/can ship these plug-ins. + - People writing elements should base their code on these elements. + +- gst-plugins-bad: a set of plug-ins that aren't up to par compared to the + rest. They might be close to being good quality, but they're missing + something - be it a good code review, some documentation, a set of tests, + a real live maintainer, or some actual wide use. + If the blanks are filled in they might be upgraded to become part of + either gst-plugins-good or gst-plugins-ugly, depending on the other factors. + + - If the plug-ins break, you can't complain - instead, you can fix the + problem and send us a patch, or bribe someone into fixing them for you. + - New contributors can start here for things to work on. + +PLATFORMS +--------- + +- Linux is of course fully supported +- FreeBSD is reported to work; other BSDs should work too +- Solaris is reported to work; a specific sunaudiosink plugin has been written +- MacOSX works, binary 1.x packages can be built using the cerbero build tool +- Windows works; binary 1.x packages can be built using the cerbero build tool + - MSys/MinGW builds + - Microsoft Visual Studio builds are not yet available or supported +- Android works, binary 1.x packages can be built using the cerbero build tool +- iOS works + +INSTALLING FROM PACKAGES +------------------------ + +You should always prefer installing from packages first. GStreamer is +well-maintained for a number of distributions, including Fedora, Debian, +Ubuntu, Mandrake, Gentoo, ... + +Only in cases where you: +- want to hack on GStreamer +- want to verify that a bug has been fixed +- do not have a sane distribution +should you choose to build from source tarballs or git. + +Find more information about the various packages at +http://gstreamer.freedesktop.org/download/ + +COMPILING FROM SOURCE TARBALLS +------------------------------ + +- again, make sure that you really need to install from source ! + If GStreamer is one of your first projects ever that you build from source, + consider taking on an easier project. + +- check output of ./configure --help to see if any options apply to you +- run + ./configure + make + + to build GStreamer. +- if you want to install it (not required, but what you usually want to do), run + make install + +- try out a simple test: + gst-launch -v fakesrc num_buffers=5 ! fakesink + (If you didn't install GStreamer, prefix gst-launch with tools/) + + If it outputs a bunch of messages from fakesrc and fakesink, everything is + ok. + + If it did not work, keep in mind that you might need to adjust the + PATH and/or LD_LIBRARY_PATH environment variables to make the system + find GStreamer in the prefix where you installed (by default that is /usr/local). + +- After this, you're ready to install gst-plugins, which will provide the + functionality you're probably looking for by now, so go on and read + that README. + +COMPILING FROM GIT +------------------ + +When building from git sources, you will need to run autogen.sh to generate +the build system files. + +You will need a set of additional tools typical for building from git, +including: +- autoconf +- automake +- libtool + +autogen.sh will check for recent enough versions and complain if you don't have +them. You can also specify specific versions of automake and autoconf with +--with-automake and --with-autoconf + +Check autogen.sh options by running autogen.sh --help + +autogen.sh can pass on arguments to configure + +When you have done this once, you can use autoregen.sh to re-autogen with +the last passed options as a handy shortcut. Use it. + +After the autogen.sh stage, you can follow the directions listed in +"COMPILING FROM SOURCE" + +You can also run your whole git stack uninstalled in your home directory, +so that you can quickly test changes without affecting your system setup or +interfering with GStreamer installed from packages. Many GStreamer developers +use an uninstalled setup for their work. + +There is a 'create-uninstalled-setup.sh' script in + + http://cgit.freedesktop.org/gstreamer/gstreamer/tree/scripts/ + +to easily create an uninstalled setup from scratch. + + +PLUG-IN DEPENDENCIES AND LICENSES +--------------------------------- + +GStreamer is developed under the terms of the LGPL (see LICENSE file for +details). Some of our plug-ins however rely on libraries which are available +under other licenses. This means that if you are distributing an application +which has a non-GPL compatible license (for instance a closed-source +application) with GStreamer, you have to make sure not to distribute GPL-linked +plug-ins. + +When using GPL-linked plug-ins, GStreamer is for all practical reasons +under the GPL itself. + +HISTORY +------- + +The fundamental design comes from the video pipeline at Oregon Graduate +Institute, as well as some ideas from DirectMedia. It's based on plug-ins that +will provide the various codec and other functionality. The interface +hopefully is generic enough for various companies (ahem, Apple) to release +binary codecs for Linux, until such time as they get a clue and release the +source. diff --git a/common/c-to-xml.py b/common/c-to-xml.py index 397c112b8d90bf689994a859ef113e984c07d9aa..7a7a35bca803fd84e2d53bb2b6ea58325d0d73f6 100644 --- a/common/c-to-xml.py +++ b/common/c-to-xml.py @@ -5,6 +5,8 @@ Convert a C program to valid XML to be included in docbook """ +from __future__ import print_function, unicode_literals + import sys import os from xml.sax import saxutils @@ -22,13 +24,13 @@ def main(): content = open(source, "r").read() # print header - print '<?xml version="1.0"?>' - print '<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">' - print - print '<programlisting>' + print ('<?xml version="1.0"?>') + print ('<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">') + print () + print ('<programlisting>') # print content - print saxutils.escape(content).encode('UTF-8') - print '</programlisting>' + print (saxutils.escape(content)) + print ('</programlisting>') main() diff --git a/common/check.mak b/common/check.mak index 0aec84307207348653f8d1c696ac1343d55879d5..285876cb4dce24c818db0711d8e9c0076160c3b2 100644 --- a/common/check.mak +++ b/common/check.mak @@ -11,7 +11,7 @@ check-valgrind: @true endif -LOOPS = 10 +LOOPS ?= 10 # run any given test by running make test.check # if the test fails, run it again at at least debug level 2 @@ -74,6 +74,17 @@ LOOPS = 10 --gen-suppressions=all \ ./$* 2>&1 | tee suppressions.log +# valgrind torture any given test +%.valgrind-torture: % + @for i in `seq 1 $(LOOPS)`; do \ + $(MAKE) $*.valgrind || \ + (echo "Failure after $$i runs"; exit 1) || \ + exit 1; \ + done + @banner="All $(LOOPS) loops passed"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo $$dashes; echo $$banner; echo $$dashes + # valgrind any given test until failure by running make test.valgrind-forever %.valgrind-forever: % @while $(MAKE) $*.valgrind; do \ @@ -86,9 +97,34 @@ LOOPS = 10 $(LIBTOOL) --mode=execute \ gdb $* +%.lcov-reset: + $(MAKE) $*.lcov-run + $(MAKE) $*.lcov-report + +%.lcov: % + $(MAKE) $*.lcov-reset + +if GST_GCOV_ENABLED +%.lcov-clean: + $(MAKE) -C $(top_builddir) lcov-clean + +%.lcov-run: + $(MAKE) $*.lcov-clean + $(MAKE) $*.check + +%.lcov-report: + $(MAKE) -C $(top_builddir) lcov-report +else +%.lcov-run: + echo "Need to reconfigure with --enable-gcov" + +%.lcov-report: + echo "Need to reconfigure with --enable-gcov" +endif + # torture tests torture: $(TESTS) - -rm test-registry.xml + -rm test-registry.* @echo "Torturing tests ..." @for i in `seq 1 $(LOOPS)`; do \ $(MAKE) check || \ @@ -101,7 +137,7 @@ torture: $(TESTS) # forever tests forever: $(TESTS) - -rm test-registry.xml + -rm test-registry.* @echo "Forever tests ..." @while true; do \ $(MAKE) check || \ @@ -127,6 +163,29 @@ valgrind: $(TESTS) false; \ fi +# valgrind all tests until failure +valgrind-forever: $(TESTS) + -rm test-registry.* + @echo "Forever valgrinding tests ..." + @while true; do \ + $(MAKE) valgrind || \ + (echo "Failure"; exit 1) || \ + exit 1; \ + done + +# valgrind torture all tests +valgrind-torture: $(TESTS) + -rm test-registry.* + @echo "Torturing and valgrinding tests ..." + @for i in `seq 1 $(LOOPS)`; do \ + $(MAKE) valgrind || \ + (echo "Failure after $$i runs"; exit 1) || \ + exit 1; \ + done + @banner="All $(LOOPS) loops passed"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo $$dashes; echo $$banner; echo $$dashes + # valgrind all tests and generate suppressions valgrind.gen-suppressions: $(TESTS) @echo "Valgrinding tests ..." @@ -166,10 +225,13 @@ help: @echo "make (dir)/(test).gdb -- start up gdb for the given test" @echo @echo "make valgrind -- valgrind all tests" + @echo "make valgrind-forever -- valgrind all tests forever" + @echo "make valgrind-torture -- valgrind all tests $(LOOPS) times" @echo "make valgrind.gen-suppressions -- generate suppressions for all tests" @echo " and save to suppressions.log" @echo "make (dir)/(test).valgrind -- valgrind the given test" @echo "make (dir)/(test).valgrind-forever -- valgrind the given test forever" + @echo "make (dir)/(test).valgrind-torture -- valgrind the given test $(LOOPS) times" @echo "make (dir)/(test).valgrind.gen-suppressions -- generate suppressions" @echo " and save to suppressions.log" @echo "make inspect -- inspect all plugin features" diff --git a/common/coverage/coverage-report-entry.pl b/common/coverage/coverage-report-entry.pl index 51c506c9cf1e5d5307c03304b082303f16c99d6f..d0036b328109f1c66eba8aaeac1396959bee3a4d 100644 --- a/common/coverage/coverage-report-entry.pl +++ b/common/coverage/coverage-report-entry.pl @@ -14,7 +14,7 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA print <<EOF; diff --git a/common/coverage/coverage-report.pl b/common/coverage/coverage-report.pl index ed30f8d7b3dc2dd5073a0c61c41a154f7152107b..18bd6f1ba3468e65a48bfc2bdd0fc6b7ce7e4277 100644 --- a/common/coverage/coverage-report.pl +++ b/common/coverage/coverage-report.pl @@ -14,7 +14,7 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA use warnings; use strict; diff --git a/common/coverage/coverage-report.xsl b/common/coverage/coverage-report.xsl index b19ebb638b5e906089116b934a4e2750dc5fa23a..3fe124b5c5e48050947ed00a4731cbc9b2dda4ca 100644 --- a/common/coverage/coverage-report.xsl +++ b/common/coverage/coverage-report.xsl @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> diff --git a/common/coverage/lcov.mak b/common/coverage/lcov.mak index fc1f6b2970993964c74f8a6ce3f1f85585a86c44..b45728a1316ce208cc76e458882ac19b882652b9 100644 --- a/common/coverage/lcov.mak +++ b/common/coverage/lcov.mak @@ -1,5 +1,5 @@ ## .PHONY so it always rebuilds it -.PHONY: lcov-reset lcov lcov-run lcov-report lcov-upload +.PHONY: lcov-reset lcov lcov-run lcov-report lcov-upload lcov-clean # run lcov from scratch, always lcov-reset: @@ -11,10 +11,14 @@ lcov: $(MAKE) lcov-reset if GST_GCOV_ENABLED -# reset run coverage tests -lcov-run: +# reset lcov stats +lcov-clean: @-rm -rf lcov lcov --directory . --zerocounters + +# reset run coverage tests +lcov-run: + -$(MAKE) lcov-clean -if test -d tests/check; then $(MAKE) -C tests/check inspect; fi -$(MAKE) check diff --git a/common/gst.supp b/common/gst.supp index d7f896103c08e53ad62f0cbc793c37bec719d8d6..05ecbb9d6599198943fc66bcb85f5322f07e503e 100644 --- a/common/gst.supp +++ b/common/gst.supp @@ -3961,3 +3961,18 @@ fun:gst_system_clock_init } +{ + <glib types are singletons> + Memcheck:Leak + fun:calloc + ... + fun:gobject_init_ctor +} + +{ + <quark table is leaked on purpose if it grows too big> + Memcheck:Leak + fun:malloc + ... + fun:g_quark_from*_string +} diff --git a/common/gstdoc-scangobj b/common/gstdoc-scangobj index 0d69a865c168a3e78cfbd473f9ee363d8c9b7b5d..09039a56c36d00767a61af321e837ba3fa1aeae0 100755 --- a/common/gstdoc-scangobj +++ b/common/gstdoc-scangobj @@ -16,7 +16,7 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # @@ -307,10 +307,10 @@ get_object_types (void) /* output element data */ fputs (" <element>\\n", inspect); fputs (xmlprint(6, "name", gst_plugin_feature_get_name (feature)),inspect); - fputs (xmlprint(6, "longname", gst_element_factory_get_longname (factory)),inspect); - fputs (xmlprint(6, "class", gst_element_factory_get_klass (factory)),inspect); - fputs (xmlprint(6, "description", gst_element_factory_get_description (factory)),inspect); - fputs (xmlprint(6, "author", gst_element_factory_get_author (factory)),inspect); + fputs (xmlprint(6, "longname", gst_element_factory_get_metadata (factory, GST_ELEMENT_METADATA_LONGNAME)),inspect); + fputs (xmlprint(6, "class", gst_element_factory_get_metadata (factory, GST_ELEMENT_METADATA_KLASS)),inspect); + fputs (xmlprint(6, "description", gst_element_factory_get_metadata (factory, GST_ELEMENT_METADATA_DESCRIPTION)),inspect); + fputs (xmlprint(6, "author", gst_element_factory_get_metadata (factory, GST_ELEMENT_METADATA_AUTHOR)),inspect); fputs (" <pads>\\n", inspect); /* output pad-template data */ @@ -354,11 +354,11 @@ get_object_types (void) factory = GST_ELEMENT_FACTORY (l->data); type = gst_element_factory_get_element_type (factory); if (type != 0) { - $debug_log ("adding type for factory %s", gst_element_factory_get_longname (factory)); + $debug_log ("adding type for factory %s", gst_element_factory_get_metadata (factory, GST_ELEMENT_METADATA_LONGNAME)); object_types[i++] = type; } else { g_message ("type info for factory %s not found", - gst_element_factory_get_longname (factory)); + gst_element_factory_get_metadata (factory, GST_ELEMENT_METADATA_LONGNAME)); } l = g_list_next (l); } diff --git a/common/gtk-doc-plugins.mak b/common/gtk-doc-plugins.mak index 2468cb0833ae69e1fc61b572c0805bf9e2ac93e0..f19e7d7edbd3b99d427b55292fee3987b00cc377 100644 --- a/common/gtk-doc-plugins.mak +++ b/common/gtk-doc-plugins.mak @@ -94,9 +94,9 @@ all-local: html-build.stamp INSPECT_REGISTRY=$(top_builddir)/docs/plugins/inspect-registry.xml INSPECT_ENVIRONMENT=\ LC_ALL=C \ - GST_PLUGIN_SYSTEM_PATH= \ - GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(top_builddir)/plugins:$(top_builddir)/src:$(top_builddir)/gnl \ - GST_REGISTRY=$(INSPECT_REGISTRY) \ + GST_PLUGIN_SYSTEM_PATH_1_0= \ + GST_PLUGIN_PATH_1_0=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(top_builddir)/plugins:$(top_builddir)/src:$(top_builddir)/gnl \ + GST_REGISTRY_1_0=$(INSPECT_REGISTRY) \ PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \ $(INSPECT_EXTRA_ENVIRONMENT) @@ -222,10 +222,7 @@ html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ - cd html && gtkdoc-mkhtml $$mkhtml_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) - @mv html/index.sgml html/index.sgml.bak - @$(SED) "s/ href=\"$(DOC_MODULE)\// href=\"$(DOC_MODULE)-@GST_API_VERSION@\//g" html/index.sgml.bak >html/index.sgml - @rm -f html/index.sgml.bak + cd html && gtkdoc-mkhtml $$mkhtml_options $(DOC_MODULE)-@GST_API_VERSION@ $(DOC_MAIN_SGML_FILE) @rm -f html/$(DOC_MAIN_SGML_FILE) @rm -rf html/xml @rm -f html/version.entities @@ -289,9 +286,9 @@ install-data-local: $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \ done; \ fi; \ - echo '-- Installing $(builddir)/html/$(DOC_MODULE).devhelp2' ; \ - if test -e $(builddir)/html/$(DOC_MODULE).devhelp2; then \ - $(INSTALL_DATA) $(builddir)/html/$(DOC_MODULE).devhelp2 \ + echo '-- Installing $(builddir)/html/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2' ; \ + if test -e $(builddir)/html/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2; then \ + $(INSTALL_DATA) $(builddir)/html/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2 \ $(DESTDIR)$(TARGET_DIR)/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) || true ; \ diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak index a1e07dc883be519a7d6f9ecbabf3d5955aae8a16..9d76889e4e7311693529c1b31611c39f03b56926 100644 --- a/common/gtk-doc.mak +++ b/common/gtk-doc.mak @@ -81,9 +81,9 @@ scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) --ignore-headers="$(IGNORE_HFILES)" @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null; then \ echo " DOC Introspecting gobjects"; \ - GST_PLUGIN_SYSTEM_PATH=`cd $(top_builddir) && pwd` \ - GST_PLUGIN_PATH= \ - GST_REGISTRY=doc-registry.xml \ + GST_PLUGIN_SYSTEM_PATH_1_0=`cd $(top_builddir) && pwd` \ + GST_PLUGIN_PATH_1_0= \ + GST_REGISTRY_1_0=doc-registry.xml \ $(GTKDOC_EXTRA_ENVIRONMENT) \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" \ CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" \ @@ -130,10 +130,7 @@ html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) if test "$(?)" = "0"; then \ mkhtml_options=--path="$(abs_srcdir)"; \ fi; \ - cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) - @mv html/index.sgml html/index.sgml.bak - @$(SED) "s/ href=\"$(DOC_MODULE)\// href=\"$(DOC_MODULE)-@GST_API_VERSION@\//g" html/index.sgml.bak >html/index.sgml - @rm -f html/index.sgml.bak + cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE)-@GST_API_VERSION@ ../$(DOC_MAIN_SGML_FILE) @rm -rf html/xml @rm -f version.entities @test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) $(abs_builddir)/html ) @@ -189,9 +186,9 @@ install-data-local: echo '-- Installing '$$i ; \ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \ done; \ - echo '-- Installing $(builddir)/html/$(DOC_MODULE).devhelp2' ; \ - if test -e $(builddir)/html/$(DOC_MODULE).devhelp2; then \ - $(INSTALL_DATA) $(builddir)/html/$(DOC_MODULE).devhelp2 \ + echo '-- Installing $(builddir)/html/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2' ; \ + if test -e $(builddir)/html/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2; then \ + $(INSTALL_DATA) $(builddir)/html/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2 \ $(DESTDIR)$(TARGET_DIR)/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) || true ; \ diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in index 69cb5c179f1de2315eba4c3c71010efb9ab7f29b..4a32e81a751a2548cd4b7c93bac3cc60865bf51e 100644 --- a/common/m4/Makefile.in +++ b/common/m4/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,23 +14,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -52,14 +79,13 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = common/m4 -DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -95,12 +121,18 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ @@ -108,6 +140,7 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) AALIB_CFLAGS = @AALIB_CFLAGS@ AALIB_CONFIG = @AALIB_CONFIG@ @@ -273,6 +306,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -514,11 +548,11 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -tags: TAGS -TAGS: +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -654,15 +688,16 @@ uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/common/m4/as-docbook.m4 b/common/m4/as-docbook.m4 index 8a1b32a99e3112614d116305ead6d0b0510c8b61..2e270504b45b360c9cf87625cf4125981caecb6d 100644 --- a/common/m4/as-docbook.m4 +++ b/common/m4/as-docbook.m4 @@ -14,7 +14,19 @@ AC_DEFUN([AS_DOCBOOK], TYPE_UC=XML DOCBOOK_VERSION=4.1.2 - if test ! -f /etc/xml/catalog; then + if test -n "$XML_CATALOG_FILES"; then + oldIFS=$IFS + IFS=' ' + for xml_catalog_file in $XML_CATALOG_FILES; do + if test -f $xml_catalog_file; then + XML_CATALOG=$xml_catalog_file + CAT_ENTRY_START='<!--' + CAT_ENTRY_END='-->' + break + fi + done + IFS=$oldIFS + elif test ! -f /etc/xml/catalog; then for i in /usr/share/sgml/docbook/stylesheet/xsl/nwalsh /usr/share/sgml/docbook/xsl-stylesheets/ /usr/local/share/xsl/docbook ; do if test -d "$i"; then diff --git a/common/m4/gst-check.m4 b/common/m4/gst-check.m4 index cba7e96ef9863998a061f645d392d919d2e37713..42770532e5e12c5043f996c827b2b20b651b9547 100644 --- a/common/m4/gst-check.m4 +++ b/common/m4/gst-check.m4 @@ -266,29 +266,29 @@ AC_DEFUN([AG_GST_CHECK_GST_PLUGINS_BAD], ]) dnl =========================================================================== -dnl AG_GST_CHECK_GST_PLUGINS_FFMPEG([GST-API_VERSION], [MIN-VERSION]) +dnl AG_GST_CHECK_GST_PLUGINS_LIBAV([GST-API_VERSION], [MIN-VERSION]) dnl -dnl Will set GST_PLUGINS_FFMPEG_DIR for use in Makefile.am. Note that this will -dnl only be set in an uninstalled setup, since -ffmpeg ships no .pc file and in +dnl Will set GST_PLUGINS_LIBAV_DIR for use in Makefile.am. Note that this will +dnl only be set in an uninstalled setup, since -libav ships no .pc file and in dnl an installed setup all plugins will be found in GST_PLUGINS_DIR anyway. dnl =========================================================================== -AC_DEFUN([AG_GST_CHECK_GST_PLUGINS_FFMPEG], +AC_DEFUN([AG_GST_CHECK_GST_PLUGINS_LIBAV], [ - AG_GST_CHECK_MODULES(GST_PLUGINS_FFMPEG, gstreamer-plugins-ffmpeg-[$1], [$2], - [GStreamer FFmpeg Plugins], [no]) + AG_GST_CHECK_MODULES(GST_PLUGINS_LIBAV, gstreamer-plugins-libav-[$1], [$2], + [GStreamer Libav Plugins], [no]) - if test "x$HAVE_GST_PLUGINS_FFMPEG" = "xyes"; then - dnl check for where ffmpeg plugins got installed + if test "x$HAVE_GST_PLUGINS_LIBAV" = "xyes"; then + dnl check for where libav plugins got installed dnl this is used for unit tests dnl allow setting before calling this macro to override - if test -z $GST_PLUGINS_FFMPEG_DIR; then - GST_PLUGINS_FFMPEG_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-plugins-ffmpeg-[$1]` - if test -z $GST_PLUGINS_FFMPEG_DIR; then - AC_MSG_ERROR([no pluginsdir set in GStreamer FFmpeg Plugins pkg-config file]) + if test -z $GST_PLUGINS_LIBAV_DIR; then + GST_PLUGINS_LIBAV_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-plugins-libav-[$1]` + if test -z $GST_PLUGINS_LIBAV_DIR; then + AC_MSG_ERROR([no pluginsdir set in GStreamer Libav Plugins pkg-config file]) fi fi - GST_PLUGINS_FFMPEG_DIR="$GST_PLUGINS_FFMPEG_DIR/ext/ffmpeg" - AC_MSG_NOTICE([using GStreamer FFmpeg Plugins in $GST_PLUGINS_FFMPEG_DIR]) - AC_SUBST(GST_PLUGINS_FFMPEG_DIR) + GST_PLUGINS_LIBAV_DIR="$GST_PLUGINS_LIBAV_DIR/ext/libav" + AC_MSG_NOTICE([using GStreamer Libav Plugins in $GST_PLUGINS_LIBAV_DIR]) + AC_SUBST(GST_PLUGINS_LIBAV_DIR) fi ]) diff --git a/common/m4/gst-doc.m4 b/common/m4/gst-doc.m4 index 871c346e1e1e5f012cdf0bc5f0da2e817c03abc5..5d3f0fd8f51c3f47a52edf5b018bfdc005552765 100644 --- a/common/m4/gst-doc.m4 +++ b/common/m4/gst-doc.m4 @@ -20,34 +20,10 @@ AC_DEFUN([AG_GST_DOCBOOK_CHECK], dnl check for docbook tools AC_CHECK_PROG(HAVE_DOCBOOK2PS, docbook2ps, yes, no) - AC_CHECK_PROG(HAVE_DOCBOOK2HTML, docbook2html, yes, no) + AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, yes, no) AC_CHECK_PROG(HAVE_JADETEX, jadetex, yes, no) AC_CHECK_PROG(HAVE_PS2PDF, ps2pdf, yes, no) - # -V option appeared in 0.6.10 - docbook2html_min_version=0.6.10 - if test "x$HAVE_DOCBOOK2HTML" != "xno"; then - docbook2html_version=`docbook2html --version` - AC_MSG_CHECKING([docbook2html version ($docbook2html_version) >= $docbook2html_min_version]) - if perl -w <<EOF - (\$min_version_major, \$min_version_minor, \$min_version_micro ) = "$docbook2html_min_version" =~ /(\d+)\.(\d+)\.(\d+)/; - (\$docbook2html_version_major, \$docbook2html_version_minor, \$docbook2html_version_micro ) = "$docbook2html_version" =~ /(\d+)\.(\d+)\.(\d+)/; - exit (((\$docbook2html_version_major > \$min_version_major) || - ((\$docbook2html_version_major == \$min_version_major) && - (\$docbook2html_version_minor >= \$min_version_minor)) || - ((\$docbook2html_version_major == \$min_version_major) && - (\$docbook2html_version_minor >= \$min_version_minor) && - (\$docbook2html_version_micro >= \$min_version_micro))) - ? 0 : 1); -EOF - then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - HAVE_DOCBOOK2HTML=no - fi - fi - dnl check if we can process docbook stuff AS_DOCBOOK(have_docbook=yes, have_docbook=no) @@ -55,45 +31,14 @@ EOF AC_CHECK_PROG(HAVE_DVIPS, dvips, yes, no) AC_CHECK_PROG(HAVE_XMLLINT, xmllint, yes, no) - dnl check for image conversion tools - AC_CHECK_PROG(HAVE_FIG2DEV, fig2dev, yes, no) - if test "x$HAVE_FIG2DEV" = "xno" ; then - AC_MSG_WARN([Did not find fig2dev (from xfig), images will not be generated.]) - fi - - dnl The following is a hack: if fig2dev doesn't display an error message - dnl for the desired type, we assume it supports it. - HAVE_FIG2DEV_EPS=no - if test "x$HAVE_FIG2DEV" = "xyes" ; then - fig2dev_quiet=`fig2dev -L eps </dev/null 2>&1 >/dev/null` - if test "x$fig2dev_quiet" = "x" ; then - HAVE_FIG2DEV_EPS=yes - fi - fi - HAVE_FIG2DEV_PNG=no - if test "x$HAVE_FIG2DEV" = "xyes" ; then - fig2dev_quiet=`fig2dev -L png </dev/null 2>&1 >/dev/null` - if test "x$fig2dev_quiet" = "x" ; then - HAVE_FIG2DEV_PNG=yes - fi - fi - HAVE_FIG2DEV_PDF=no - if test "x$HAVE_FIG2DEV" = "xyes" ; then - fig2dev_quiet=`fig2dev -L pdf </dev/null 2>&1 >/dev/null` - if test "x$fig2dev_quiet" = "x" ; then - HAVE_FIG2DEV_PDF=yes - fi - fi - AC_CHECK_PROG(HAVE_PNGTOPNM, pngtopnm, yes, no) AC_CHECK_PROG(HAVE_PNMTOPS, pnmtops, yes, no) AC_CHECK_PROG(HAVE_EPSTOPDF, epstopdf, yes, no) dnl check if we can generate HTML - if test "x$HAVE_DOCBOOK2HTML" = "xyes" && \ + if test "x$HAVE_XSLTPROC" = "xyes" && \ test "x$enable_docbook" = "xyes" && \ - test "x$HAVE_XMLLINT" = "xyes" && \ - test "x$HAVE_FIG2DEV_PNG" = "xyes"; then + test "x$HAVE_XMLLINT" = "xyes"; then DOC_HTML=yes AC_MSG_NOTICE(Will output HTML documentation) else @@ -106,7 +51,6 @@ EOF test "x$enable_docbook" = "xyes" && \ test "x$HAVE_XMLLINT" = "xyes" && \ test "x$HAVE_JADETEX" = "xyes" && \ - test "x$HAVE_FIG2DEV_EPS" = "xyes" && \ test "x$HAVE_DVIPS" = "xyes" && \ test "x$HAVE_PNGTOPNM" = "xyes" && \ test "x$HAVE_PNMTOPS" = "xyes"; then diff --git a/common/m4/gst-glib2.m4 b/common/m4/gst-glib2.m4 index 3f3d565628e35845ae2250089efeddf31d844fef..9a3a92339e2fb24e89a58366dc83989ef30a3c32 100644 --- a/common/m4/gst-glib2.m4 +++ b/common/m4/gst-glib2.m4 @@ -16,7 +16,7 @@ AC_DEFUN([AG_GST_GLIB_CHECK], dnl Check for glib with everything AG_GST_PKG_CHECK_MODULES(GLIB, - glib-2.0 >= $GLIB_REQ gobject-2.0 gthread-2.0 gmodule-no-export-2.0) + glib-2.0 >= $GLIB_REQ gobject-2.0 gmodule-no-export-2.0) if test "x$HAVE_GLIB" = "xno"; then AC_MSG_ERROR([This package requires GLib >= $GLIB_REQ to compile.]) @@ -28,7 +28,7 @@ AC_DEFUN([AG_GST_GLIB_CHECK], GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_THREADS_MANDATORY" dnl Define G_DISABLE_DEPRECATED for GIT versions - if test "x$PACKAGE_VERSION_NANO" = "x1"; then + if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_DEPRECATED" fi @@ -39,7 +39,7 @@ AC_DEFUN([AG_GST_GLIB_CHECK], if test "x$enable_gobject_cast_checks" = "xauto"; then dnl For releases, turn off the cast checks - if test "x$PACKAGE_VERSION_NANO" = "x1"; then + if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then enable_gobject_cast_checks=yes else enable_gobject_cast_checks=no @@ -57,7 +57,7 @@ AC_DEFUN([AG_GST_GLIB_CHECK], if test "x$enable_glib_assertions" = "xauto"; then dnl For releases, turn off the assertions - if test "x$PACKAGE_VERSION_NANO" = "x1"; then + if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then enable_glib_assertions=yes else enable_glib_assertions=no diff --git a/common/m4/gst-plugin-docs.m4 b/common/m4/gst-plugin-docs.m4 index dcfd61d867e69bfcf2b331eba06ccbc8bb649655..0e2ab6e3d0374f2ac4e8c6b6795368c3082c5d7c 100644 --- a/common/m4/gst-plugin-docs.m4 +++ b/common/m4/gst-plugin-docs.m4 @@ -1,4 +1,4 @@ -dnl AG_GST_PLUGIN_DOCS([MINIMUM-GTK-DOC-VERSION],[MINIMUM-PYTHON-VERSION]) +dnl AG_GST_PLUGIN_DOCS([MINIMUM-GTK-DOC-VERSION]) dnl dnl checks for prerequisites for the common/mangle-tmpl.py script dnl used when building the plugin documentation @@ -6,13 +6,17 @@ dnl used when building the plugin documentation AC_DEFUN([AG_GST_PLUGIN_DOCS], [ AC_BEFORE([GTK_DOC_CHECK],[$0])dnl check for gtk-doc first - AC_BEFORE([AS_PATH_PYTHON],[$1])dnl find python first + AC_REQUIRE([AM_PATH_PYTHON])dnl find python first build_plugin_docs=no AC_MSG_CHECKING([whether to build plugin documentation]) if test x$enable_gtk_doc = xyes; then - build_plugin_docs=yes - AC_MSG_RESULT([yes]) + if test x$PYTHON != x; then + build_plugin_docs=yes + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no (python not found)]) + fi else AC_MSG_RESULT([no (gtk-doc disabled or not available)]) fi diff --git a/common/mangle-tmpl.py b/common/mangle-tmpl.py index bd4f948edfe58936c75280b9b30088c9275d48ad..51ea8c2e59779ed09dee8a75203d6d0168c1e0fa 100644 --- a/common/mangle-tmpl.py +++ b/common/mangle-tmpl.py @@ -15,6 +15,8 @@ insert/overwrite Short Description and Long Description # read in inspect/*.xml # for every tmpl/element-(name).xml: mangle with details from element +from __future__ import print_function, unicode_literals + import glob import re import sys diff --git a/common/scangobj-merge.py b/common/scangobj-merge.py index 9a1cac90ddd4f5e07f492fb7d16079d00cd11566..4a9f1fc764b1ecd64ededfc276be39db5f5edfff 100755 --- a/common/scangobj-merge.py +++ b/common/scangobj-merge.py @@ -6,6 +6,8 @@ parse, merge and write gstdoc-scanobj files """ +from __future__ import print_function, unicode_literals + import sys import os @@ -76,13 +78,13 @@ class Object: return "<Object %s>" % self.name def add_signal(self, signal, overwrite=True): - if not overwrite and self._signals.has_key(signal.name): - raise IndexError, "signal %s already in %r" % (signal.name, self) + if not overwrite and signal.name in self._signals: + raise IndexError("signal %s already in %r" % (signal.name, self)) self._signals[signal.name] = signal def add_arg(self, arg, overwrite=True): - if not overwrite and self._args.has_key(arg.name): - raise IndexError, "arg %s already in %r" % (arg.name, self) + if not overwrite and arg.name in self._args: + raise IndexError("arg %s already in %r" % (arg.name, self)) self._args[arg.name] = arg class Docable: @@ -106,7 +108,7 @@ class GDoc: lines = open(filename).readlines() self.load_data("".join(lines)) except IOError: - print "WARNING - could not read from %s" % filename + print ("WARNING - could not read from %s" % filename) def save_file(self, filename, backup=False): """ @@ -117,7 +119,7 @@ class GDoc: lines = open(filename).readlines() olddata = "".join(lines) except IOError: - print "WARNING - could not read from %s" % filename + print ("WARNING - could not read from %s" % filename) newdata = self.get_data() if olddata and olddata == newdata: return @@ -161,7 +163,7 @@ class Signals(GDoc): o = nmatch.group('object') debug("Found object", o) debug("Found signal", nmatch.group('signal')) - if not self._objects.has_key(o): + if o not in self._objects: object = Object(o) self._objects[o] = object @@ -222,7 +224,7 @@ class Args(GDoc): o = nmatch.group('object') debug("Found object", o) debug("Found arg", nmatch.group('arg')) - if not self._objects.has_key(o): + if o not in self._objects: object = Object(o) self._objects[o] = object @@ -233,7 +235,7 @@ class Args(GDoc): arg = Arg(**dict) self._objects[o].add_arg(arg) else: - print "ERROR: could not match arg from block %s" % block + print ("ERROR: could not match arg from block %s" % block) def get_data(self): lines = [] diff --git a/common/win32.mak b/common/win32.mak index c343a04953ecbdf8f515915a469e72818bc72404..30e347e0bdac626b879d117c15bc5752453aa7c8 100644 --- a/common/win32.mak +++ b/common/win32.mak @@ -51,11 +51,17 @@ check-exports: if test $$fail != 0; then \ echo '-----------------------------------------------------------'; \ echo 'Run this to update the .def files:'; \ - echo 'make check-exports 2>&1 | patch -p1'; \ + echo 'make update-exports'; \ echo '-----------------------------------------------------------'; \ fi; \ exit $$fail +update-exports: + make check-exports 2>&1 | patch -p1 + git add win32/common/libgst*.def + git diff --cached -- win32/common/ + echo '^^^--- updated and staged changes above' + # complain about nonportable printf format strings (%lld, %llu, %zu etc.) check-nonportable-print-format: @fail=0 ; \ diff --git a/compile b/compile index 862a14e8c81cca0faa2c7b32ce7ca80777afd88a..b1f4749152a70326fda249f12dbcf90da29348ab 100755 --- a/compile +++ b/compile @@ -1,7 +1,7 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-03-05.13; # UTC +scriptversion=2012-01-04.17; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free # Software Foundation, Inc. @@ -79,48 +79,6 @@ 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 - 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 () @@ -151,34 +109,43 @@ 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*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" + 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" shift ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; -L*) - func_cl_dashL "${1#-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" ;; -static) shared=false diff --git a/config.h.in b/config.h.in index 6dee8b5f270b69e11e816722afc144d45a2d6d4c..bd812ee6f260d5a35b85c501dc5921e808547d88 100644 --- a/config.h.in +++ b/config.h.in @@ -85,6 +85,9 @@ the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE +/* Define to 1 if you have the `clock_gettime' function. */ +#undef HAVE_CLOCK_GETTIME + /* Define to 1 if you have the `cosh' function. */ #undef HAVE_COSH @@ -134,6 +137,10 @@ */ #undef HAVE_DCGETTEXT +/* Define to 1 if you have the declaration of `V4L2_MEMORY_DMABUF', and to 0 + if you don't. */ +#undef HAVE_DECL_V4L2_MEMORY_DMABUF + /* Define to enable DirectSound plug-in (used by directsoundsink). */ #undef HAVE_DIRECTSOUND @@ -221,9 +228,6 @@ /* Define to enable Portable Network Graphics library (used by png). */ #undef HAVE_LIBPNG -/* soup gnome integration */ -#undef HAVE_LIBSOUP_GNOME - /* Whether libv4l2 is available for video buffer conversion */ #undef HAVE_LIBV4L2 @@ -329,6 +333,12 @@ /* Defined if the VP8 encoder is available */ #undef HAVE_VP8_ENCODER +/* Defined if the VP9 decoder is available */ +#undef HAVE_VP9_DECODER + +/* Defined if the VP9 encoder is available */ +#undef HAVE_VP9_ENCODER + /* Define to enable VPX decoder (used by vpx). */ #undef HAVE_VPX @@ -360,9 +370,6 @@ */ #undef LT_OBJDIR -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - /* Name of package */ #undef PACKAGE diff --git a/config.sub b/config.sub index 6205f8423d6aa0bb7c642d8970fa7b41d068317f..c894da45500c4af1bf5688e713a8895622d18182 100755 --- a/config.sub +++ b/config.sub @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. -timestamp='2012-04-18' +timestamp='2012-02-10' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -225,12 +225,6 @@ 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 ;; @@ -1543,9 +1537,6 @@ case $basic_machine in c4x-* | tic4x-*) os=-coff ;; - hexagon-*) - os=-elf - ;; tic54x-*) os=-coff ;; diff --git a/configure b/configure index 3babb7e79431bc67240e86748bd6f1d26e050c33..dd721b1422b2b77356f50519e0fc140f8bbfa129 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.0.10. +# Generated by GNU Autoconf 2.69 for GStreamer Good Plug-ins 1.1.90. # # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>. # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='GStreamer Good Plug-ins' PACKAGE_TARNAME='gst-plugins-good' -PACKAGE_VERSION='1.0.10' -PACKAGE_STRING='GStreamer Good Plug-ins 1.0.10' +PACKAGE_VERSION='1.1.90' +PACKAGE_STRING='GStreamer Good Plug-ins 1.1.90' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer' PACKAGE_URL='' @@ -846,6 +846,8 @@ USE_PLUGIN_EQUALIZER_FALSE USE_PLUGIN_EQUALIZER_TRUE USE_PLUGIN_EFFECTV_FALSE USE_PLUGIN_EFFECTV_TRUE +USE_PLUGIN_DTMF_FALSE +USE_PLUGIN_DTMF_TRUE USE_PLUGIN_DEINTERLACE_FALSE USE_PLUGIN_DEINTERLACE_TRUE USE_PLUGIN_DEBUGUTILS_FALSE @@ -934,6 +936,7 @@ GST_HAVE_MMAP_FALSE GST_HAVE_MMAP_TRUE HAVE_GCC_ASM_FALSE HAVE_GCC_ASM_TRUE +LIBRT LIBM ENABLE_PLUGIN_DOCS_FALSE ENABLE_PLUGIN_DOCS_TRUE @@ -1100,10 +1103,6 @@ GST_AGE GST_REVISION GST_CURRENT GST_API_VERSION -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE @@ -1112,6 +1111,10 @@ PACKAGE_VERSION_NANO PACKAGE_VERSION_MICRO PACKAGE_VERSION_MINOR PACKAGE_VERSION_MAJOR +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V am__untar am__tar AMTAR @@ -1188,8 +1191,8 @@ SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking -enable_maintainer_mode enable_silent_rules +enable_maintainer_mode enable_static enable_shared with_pic @@ -1241,6 +1244,7 @@ enable_avi enable_cutter enable_debugutils enable_deinterlace +enable_dtmf enable_effectv enable_equalizer enable_flv @@ -1333,6 +1337,7 @@ CCAS CCASFLAGS GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS +PYTHON GLIB_CFLAGS GLIB_LIBS GIO_CFLAGS @@ -1940,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.0.10 to adapt to many kinds of systems. +\`configure' configures GStreamer Good Plug-ins 1.1.90 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2016,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.0.10:";; + short | recursive ) echo "Configuration of GStreamer Good Plug-ins 1.1.90:";; esac cat <<\_ACEOF @@ -2024,16 +2029,19 @@ Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-maintainer-mode disable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --enable-silent-rules less verbose build output (undo: `make V=1') - --disable-silent-rules verbose build output (undo: `make V=0') + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --disable-maintainer-mode + disable make rules and dependencies not useful (and + sometimes confusing) to the casual installer --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build --disable-libtool-lock avoid locking (might break parallel builds) --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths @@ -2066,6 +2074,7 @@ Optional Features: --disable-cutter disable dependency-less cutter plugin --disable-debugutils disable dependency-less debugutils plugin --disable-deinterlace disable dependency-less deinterlace plugin + --disable-dtmf disable dependency-less dtmf plugin --disable-effectv disable dependency-less effectv plugin --disable-equalizer disable dependency-less equalizer plugin --disable-flv disable dependency-less flv plugin @@ -2198,6 +2207,7 @@ Some influential environment variables: C compiler flags for GTKDOC_DEPS, overriding pkg-config GTKDOC_DEPS_LIBS linker flags for GTKDOC_DEPS, overriding pkg-config + PYTHON the Python interpreter GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config GLIB_LIBS linker flags for GLIB, overriding pkg-config GIO_CFLAGS C compiler flags for GIO, overriding pkg-config @@ -2371,7 +2381,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GStreamer Good Plug-ins configure 1.0.10 +GStreamer Good Plug-ins configure 1.1.90 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3182,7 +3192,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.0.10, which was +It was created by GStreamer Good Plug-ins $as_me 1.1.90, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3678,7 +3688,7 @@ test -n "$target_alias" && -am__api_version='1.11' +am__api_version='1.14' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -3775,9 +3785,6 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -3788,32 +3795,40 @@ case `pwd` in esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac -# Do `set' in a subshell so we don't clobber the current shell's +# Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done test "$2" = conftest.file ) then @@ -3825,6 +3840,16 @@ Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. @@ -3847,12 +3872,12 @@ if test x"${MISSING+set}" != xset; then esac fi # Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then @@ -3864,10 +3889,10 @@ if test x"${install_sh}" != xset; then esac fi -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. +# will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. @@ -4006,12 +4031,6 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -4094,6 +4113,45 @@ else fi rmdir .tst 2>/dev/null +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." @@ -4116,7 +4174,7 @@ fi # Define the identity of the package. PACKAGE='gst-plugins-good' - VERSION='1.0.10' + VERSION='1.1.90' cat >>confdefs.h <<_ACEOF @@ -4144,6 +4202,12 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> +# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> +mkdir_p='$(MKDIR_P)' + # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used @@ -4151,86 +4215,125 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} AMTAR='$${TAR-tar}' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 -$as_echo_n "checking how to create a ustar tar archive... " >&6; } -# Loop over all known methods to create a tar archive until one works. +# We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar plaintar pax cpio none' -_am_tools=${am_cv_prog_tar_ustar-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - { echo "$as_me:$LINENO: $_am_tar --version" >&5 + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +$as_echo_n "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test $am_uid -le $am_max_uid; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + _am_tools=none + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +$as_echo_n "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test $am_gid -le $am_max_gid; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + _am_tools=none + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +$as_echo_n "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break - done - am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x ustar -w "$$tardir"' - am__tar_='pax -L -x ustar -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H ustar -L' - am__tar_='find "$tardir" -print | cpio -o -H ustar -L' - am__untar='cpio -i -H ustar -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_ustar}" && break + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } - rm -rf conftest.dir - if test -s conftest.tar; then - { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5 + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5 ($am__untar <conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi -done -rm -rf conftest.dir + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir -if ${am_cv_prog_tar_ustar+:} false; then : + if ${am_cv_prog_tar_ustar+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_prog_tar_ustar=$_am_tool fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 $as_echo "$am_cv_prog_tar_ustar" >&6; } @@ -4238,10 +4341,52 @@ $as_echo "$am_cv_prog_tar_ustar" >&6; } +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: <http://www.gnu.org/software/coreutils/>. + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + - PACKAGE_VERSION_MAJOR=$(echo 1.0.10 | cut -d'.' -f1) - PACKAGE_VERSION_MINOR=$(echo 1.0.10 | cut -d'.' -f2) - PACKAGE_VERSION_MICRO=$(echo 1.0.10 | cut -d'.' -f3) + PACKAGE_VERSION_MAJOR=$(echo 1.1.90 | cut -d'.' -f1) + PACKAGE_VERSION_MINOR=$(echo 1.1.90 | cut -d'.' -f2) + PACKAGE_VERSION_MICRO=$(echo 1.1.90 | cut -d'.' -f3) @@ -4252,7 +4397,7 @@ $as_echo "$am_cv_prog_tar_ustar" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5 $as_echo_n "checking nano version... " >&6; } - NANO=$(echo 1.0.10 | cut -d'.' -f4) + NANO=$(echo 1.1.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 @@ -4311,10 +4456,10 @@ if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=0;; +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 @@ -4474,7 +4619,7 @@ am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. +# Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -5307,6 +5452,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 @@ -5318,8 +5522,8 @@ else # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -5354,16 +5558,16 @@ else : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -5372,8 +5576,8 @@ else test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -5381,7 +5585,7 @@ else fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -8843,10 +9047,10 @@ fi done - GST_CURRENT=9 + GST_CURRENT=190 GST_REVISION=0 - GST_AGE=9 - GST_LIBVERSION=9:0:9 + GST_AGE=190 + GST_LIBVERSION=190:0:190 @@ -13171,8 +13375,8 @@ CC="$lt_save_CC" -GST_REQ=1.0.0 -GSTPB_REQ=1.0.0 +GST_REQ=1.1.90 +GSTPB_REQ=1.1.90 @@ -13238,6 +13442,13 @@ ACLOCAL_AMFLAGS="-I m4 -I common/m4" +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. @@ -17129,6 +17340,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 @@ -17140,8 +17410,8 @@ else # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -17176,16 +17446,16 @@ else : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -17194,8 +17464,8 @@ else test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -17203,7 +17473,7 @@ else fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -17818,8 +18088,8 @@ else # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -17854,16 +18124,16 @@ else : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -17872,8 +18142,8 @@ else test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -17881,7 +18151,7 @@ else fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -21570,8 +21840,8 @@ else # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -21604,16 +21874,16 @@ else : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -21622,8 +21892,8 @@ else test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -21631,7 +21901,7 @@ else fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -21686,131 +21956,6 @@ fi -if test "x$CC" != xcc; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 -$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 -$as_echo_n "checking whether cc understands -c and -o together... " >&6; } -fi -set dummy $CC; ac_cc=`$as_echo "$2" | - sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -# Make sure it works both with $CC and with simple cc. -# We do the test twice because some compilers refuse to overwrite an -# existing .o file with -o, though they will create one. -ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -rm -f conftest2.* -if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; -then - eval ac_cv_prog_cc_${ac_cc}_c_o=yes - if test "x$CC" != xcc; then - # Test first that cc exists at all. - if { ac_try='cc -c conftest.$ac_ext >&5' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' - rm -f conftest2.* - if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; - then - # cc works too. - : - else - # cc exists but doesn't like -o. - eval ac_cv_prog_cc_${ac_cc}_c_o=no - fi - fi - fi -else - eval ac_cv_prog_cc_${ac_cc}_c_o=no -fi -rm -f core conftest* - -fi -if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h - -fi - -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi - # By default we simply use the C compiler to build assembly code. @@ -21831,8 +21976,8 @@ else # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -21865,16 +22010,16 @@ else : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -21883,8 +22028,8 @@ else test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -21892,7 +22037,7 @@ else fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -22422,27 +22567,16 @@ fi - PYTHON_CANDIDATES="python python2.2 python2.1 python2.0 python2 \ - python1.6 python1.5" - { $as_echo "$as_me:${as_lineno-$LINENO}: Looking for Python version >= 2.1" >&5 -$as_echo "$as_me: Looking for Python version >= 2.1" >&6;} - prog=" -import sys, string -minver = '2.1' -# split string by '.' and convert to numeric -minver_info = map(string.atoi, string.split(minver, '.')) -# we can now do comparisons on the two lists: -if sys.version_info >= tuple(minver_info): - sys.exit(0) -else: - sys.exit(1)" - python_good=false - for python_candidate in $PYTHON_CANDIDATES; do - unset PYTHON - # Extract the first word of "$python_candidate", so it can be a program name with args. -set dummy $python_candidate; ac_word=$2 + + + # Find any Python interpreter. + if test -z "$PYTHON"; then + for ac_prog in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : @@ -22480,80 +22614,178 @@ else $as_echo "no" >&6; } fi - 1> /dev/null 2> /dev/null - if test "x$PYTHON" = "x"; then continue; fi + test -n "$PYTHON" && break +done +test -n "$PYTHON" || PYTHON=":" - if $PYTHON -c "$prog" 1>&5 2>&5; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"$PYTHON\":" >&5 -$as_echo_n "checking \"$PYTHON\":... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: okay" >&5 -$as_echo "okay" >&6; } - python_good=true - break; - else - unset ac_cv_path_PYTHON - fi - done + fi + am_display_PYTHON=python - if test "$python_good" != "true"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No suitable version of python found" >&5 -$as_echo "$as_me: WARNING: No suitable version of python found" >&2;} - PYTHON= + if test "$PYTHON" = :; then + as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5 else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking local Python configuration" >&5 -$as_echo_n "checking local Python configuration... " >&6; } - - - - PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[:3]"` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 +$as_echo_n "checking for $am_display_PYTHON version... " >&6; } +if ${am_cv_python_version+:} false; then : + $as_echo_n "(cached) " >&6 +else + am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 +$as_echo "$am_cv_python_version" >&6; } + PYTHON_VERSION=$am_cv_python_version PYTHON_PREFIX='${prefix}' - PYTHON_EXEC_PREFIX='${exec_prefix}' - PYTHON_PLATFORM=`$PYTHON -c "import sys; print sys.platform"` - - + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 +$as_echo_n "checking for $am_display_PYTHON platform... " >&6; } +if ${am_cv_python_platform+:} false; then : + $as_echo_n "(cached) " >&6 +else + am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 +$as_echo "$am_cv_python_platform" >&6; } + PYTHON_PLATFORM=$am_cv_python_platform + # Just factor out some code duplication. + am_python_setup_sysconfig="\ +import sys +# Prefer sysconfig over distutils.sysconfig, for better compatibility +# with python 3.x. See automake bug#10227. +try: + import sysconfig +except ImportError: + can_use_sysconfig = 0 +else: + can_use_sysconfig = 1 +# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: +# <https://github.com/pypa/virtualenv/issues/118> +try: + from platform import python_implementation + if python_implementation() == 'CPython' and sys.version[:3] == '2.7': + can_use_sysconfig = 0 +except ImportError: + pass" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 +$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } +if ${am_cv_python_pythondir+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$prefix" = xNONE + then + am_py_prefix=$ac_default_prefix + else + am_py_prefix=$prefix + fi + am_cv_python_pythondir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pythondir in + $am_py_prefix*) + am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` + am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` + ;; + *) + case $am_py_prefix in + /usr|/System*) ;; + *) + am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac - pythondir=$PYTHON_PREFIX"/lib/python"$PYTHON_VERSION/site-packages +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 +$as_echo "$am_cv_python_pythondir" >&6; } + pythondir=$am_cv_python_pythondir pkgpythondir=\${pythondir}/$PACKAGE + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 +$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } +if ${am_cv_python_pyexecdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$exec_prefix" = xNONE + then + am_py_exec_prefix=$am_py_prefix + else + am_py_exec_prefix=$exec_prefix + fi + am_cv_python_pyexecdir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pyexecdir in + $am_py_exec_prefix*) + am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` + am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` + ;; + *) + case $am_py_exec_prefix in + /usr|/System*) ;; + *) + am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac - pyexecdir=$PYTHON_EXEC_PREFIX"/lib/python"$PYTHON_VERSION/site-packages +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 +$as_echo "$am_cv_python_pyexecdir" >&6; } + pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE - { $as_echo "$as_me:${as_lineno-$LINENO}: result: looks good" >&5 -$as_echo "looks good" >&6; } + fi + build_plugin_docs=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build plugin documentation" >&5 $as_echo_n "checking whether to build plugin documentation... " >&6; } if test x$enable_gtk_doc = xyes; then - build_plugin_docs=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + if test x$PYTHON != x; then + build_plugin_docs=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (python not found)" >&5 +$as_echo "no (python not found)" >&6; } + fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (gtk-doc disabled or not available)" >&5 $as_echo "no (gtk-doc disabled or not available)" >&6; } @@ -22653,18 +22885,74 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 $as_echo "$ac_cv_lib_m_cos" >&6; } if test "x$ac_cv_lib_m_cos" = xyes; then : - LIBM="$LIBM -lm" + LIBM="$LIBM -lm" +fi + + ;; +*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +$as_echo_n "checking for cos in -lm... " >&6; } +if ${ac_cv_lib_m_cos+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cos (); +int +main () +{ +return cos (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_cos=yes +else + ac_cv_lib_m_cos=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +$as_echo "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes; then : + LIBM="-lm" fi ;; -*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 -$as_echo_n "checking for cos in -lm... " >&6; } -if ${ac_cv_lib_m_cos+:} false; then : +esac + + + + +for ac_func in clock_gettime +do : + ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" +if test "x$ac_cv_func_clock_gettime" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_CLOCK_GETTIME 1 +_ACEOF + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +$as_echo_n "checking for clock_gettime in -lrt... " >&6; } +if ${ac_cv_lib_rt_clock_gettime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" +LIBS="-lrt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -22674,34 +22962,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char cos (); +char clock_gettime (); int main () { -return cos (); +return clock_gettime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_cos=yes + ac_cv_lib_rt_clock_gettime=yes else - ac_cv_lib_m_cos=no + ac_cv_lib_rt_clock_gettime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 -$as_echo "$ac_cv_lib_m_cos" >&6; } -if test "x$ac_cv_lib_m_cos" = xyes; then : - LIBM="-lm" -fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : + + $as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + LIBRT="-lrt" - ;; -esac + +fi +fi +done @@ -23740,7 +24032,7 @@ GLIB_REQ=2.32.0 - which="glib-2.0 >= $GLIB_REQ gobject-2.0 gthread-2.0 gmodule-no-export-2.0" + which="glib-2.0 >= $GLIB_REQ gobject-2.0 gmodule-no-export-2.0" required="no" @@ -23841,7 +24133,7 @@ fi GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_THREADS_MANDATORY" - if test "x$PACKAGE_VERSION_NANO" = "x1"; then + if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_DEPRECATED" fi @@ -23854,7 +24146,7 @@ fi if test "x$enable_gobject_cast_checks" = "xauto"; then - if test "x$PACKAGE_VERSION_NANO" = "x1"; then + if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then enable_gobject_cast_checks=yes else enable_gobject_cast_checks=no @@ -23874,7 +24166,7 @@ fi if test "x$enable_glib_assertions" = "xauto"; then - if test "x$PACKAGE_VERSION_NANO" = "x1"; then + if test "x$PACKAGE_VERSION_NANO" = "x1" -o "x`expr $PACKAGE_VERSION_MINOR % 2`" = "x1"; then enable_glib_assertions=yes else enable_glib_assertions=no @@ -24088,7 +24380,7 @@ _ACEOF - ORC_REQ=0.4.16 + ORC_REQ=0.4.17 # Check whether --enable-orc was given. if test "${enable_orc+set}" = set; then : @@ -27205,6 +27497,49 @@ fi + GST_PLUGINS_ALL="$GST_PLUGINS_ALL dtmf" + + + + # Check whether --enable-dtmf was given. +if test "${enable_dtmf+set}" = set; then : + enableval=$enable_dtmf; + case "${enableval}" in + yes) gst_use_dtmf=yes ;; + no) gst_use_dtmf=no ;; + *) as_fn_error $? "bad value ${enableval} for --enable-dtmf" "$LINENO" 5 ;; + esac + +else + gst_use_dtmf=yes +fi + + if test x$gst_use_dtmf = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin dtmf" >&5 +$as_echo "$as_me: disabling dependency-less plugin dtmf" >&6;} + WITHOUT_PLUGINS="$WITHOUT_PLUGINS dtmf" + fi + + + if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " dtmf " > /dev/null; then + GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED dtmf" + fi + if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " dtmf " > /dev/null; then + GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ dtmf / /'` + fi + if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " dtmf " > /dev/null; then + GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ dtmf / /'` + fi + if echo " $GST_PLUGINS_SELECTED " | grep -i " dtmf " > /dev/null; then + USE_PLUGIN_DTMF_TRUE= + USE_PLUGIN_DTMF_FALSE='#' +else + USE_PLUGIN_DTMF_TRUE='#' + USE_PLUGIN_DTMF_FALSE= +fi + + + GST_PLUGINS_ALL="$GST_PLUGINS_ALL effectv" @@ -29897,6 +30232,35 @@ fi fi fi +# Check if v4l2 support dmabuf +if test x$HAVE_GST_V4L2 = xyes; then + ac_fn_c_check_decl "$LINENO" "V4L2_MEMORY_DMABUF" "ac_cv_have_decl_V4L2_MEMORY_DMABUF" " + #include <sys/types.h> + #ifdef __sun /* Solaris */ + #include <sys/types.h> + #include <sys/videodev2.h> + #elif __FreeBSD__ + #include <linux/videodev2.h> + #else /* Linux */ + #include <linux/types.h> + #define _LINUX_TIME_H + #define __user + #include <linux/videodev2.h> + #endif + +" +if test "x$ac_cv_have_decl_V4L2_MEMORY_DMABUF" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_V4L2_MEMORY_DMABUF $ac_have_decl +_ACEOF + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } @@ -33279,7 +33643,7 @@ done - which="libpulse >= 1.0" + which="libpulse >= 2.0" required="no" @@ -34315,152 +34679,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_SOUP_CFLAGS="$SOUP_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsoup-gnome-2.4 >= 2.3.2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libsoup-gnome-2.4 >= 2.3.2") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_SOUP_CFLAGS=`$PKG_CONFIG --cflags "libsoup-gnome-2.4 >= 2.3.2" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$SOUP_LIBS"; then - pkg_cv_SOUP_LIBS="$SOUP_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsoup-gnome-2.4 >= 2.3.2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libsoup-gnome-2.4 >= 2.3.2") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_SOUP_LIBS=`$PKG_CONFIG --libs "libsoup-gnome-2.4 >= 2.3.2" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - SOUP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libsoup-gnome-2.4 >= 2.3.2"` - else - SOUP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libsoup-gnome-2.4 >= 2.3.2"` - fi - # Put the nasty error message in config.log where it belongs - echo "$SOUP_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SOUP" >&5 -$as_echo_n "checking for SOUP... " >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$SOUP_CFLAGS"; then - pkg_cv_SOUP_CFLAGS="$SOUP_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsoup-2.4 >= 2.26.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libsoup-2.4 >= 2.26.1") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_SOUP_CFLAGS=`$PKG_CONFIG --cflags "libsoup-2.4 >= 2.26.1" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$SOUP_LIBS"; then - pkg_cv_SOUP_LIBS="$SOUP_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsoup-2.4 >= 2.26.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libsoup-2.4 >= 2.26.1") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_SOUP_LIBS=`$PKG_CONFIG --libs "libsoup-2.4 >= 2.26.1" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - SOUP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libsoup-2.4 >= 2.26.1"` - else - SOUP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libsoup-2.4 >= 2.26.1"` - fi - # Put the nasty error message in config.log where it belongs - echo "$SOUP_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - - HAVE_SOUP="no" - -elif test $pkg_failed = untried; then - - HAVE_SOUP="no" - -else - SOUP_CFLAGS=$pkg_cv_SOUP_CFLAGS - SOUP_LIBS=$pkg_cv_SOUP_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - HAVE_SOUP="yes" -fi - -elif test $pkg_failed = untried; then - - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SOUP" >&5 -$as_echo_n "checking for SOUP... " >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$SOUP_CFLAGS"; then - pkg_cv_SOUP_CFLAGS="$SOUP_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsoup-2.4 >= 2.26.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libsoup-2.4 >= 2.26.1") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsoup-2.4 >= 2.38\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsoup-2.4 >= 2.38") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_SOUP_CFLAGS=`$PKG_CONFIG --cflags "libsoup-2.4 >= 2.26.1" 2>/dev/null` + pkg_cv_SOUP_CFLAGS=`$PKG_CONFIG --cflags "libsoup-2.4 >= 2.38" 2>/dev/null` else pkg_failed=yes fi @@ -34473,12 +34697,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_SOUP_LIBS="$SOUP_LIBS" else if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsoup-2.4 >= 2.26.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libsoup-2.4 >= 2.26.1") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsoup-2.4 >= 2.38\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsoup-2.4 >= 2.38") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_SOUP_LIBS=`$PKG_CONFIG --libs "libsoup-2.4 >= 2.26.1" 2>/dev/null` + pkg_cv_SOUP_LIBS=`$PKG_CONFIG --libs "libsoup-2.4 >= 2.38" 2>/dev/null` else pkg_failed=yes fi @@ -34497,22 +34721,18 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - SOUP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libsoup-2.4 >= 2.26.1"` + SOUP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libsoup-2.4 >= 2.38"` else - SOUP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libsoup-2.4 >= 2.26.1"` + SOUP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libsoup-2.4 >= 2.38"` fi # Put the nasty error message in config.log where it belongs echo "$SOUP_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - - HAVE_SOUP="no" - + HAVE_SOUP="no" elif test $pkg_failed = untried; then - - HAVE_SOUP="no" - + HAVE_SOUP="no" else SOUP_CFLAGS=$pkg_cv_SOUP_CFLAGS SOUP_LIBS=$pkg_cv_SOUP_LIBS @@ -34521,19 +34741,6 @@ $as_echo "yes" >&6; } HAVE_SOUP="yes" fi -else - SOUP_CFLAGS=$pkg_cv_SOUP_CFLAGS - SOUP_LIBS=$pkg_cv_SOUP_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - HAVE_SOUP="yes" - -$as_echo "#define HAVE_LIBSOUP_GNOME 1" >>confdefs.h - - -fi - @@ -35298,6 +35505,8 @@ else $as_echo "yes" >&6; } HAVE_VPX="yes" fi + HAVE_VP8=no + HAVE_VP9=no if test $HAVE_VPX = "yes"; then OLD_LIBS="$LIBS" @@ -35394,6 +35603,98 @@ $as_echo "#define HAVE_VP8_DECODER 1" >>confdefs.h fi + if test "x$BUILD_EXPERIMENTAL" = "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vpx_codec_vp9_cx_algo in -lvpx" >&5 +$as_echo_n "checking for vpx_codec_vp9_cx_algo in -lvpx... " >&6; } +if ${ac_cv_lib_vpx_vpx_codec_vp9_cx_algo+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lvpx $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char vpx_codec_vp9_cx_algo (); +int +main () +{ +return vpx_codec_vp9_cx_algo (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_vpx_vpx_codec_vp9_cx_algo=yes +else + ac_cv_lib_vpx_vpx_codec_vp9_cx_algo=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_vpx_vpx_codec_vp9_cx_algo" >&5 +$as_echo "$ac_cv_lib_vpx_vpx_codec_vp9_cx_algo" >&6; } +if test "x$ac_cv_lib_vpx_vpx_codec_vp9_cx_algo" = xyes; then : + + HAVE_VP9=yes + +$as_echo "#define HAVE_VP9_ENCODER 1" >>confdefs.h + + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vpx_codec_vp9_dx_algo in -lvpx" >&5 +$as_echo_n "checking for vpx_codec_vp9_dx_algo in -lvpx... " >&6; } +if ${ac_cv_lib_vpx_vpx_codec_vp9_dx_algo+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lvpx $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char vpx_codec_vp9_dx_algo (); +int +main () +{ +return vpx_codec_vp9_dx_algo (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_vpx_vpx_codec_vp9_dx_algo=yes +else + ac_cv_lib_vpx_vpx_codec_vp9_dx_algo=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_vpx_vpx_codec_vp9_dx_algo" >&5 +$as_echo "$ac_cv_lib_vpx_vpx_codec_vp9_dx_algo" >&6; } +if test "x$ac_cv_lib_vpx_vpx_codec_vp9_dx_algo" = xyes; then : + + HAVE_VP9=yes + +$as_echo "#define HAVE_VP9_DECODER 1" >>confdefs.h + + +fi + + fi LIBS="$OLD_LIBS" CFLAGS="$OLD_CFLAGS" fi @@ -36322,7 +36623,9 @@ GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^_*gst_plugin_ -ac_config_files="$ac_config_files Makefile gst/Makefile gst/alpha/Makefile gst/apetag/Makefile gst/audiofx/Makefile gst/audioparsers/Makefile gst/auparse/Makefile gst/autodetect/Makefile gst/avi/Makefile gst/cutter/Makefile gst/deinterlace/Makefile gst/debugutils/Makefile gst/effectv/Makefile gst/equalizer/Makefile gst/flv/Makefile gst/goom/Makefile gst/goom2k1/Makefile gst/id3demux/Makefile gst/icydemux/Makefile gst/imagefreeze/Makefile gst/interleave/Makefile gst/isomp4/Makefile gst/law/Makefile gst/level/Makefile gst/matroska/Makefile gst/monoscope/Makefile gst/multifile/Makefile gst/multipart/Makefile gst/replaygain/Makefile gst/rtp/Makefile gst/rtpmanager/Makefile gst/rtsp/Makefile gst/shapewipe/Makefile gst/smpte/Makefile gst/spectrum/Makefile gst/udp/Makefile gst/videobox/Makefile gst/videocrop/Makefile gst/videofilter/Makefile gst/videomixer/Makefile gst/wavenc/Makefile gst/wavparse/Makefile gst/flx/Makefile gst/y4m/Makefile ext/Makefile ext/aalib/Makefile ext/cairo/Makefile ext/dv/Makefile ext/flac/Makefile ext/gdk_pixbuf/Makefile ext/jack/Makefile ext/jpeg/Makefile ext/libcaca/Makefile ext/libpng/Makefile ext/pulse/Makefile ext/raw1394/Makefile ext/shout2/Makefile ext/soup/Makefile ext/speex/Makefile ext/taglib/Makefile ext/vpx/Makefile ext/wavpack/Makefile sys/Makefile sys/directsound/Makefile sys/oss/Makefile sys/oss4/Makefile sys/osxaudio/Makefile sys/osxvideo/Makefile sys/sunaudio/Makefile sys/v4l2/Makefile sys/waveform/Makefile sys/ximage/Makefile po/Makefile.in tests/Makefile tests/check/Makefile tests/examples/Makefile tests/examples/audiofx/Makefile tests/examples/cairo/Makefile tests/examples/equalizer/Makefile tests/examples/jack/Makefile tests/examples/level/Makefile tests/examples/pulse/Makefile tests/examples/rtp/Makefile tests/examples/shapewipe/Makefile tests/examples/spectrum/Makefile tests/examples/v4l2/Makefile tests/files/Makefile tests/icles/Makefile common/Makefile common/m4/Makefile m4/Makefile docs/Makefile docs/plugins/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-good-uninstalled.pc gst-plugins-good.spec" +$MKDIR_P tests/check/orc + +ac_config_files="$ac_config_files Makefile gst/Makefile gst/alpha/Makefile gst/apetag/Makefile gst/audiofx/Makefile gst/audioparsers/Makefile gst/auparse/Makefile gst/autodetect/Makefile gst/avi/Makefile gst/cutter/Makefile gst/deinterlace/Makefile gst/dtmf/Makefile gst/debugutils/Makefile gst/effectv/Makefile gst/equalizer/Makefile gst/flv/Makefile gst/goom/Makefile gst/goom2k1/Makefile gst/id3demux/Makefile gst/icydemux/Makefile gst/imagefreeze/Makefile gst/interleave/Makefile gst/isomp4/Makefile gst/law/Makefile gst/level/Makefile gst/matroska/Makefile gst/monoscope/Makefile gst/multifile/Makefile gst/multipart/Makefile gst/replaygain/Makefile gst/rtp/Makefile gst/rtpmanager/Makefile gst/rtsp/Makefile gst/shapewipe/Makefile gst/smpte/Makefile gst/spectrum/Makefile gst/udp/Makefile gst/videobox/Makefile gst/videocrop/Makefile gst/videofilter/Makefile gst/videomixer/Makefile gst/wavenc/Makefile gst/wavparse/Makefile gst/flx/Makefile gst/y4m/Makefile ext/Makefile ext/aalib/Makefile ext/cairo/Makefile ext/dv/Makefile ext/flac/Makefile ext/gdk_pixbuf/Makefile ext/jack/Makefile ext/jpeg/Makefile ext/libcaca/Makefile ext/libpng/Makefile ext/pulse/Makefile ext/raw1394/Makefile ext/shout2/Makefile ext/soup/Makefile ext/speex/Makefile ext/taglib/Makefile ext/vpx/Makefile ext/wavpack/Makefile sys/Makefile sys/directsound/Makefile sys/oss/Makefile sys/oss4/Makefile sys/osxaudio/Makefile sys/osxvideo/Makefile sys/sunaudio/Makefile sys/v4l2/Makefile sys/waveform/Makefile sys/ximage/Makefile po/Makefile.in tests/Makefile tests/check/Makefile tests/examples/Makefile tests/examples/audiofx/Makefile tests/examples/cairo/Makefile tests/examples/equalizer/Makefile tests/examples/jack/Makefile tests/examples/level/Makefile tests/examples/pulse/Makefile tests/examples/rtp/Makefile tests/examples/shapewipe/Makefile tests/examples/spectrum/Makefile tests/examples/v4l2/Makefile tests/files/Makefile tests/icles/Makefile common/Makefile common/m4/Makefile m4/Makefile docs/Makefile docs/plugins/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-good-uninstalled.pc gst-plugins-good.spec" sed \ @@ -36472,6 +36775,14 @@ LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -36686,6 +36997,10 @@ if test -z "${USE_PLUGIN_DEINTERLACE_TRUE}" && test -z "${USE_PLUGIN_DEINTERLACE as_fn_error $? "conditional \"USE_PLUGIN_DEINTERLACE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${USE_PLUGIN_DTMF_TRUE}" && test -z "${USE_PLUGIN_DTMF_FALSE}"; then + as_fn_error $? "conditional \"USE_PLUGIN_DTMF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${USE_PLUGIN_EFFECTV_TRUE}" && test -z "${USE_PLUGIN_EFFECTV_FALSE}"; then as_fn_error $? "conditional \"USE_PLUGIN_EFFECTV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -37467,7 +37782,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.0.10, which was +This file was extended by GStreamer Good Plug-ins $as_me 1.1.90, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -37533,7 +37848,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.0.10 +GStreamer Good Plug-ins config.status 1.1.90 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -38080,6 +38395,7 @@ do "gst/avi/Makefile") CONFIG_FILES="$CONFIG_FILES gst/avi/Makefile" ;; "gst/cutter/Makefile") CONFIG_FILES="$CONFIG_FILES gst/cutter/Makefile" ;; "gst/deinterlace/Makefile") CONFIG_FILES="$CONFIG_FILES gst/deinterlace/Makefile" ;; + "gst/dtmf/Makefile") CONFIG_FILES="$CONFIG_FILES gst/dtmf/Makefile" ;; "gst/debugutils/Makefile") CONFIG_FILES="$CONFIG_FILES gst/debugutils/Makefile" ;; "gst/effectv/Makefile") CONFIG_FILES="$CONFIG_FILES gst/effectv/Makefile" ;; "gst/equalizer/Makefile") CONFIG_FILES="$CONFIG_FILES gst/equalizer/Makefile" ;; @@ -38762,7 +39078,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files + # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -38775,7 +39091,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but + # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -38809,21 +39125,19 @@ $as_echo X"$mf" | continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. + # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue + test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || diff --git a/configure.ac b/configure.ac index be036640a2304612f36fa62ed1d2c93f46adaa3e..1c8c53d6927d66ff641d347f8234b7678c3a76eb 100644 --- a/configure.ac +++ b/configure.ac @@ -1,18 +1,16 @@ -AC_PREREQ(2.62) +AC_PREREQ([2.68]) 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.0.10, - http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer, - gst-plugins-good) +AC_INIT([GStreamer Good Plug-ins],[1.1.90],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-good]) AG_GST_INIT dnl initialize automake -AM_INIT_AUTOMAKE([-Wno-portability 1.11 no-dist-gzip dist-xz tar-ustar]) +AM_INIT_AUTOMAKE([-Wno-portability 1.11 no-dist-gzip dist-xz tar-ustar subdir-objects]) dnl define PACKAGE_VERSION_* variables AS_VERSION @@ -45,11 +43,11 @@ AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION", [GStreamer API Version]) AG_GST_LIBTOOL_PREPARE -AS_LIBTOOL(GST, 9, 0, 9) +AS_LIBTOOL(GST, 190, 0, 190) dnl *** required versions of GStreamer stuff *** -GST_REQ=1.0.0 -GSTPB_REQ=1.0.0 +GST_REQ=1.1.90 +GSTPB_REQ=1.1.90 dnl *** autotools stuff **** @@ -128,8 +126,7 @@ AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno") dnl check for documentation tools GTK_DOC_CHECK([1.12]) -AS_PATH_PYTHON([2.1]) -AG_GST_PLUGIN_DOCS([1.3],[2.1]) +AG_GST_PLUGIN_DOCS([1.12]) dnl *** checks for libraries *** @@ -137,6 +134,14 @@ dnl check for libm, for sin() LT_LIB_M AC_SUBST(LIBM) +AC_CHECK_FUNCS(clock_gettime, [], [ + AC_CHECK_LIB(rt, clock_gettime, [ + AC_DEFINE(HAVE_CLOCK_GETTIME, 1) + LIBRT="-lrt" + AC_SUBST([LIBRT]) + ]) +]) + dnl *** checks for header files *** dnl check if we have ANSI C header files @@ -202,7 +207,7 @@ GLIB_REQ=2.32.0 AG_GST_GLIB_CHECK([$GLIB_REQ]) dnl Orc -ORC_CHECK([0.4.16]) +ORC_CHECK([0.4.17]) dnl checks for gstreamer dnl uninstalled is selected preferentially -- see pkg-config(1) @@ -329,6 +334,7 @@ AG_GST_CHECK_PLUGIN(avi) AG_GST_CHECK_PLUGIN(cutter) AG_GST_CHECK_PLUGIN(debugutils) AG_GST_CHECK_PLUGIN(deinterlace) +AG_GST_CHECK_PLUGIN(dtmf) AG_GST_CHECK_PLUGIN(effectv) AG_GST_CHECK_PLUGIN(equalizer) AG_GST_CHECK_PLUGIN(flv) @@ -498,7 +504,7 @@ dnl renamed to GST_V4L2 because of some conflict with kernel headers translit(dnm, m, l) AM_CONDITIONAL(USE_GST_V4L2, true) AG_GST_CHECK_FEATURE(GST_V4L2, [Video 4 Linux 2], v4l2src, [ AC_MSG_CHECKING([Checking for up to date v4l2 installation]) - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> #ifdef __sun /* Solaris */ #include <sys/types.h> @@ -514,12 +520,12 @@ AG_GST_CHECK_FEATURE(GST_V4L2, [Video 4 Linux 2], v4l2src, [ #if defined(V4L2_MAJOR_VERSION) || defined(V4L2_MINOR_VERSION) #error too early v4l2 version or no v4l2 at all #endif - ], [ + ]], [[ return 0; - ], [ + ]])],[ HAVE_GST_V4L2="yes" AC_MSG_RESULT(yes) - ], [ + ],[ HAVE_GST_V4L2="no" AC_MSG_RESULT(no) @@ -541,7 +547,7 @@ return 0; dnl check for missing v4l2_buffer declaration (see #135919) MISSING_DECL=0 AC_MSG_CHECKING(struct v4l2_buffer declaration) - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> #ifdef __sun /* Solaris */ #include <sys/types.h> @@ -554,11 +560,11 @@ return 0; #define __user #include <linux/videodev2.h> #endif - ],[ + ]], [[ struct v4l2_buffer buf; buf.index = 0; return 0; - ], [ AC_MSG_RESULT(yes) ], [ MISSING_DECL=1 && AC_MSG_RESULT(no) ]) + ]])],[ AC_MSG_RESULT(yes) ],[ MISSING_DECL=1 && AC_MSG_RESULT(no) ]) if [ test x$MISSING_DECL = x1 ]; then AC_DEFINE(GST_V4L2_MISSING_BUFDECL, 1, [struct v4l2_buffer missing]) fi @@ -570,8 +576,7 @@ return 0; # Optional gudev for device probing AC_ARG_WITH([gudev], - AC_HELP_STRING([--with-gudev], - [device detection with gudev]), + AS_HELP_STRING([--with-gudev],[device detection with gudev]), [], [with_gudev=check]) if test x$HAVE_GST_V4L2 = xyes; then @@ -593,8 +598,7 @@ AC_SUBST(GUDEV_LIBS) # Make libv4l2 non-automagic AC_ARG_WITH([libv4l2], - AC_HELP_STRING([--with-libv4l2], - [support video buffer conversion using libv4l2]), + AS_HELP_STRING([--with-libv4l2],[support video buffer conversion using libv4l2]), [], [with_libv4l2=check]) if test x$HAVE_GST_V4L2 = xyes; then @@ -611,6 +615,24 @@ if test x$HAVE_GST_V4L2 = xyes; then fi fi +# Check if v4l2 support dmabuf +if test x$HAVE_GST_V4L2 = xyes; then + AC_CHECK_DECLS(V4L2_MEMORY_DMABUF,,,[ + #include <sys/types.h> + #ifdef __sun /* Solaris */ + #include <sys/types.h> + #include <sys/videodev2.h> + #elif __FreeBSD__ + #include <linux/videodev2.h> + #else /* Linux */ + #include <linux/types.h> + #define _LINUX_TIME_H + #define __user + #include <linux/videodev2.h> + #endif + ]) +fi + dnl Check for X11 translit(dnm, m, l) AM_CONDITIONAL(USE_X, true) AG_GST_CHECK_FEATURE(X, [X libraries and plugins], @@ -790,7 +812,7 @@ AG_GST_CHECK_FEATURE(PULSE, [pulseaudio plug-in], pulseaudio, [ dnl used in ext/pulse/pulseutil.c AC_CHECK_HEADERS([process.h]) - AG_GST_PKG_CHECK_MODULES(PULSE, libpulse >= 1.0) + AG_GST_PKG_CHECK_MODULES(PULSE, libpulse >= 2.0) ]) dnl *** dv1394 *** @@ -853,14 +875,7 @@ AG_GST_CHECK_FEATURE(SHOUT2, [Shoutcast/Icecast client library], shout2, [ dnl *** soup *** translit(dnm, m, l) AM_CONDITIONAL(USE_SOUP, true) AG_GST_CHECK_FEATURE(SOUP, [soup http client plugin (2.4)], souphttpsrc, [ - PKG_CHECK_MODULES(SOUP, libsoup-gnome-2.4 >= 2.3.2, [ - HAVE_SOUP="yes" - AC_DEFINE(HAVE_LIBSOUP_GNOME, 1, [soup gnome integration]) - ],[ - PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.26.1, HAVE_SOUP="yes", [ - HAVE_SOUP="no" - ]) - ]) + PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.38, [HAVE_SOUP="yes"], [HAVE_SOUP="no"]) AC_SUBST(SOUP_CFLAGS) AC_SUBST(SOUP_LIBS) ]) @@ -930,6 +945,8 @@ dnl *** vpx *** translit(dnm, m, l) AM_CONDITIONAL(USE_VPX, vpx) AG_GST_CHECK_FEATURE(VPX, [VPX decoder], vpx, [ PKG_CHECK_MODULES(VPX, vpx >= 1.1.0, [HAVE_VPX="yes"], [HAVE_VPX="no"]) + HAVE_VP8=no + HAVE_VP9=no if test $HAVE_VPX = "yes"; then OLD_LIBS="$LIBS" @@ -944,6 +961,16 @@ AG_GST_CHECK_FEATURE(VPX, [VPX decoder], vpx, [ HAVE_VP8=yes AC_DEFINE(HAVE_VP8_DECODER, 1, [Defined if the VP8 decoder is available]) ]) + if test "x$BUILD_EXPERIMENTAL" = "xyes"; then + AC_CHECK_LIB(vpx, vpx_codec_vp9_cx_algo, [ + HAVE_VP9=yes + AC_DEFINE(HAVE_VP9_ENCODER, 1, [Defined if the VP9 encoder is available]) + ]) + AC_CHECK_LIB(vpx, vpx_codec_vp9_dx_algo, [ + HAVE_VP9=yes + AC_DEFINE(HAVE_VP9_DECODER, 1, [Defined if the VP9 decoder is available]) + ]) + fi LIBS="$OLD_LIBS" CFLAGS="$OLD_CFLAGS" fi @@ -1091,6 +1118,8 @@ AC_SUBST(GST_PLUGIN_LDFLAGS) dnl *** output files *** +$MKDIR_P tests/check/orc + dnl keep this alphabetic per directory, please AC_CONFIG_FILES( Makefile @@ -1104,6 +1133,7 @@ gst/autodetect/Makefile gst/avi/Makefile gst/cutter/Makefile gst/deinterlace/Makefile +gst/dtmf/Makefile gst/debugutils/Makefile gst/effectv/Makefile gst/equalizer/Makefile diff --git a/debian/build-deps b/debian/build-deps index c4e11eb0574b867515d1135e35954b4b41b4d248..2ede36580b1456622aea50e231852a2b659d7a75 100644 --- a/debian/build-deps +++ b/debian/build-deps @@ -1,6 +1,6 @@ @GST_LIB_DEV_DEP@ @GST_EXTRA_BUILD_DEPENDS@ -libgstreamer-plugins-base@GST_ABI@-dev (>= 1.0.0) +libgstreamer-plugins-base@GST_ABI@-dev (>= 1.1.90) autotools-dev dh-autoreconf automake (>= 1.11) @@ -13,7 +13,7 @@ dpkg-dev (>= 1.15.1) pkg-config (>= 0.11.0) gtk-doc-tools (>= 1.12) libglib2.0-dev (>= 2.32) -liborc-0.4-dev (>= 1:0.4.16) +liborc-0.4-dev (>= 1:0.4.17) libcairo2-dev (>= 1.10.0) libcaca-dev libspeex-dev (>= 1.1.6) @@ -31,10 +31,10 @@ libgtk-3-dev libtag1-dev (>= 1.5) libwavpack-dev (>= 4.20) gstreamer@GST_ABI@-plugins-base (>= 1.0.0) -libsoup-gnome2.4-dev (>= 2.26.1) -libpulse-dev (>= 1.0) +libsoup2.4-dev (>= 2.38) +libpulse-dev (>= 2.0) libbz2-dev gstreamer@GST_ABI@-doc gstreamer@GST_ABI@-plugins-base-doc -libjack-dev (>= 1:0.99.10) +libjack-jackd2-dev libvpx-dev (>= 1.1.0) diff --git a/debian/build-deps.in b/debian/build-deps.in index c4e11eb0574b867515d1135e35954b4b41b4d248..2ede36580b1456622aea50e231852a2b659d7a75 100644 --- a/debian/build-deps.in +++ b/debian/build-deps.in @@ -1,6 +1,6 @@ @GST_LIB_DEV_DEP@ @GST_EXTRA_BUILD_DEPENDS@ -libgstreamer-plugins-base@GST_ABI@-dev (>= 1.0.0) +libgstreamer-plugins-base@GST_ABI@-dev (>= 1.1.90) autotools-dev dh-autoreconf automake (>= 1.11) @@ -13,7 +13,7 @@ dpkg-dev (>= 1.15.1) pkg-config (>= 0.11.0) gtk-doc-tools (>= 1.12) libglib2.0-dev (>= 2.32) -liborc-0.4-dev (>= 1:0.4.16) +liborc-0.4-dev (>= 1:0.4.17) libcairo2-dev (>= 1.10.0) libcaca-dev libspeex-dev (>= 1.1.6) @@ -31,10 +31,10 @@ libgtk-3-dev libtag1-dev (>= 1.5) libwavpack-dev (>= 4.20) gstreamer@GST_ABI@-plugins-base (>= 1.0.0) -libsoup-gnome2.4-dev (>= 2.26.1) -libpulse-dev (>= 1.0) +libsoup2.4-dev (>= 2.38) +libpulse-dev (>= 2.0) libbz2-dev gstreamer@GST_ABI@-doc gstreamer@GST_ABI@-plugins-base-doc -libjack-dev (>= 1:0.99.10) +libjack-jackd2-dev libvpx-dev (>= 1.1.0) diff --git a/debian/changelog b/debian/changelog index b5282f56ed4898d7c87f8a40b113b555e30d1e4c..5201b1ea482291cb51ca92d348b5d404ec32649e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,14 +1,50 @@ -gst-plugins-good1.0 (1.0.10-1) unstable; urgency=low +gst-plugins-good1.0 (1.1.90-1) experimental; urgency=low - * New upstream bugfix release. + * New upstream release candidate: + + debian/rules, + debian/build-deps.in: + - Build depend on GStreamer and gst-plugins-base >= 1.1.90. - -- Sebastian Dröge <slomo@debian.org> Fri, 30 Aug 2013 10:59:24 +0200 + -- Sebastian Dröge <slomo@debian.org> Thu, 19 Sep 2013 12:47:00 +0200 -gst-plugins-good1.0 (1.0.9-1) unstable; urgency=low +gst-plugins-good1.0 (1.1.4-1) experimental; urgency=low - * New upstream bugfix release. + * New upstream development snapshot: + + debian/rules, + debian/build-deps.in: + - Build depend on GStreamer and gst-plugins-base >= 1.1.4. + - Build depend on libsoup >= 2.38. + + -- Sebastian Dröge <slomo@debian.org> Fri, 30 Aug 2013 12:53:44 +0200 + +gst-plugins-good1.0 (1.1.3-1) experimental; urgency=low + + * New upstream development snapshot: + + debian/rules, + debian/build-deps.in: + - Build depend on GStreamer and gst-plugins-base >= 1.1.3. + + -- Sebastian Dröge <slomo@debian.org> Tue, 30 Jul 2013 08:46:19 +0200 + +gst-plugins-good1.0 (1.1.2-1) experimental; urgency=low + + * New upstream development snapshot: + + debian/rules, + debian/build-deps.in: + - Build depend on GStreamer and gst-plugins-base >= 1.1.2. + - Build depend on orc >= 0.4.17. + - Build depend on pulseaudio >= 2.0. + - Build depend on libsoup2.4-dev instead of libsoup-gnome2.4-dev. + - Build depend on libjack-jackd2-dev instead of libjack-dev. + + debian/gstreamer-plugins-good.install, + debian/control.in: + - Add dtmf plugin which moved from gst-plugins-bad. + - Add newly ported cairo plugin. + * debian/patches/0001-souphttpsrc-ignore-errors-from-HEAD-request.patch: + + Patch from upstream GIT to ignore errors that happened as a result + of the HEAD request. Only error out later if the GET request fails. - -- Sebastian Dröge <slomo@debian.org> Fri, 16 Aug 2013 10:51:23 +0200 + -- Sebastian Dröge <slomo@debian.org> Sun, 14 Jul 2013 11:46:14 +0200 gst-plugins-good1.0 (1.0.8-1) unstable; urgency=low diff --git a/debian/control b/debian/control index b17600c2ed4166d7761fcf144ce234a24d3ab988..6b22b0ed1696f7d004b3f691a34acb78113c70d2 100644 --- a/debian/control +++ b/debian/control @@ -5,7 +5,7 @@ Maintainer: Maintainers of GStreamer packages <pkg-gstreamer-maintainers@lists.a Uploaders: Loic Minier <lool@dooz.org>, Sebastian Dröge <slomo@debian.org>, Sjoerd Simons <sjoerd@debian.org> -Build-Depends: libgstreamer1.0-dev (>= 1.0.0), libraw1394-dev (>= 2.0.0) [linux-any] , libiec61883-dev (>= 1.0.0) [linux-any] , libavc1394-dev [linux-any] , libv4l-dev [linux-any] , libgudev-1.0-dev (>= 143) [linux-any], libgstreamer-plugins-base1.0-dev (>= 1.0.0), autotools-dev, dh-autoreconf, automake (>= 1.11), autoconf (>= 2.62), libtool (>= 2.2.6), autopoint (>= 0.17), cdbs (>= 0.4.93), debhelper (>= 9), dpkg-dev (>= 1.15.1), pkg-config (>= 0.11.0), gtk-doc-tools (>= 1.12), libglib2.0-dev (>= 2.32), liborc-0.4-dev (>= 1:0.4.16), libcairo2-dev (>= 1.10.0), libcaca-dev, libspeex-dev (>= 1.1.6), libpng-dev, libshout3-dev, libjpeg-dev, libaa1-dev (>= 1.4p5), libflac-dev (>= 1.1.4), libdv4-dev | libdv-dev, libxdamage-dev, libxext-dev, libxfixes-dev, libxv-dev, libgtk-3-dev, libtag1-dev (>= 1.5), libwavpack-dev (>= 4.20), gstreamer1.0-plugins-base (>= 1.0.0), libsoup-gnome2.4-dev (>= 2.26.1), libpulse-dev (>= 1.0), libbz2-dev, gstreamer1.0-doc, gstreamer1.0-plugins-base-doc, libjack-dev (>= 1:0.99.10), libvpx-dev (>= 1.1.0) +Build-Depends: libgstreamer1.0-dev (>= 1.1.90), libraw1394-dev (>= 2.0.0) [linux-any] , libiec61883-dev (>= 1.0.0) [linux-any] , libavc1394-dev [linux-any] , libv4l-dev [linux-any] , libgudev-1.0-dev (>= 143) [linux-any], libgstreamer-plugins-base1.0-dev (>= 1.1.90), autotools-dev, dh-autoreconf, automake (>= 1.11), autoconf (>= 2.62), libtool (>= 2.2.6), autopoint (>= 0.17), cdbs (>= 0.4.93), debhelper (>= 9), dpkg-dev (>= 1.15.1), pkg-config (>= 0.11.0), gtk-doc-tools (>= 1.12), libglib2.0-dev (>= 2.32), liborc-0.4-dev (>= 1:0.4.17), libcairo2-dev (>= 1.10.0), libcaca-dev, libspeex-dev (>= 1.1.6), libpng-dev, libshout3-dev, libjpeg-dev, libaa1-dev (>= 1.4p5), libflac-dev (>= 1.1.4), libdv4-dev | libdv-dev, libxdamage-dev, libxext-dev, libxfixes-dev, libxv-dev, libgtk-3-dev, libtag1-dev (>= 1.5), libwavpack-dev (>= 4.20), gstreamer1.0-plugins-base (>= 1.0.0), libsoup2.4-dev (>= 2.38), libpulse-dev (>= 2.0), libbz2-dev, gstreamer1.0-doc, gstreamer1.0-plugins-base-doc, libjack-jackd2-dev, libvpx-dev (>= 1.1.0) Standards-Version: 3.9.3 Package: gstreamer1.0-plugins-good-doc @@ -58,7 +58,8 @@ Depends: ${misc:Depends}, gstreamer1.0-pulseaudio | gstreamer1.0-audiosink, gstreamer1.0-plugins-base, Recommends: gstreamer1.0-x -Conflicts: gstreamer1.0-plugins-bad (<< 0.11.99) +Replaces: gstreamer1.0-plugins-bad (<< 1.1.2) +Conflicts: gstreamer1.0-plugins-bad (<< 1.1.2) XB-GStreamer-Version: ${gstreamer:Version} XB-GStreamer-Elements: ${gstreamer:Elements} XB-GStreamer-URI-Sources: ${gstreamer:URISources} @@ -85,7 +86,8 @@ Priority: extra Depends: gstreamer1.0-plugins-good (= ${binary:Version}), gstreamer1.0-pulseaudio (= ${binary:Version}), ${misc:Depends} -Conflicts: gstreamer1.0-plugins-bad-dbg (<< 0.11.99) +Replaces: gstreamer1.0-plugins-bad (<< 1.1.2) +Conflicts: gstreamer1.0-plugins-bad (<< 1.1.2) Description: GStreamer plugins from the "good" set GStreamer is a streaming media framework, based on graphs of filters which operate on media data. Applications using this library can do diff --git a/debian/control.in b/debian/control.in index bd4f262fc5d9883dcdd1225205eec8449abe9f86..dc6d36bfe8529340ae28a4fa8e706d02c8921d1a 100644 --- a/debian/control.in +++ b/debian/control.in @@ -58,7 +58,8 @@ Depends: ${misc:Depends}, @GST_PKGNAME@-pulseaudio | @GST_PKGNAME@-audiosink, gstreamer@GST_ABI@-plugins-base, Recommends: @GST_PKGNAME@-x -Conflicts: gstreamer1.0-plugins-bad (<< 0.11.99) +Replaces: gstreamer1.0-plugins-bad (<< 1.1.2) +Conflicts: gstreamer1.0-plugins-bad (<< 1.1.2) XB-GStreamer-Version: ${gstreamer:Version} XB-GStreamer-Elements: ${gstreamer:Elements} XB-GStreamer-URI-Sources: ${gstreamer:URISources} @@ -85,7 +86,8 @@ Priority: extra Depends: @GST_PKGNAME@-plugins-good (= ${binary:Version}), @GST_PKGNAME@-pulseaudio (= ${binary:Version}), ${misc:Depends} -Conflicts: gstreamer1.0-plugins-bad-dbg (<< 0.11.99) +Replaces: gstreamer1.0-plugins-bad (<< 1.1.2) +Conflicts: gstreamer1.0-plugins-bad (<< 1.1.2) Description: GStreamer plugins from the "good" set GStreamer is a streaming media framework, based on graphs of filters which operate on media data. Applications using this library can do diff --git a/debian/gstreamer-plugins-good.install b/debian/gstreamer-plugins-good.install index 49c150a5fa3468be0609e197d2208e289968062a..047470cd99cc4fd6507cf8a9ef5dde07fd19b451 100644 --- a/debian/gstreamer-plugins-good.install +++ b/debian/gstreamer-plugins-good.install @@ -11,9 +11,11 @@ debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstauparse.so debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstautodetect.so debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstavi.so debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstcacasink.so +debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstcairo.so debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstcutter.so debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstdebug.so debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstdeinterlace.so +debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstdtmf.so debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstdv.so debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgsteffectv.so debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstequalizer.so diff --git a/debian/rules b/debian/rules index eb5fc9e6a0846520a0175117f4e6a9b4e1b3033c..637f3e29f3cc51e1a33c099b806d2256ebc0fb8a 100755 --- a/debian/rules +++ b/debian/rules @@ -46,7 +46,7 @@ gst_abi=$(gst_major).$(gst_minor) gst_lib=libgstreamer$(gst_abi)-0 gst_lib_dev=libgstreamer$(gst_abi)-dev # what gstreamer version is needed -gst_lib_dev_dep=$(gst_lib_dev) (>= 1.0.0) +gst_lib_dev_dep=$(gst_lib_dev) (>= 1.1.90) gst_pkgname=gstreamer$(gst_abi) gst_deb_abi=$(gst_abi)-0 diff --git a/depcomp b/depcomp index 25a39e6cd5c82d7276f6ccc62ef5e7ba1cc9776f..bd0ac089584a762069b7e0b3f2937e89b9144cc7 100755 --- a/depcomp +++ b/depcomp @@ -1,10 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2012-03-27.16; # UTC +scriptversion=2011-12-04.11; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# 2011 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,7 +28,7 @@ scriptversion=2012-03-27.16; # UTC case $1 in '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) @@ -40,8 +40,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,12 +57,6 @@ EOF ;; esac -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' - 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 @@ -108,12 +102,6 @@ if test "$depmode" = msvc7msys; then depmode=msvc7 fi -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -fi - case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what @@ -168,14 +156,15 @@ gcc) ## 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 ' ' "$nl" < "$tmpdepfile" | -## Some versions of gcc put a space before the ':'. On the theory + tr ' ' ' +' < "$tmpdepfile" | +## 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. @@ -214,15 +203,18 @@ sgi) # 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 ' ' "$nl" < "$tmpdepfile" \ + tr ' ' ' +' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr "$nl" ' ' >> "$depfile" + tr ' +' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ + tr ' ' ' +' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else @@ -234,17 +226,10 @@ sgi) 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|/[^/]*$|/|'` @@ -274,11 +259,12 @@ aix) test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependent.h'. + # 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:'. + # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$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 @@ -289,26 +275,23 @@ aix) ;; icc) - # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. - # However on - # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # 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 + # 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 # 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 ... \ # ... - # tcc 0.9.26 (FIXME still under development at the moment of writing) - # will emit a similar output, but also prepend the continuation lines - # with horizontal tabulation characters. + "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : @@ -317,21 +300,15 @@ icc) exit $stat fi rm -f "$depfile" - # Each line is of the form 'foo.o: dependent.h', - # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ - < "$tmpdepfile" > "$depfile" - sed ' - s/[ '"$tab"'][ '"$tab"']*/ /g - s/^ *// - s/ *\\*$// - s/^[^:]*: *// - /^$/d - /:$/d - s/$/ :/ - ' < "$tmpdepfile" >> "$depfile" + # `$object: dependent.h' and one to simply `dependent.h:'. + 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" rm -f "$tmpdepfile" ;; @@ -367,7 +344,7 @@ hp2) done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. + # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// @@ -382,9 +359,9 @@ hp2) 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'. + # 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. + # 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= @@ -430,7 +407,8 @@ tru64) done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$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 @@ -465,11 +443,11 @@ msvc7) p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p +s/\(.*\)/ \1 \\/p s/.\(.*\) \\/\1:/ H $ { - s/.*/'"$tab"'/ + s/.*/ / G p }' >> "$depfile" @@ -500,7 +478,7 @@ dashmstdout) shift fi - # Remove '-o $object'. + # Remove `-o $object'. IFS=" " for arg do @@ -520,14 +498,15 @@ 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:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' "$nl" < "$tmpdepfile" | \ + 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" @@ -583,7 +562,8 @@ 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 ' ' "$nl" | \ + 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" @@ -603,7 +583,7 @@ cpp) shift fi - # Remove '-o $object'. + # Remove `-o $object'. IFS=" " for arg do @@ -672,8 +652,8 @@ msvisualcpp) 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::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; diff --git a/docs/Makefile.in b/docs/Makefile.in index 9036a0851f0617f0ec5a1bd9edfc9c6d6daa42f4..ebbc3caea8e6159086a046257775f0e785d5e682 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,23 +14,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -52,7 +79,7 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = docs -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(srcdir)/version.entities.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -60,7 +87,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -96,21 +122,28 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = version.entities CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -118,9 +151,29 @@ am__can_run_installinfo = \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -313,6 +366,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -524,22 +578,25 @@ clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -554,57 +611,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -620,12 +632,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -637,15 +644,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -654,6 +657,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -814,22 +832,20 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am upload: diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am index dbfdd00de88047ff8aeaa3dd9e2e261d64e8f728..379074c0dc923c6eec2c0eae7e6f28ae35883ae2 100644 --- a/docs/plugins/Makefile.am +++ b/docs/plugins/Makefile.am @@ -95,6 +95,7 @@ EXTRA_HFILES = \ $(top_srcdir)/gst/audiofx/audiowsincband.h \ $(top_srcdir)/gst/audiofx/audiowsinclimit.h \ $(top_srcdir)/gst/audiofx/audiofirfilter.h \ + $(top_srcdir)/gst/audiofx/gstscaletempo.h \ $(top_srcdir)/gst/audioparsers/gstaacparse.h \ $(top_srcdir)/gst/audioparsers/gstac3parse.h \ $(top_srcdir)/gst/audioparsers/gstamrparse.h \ @@ -114,6 +115,9 @@ EXTRA_HFILES = \ $(top_srcdir)/gst/debugutils/gsttaginject.h \ $(top_srcdir)/gst/debugutils/progressreport.h \ $(top_srcdir)/gst/deinterlace/gstdeinterlace.h \ + $(top_srcdir)/gst/dtmf/gstdtmfsrc.h \ + $(top_srcdir)/gst/dtmf/gstrtpdtmfsrc.h \ + $(top_srcdir)/gst/dtmf/gstrtpdtmfdepay.h \ $(top_srcdir)/gst/effectv/gstaging.h \ $(top_srcdir)/gst/effectv/gstdice.h \ $(top_srcdir)/gst/effectv/gstedge.h \ @@ -167,6 +171,8 @@ EXTRA_HFILES = \ $(top_srcdir)/gst/rtpmanager/gstrtpptdemux.h \ $(top_srcdir)/gst/rtpmanager/gstrtpsession.h \ $(top_srcdir)/gst/rtpmanager/gstrtpssrcdemux.h \ + $(top_srcdir)/gst/rtpmanager/gstrtpmux.h \ + $(top_srcdir)/gst/rtpmanager/gstrtpdtmfmux.h \ $(top_srcdir)/gst/rtsp/gstrtpdec.h \ $(top_srcdir)/gst/rtsp/gstrtspsrc.h \ $(top_srcdir)/gst/shapewipe/gstshapewipe.h \ diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in index 5800f672c3ea10ebc710b333e1d8d305ab15dbd1..d3ca16e75d9175733998826ce974b97dfaa622a1 100644 --- a/docs/plugins/Makefile.in +++ b/docs/plugins/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -32,23 +31,51 @@ # This is an include file specifically tuned for building documentation # for GStreamer plug-ins VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -68,9 +95,9 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/common/gtk-doc-plugins.mak \ - $(top_srcdir)/common/upload-doc.mak +DIST_COMMON = $(top_srcdir)/common/upload-doc.mak \ + $(top_srcdir)/common/gtk-doc-plugins.mak $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am subdir = docs/plugins ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -78,7 +105,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -114,12 +140,18 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ @@ -127,6 +159,7 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) AALIB_CFLAGS = @AALIB_CFLAGS@ AALIB_CONFIG = @AALIB_CONFIG@ @@ -292,6 +325,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -552,6 +586,7 @@ EXTRA_HFILES = \ $(top_srcdir)/gst/audiofx/audiowsincband.h \ $(top_srcdir)/gst/audiofx/audiowsinclimit.h \ $(top_srcdir)/gst/audiofx/audiofirfilter.h \ + $(top_srcdir)/gst/audiofx/gstscaletempo.h \ $(top_srcdir)/gst/audioparsers/gstaacparse.h \ $(top_srcdir)/gst/audioparsers/gstac3parse.h \ $(top_srcdir)/gst/audioparsers/gstamrparse.h \ @@ -571,6 +606,9 @@ EXTRA_HFILES = \ $(top_srcdir)/gst/debugutils/gsttaginject.h \ $(top_srcdir)/gst/debugutils/progressreport.h \ $(top_srcdir)/gst/deinterlace/gstdeinterlace.h \ + $(top_srcdir)/gst/dtmf/gstdtmfsrc.h \ + $(top_srcdir)/gst/dtmf/gstrtpdtmfsrc.h \ + $(top_srcdir)/gst/dtmf/gstrtpdtmfdepay.h \ $(top_srcdir)/gst/effectv/gstaging.h \ $(top_srcdir)/gst/effectv/gstdice.h \ $(top_srcdir)/gst/effectv/gstedge.h \ @@ -624,6 +662,8 @@ EXTRA_HFILES = \ $(top_srcdir)/gst/rtpmanager/gstrtpptdemux.h \ $(top_srcdir)/gst/rtpmanager/gstrtpsession.h \ $(top_srcdir)/gst/rtpmanager/gstrtpssrcdemux.h \ + $(top_srcdir)/gst/rtpmanager/gstrtpmux.h \ + $(top_srcdir)/gst/rtpmanager/gstrtpdtmfmux.h \ $(top_srcdir)/gst/rtsp/gstrtpdec.h \ $(top_srcdir)/gst/rtsp/gstrtspsrc.h \ $(top_srcdir)/gst/shapewipe/gstshapewipe.h \ @@ -764,9 +804,9 @@ INSPECT_DIR = inspect @ENABLE_GTK_DOC_TRUE@INSPECT_REGISTRY = $(top_builddir)/docs/plugins/inspect-registry.xml @ENABLE_GTK_DOC_TRUE@INSPECT_ENVIRONMENT = \ @ENABLE_GTK_DOC_TRUE@ LC_ALL=C \ -@ENABLE_GTK_DOC_TRUE@ GST_PLUGIN_SYSTEM_PATH= \ -@ENABLE_GTK_DOC_TRUE@ GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(top_builddir)/plugins:$(top_builddir)/src:$(top_builddir)/gnl \ -@ENABLE_GTK_DOC_TRUE@ GST_REGISTRY=$(INSPECT_REGISTRY) \ +@ENABLE_GTK_DOC_TRUE@ GST_PLUGIN_SYSTEM_PATH_1_0= \ +@ENABLE_GTK_DOC_TRUE@ GST_PLUGIN_PATH_1_0=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(top_builddir)/plugins:$(top_builddir)/src:$(top_builddir)/gnl \ +@ENABLE_GTK_DOC_TRUE@ GST_REGISTRY_1_0=$(INSPECT_REGISTRY) \ @ENABLE_GTK_DOC_TRUE@ PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \ @ENABLE_GTK_DOC_TRUE@ $(INSPECT_EXTRA_ENVIRONMENT) @@ -814,11 +854,11 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -tags: TAGS -TAGS: +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -957,17 +997,17 @@ uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool clean-local dist-hook distclean \ - distclean-generic distclean-libtool distclean-local distdir \ - dvi dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-data-local install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - uninstall uninstall-am uninstall-local + clean-libtool clean-local cscopelist-am ctags-am dist-hook \ + distclean distclean-generic distclean-libtool distclean-local \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags-am uninstall uninstall-am uninstall-local html: html-build.stamp @@ -1156,10 +1196,7 @@ update: scanobj-update @ENABLE_GTK_DOC_TRUE@ mkhtml_options="$$mkhtml_options --verbose"; \ @ENABLE_GTK_DOC_TRUE@ fi; \ @ENABLE_GTK_DOC_TRUE@ fi; \ -@ENABLE_GTK_DOC_TRUE@ cd html && gtkdoc-mkhtml $$mkhtml_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) -@ENABLE_GTK_DOC_TRUE@ @mv html/index.sgml html/index.sgml.bak -@ENABLE_GTK_DOC_TRUE@ @$(SED) "s/ href=\"$(DOC_MODULE)\// href=\"$(DOC_MODULE)-@GST_API_VERSION@\//g" html/index.sgml.bak >html/index.sgml -@ENABLE_GTK_DOC_TRUE@ @rm -f html/index.sgml.bak +@ENABLE_GTK_DOC_TRUE@ cd html && gtkdoc-mkhtml $$mkhtml_options $(DOC_MODULE)-@GST_API_VERSION@ $(DOC_MAIN_SGML_FILE) @ENABLE_GTK_DOC_TRUE@ @rm -f html/$(DOC_MAIN_SGML_FILE) @ENABLE_GTK_DOC_TRUE@ @rm -rf html/xml @ENABLE_GTK_DOC_TRUE@ @rm -f html/version.entities @@ -1219,9 +1256,9 @@ install-data-local: $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \ done; \ fi; \ - echo '-- Installing $(builddir)/html/$(DOC_MODULE).devhelp2' ; \ - if test -e $(builddir)/html/$(DOC_MODULE).devhelp2; then \ - $(INSTALL_DATA) $(builddir)/html/$(DOC_MODULE).devhelp2 \ + echo '-- Installing $(builddir)/html/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2' ; \ + if test -e $(builddir)/html/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2; then \ + $(INSTALL_DATA) $(builddir)/html/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2 \ $(DESTDIR)$(TARGET_DIR)/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) || true ; \ diff --git a/docs/plugins/gst-plugins-good-plugins-docs.sgml b/docs/plugins/gst-plugins-good-plugins-docs.sgml index 724dd4adcca0ef8655898fb60fc312357fa778c5..148c6390a043d58cffa83ffa419fef7c4c173343 100644 --- a/docs/plugins/gst-plugins-good-plugins-docs.sgml +++ b/docs/plugins/gst-plugins-good-plugins-docs.sgml @@ -60,6 +60,7 @@ <xi:include href="xml/element-deinterleave.xml" /> <xi:include href="xml/element-dicetv.xml" /> <xi:include href="xml/element-directsoundsink.xml" /> + <xi:include href="xml/element-dtmfsrc.xml" /> <xi:include href="xml/element-dv1394src.xml" /> <xi:include href="xml/element-dvdec.xml" /> <xi:include href="xml/element-dvdemux.xml" /> @@ -75,7 +76,6 @@ <xi:include href="xml/element-flvmux.xml" /> <xi:include href="xml/element-flxdec.xml" /> <xi:include href="xml/element-gamma.xml" /> - <xi:include href="xml/element-gdkpixbufoverlay.xml" /> <xi:include href="xml/element-gdkpixbufsink.xml" /> <xi:include href="xml/element-goom.xml" /> <xi:include href="xml/element-goom2k1.xml" /> @@ -128,14 +128,28 @@ <xi:include href="xml/element-rgvolume.xml" /> <xi:include href="xml/element-rippletv.xml" /> <xi:include href="xml/element-rtpdec.xml" /> + <xi:include href="xml/element-rtpac3depay.xml" /> + <xi:include href="xml/element-rtpac3pay.xml" /> + <xi:include href="xml/element-rtpamrdepay.xml" /> + <xi:include href="xml/element-rtpamrpay.xml" /> + <xi:include href="xml/element-rtpbvdepay.xml" /> + <xi:include href="xml/element-rtpbvpay.xml" /> + <xi:include href="xml/element-rtpL16depay.xml" /> + <xi:include href="xml/element-rtpL16pay.xml" /> <xi:include href="xml/element-rtpj2kpay.xml" /> <xi:include href="xml/element-rtpjpegpay.xml" /> + <xi:include href="xml/element-rtpsbcpay.xml" /> <xi:include href="xml/element-rtspsrc.xml" /> <xi:include href="xml/element-rtpbin.xml" /> + <xi:include href="xml/element-rtpdtmfmux.xml" /> + <xi:include href="xml/element-rtpdtmfsrc.xml" /> <xi:include href="xml/element-rtpjitterbuffer.xml" /> + <xi:include href="xml/element-rtpmux.xml" /> <xi:include href="xml/element-rtpptdemux.xml" /> <xi:include href="xml/element-rtpsession.xml" /> <xi:include href="xml/element-rtpssrcdemux.xml" /> + <xi:include href="xml/element-sbcparse.xml" /> + <xi:include href="xml/element-scaletempo.xml" /> <xi:include href="xml/element-shagadelictv.xml" /> <xi:include href="xml/element-shapewipe.xml" /> <xi:include href="xml/element-smpte.xml" /> @@ -190,6 +204,7 @@ <xi:include href="xml/plugin-debug.xml" /> <xi:include href="xml/plugin-deinterlace.xml" /> <xi:include href="xml/plugin-directsound.xml" /> + <xi:include href="xml/plugin-dtmf.xml" /> <xi:include href="xml/plugin-dv.xml" /> <xi:include href="xml/plugin-equalizer.xml" /> <xi:include href="xml/plugin-effectv.xml" /> diff --git a/docs/plugins/gst-plugins-good-plugins-sections.txt b/docs/plugins/gst-plugins-good-plugins-sections.txt index 07e50c754ef130967d13d80774f213c7474416d1..86ecacb56d971f127dcad40317cb1c86c36da530 100644 --- a/docs/plugins/gst-plugins-good-plugins-sections.txt +++ b/docs/plugins/gst-plugins-good-plugins-sections.txt @@ -603,6 +603,25 @@ GST_DSOUND_LOCK GST_DSOUND_UNLOCK </SECTION> +<SECTION> +<FILE>element-dtmfsrc</FILE> +<TITLE>dtmfsrc</TITLE> +GstDTMFSrc +<SUBSECTION Standard> +GstDTMFEventType +GstDTMFSrcEvent +GstDTMFSrcClass +GST_TYPE_DTMF_SRC +GST_DTMF_SRC +GST_DTMF_SRC_CAST +GST_DTMF_SRC_CLASS +GST_DTMF_SRC_GET_CLASS +GST_IS_DTMF_SRC +GST_IS_DTMF_SRC_CLASS +gst_dtmf_src_get_type +gst_dtmf_src_plugin_init +</SECTION> + <SECTION> <FILE>element-dv1394src</FILE> <TITLE>dv1394src</TITLE> @@ -838,20 +857,6 @@ GST_IS_GAMMA_CLASS gst_gamma_get_type </SECTION> -<SECTION> -<FILE>element-gdkpixbufoverlay</FILE> -<TITLE>gdkpixbufoverlay</TITLE> -GstGdkPixbufOverlay -<SUBSECTION Standard> -GstGdkPixbufOverlayClass -GST_TYPE_GDK_PIXBUF_OVERLAY -GST_GDK_PIXBUF_OVERLAY -GST_GDK_PIXBUF_OVERLAY_CLASS -GST_IS_GDK_PIXBUF_OVERLAY -GST_IS_GDK_PIXBUF_OVERLAY_CLASS -gst_gdk_pixbuf_overlay_get_type -</SECTION> - <SECTION> <FILE>element-gdkpixbufsink</FILE> <TITLE>gdkpixbufsink</TITLE> @@ -1585,6 +1590,160 @@ GST_IS_RTP_DEC_CLASS gst_rtp_dec_get_type </SECTION> +<SECTION> +<FILE>element-rtpdtmfdepay</FILE> +<TITLE>rtpdtmfdepay</TITLE> +GstRtpDTMFDepay +<SUBSECTION Standard> +GstRtpDTMFDepayClass +GST_TYPE_RTP_DTMF_DEPAY +GST_IS_RTP_DTMF_DEPAY +GST_IS_RTP_DTMF_DEPAY_CLASS +GST_RTP_DTMF_DEPAY +GST_RTP_DTMF_DEPAY_CLASS +gst_rtp_dtmf_depay_plugin_init +</SECTION> + +<SECTION> +<FILE>element-rtpdtmfsrc</FILE> +<TITLE>rtpdtmfsrc</TITLE> +GstRTPDTMFSrc +<SUBSECTION Standard> +GstRTPDTMFSrcClass +GST_TYPE_RTP_DTMF_SRC +GST_IS_RTP_DTMF_SRC +GST_IS_RTP_DTMF_SRC_CLASS +GST_RTP_DTMF_SRC +GST_RTP_DTMF_SRC_CAST +GST_RTP_DTMF_SRC_CLASS +GST_RTP_DTMF_SRC_GET_CLASS +gst_rtp_dtmf_src_get_type +gst_rtp_dtmf_src_plugin_init +GstRTPDTMFPayload +GstRTPDTMFSrcEvent +GstRTPDTMFEventType +</SECTION> + +<SECTION> +<FILE>element-rtpac3depay</FILE> +<TITLE>rtpac3depay</TITLE> +GstRtpAC3Depay +<SUBSECTION Standard> +GstRtpAC3DepayClass +GST_RTP_AC3_DEPAY +GST_IS_RTP_AC3_DEPAY +GST_TYPE_RTP_AC3_DEPAY +GST_RTP_AC3_DEPAY_CLASS +GST_IS_RTP_AC3_DEPAY_CLASS +gst_rtp_ac3_depay_plugin_init +gst_rtp_ac3_depay_get_type +</SECTION> + +<SECTION> +<FILE>element-rtpac3pay</FILE> +<TITLE>rtpac3pay</TITLE> +GstRtpAC3Pay +<SUBSECTION Standard> +GstRtpAC3PayClass +GST_RTP_AC3_PAY +GST_IS_RTP_AC3_PAY +GST_TYPE_RTP_AC3_PAY +GST_RTP_AC3_PAY_CLASS +GST_IS_RTP_AC3_PAY_CLASS +gst_rtp_ac3_pay_plugin_init +gst_rtp_ac3_pay_get_type +</SECTION> + +<SECTION> +<FILE>element-rtpamrdepay</FILE> +<TITLE>rtpamrdepay</TITLE> +GstRtpAMRDepay +<SUBSECTION Standard> +GstRtpAMRDepayClass +GST_RTP_AMR_DEPAY +GST_IS_RTP_AMR_DEPAY +GST_TYPE_RTP_AMR_DEPAY +GST_RTP_AMR_DEPAY_CLASS +GST_IS_RTP_AMR_DEPAY_CLASS +gst_rtp_amr_depay_plugin_init +gst_rtp_amr_depay_get_type +</SECTION> + +<SECTION> +<FILE>element-rtpamrpay</FILE> +<TITLE>rtpamrpay</TITLE> +GstRtpAMRPay +<SUBSECTION Standard> +GstRtpAMRPayClass +GST_RTP_AMR_PAY +GST_IS_RTP_AMR_PAY +GST_TYPE_RTP_AMR_PAY +GST_RTP_AMR_PAY_CLASS +GST_IS_RTP_AMR_PAY_CLASS +gst_rtp_amr_pay_plugin_init +gst_rtp_amr_pay_get_type +</SECTION> + +<SECTION> +<FILE>element-rtpbvdepay</FILE> +<TITLE>rtpbvdepay</TITLE> +GstRtpBVDepay +<SUBSECTION Standard> +GstRtpBVDepayClass +GST_RTP_BV_DEPAY +GST_IS_RTP_BV_DEPAY +GST_TYPE_RTP_BV_DEPAY +GST_RTP_BV_DEPAY_CLASS +GST_IS_RTP_BV_DEPAY_CLASS +gst_rtp_bv_depay_plugin_init +gst_rtp_bv_depay_get_type +</SECTION> + +<SECTION> +<FILE>element-rtpbvpay</FILE> +<TITLE>rtpbvpay</TITLE> +GstRtpBVPay +<SUBSECTION Standard> +GstRtpBVPayClass +GST_RTP_BV_PAY +GST_IS_RTP_BV_PAY +GST_TYPE_RTP_BV_PAY +GST_RTP_BV_PAY_CLASS +GST_IS_RTP_BV_PAY_CLASS +gst_rtp_bv_pay_plugin_init +gst_rtp_bv_pay_get_type +</SECTION> + +<SECTION> +<FILE>element-rtpL16depay</FILE> +<TITLE>rtpL16depay</TITLE> +GstRtpL16Depay +<SUBSECTION Standard> +GstRtpL16DepayClass +GST_RTP_L16_DEPAY +GST_IS_RTP_L16_DEPAY +GST_TYPE_RTP_L16_DEPAY +GST_RTP_L16_DEPAY_CLASS +GST_IS_RTP_L16_DEPAY_CLASS +gst_rtp_L16_depay_plugin_init +gst_rtp_L16_depay_get_type +</SECTION> + +<SECTION> +<FILE>element-rtpL16pay</FILE> +<TITLE>rtpL16pay</TITLE> +GstRtpL16Pay +<SUBSECTION Standard> +GstRtpL16PayClass +GST_RTP_L16_PAY +GST_IS_RTP_L16_PAY +GST_TYPE_RTP_L16_PAY +GST_RTP_L16_PAY_CLASS +GST_IS_RTP_L16_PAY_CLASS +gst_rtp_L16_pay_plugin_init +gst_rtp_L16_pay_get_type +</SECTION> + <SECTION> <FILE>element-rtpj2kpay</FILE> <TITLE>rtpj2kpay</TITLE> @@ -1615,6 +1774,20 @@ gst_rtp_jpeg_pay_plugin_init gst_rtp_jpeg_pay_get_type </SECTION> +<SECTION> +<FILE>element-rtpsbcpay</FILE> +<TITLE>rtpsbcpay</TITLE> +GstRtpSBCPay +<SUBSECTION Standard> +GstRtpSBCPayClass +GST_RTP_SBC_PAY +GST_RTP_SBC_PAY_CLASS +GST_IS_RTP_SBC_PAY +GST_IS_RTP_SBC_PAY_CLASS +GST_TYPE_RTP_SBC_PAY +gst_rtp_sbc_pay_get_type +</SECTION> + <SECTION> <FILE>element-rtspsrc</FILE> <TITLE>rtspsrc</TITLE> @@ -1641,6 +1814,20 @@ GST_RTSP_STREAM_UNLOCK gst_rtspsrc_get_type </SECTION> +<SECTION> +<FILE>element-sbcparse</FILE> +<TITLE>sbcparse</TITLE> +GstSbcParse +<SUBSECTION Standard> +GstSbcParseClass +GST_SBC_PARSE +GST_SBC_PARSE_CLASS +GST_IS_SBC_PARSE +GST_IS_SBC_PARSE_CLASS +GST_TYPE_SBC_PARSE +gst_sbc_parse_get_type +</SECTION> + <SECTION> <FILE>element-shapewipe</FILE> <TITLE>shapewipe</TITLE> @@ -2239,6 +2426,51 @@ GST_TYPE_RIPPLETV gst_rippletv_get_type </SECTION> +<SECTION> +<FILE>element-rtpdtmfmux</FILE> +<TITLE>rtpdtmfmux</TITLE> +GstRTPDTMFMux +<SUBSECTION Standard> +GST_IS_RTP_DTMF_MUX +GST_IS_RTP_DTMF_MUX_CLASS +GST_TYPE_RTP_DTMF_MUX +GstRTPDTMFMuxClass +GST_RTP_DTMF_MUX +GST_RTP_DTMF_MUX_CLASS +gst_rtp_dtmf_mux_get_type +gst_rtp_dtmf_mux_plugin_init +</SECTION> + +<SECTION> +<FILE>element-rtpmux</FILE> +<TITLE>rtpmux</TITLE> +GstRTPMux +<SUBSECTION Standard> +GST_IS_RTP_MUX +GST_IS_RTP_MUX_CLASS +GST_RTP_MUX +GST_RTP_MUX_CLASS +GST_RTP_MUX_GET_CLASS +GST_TYPE_RTP_MUX +GstRTPMuxClass +gst_rtp_mux_get_type +gst_rtp_mux_plugin_init +</SECTION> + +<SECTION> +<FILE>element-scaletempo</FILE> +<TITLE>scaletempo</TITLE> +GstScaletempo +<SUBSECTION Standard> +GstScaletempoClass +GST_IS_SCALETEMPO +GST_IS_SCALETEMPO_CLASS +GST_SCALETEMPO +GST_SCALETEMPO_CLASS +GST_TYPE_SCALETEMPO +gst_scaletempo_get_type +</SECTION> + <SECTION> <FILE>element-shagadelictv</FILE> <TITLE>shagadelictv</TITLE> diff --git a/docs/plugins/gst-plugins-good-plugins.args b/docs/plugins/gst-plugins-good-plugins.args index 6220344ad38f60a5439945977e1f3e0ea017fd85..57c382c2de6946c437e0c0819231bdebe41d2cd6 100644 --- a/docs/plugins/gst-plugins-good-plugins.args +++ b/docs/plugins/gst-plugins-good-plugins.args @@ -253,7 +253,7 @@ <TYPE>gint</TYPE> <RANGE>>= G_MAXULONG</RANGE> <FLAGS>rw</FLAGS> -<NICK>Start Index</NICK> +<NICK>Stop Index</NICK> <BLURB>Stop value of index. The special value -1 means no stop.</BLURB> <DEFAULT>0</DEFAULT> </ARG> @@ -484,7 +484,7 @@ <RANGE></RANGE> <FLAGS>rw</FLAGS> <NICK>Multicast Group</NICK> -<BLURB>The Address of multicast group to join.</BLURB> +<BLURB>The Address of multicast group to join. DEPRECATED: Use address property instead.</BLURB> <DEFAULT>"0.0.0.0"</DEFAULT> </ARG> @@ -628,6 +628,26 @@ <DEFAULT></DEFAULT> </ARG> +<ARG> +<NAME>GstUDPSrc::bind-address</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Bind Address</NICK> +<BLURB>Address to bind the socket to. This is equivalent to the multicast-group property.</BLURB> +<DEFAULT>"0.0.0.0"</DEFAULT> +</ARG> + +<ARG> +<NAME>GstUDPSrc::address</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Address</NICK> +<BLURB>Address to receive packets for. This is equivalent to the multicast-group property for now.</BLURB> +<DEFAULT>"0.0.0.0"</DEFAULT> +</ARG> + <ARG> <NAME>GstSMPTE::border</NAME> <TYPE>gint</TYPE> @@ -898,6 +918,76 @@ <DEFAULT>2</DEFAULT> </ARG> +<ARG> +<NAME>GstRTSPSrc::udp-reconnect</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Reconnect to the server</NICK> +<BLURB>Reconnect to the server if RTSP connection is closed when doing UDP.</BLURB> +<DEFAULT>TRUE</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTSPSrc::proxy-id</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>proxy-id</NICK> +<BLURB>HTTP proxy URI user id for authentication.</BLURB> +<DEFAULT>""</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTSPSrc::proxy-pw</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>proxy-pw</NICK> +<BLURB>HTTP proxy URI user password for authentication.</BLURB> +<DEFAULT>""</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTSPSrc::multicast-iface</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Multicast Interface</NICK> +<BLURB>The network interface on which to join the multicast group.</BLURB> +<DEFAULT>NULL</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTSPSrc::ntp-sync</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Sync on NTP clock</NICK> +<BLURB>Synchronize received streams to the NTP clock.</BLURB> +<DEFAULT>FALSE</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTSPSrc::use-pipeline-clock</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Use pipeline clock</NICK> +<BLURB>Use the pipeline running-time to set the NTP time in the RTCP SR messages.</BLURB> +<DEFAULT>FALSE</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTSPSrc::sdes</NAME> +<TYPE>GstStructure*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>SDES</NICK> +<BLURB>The SDES items of this session.</BLURB> +<DEFAULT></DEFAULT> +</ARG> + <ARG> <NAME>GstRTPDec::skip</NAME> <TYPE>gint</TYPE> @@ -934,7 +1024,7 @@ <RANGE></RANGE> <FLAGS>rw</FLAGS> <NICK>message</NICK> -<BLURB>Post a level message for each passed interval.</BLURB> +<BLURB>Post a 'level' message for each passed interval (deprecated).</BLURB> <DEFAULT>TRUE</DEFAULT> </ARG> @@ -958,6 +1048,16 @@ <DEFAULT>300000000</DEFAULT> </ARG> +<ARG> +<NAME>GstLevel::post-messages</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Post Messages</NICK> +<BLURB>Whether to post a 'level' element message on the bus for each passed interval.</BLURB> +<DEFAULT>TRUE</DEFAULT> +</ARG> + <ARG> <NAME>GstDiceTV::square-bits</NAME> <TYPE>gint</TYPE> @@ -1084,7 +1184,7 @@ <RANGE><= 255</RANGE> <FLAGS>rw</FLAGS> <NICK>Target Blue</NICK> -<BLURB>The Blue target.</BLURB> +<BLURB>The blue color value for custom RGB chroma keying.</BLURB> <DEFAULT>0</DEFAULT> </ARG> @@ -1094,7 +1194,7 @@ <RANGE><= 255</RANGE> <FLAGS>rw</FLAGS> <NICK>Target Green</NICK> -<BLURB>The Green target.</BLURB> +<BLURB>The green color value for custom RGB chroma keying.</BLURB> <DEFAULT>255</DEFAULT> </ARG> @@ -1104,7 +1204,7 @@ <RANGE><= 255</RANGE> <FLAGS>rw</FLAGS> <NICK>Target Red</NICK> -<BLURB>The Red target.</BLURB> +<BLURB>The red color value for custom RGB chroma keying.</BLURB> <DEFAULT>0</DEFAULT> </ARG> @@ -1123,7 +1223,7 @@ <TYPE>guint</TYPE> <RANGE><= 128</RANGE> <FLAGS>rw</FLAGS> -<NICK>Sensitivity</NICK> +<NICK>White Sensitivity</NICK> <BLURB>Sensitivity to bright colors.</BLURB> <DEFAULT>100</DEFAULT> </ARG> @@ -2558,6 +2658,36 @@ <DEFAULT></DEFAULT> </ARG> +<ARG> +<NAME>GstDynUDPSink::bind-address</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Bind Address</NICK> +<BLURB>Address to bind the socket to.</BLURB> +<DEFAULT>NULL</DEFAULT> +</ARG> + +<ARG> +<NAME>GstDynUDPSink::bind-port</NAME> +<TYPE>gint</TYPE> +<RANGE>[0,65535]</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Bind Port</NICK> +<BLURB>Port to bind the socket to.</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstDynUDPSink::socket-v6</NAME> +<TYPE>GSocket*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Socket IPv6</NICK> +<BLURB>Socket to use for UDPv6 sending. (NULL == allocate).</BLURB> +<DEFAULT></DEFAULT> +</ARG> + <ARG> <NAME>GstCdioCddaSrc::read-speed</NAME> <TYPE>gint</TYPE> @@ -2734,7 +2864,7 @@ <RANGE></RANGE> <FLAGS>rw</FLAGS> <NICK>Force IPv4</NICK> -<BLURB>Forcing the use of an IPv4 socket.</BLURB> +<BLURB>Forcing the use of an IPv4 socket (DEPRECATED, has no effect anymore).</BLURB> <DEFAULT>FALSE</DEFAULT> </ARG> @@ -2748,6 +2878,46 @@ <DEFAULT>NULL</DEFAULT> </ARG> +<ARG> +<NAME>GstMultiUDPSink::bind-address</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Bind Address</NICK> +<BLURB>Address to bind the socket to.</BLURB> +<DEFAULT>NULL</DEFAULT> +</ARG> + +<ARG> +<NAME>GstMultiUDPSink::bind-port</NAME> +<TYPE>gint</TYPE> +<RANGE>[0,65535]</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Bind Port</NICK> +<BLURB>Port to bind the socket to.</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstMultiUDPSink::socket-v6</NAME> +<TYPE>GSocket*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Socket Handle IPv6</NICK> +<BLURB>Socket to use for UDPv6 sending. (NULL == allocate).</BLURB> +<DEFAULT></DEFAULT> +</ARG> + +<ARG> +<NAME>GstMultiUDPSink::used-socket-v6</NAME> +<TYPE>GSocket*</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Used Socket Handle IPv6</NICK> +<BLURB>Socket currently in use for UDPv6 sending. (NULL == no socket).</BLURB> +<DEFAULT></DEFAULT> +</ARG> + <ARG> <NAME>GstCmmlDec::wait-clip-end-time</NAME> <TYPE>gboolean</TYPE> @@ -3261,40 +3431,40 @@ <ARG> <NAME>GstVideoCrop::bottom</NAME> <TYPE>gint</TYPE> -<RANGE>>= 0</RANGE> +<RANGE>>= G_MAXULONG</RANGE> <FLAGS>rw</FLAGS> <NICK>Bottom</NICK> -<BLURB>Pixels to crop at bottom.</BLURB> +<BLURB>Pixels to crop at bottom (-1 to auto-crop).</BLURB> <DEFAULT>0</DEFAULT> </ARG> <ARG> <NAME>GstVideoCrop::left</NAME> <TYPE>gint</TYPE> -<RANGE>>= 0</RANGE> +<RANGE>>= G_MAXULONG</RANGE> <FLAGS>rw</FLAGS> <NICK>Left</NICK> -<BLURB>Pixels to crop at left.</BLURB> +<BLURB>Pixels to crop at left (-1 to auto-crop).</BLURB> <DEFAULT>0</DEFAULT> </ARG> <ARG> <NAME>GstVideoCrop::right</NAME> <TYPE>gint</TYPE> -<RANGE>>= 0</RANGE> +<RANGE>>= G_MAXULONG</RANGE> <FLAGS>rw</FLAGS> <NICK>Right</NICK> -<BLURB>Pixels to crop at right.</BLURB> +<BLURB>Pixels to crop at right (-1 to auto-crop).</BLURB> <DEFAULT>0</DEFAULT> </ARG> <ARG> <NAME>GstVideoCrop::top</NAME> <TYPE>gint</TYPE> -<RANGE>>= 0</RANGE> +<RANGE>>= G_MAXULONG</RANGE> <FLAGS>rw</FLAGS> <NICK>Top</NICK> -<BLURB>Pixels to crop at top.</BLURB> +<BLURB>Pixels to crop at top (-1 to auto-crop).</BLURB> <DEFAULT>0</DEFAULT> </ARG> @@ -3428,6 +3598,36 @@ <DEFAULT>GST_V4L2_IO_AUTO</DEFAULT> </ARG> +<ARG> +<NAME>GstV4l2Src::extra-controls</NAME> +<TYPE>GstStructure*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Extra Controls</NICK> +<BLURB>Extra v4l2 controls (CIDs) for the device.</BLURB> +<DEFAULT></DEFAULT> +</ARG> + +<ARG> +<NAME>GstV4l2Src::force-aspect-ratio</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Force aspect ratio</NICK> +<BLURB>When enabled, the pixel aspect ratio will be enforced.</BLURB> +<DEFAULT>TRUE</DEFAULT> +</ARG> + +<ARG> +<NAME>GstV4l2Src::pixel-aspect-ratio</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Pixel Aspect Ratio</NICK> +<BLURB>Overwrite the pixel aspect ratio of the device.</BLURB> +<DEFAULT>"1/1"</DEFAULT> +</ARG> + <ARG> <NAME>GstAudioChebBand::lower-frequency</NAME> <TYPE>gfloat</TYPE> @@ -3688,6 +3888,16 @@ <DEFAULT>0</DEFAULT> </ARG> +<ARG> +<NAME>GstAutoAudioSink::sync</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Sync</NICK> +<BLURB>Sync on the clock.</BLURB> +<DEFAULT>TRUE</DEFAULT> +</ARG> + <ARG> <NAME>GstAutoVideoSink::filter-caps</NAME> <TYPE>GstCaps*</TYPE> @@ -3708,6 +3918,16 @@ <DEFAULT>0</DEFAULT> </ARG> +<ARG> +<NAME>GstAutoVideoSink::sync</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Sync</NICK> +<BLURB>Sync on the clock.</BLURB> +<DEFAULT>TRUE</DEFAULT> +</ARG> + <ARG> <NAME>GstOsxAudioSink::device</NAME> <TYPE>gint</TYPE> @@ -20128,6 +20348,16 @@ <DEFAULT>"lt-gst-plugins-good-plugins-scan"</DEFAULT> </ARG> +<ARG> +<NAME>GstPulseSink::current-device</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Current Device</NICK> +<BLURB>The current PulseAudio sink device.</BLURB> +<DEFAULT>NULL</DEFAULT> +</ARG> + <ARG> <NAME>GstPulseSrc::device</NAME> <TYPE>gchar*</TYPE> @@ -20218,6 +20448,16 @@ <DEFAULT>"lt-gst-plugins-good-plugins-scan"</DEFAULT> </ARG> +<ARG> +<NAME>GstPulseSrc::current-device</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Current Device</NICK> +<BLURB>The current PulseAudio source device.</BLURB> +<DEFAULT>NULL</DEFAULT> +</ARG> + <ARG> <NAME>GstPulseMixer::device</NAME> <TYPE>gchar*</TYPE> @@ -20998,6 +21238,26 @@ <DEFAULT>FALSE</DEFAULT> </ARG> +<ARG> +<NAME>GstRtpBin::do-sync-event</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Do Sync Event</NICK> +<BLURB>Send event downstream when a stream is synchronized to the sender.</BLURB> +<DEFAULT>FALSE</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpBin::do-retransmission</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Do retransmission</NICK> +<BLURB>Send an event downstream to request packet retransmission.</BLURB> +<DEFAULT>FALSE</DEFAULT> +</ARG> + <ARG> <NAME>GstRtpJitterBuffer::do-lost</NAME> <TYPE>gboolean</TYPE> @@ -21058,6 +21318,56 @@ <DEFAULT>0</DEFAULT> </ARG> +<ARG> +<NAME>GstRtpJitterBuffer::do-retransmission</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Do Retransmission</NICK> +<BLURB>Send retransmission events upstream when a packet is late.</BLURB> +<DEFAULT>FALSE</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpJitterBuffer::rtx-delay</NAME> +<TYPE>gint</TYPE> +<RANGE>>= G_MAXULONG</RANGE> +<FLAGS>r</FLAGS> +<NICK>RTX Delay</NICK> +<BLURB>Extra time in ms to wait before sending retransmission event (-1 automatic).</BLURB> +<DEFAULT>20</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpJitterBuffer::rtx-delay-reorder</NAME> +<TYPE>gint</TYPE> +<RANGE>>= G_MAXULONG</RANGE> +<FLAGS>r</FLAGS> +<NICK>RTX Delay Reorder</NICK> +<BLURB>Sending retransmission event when this much reordering (-1 automatic).</BLURB> +<DEFAULT>3</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpJitterBuffer::rtx-retry-period</NAME> +<TYPE>gint</TYPE> +<RANGE>>= G_MAXULONG</RANGE> +<FLAGS>r</FLAGS> +<NICK>RTX Retry Period</NICK> +<BLURB>Try to get a retransmission for this many ms (-1 automatic).</BLURB> +<DEFAULT>160</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpJitterBuffer::rtx-retry-timeout</NAME> +<TYPE>gint</TYPE> +<RANGE>>= G_MAXULONG</RANGE> +<FLAGS>r</FLAGS> +<NICK>RTX Retry Timeout</NICK> +<BLURB>Retry sending a transmission event after this timeout in ms (-1 automatic).</BLURB> +<DEFAULT>40</DEFAULT> +</ARG> + <ARG> <NAME>GstRtpSession::bandwidth</NAME> <TYPE>gdouble</TYPE> @@ -21378,6 +21688,36 @@ <DEFAULT>none</DEFAULT> </ARG> +<ARG> +<NAME>GstV4l2Sink::extra-controls</NAME> +<TYPE>GstStructure*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Extra Controls</NICK> +<BLURB>Extra v4l2 controls (CIDs) for the device.</BLURB> +<DEFAULT></DEFAULT> +</ARG> + +<ARG> +<NAME>GstV4l2Sink::force-aspect-ratio</NAME> +<TYPE>gboolean</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Force aspect ratio</NICK> +<BLURB>When enabled, the pixel aspect ratio will be enforced.</BLURB> +<DEFAULT>TRUE</DEFAULT> +</ARG> + +<ARG> +<NAME>GstV4l2Sink::pixel-aspect-ratio</NAME> +<TYPE>gchar*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Pixel Aspect Ratio</NICK> +<BLURB>Overwrite the pixel aspect ratio of the device.</BLURB> +<DEFAULT>"1/1"</DEFAULT> +</ARG> + <ARG> <NAME>GstShapeWipe::border</NAME> <TYPE>gfloat</TYPE> @@ -21704,7 +22044,7 @@ <RANGE></RANGE> <FLAGS>rwx</FLAGS> <NICK>dts-method</NICK> -<BLURB>Method to determine DTS time.</BLURB> +<BLURB>(DEPRECATED) Method to determine DTS time.</BLURB> <DEFAULT>reorder</DEFAULT> </ARG> @@ -21834,7 +22174,7 @@ <RANGE></RANGE> <FLAGS>rwx</FLAGS> <NICK>dts-method</NICK> -<BLURB>Method to determine DTS time.</BLURB> +<BLURB>(DEPRECATED) Method to determine DTS time.</BLURB> <DEFAULT>reorder</DEFAULT> </ARG> @@ -21924,7 +22264,7 @@ <RANGE></RANGE> <FLAGS>rwx</FLAGS> <NICK>dts-method</NICK> -<BLURB>Method to determine DTS time.</BLURB> +<BLURB>(DEPRECATED) Method to determine DTS time.</BLURB> <DEFAULT>reorder</DEFAULT> </ARG> @@ -22014,7 +22354,7 @@ <RANGE></RANGE> <FLAGS>rwx</FLAGS> <NICK>dts-method</NICK> -<BLURB>Method to determine DTS time.</BLURB> +<BLURB>(DEPRECATED) Method to determine DTS time.</BLURB> <DEFAULT>reorder</DEFAULT> </ARG> @@ -22194,7 +22534,7 @@ <RANGE></RANGE> <FLAGS>rwx</FLAGS> <NICK>dts-method</NICK> -<BLURB>Method to determine DTS time.</BLURB> +<BLURB>(DEPRECATED) Method to determine DTS time.</BLURB> <DEFAULT>reorder</DEFAULT> </ARG> @@ -22684,7 +23024,7 @@ <RANGE></RANGE> <FLAGS>rw</FLAGS> <NICK>X Offset</NICK> -<BLURB>Horizontal offset of overlay image in pixels from top-left corner of video image.</BLURB> +<BLURB>For positive value, horizontal offset of overlay image in pixels from left of video image. For negative value, horizontal offset of overlay image in pixels from right of video image.</BLURB> <DEFAULT>0</DEFAULT> </ARG> @@ -22694,7 +23034,7 @@ <RANGE></RANGE> <FLAGS>rw</FLAGS> <NICK>Y Offset</NICK> -<BLURB>Vertical offset of overlay image in pixels from top-left corner of video image.</BLURB> +<BLURB>For positive value, vertical offset of overlay image in pixels from top of video image. For negative value, vertical offset of overlay image in pixels from bottom of video image.</BLURB> <DEFAULT>0</DEFAULT> </ARG> @@ -23328,6 +23668,16 @@ <DEFAULT>Normal</DEFAULT> </ARG> +<ARG> +<NAME>GstVP8Enc::timebase</NAME> +<TYPE>GstFraction</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Shortest interframe time</NICK> +<BLURB>Fraction of one second that is the shortest interframe time - normally left as zero which will default to the framerate.</BLURB> +<DEFAULT></DEFAULT> +</ARG> + <ARG> <NAME>GstVP8Dec::deblocking-level</NAME> <TYPE>guint</TYPE> @@ -23398,3 +23748,243 @@ <DEFAULT>TRUE</DEFAULT> </ARG> +<ARG> +<NAME>GstScaletempo::overlap</NAME> +<TYPE>gdouble</TYPE> +<RANGE>[0,1]</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Overlap Length</NICK> +<BLURB>Percentage of stride to overlap.</BLURB> +<DEFAULT>0.2</DEFAULT> +</ARG> + +<ARG> +<NAME>GstScaletempo::rate</NAME> +<TYPE>gdouble</TYPE> +<RANGE>[-2.14748e+09,2.14748e+09]</RANGE> +<FLAGS>r</FLAGS> +<NICK>Playback Rate</NICK> +<BLURB>Current playback rate.</BLURB> +<DEFAULT>1</DEFAULT> +</ARG> + +<ARG> +<NAME>GstScaletempo::search</NAME> +<TYPE>guint</TYPE> +<RANGE><= 500</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Search Length</NICK> +<BLURB>Length in milliseconds to search for best overlap position.</BLURB> +<DEFAULT>14</DEFAULT> +</ARG> + +<ARG> +<NAME>GstScaletempo::stride</NAME> +<TYPE>guint</TYPE> +<RANGE>[1,5000]</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Stride Length</NICK> +<BLURB>Length in milliseconds to output each stride.</BLURB> +<DEFAULT>30</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPMux::seqnum</NAME> +<TYPE>guint</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Sequence number</NICK> +<BLURB>The RTP sequence number of the last processed packet.</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPMux::seqnum-offset</NAME> +<TYPE>gint</TYPE> +<RANGE>>= G_MAXULONG</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Sequence number Offset</NICK> +<BLURB>Offset to add to all outgoing seqnum (-1 = random).</BLURB> +<DEFAULT>-1</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPMux::ssrc</NAME> +<TYPE>guint</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>SSRC</NICK> +<BLURB>The SSRC of the packets (-1 == random).</BLURB> +<DEFAULT>4294967295</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPMux::timestamp-offset</NAME> +<TYPE>gint</TYPE> +<RANGE>>= G_MAXULONG</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Timestamp Offset</NICK> +<BLURB>Offset to add to all outgoing timestamps (-1 = random).</BLURB> +<DEFAULT>-1</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpSBCPay::min-frames</NAME> +<TYPE>gint</TYPE> +<RANGE>>= G_MAXULONG</RANGE> +<FLAGS>rw</FLAGS> +<NICK>minimum frame number</NICK> +<BLURB>Minimum quantity of frames to send in one packet (-1 for maximum allowed by the mtu).</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPDTMFSrc::clock-rate</NAME> +<TYPE>guint</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>clockrate</NICK> +<BLURB>The clock-rate at which to generate the dtmf packets.</BLURB> +<DEFAULT>8000</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPDTMFSrc::packet-redundancy</NAME> +<TYPE>guint</TYPE> +<RANGE>[1,5]</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Packet Redundancy</NICK> +<BLURB>Number of packets to send to indicate start and stop dtmf events.</BLURB> +<DEFAULT>1</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPDTMFSrc::pt</NAME> +<TYPE>guint</TYPE> +<RANGE><= 128</RANGE> +<FLAGS>rw</FLAGS> +<NICK>payload type</NICK> +<BLURB>The payload type of the packets.</BLURB> +<DEFAULT>96</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPDTMFSrc::seqnum</NAME> +<TYPE>guint</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Sequence number</NICK> +<BLURB>The RTP sequence number of the last processed packet.</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPDTMFSrc::seqnum-offset</NAME> +<TYPE>gint</TYPE> +<RANGE>>= G_MAXULONG</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Sequence number Offset</NICK> +<BLURB>Offset to add to all outgoing seqnum (-1 = random).</BLURB> +<DEFAULT>-1</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPDTMFSrc::ssrc</NAME> +<TYPE>guint</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>SSRC</NICK> +<BLURB>The SSRC of the packets (-1 == random).</BLURB> +<DEFAULT>4294967295</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPDTMFSrc::timestamp</NAME> +<TYPE>guint</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Timestamp</NICK> +<BLURB>The RTP timestamp of the last processed packet.</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPDTMFSrc::timestamp-offset</NAME> +<TYPE>gint</TYPE> +<RANGE>>= G_MAXULONG</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Timestamp Offset</NICK> +<BLURB>Offset to add to all outgoing timestamps (-1 = random).</BLURB> +<DEFAULT>-1</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpDTMFDepay::max-duration</NAME> +<TYPE>guint</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Maximum duration</NICK> +<BLURB>The maxumimum duration (ms) of the outgoing soundpacket. (0 = no limit).</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpDTMFDepay::unit-time</NAME> +<TYPE>guint</TYPE> +<RANGE><= 1000</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Duration unittime</NICK> +<BLURB>The smallest unit (ms) the duration must be a multiple of (0 disables it).</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstDTMFSrc::interval</NAME> +<TYPE>guint</TYPE> +<RANGE>[10,50]</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Interval between tone packets</NICK> +<BLURB>Interval in ms between two tone packets.</BLURB> +<DEFAULT>50</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpVorbisPay::config-interval</NAME> +<TYPE>guint</TYPE> +<RANGE><= 3600</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Config Send Interval</NICK> +<BLURB>Send Config Insertion Interval in seconds (configuration headers will be multiplexed in the data stream when detected.) (0 = disabled).</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPRtxQueue::max-size-packets</NAME> +<TYPE>guint</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Max Size Packets</NICK> +<BLURB>Amount of packets to queue (0 = unlimited).</BLURB> +<DEFAULT>100</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRTPRtxQueue::max-size-time</NAME> +<TYPE>guint</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Max Size Times</NICK> +<BLURB>Amount of ms to queue (0 = unlimited).</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpGSTPay::config-interval</NAME> +<TYPE>guint</TYPE> +<RANGE><= 3600</RANGE> +<FLAGS>rw</FLAGS> +<NICK>Caps/Tags Send Interval</NICK> +<BLURB>Interval for sending caps and TAG events in seconds (0 = disabled).</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + diff --git a/docs/plugins/gst-plugins-good-plugins.hierarchy b/docs/plugins/gst-plugins-good-plugins.hierarchy index 22f85a5ec0f6e5b57aef94c93cbdfc01dad350e6..1818d7c3b67e384f3728c222e821478153bf304c 100644 --- a/docs/plugins/gst-plugins-good-plugins.hierarchy +++ b/docs/plugins/gst-plugins-good-plugins.hierarchy @@ -2,7 +2,7 @@ GObject GInitiallyUnowned GstObject GstAllocator - GstDefaultAllocator + GstAllocatorSysmem GstAudioRingBuffer GstAudioSinkRingBuffer GstAudioSrcRingBuffer @@ -22,10 +22,12 @@ GObject GstAuParse GstAudioDecoder GstFlacDec + GstMuLawDec GstSpeexDec GstWavpackDec GstAudioEncoder GstFlacEnc + GstMuLawEnc GstSpeexEnc GstWavpackEnc GstAviDemux @@ -38,6 +40,7 @@ GObject GstDcaParse GstFlacParse GstMpegAudioParse + GstSbcParse GstWavpackParse GstBaseSink GstAudioBaseSink @@ -59,6 +62,7 @@ GObject GstGdkPixbufSink GstV4l2Sink GstBaseSrc + GstDTMFSrc GstPushSrc GstAudioBaseSrc GstAudioSrc @@ -73,6 +77,7 @@ GObject GstUDPSrc GstV4l2Src GstXImageSrc + GstRTPDTMFSrc GstSplitFileSrc GstBaseTransform GstAudioFilter @@ -103,6 +108,7 @@ GObject GstProgressReport GstRgAnalysis GstRgLimiter + GstScaletempo GstTagInject GstVideoFilter GstAgingTV @@ -163,8 +169,7 @@ GObject GstMatroskaMux GstWebMMux GstMatroskaParse - GstMuLawDec - GstMuLawEnc + GstMonoscope GstMultipartDemux GstMultipartMux GstQTDemux @@ -178,6 +183,7 @@ GObject GstRtpAC3Depay GstRtpAMRDepay GstRtpCELTDepay + GstRtpDTMFDepay GstRtpG722Depay GstRtpG723Depay GstRtpG726Depay @@ -189,6 +195,7 @@ GObject GstRtpJ2KDepay GstRtpJPEGDepay GstRtpL16Depay + GstRtpL24Depay GstRtpMP1SDepay GstRtpMP2TDepay GstRtpMP4ADepay @@ -203,7 +210,9 @@ GObject GstRtpQDM2Depay GstRtpSPEEXDepay GstRtpSV3VDepay + GstRtpSbcDepay GstRtpTheoraDepay + GstRtpVP8Depay GstRtpVRawDepay GstRtpVorbisDepay GstRtpXQTDepay @@ -215,6 +224,7 @@ GObject GstRtpG722Pay GstRtpG726Pay GstRtpL16Pay + GstRtpL24Pay GstRtpPcmaPay GstRtpPcmuPay GstRTPDVPay @@ -236,11 +246,16 @@ GObject GstRtpMP4GPay GstRtpMP4VPay GstRtpMPAPay + GstRtpSBCPay GstRtpSPEEXPay GstRtpTheoraPay + GstRtpVP8Pay GstRtpVRawPay GstRtpVorbisPay GstRTPDec + GstRTPMux + GstRTPDTMFMux + GstRTPRtxQueue GstRndBufferSize GstRtpJitterBuffer GstRtpPtDemux diff --git a/docs/plugins/gst-plugins-good-plugins.interfaces b/docs/plugins/gst-plugins-good-plugins.interfaces index 4ef1b614eaae1b60f4cd0ae6acf2983ac953112a..e976d4caec05c0b2e51ddc1834ce7d49d745eb8f 100644 --- a/docs/plugins/gst-plugins-good-plugins.interfaces +++ b/docs/plugins/gst-plugins-good-plugins.interfaces @@ -40,6 +40,7 @@ GstMJ2Mux GstTagSetter GstTagXmpWriter GstMP4Mux GstTagSetter GstTagXmpWriter GstMatroskaMux GstTagSetter GstMatroskaMux GstTagSetter GstTocSetter +GstMuLawEnc GstPreset GstOss4Mixer GstImplementsInterface GstMixer GstPropertyProbe GstOss4Sink GstStreamVolume GstOss4Sink GstStreamVolume GstPropertyProbe @@ -86,6 +87,7 @@ GstVideoBalance GstImplementsInterface GstColorBalance GstVideoEncoder GstPreset GstVideoMixer GstChildProxy GstVideoMixer2 GstChildProxy +GstWavEnc GstTagSetter GstTocSetter GstWavpackEnc GstPreset GstWebMMux GstTagSetter GstWebMMux GstTagSetter GstTocSetter diff --git a/docs/plugins/gst-plugins-good-plugins.signals b/docs/plugins/gst-plugins-good-plugins.signals index 605c082dc0a8244fdac099932820d5819cb9a99d..794622b8ed4bbfd0a5eb861a7d70b66957415106 100644 --- a/docs/plugins/gst-plugins-good-plugins.signals +++ b/docs/plugins/gst-plugins-good-plugins.signals @@ -686,8 +686,32 @@ guint64 arg3 <FLAGS>l</FLAGS> GstV4l2Src *gstv4l2src gint arg1 -guint arg2 -guint arg3 -guint arg4 +GstCaps *arg2 +</SIGNAL> + +<SIGNAL> +<NAME>GstRTSPSrc::handle-request</NAME> +<RETURNS>void</RETURNS> +<FLAGS></FLAGS> +GstRTSPSrc *gstrtspsrc +gpointer arg1 +gpointer arg2 +</SIGNAL> + +<SIGNAL> +<NAME>GstRTSPSrc::on-sdp</NAME> +<RETURNS>void</RETURNS> +<FLAGS></FLAGS> +GstRTSPSrc *gstrtspsrc +GstSDPMessage *arg1 +</SIGNAL> + +<SIGNAL> +<NAME>GstRTSPSrc::select-stream</NAME> +<RETURNS>gboolean</RETURNS> +<FLAGS>fc</FLAGS> +GstRTSPSrc *gstrtspsrc +guint arg1 +GstCaps *arg2 </SIGNAL> diff --git a/docs/plugins/html/GstIirEqualizer.html b/docs/plugins/html/GstIirEqualizer.html index 0d1b17e3097ecd62657969ea181658f14a277036..f0b37b3f366312bdd2f38e1983d8bc357406c46b 100644 --- a/docs/plugins/html/GstIirEqualizer.html +++ b/docs/plugins/html/GstIirEqualizer.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>GstIirEqualizer</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch03.html" title="gst-plugins-good Base Classes"> <link rel="prev" href="ch03.html" title="gst-plugins-good Base Classes"> <link rel="next" href="gst-plugins-good-plugins-GstVideoMixerPad.html" title="GstVideoMixerPad"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -82,6 +82,6 @@ GstIirEqualizer implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html index 78bc2d24fd8e65af7d641b98d004cf7af8e9eb8d..6632de3cb9c3c6344adcf4718e2aebca70302963 100644 --- a/docs/plugins/html/ch01.html +++ b/docs/plugins/html/ch01.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>gst-plugins-good Elements</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="prev" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="next" href="gst-plugins-good-plugins-3gppmux.html" title="3gppmux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -20,9 +20,9 @@ <td><a accesskey="n" href="gst-plugins-good-plugins-3gppmux.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr></table> <div class="chapter"> -<div class="titlepage"><div><div><h2 class="title"> -<a name="idp180544"></a>gst-plugins-good Elements</h2></div></div></div> -<div class="toc"><dl> +<div class="titlepage"><div><div><h1 class="title"> +<a name="id-1.2"></a>gst-plugins-good Elements</h1></div></div></div> +<div class="toc"><dl class="toc"> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-3gppmux.html">3gppmux</a></span><span class="refpurpose"> — Muxer for 3GPP (.3gp) files</span> </dt> @@ -150,6 +150,9 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-directsoundsink.html">directsoundsink</a></span><span class="refpurpose"> — DirectSound audio sink</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dtmfsrc.html">dtmfsrc</a></span><span class="refpurpose"> — Generates DTMF tones</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-dv1394src.html">dv1394src</a></span><span class="refpurpose"> — Source for DV video data from firewire port</span> </dt> <dt> @@ -195,9 +198,6 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-gamma.html">gamma</a></span><span class="refpurpose"> — Adjusts gamma on a video stream</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-gdkpixbufoverlay.html">gdkpixbufoverlay</a></span><span class="refpurpose"> — Overlay an image onto a video stream</span> -</dt> -<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-gdkpixbufsink.html">gdkpixbufsink</a></span><span class="refpurpose"> — Output images as GdkPixbuf objects in bus messages</span> </dt> <dt> @@ -354,21 +354,57 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdec.html">rtpdec</a></span><span class="refpurpose"> — Accepts raw RTP and RTCP packets and sends them forward</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpac3depay.html">rtpac3depay</a></span><span class="refpurpose"> — Extracts AC3 audio from RTP packets (RFC 4184)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpac3pay.html">rtpac3pay</a></span><span class="refpurpose"> — Payload AC3 audio as RTP packets (RFC 4184)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpamrdepay.html">rtpamrdepay</a></span><span class="refpurpose"> — Extracts AMR or AMR-WB audio from RTP packets (RFC 3267)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpamrpay.html">rtpamrpay</a></span><span class="refpurpose"> — Payload-encode AMR or AMR-WB audio into RTP packets (RFC 3267)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbvdepay.html">rtpbvdepay</a></span><span class="refpurpose"> — Extracts BroadcomVoice audio from RTP packets (RFC 4298)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbvpay.html">rtpbvpay</a></span><span class="refpurpose"> — Packetize BroadcomVoice audio streams into RTP packets (RFC 4298)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpL16depay.html">rtpL16depay</a></span><span class="refpurpose"> — Extracts raw audio from RTP packets</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpL16pay.html">rtpL16pay</a></span><span class="refpurpose"> — Payload-encode Raw audio into RTP packets (RFC 3551)</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpj2kpay.html">rtpj2kpay</a></span><span class="refpurpose"> — Payload-encodes JPEG 2000 pictures into RTP packets (RFC 5371)</span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpjpegpay.html">rtpjpegpay</a></span><span class="refpurpose"> — Payload-encodes JPEG pictures into RTP packets (RFC 2435)</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpsbcpay.html">rtpsbcpay</a></span><span class="refpurpose"> — Payload SBC audio as RTP packets</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtspsrc.html">rtspsrc</a></span><span class="refpurpose"> — Receive data over the network via RTSP (RFC 2326)</span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbin.html">rtpbin</a></span><span class="refpurpose"> — Real-Time Transport Protocol bin</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdtmfmux.html">rtpdtmfmux</a></span><span class="refpurpose"> — mixes RTP DTMF streams into other RTP streams</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdtmfsrc.html">rtpdtmfsrc</a></span><span class="refpurpose"> — Generates RTP DTMF packets</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpjitterbuffer.html">rtpjitterbuffer</a></span><span class="refpurpose"> — A buffer that deals with network jitter and other transmission faults</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpmux.html">rtpmux</a></span><span class="refpurpose"> — multiplex N rtp streams into one</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpptdemux.html">rtpptdemux</a></span><span class="refpurpose"> — Parses codec streams transmitted in the same RTP session</span> </dt> <dt> @@ -378,6 +414,12 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpssrcdemux.html">rtpssrcdemux</a></span><span class="refpurpose"> — Splits RTP streams based on the SSRC</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-sbcparse.html">sbcparse</a></span><span class="refpurpose"> — Parses an SBC bluetooth audio stream</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-scaletempo.html">scaletempo</a></span><span class="refpurpose"> — Sync audio tempo with playback rate</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-shagadelictv.html">shagadelictv</a></span><span class="refpurpose"> — Oh behave, ShagedelicTV makes images shagadelic!</span> </dt> <dt> @@ -483,6 +525,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/ch02.html b/docs/plugins/html/ch02.html index 3d05734c6f2c0d554a7fc9205396c3545304074e..0dae3283d1f0969bdf58d520319fc0ae8cd70f73 100644 --- a/docs/plugins/html/ch02.html +++ b/docs/plugins/html/ch02.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>gst-plugins-good Plugins</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="prev" href="gst-plugins-good-plugins-y4menc.html" title="y4menc"> <link rel="next" href="gst-plugins-good-plugins-plugin-1394.html" title="1394"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -20,220 +20,223 @@ <td><a accesskey="n" href="gst-plugins-good-plugins-plugin-1394.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr></table> <div class="chapter"> -<div class="titlepage"><div><div><h2 class="title"> -<a name="idp5388128"></a>gst-plugins-good Plugins</h2></div></div></div> -<div class="toc"><dl> +<div class="titlepage"><div><div><h1 class="title"> +<a name="id-1.3"></a>gst-plugins-good Plugins</h1></div></div></div> +<div class="toc"><dl class="toc"> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-1394.html">1394</a></span><span class="refpurpose"> — <a name="plugin-1394"></a>Source for video data via IEEE1394 interface</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-1394.html">1394</a></span><span class="refpurpose">Source for video data via IEEE1394 interface</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-aasink.html">aasink</a></span><span class="refpurpose"> — <a name="plugin-aasink"></a>ASCII Art video sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-aasink.html">aasink</a></span><span class="refpurpose">ASCII Art video sink</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alaw.html">alaw</a></span><span class="refpurpose"> — <a name="plugin-alaw"></a>ALaw audio conversion routines</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alaw.html">alaw</a></span><span class="refpurpose">ALaw audio conversion routines</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alpha.html">alpha</a></span><span class="refpurpose"> — <a name="plugin-alpha"></a>adds an alpha channel to video - constant or via chroma-keying</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alpha.html">alpha</a></span><span class="refpurpose">adds an alpha channel to video - constant or via chroma-keying</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alphacolor.html">alphacolor</a></span><span class="refpurpose"> — <a name="plugin-alphacolor"></a>RGBA from/to AYUV colorspace conversion preserving the alpha channel</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alphacolor.html">alphacolor</a></span><span class="refpurpose">RGBA from/to AYUV colorspace conversion preserving the alpha channel</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-apetag.html">apetag</a></span><span class="refpurpose"> — <a name="plugin-apetag"></a>APEv1/2 tag reader</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-apetag.html">apetag</a></span><span class="refpurpose">APEv1/2 tag reader</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-audiofx.html">audiofx</a></span><span class="refpurpose"> — <a name="plugin-audiofx"></a>Audio effects plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-audiofx.html">audiofx</a></span><span class="refpurpose">Audio effects plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-auparse.html">auparse</a></span><span class="refpurpose"> — <a name="plugin-auparse"></a>parses au streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-auparse.html">auparse</a></span><span class="refpurpose">parses au streams</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-autodetect.html">autodetect</a></span><span class="refpurpose"> — <a name="plugin-autodetect"></a>Plugin contains auto-detection plugins for video/audio in- and outputs</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-autodetect.html">autodetect</a></span><span class="refpurpose">Plugin contains auto-detection plugins for video/audio in- and outputs</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-avi.html">avi</a></span><span class="refpurpose"> — <a name="plugin-avi"></a>AVI stream handling</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-avi.html">avi</a></span><span class="refpurpose">AVI stream handling</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cacasink.html">cacasink</a></span><span class="refpurpose"> — <a name="plugin-cacasink"></a>Colored ASCII Art video sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cacasink.html">cacasink</a></span><span class="refpurpose">Colored ASCII Art video sink</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cairo.html">cairo</a></span><span class="refpurpose"> — <a name="plugin-cairo"></a>Cairo-based elements</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cairo.html">cairo</a></span><span class="refpurpose">Cairo-based elements</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cutter.html">cutter</a></span><span class="refpurpose"> — <a name="plugin-cutter"></a>Audio Cutter to split audio into non-silent bits</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cutter.html">cutter</a></span><span class="refpurpose">Audio Cutter to split audio into non-silent bits</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-debug.html">debug</a></span><span class="refpurpose"> — <a name="plugin-debug"></a>elements for testing and debugging</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-debug.html">debug</a></span><span class="refpurpose">elements for testing and debugging</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-deinterlace.html">deinterlace</a></span><span class="refpurpose"> — <a name="plugin-deinterlace"></a>Deinterlacer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-deinterlace.html">deinterlace</a></span><span class="refpurpose">Deinterlacer</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-directsound.html">directsound</a></span><span class="refpurpose"> — <a name="plugin-directsound"></a>DirectSound plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-directsound.html">directsound</a></span><span class="refpurpose">DirectSound plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-dv.html">dv</a></span><span class="refpurpose"> — <a name="plugin-dv"></a>DV demuxer and decoder based on libdv (libdv.sf.net)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-dtmf.html">dtmf</a></span><span class="refpurpose">DTMF plugins</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-equalizer.html">equalizer</a></span><span class="refpurpose"> — <a name="plugin-equalizer"></a>GStreamer audio equalizers</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-dv.html">dv</a></span><span class="refpurpose">DV demuxer and decoder based on libdv (libdv.sf.net)</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-effectv.html">effectv</a></span><span class="refpurpose"> — <a name="plugin-effectv"></a>effect plugins from the effectv project</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-equalizer.html">equalizer</a></span><span class="refpurpose">GStreamer audio equalizers</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flac.html">flac</a></span><span class="refpurpose"> — <a name="plugin-flac"></a>The FLAC Lossless compressor Codec</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-effectv.html">effectv</a></span><span class="refpurpose">effect plugins from the effectv project</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flv.html">flv</a></span><span class="refpurpose"> — <a name="plugin-flv"></a>FLV muxing and demuxing plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flac.html">flac</a></span><span class="refpurpose">The FLAC Lossless compressor Codec</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flxdec.html">flxdec</a></span><span class="refpurpose"> — <a name="plugin-flxdec"></a>FLC/FLI/FLX video decoder</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flv.html">flv</a></span><span class="refpurpose">FLV muxing and demuxing plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-gdkpixbuf.html">gdkpixbuf</a></span><span class="refpurpose"> — <a name="plugin-gdkpixbuf"></a>GdkPixbuf-based image decoder, overlay and sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flxdec.html">flxdec</a></span><span class="refpurpose">FLC/FLI/FLX video decoder</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-goom.html">goom</a></span><span class="refpurpose"> — <a name="plugin-goom"></a>GOOM visualization filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-gdkpixbuf.html">gdkpixbuf</a></span><span class="refpurpose">GdkPixbuf-based image decoder, overlay and sink</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-goom2k1.html">goom2k1</a></span><span class="refpurpose"> — <a name="plugin-goom2k1"></a>GOOM 2k1 visualization filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-goom.html">goom</a></span><span class="refpurpose">GOOM visualization filter</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-icydemux.html">icydemux</a></span><span class="refpurpose"> — <a name="plugin-icydemux"></a>Demux ICY tags from a stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-goom2k1.html">goom2k1</a></span><span class="refpurpose">GOOM 2k1 visualization filter</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-id3demux.html">id3demux</a></span><span class="refpurpose"> — <a name="plugin-id3demux"></a>Demux ID3v1 and ID3v2 tags from a file</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-icydemux.html">icydemux</a></span><span class="refpurpose">Demux ICY tags from a stream</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-imagefreeze.html">imagefreeze</a></span><span class="refpurpose"> — <a name="plugin-imagefreeze"></a>Still frame stream generator</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-id3demux.html">id3demux</a></span><span class="refpurpose">Demux ID3v1 and ID3v2 tags from a file</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-interleave.html">interleave</a></span><span class="refpurpose"> — <a name="plugin-interleave"></a>Audio interleaver/deinterleaver</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-imagefreeze.html">imagefreeze</a></span><span class="refpurpose">Still frame stream generator</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-isomp4.html">isomp4</a></span><span class="refpurpose"> — <a name="plugin-isomp4"></a>ISO base media file format support (mp4, 3gpp, qt, mj2)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-interleave.html">interleave</a></span><span class="refpurpose">Audio interleaver/deinterleaver</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-jack.html">jack</a></span><span class="refpurpose"> — <a name="plugin-jack"></a>JACK audio elements</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-isomp4.html">isomp4</a></span><span class="refpurpose">ISO base media file format support (mp4, 3gpp, qt, mj2)</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-jpeg.html">jpeg</a></span><span class="refpurpose"> — <a name="plugin-jpeg"></a>JPeg plugin library</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-jack.html">jack</a></span><span class="refpurpose">JACK audio elements</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-level.html">level</a></span><span class="refpurpose"> — <a name="plugin-level"></a>Audio level plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-jpeg.html">jpeg</a></span><span class="refpurpose">JPeg plugin library</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-matroska.html">matroska</a></span><span class="refpurpose"> — <a name="plugin-matroska"></a>Matroska and WebM stream handling</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-level.html">level</a></span><span class="refpurpose">Audio level plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-monoscope.html">monoscope</a></span><span class="refpurpose"> — <a name="plugin-monoscope"></a>Monoscope visualization</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-matroska.html">matroska</a></span><span class="refpurpose">Matroska and WebM stream handling</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-mulaw.html">mulaw</a></span><span class="refpurpose"> — <a name="plugin-mulaw"></a>MuLaw audio conversion routines</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-monoscope.html">monoscope</a></span><span class="refpurpose">Monoscope visualization</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-multifile.html">multifile</a></span><span class="refpurpose"> — <a name="plugin-multifile"></a>Reads/Writes buffers from/to sequentially named files</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-mulaw.html">mulaw</a></span><span class="refpurpose">MuLaw audio conversion routines</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-multipart.html">multipart</a></span><span class="refpurpose"> — <a name="plugin-multipart"></a>multipart stream manipulation</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-multifile.html">multifile</a></span><span class="refpurpose">Reads/Writes buffers from/to sequentially named files</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-navigationtest.html">navigationtest</a></span><span class="refpurpose"> — <a name="plugin-navigationtest"></a>Template for a video filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-multipart.html">multipart</a></span><span class="refpurpose">multipart stream manipulation</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-oss4.html">oss4</a></span><span class="refpurpose"> — <a name="plugin-oss4"></a>Open Sound System (OSS) version 4 support for GStreamer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-navigationtest.html">navigationtest</a></span><span class="refpurpose">Template for a video filter</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-ossaudio.html">ossaudio</a></span><span class="refpurpose"> — <a name="plugin-ossaudio"></a>OSS (Open Sound System) support for GStreamer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-oss4.html">oss4</a></span><span class="refpurpose">Open Sound System (OSS) version 4 support for GStreamer</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-osxaudio.html">osxaudio</a></span><span class="refpurpose"> — <a name="plugin-osxaudio"></a>OSX (Mac OS X) audio support for GStreamer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-ossaudio.html">ossaudio</a></span><span class="refpurpose">OSS (Open Sound System) support for GStreamer</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-osxvideo.html">osxvideo</a></span><span class="refpurpose"> — <a name="plugin-osxvideo"></a>OSX native video output plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-osxaudio.html">osxaudio</a></span><span class="refpurpose">OSX (Mac OS X) audio support for GStreamer</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-png.html">png</a></span><span class="refpurpose"> — <a name="plugin-png"></a>PNG plugin library</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-osxvideo.html">osxvideo</a></span><span class="refpurpose">OSX native video output plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-pulseaudio.html">pulseaudio</a></span><span class="refpurpose"> — <a name="plugin-pulseaudio"></a>PulseAudio plugin library</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-png.html">png</a></span><span class="refpurpose">PNG plugin library</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-replaygain.html">replaygain</a></span><span class="refpurpose"> — <a name="plugin-replaygain"></a>ReplayGain volume normalization</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-pulseaudio.html">pulseaudio</a></span><span class="refpurpose">PulseAudio plugin library</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtp.html">rtp</a></span><span class="refpurpose"> — <a name="plugin-rtp"></a>Real-time protocol plugins</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-replaygain.html">replaygain</a></span><span class="refpurpose">ReplayGain volume normalization</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtpmanager.html">rtpmanager</a></span><span class="refpurpose"> — <a name="plugin-rtpmanager"></a>RTP session management plugin library</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtp.html">rtp</a></span><span class="refpurpose">Real-time protocol plugins</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtsp.html">rtsp</a></span><span class="refpurpose"> — <a name="plugin-rtsp"></a>transfer data via RTSP</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtpmanager.html">rtpmanager</a></span><span class="refpurpose">RTP session management plugin library</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-shapewipe.html">shapewipe</a></span><span class="refpurpose"> — <a name="plugin-shapewipe"></a>Shape Wipe transition filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtsp.html">rtsp</a></span><span class="refpurpose">transfer data via RTSP</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-shout2send.html">shout2send</a></span><span class="refpurpose"> — <a name="plugin-shout2send"></a>Sends data to an icecast server using libshout2</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-shapewipe.html">shapewipe</a></span><span class="refpurpose">Shape Wipe transition filter</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-smpte.html">smpte</a></span><span class="refpurpose"> — <a name="plugin-smpte"></a>Apply the standard SMPTE transitions on video images</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-shout2send.html">shout2send</a></span><span class="refpurpose">Sends data to an icecast server using libshout2</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-soup.html">soup</a></span><span class="refpurpose"> — <a name="plugin-soup"></a>libsoup HTTP client src/sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-smpte.html">smpte</a></span><span class="refpurpose">Apply the standard SMPTE transitions on video images</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-spectrum.html">spectrum</a></span><span class="refpurpose"> — <a name="plugin-spectrum"></a>Run an FFT on the audio signal, output spectrum data</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-soup.html">soup</a></span><span class="refpurpose">libsoup HTTP client src/sink</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-speex.html">speex</a></span><span class="refpurpose"> — <a name="plugin-speex"></a>Speex plugin library</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-spectrum.html">spectrum</a></span><span class="refpurpose">Run an FFT on the audio signal, output spectrum data</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-taglib.html">taglib</a></span><span class="refpurpose"> — <a name="plugin-taglib"></a>Tag writing plug-in based on taglib</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-speex.html">speex</a></span><span class="refpurpose">Speex plugin library</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-udp.html">udp</a></span><span class="refpurpose"> — <a name="plugin-udp"></a>transfer data via UDP</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-taglib.html">taglib</a></span><span class="refpurpose">Tag writing plug-in based on taglib</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-video4linux2.html">video4linux2</a></span><span class="refpurpose"> — <a name="plugin-video4linux2"></a>elements for Video 4 Linux</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-udp.html">udp</a></span><span class="refpurpose">transfer data via UDP</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videobox.html">videobox</a></span><span class="refpurpose"> — <a name="plugin-videobox"></a>resizes a video by adding borders or cropping</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-video4linux2.html">video4linux2</a></span><span class="refpurpose">elements for Video 4 Linux</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videocrop.html">videocrop</a></span><span class="refpurpose"> — <a name="plugin-videocrop"></a>Crops video into a user-defined region</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videobox.html">videobox</a></span><span class="refpurpose">resizes a video by adding borders or cropping</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videofilter.html">videofilter</a></span><span class="refpurpose"> — <a name="plugin-videofilter"></a>Video filters plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videocrop.html">videocrop</a></span><span class="refpurpose">Crops video into a user-defined region</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videomixer.html">videomixer</a></span><span class="refpurpose"> — <a name="plugin-videomixer"></a>Video mixer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videofilter.html">videofilter</a></span><span class="refpurpose">Video filters plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-vpx.html">vpx</a></span><span class="refpurpose"> — <a name="plugin-vpx"></a>VP8 plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videomixer.html">videomixer</a></span><span class="refpurpose">Video mixer</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-waveform.html">waveform</a></span><span class="refpurpose"> — <a name="plugin-waveform"></a>WaveForm API based plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-vpx.html">vpx</a></span><span class="refpurpose">VP8 plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavenc.html">wavenc</a></span><span class="refpurpose"> — <a name="plugin-wavenc"></a>Encode raw audio into WAV</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-waveform.html">waveform</a></span><span class="refpurpose">WaveForm API based plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavpack.html">wavpack</a></span><span class="refpurpose"> — <a name="plugin-wavpack"></a>Wavpack lossless/lossy audio format handling</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavenc.html">wavenc</a></span><span class="refpurpose">Encode raw audio into WAV</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavparse.html">wavparse</a></span><span class="refpurpose"> — <a name="plugin-wavparse"></a>Parse a .wav file into raw audio</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavpack.html">wavpack</a></span><span class="refpurpose">Wavpack lossless/lossy audio format handling</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-ximagesrc.html">ximagesrc</a></span><span class="refpurpose"> — <a name="plugin-ximagesrc"></a>X11 video input plugin using standard Xlib calls</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavparse.html">wavparse</a></span><span class="refpurpose">Parse a .wav file into raw audio</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-y4menc.html">y4menc</a></span><span class="refpurpose"> — <a name="plugin-y4menc"></a>Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-ximagesrc.html">ximagesrc</a></span><span class="refpurpose">X11 video input plugin using standard Xlib calls</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-y4menc.html">y4menc</a></span><span class="refpurpose">Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</span> </dt> </dl></div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/ch03.html b/docs/plugins/html/ch03.html index 0da53af8416a2a719c3a0f764835dadb2a8fba29..29cf902c602cc776422e8779674ae0b6d0623526 100644 --- a/docs/plugins/html/ch03.html +++ b/docs/plugins/html/ch03.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>gst-plugins-good Base Classes</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="prev" href="gst-plugins-good-plugins-plugin-y4menc.html" title="y4menc"> <link rel="next" href="GstIirEqualizer.html" title="GstIirEqualizer"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -20,9 +20,9 @@ <td><a accesskey="n" href="GstIirEqualizer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr></table> <div class="chapter"> -<div class="titlepage"><div><div><h2 class="title"> -<a name="idp5423120"></a>gst-plugins-good Base Classes</h2></div></div></div> -<div class="toc"><dl> +<div class="titlepage"><div><div><h1 class="title"> +<a name="id-1.4"></a>gst-plugins-good Base Classes</h1></div></div></div> +<div class="toc"><dl class="toc"> <dt> <span class="refentrytitle"><a href="GstIirEqualizer.html">GstIirEqualizer</a></span><span class="refpurpose"></span> </dt> @@ -33,6 +33,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins.devhelp2 b/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2 similarity index 82% rename from docs/plugins/html/gst-plugins-good-plugins.devhelp2 rename to docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2 index ced849ada974e42d6260347db8e7f0876e1ef189..594ebc49cdcbd2e759c697387760e55bd49c89c5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins.devhelp2 +++ b/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="no"?> <!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""> -<book xmlns="http://www.devhelp.net/book" title="GStreamer Good Plugins 1.0 Plugins Reference Manual" link="index.html" author="" name="gst-plugins-good-plugins" version="2" language="c"> +<book xmlns="http://www.devhelp.net/book" title="GStreamer Good Plugins 1.0 Plugins Reference Manual" link="index.html" author="" name="gst-plugins-good-plugins-1.0" version="2" language="c"> <chapters> <sub name="gst-plugins-good Elements" link="ch01.html"> <sub name="3gppmux" link="gst-plugins-good-plugins-3gppmux.html"/> @@ -45,6 +45,7 @@ <sub name="deinterleave" link="gst-plugins-good-plugins-deinterleave.html"/> <sub name="dicetv" link="gst-plugins-good-plugins-dicetv.html"/> <sub name="directsoundsink" link="gst-plugins-good-plugins-directsoundsink.html"/> + <sub name="dtmfsrc" link="gst-plugins-good-plugins-dtmfsrc.html"/> <sub name="dv1394src" link="gst-plugins-good-plugins-dv1394src.html"/> <sub name="dvdec" link="gst-plugins-good-plugins-dvdec.html"/> <sub name="dvdemux" link="gst-plugins-good-plugins-dvdemux.html"/> @@ -60,7 +61,6 @@ <sub name="flvmux" link="gst-plugins-good-plugins-flvmux.html"/> <sub name="flxdec" link="gst-plugins-good-plugins-flxdec.html"/> <sub name="gamma" link="gst-plugins-good-plugins-gamma.html"/> - <sub name="gdkpixbufoverlay" link="gst-plugins-good-plugins-gdkpixbufoverlay.html"/> <sub name="gdkpixbufsink" link="gst-plugins-good-plugins-gdkpixbufsink.html"/> <sub name="goom" link="gst-plugins-good-plugins-goom.html"/> <sub name="goom2k1" link="gst-plugins-good-plugins-goom2k1.html"/> @@ -113,14 +113,28 @@ <sub name="rgvolume" link="gst-plugins-good-plugins-rgvolume.html"/> <sub name="rippletv" link="gst-plugins-good-plugins-rippletv.html"/> <sub name="rtpdec" link="gst-plugins-good-plugins-rtpdec.html"/> + <sub name="rtpac3depay" link="gst-plugins-good-plugins-rtpac3depay.html"/> + <sub name="rtpac3pay" link="gst-plugins-good-plugins-rtpac3pay.html"/> + <sub name="rtpamrdepay" link="gst-plugins-good-plugins-rtpamrdepay.html"/> + <sub name="rtpamrpay" link="gst-plugins-good-plugins-rtpamrpay.html"/> + <sub name="rtpbvdepay" link="gst-plugins-good-plugins-rtpbvdepay.html"/> + <sub name="rtpbvpay" link="gst-plugins-good-plugins-rtpbvpay.html"/> + <sub name="rtpL16depay" link="gst-plugins-good-plugins-rtpL16depay.html"/> + <sub name="rtpL16pay" link="gst-plugins-good-plugins-rtpL16pay.html"/> <sub name="rtpj2kpay" link="gst-plugins-good-plugins-rtpj2kpay.html"/> <sub name="rtpjpegpay" link="gst-plugins-good-plugins-rtpjpegpay.html"/> + <sub name="rtpsbcpay" link="gst-plugins-good-plugins-rtpsbcpay.html"/> <sub name="rtspsrc" link="gst-plugins-good-plugins-rtspsrc.html"/> <sub name="rtpbin" link="gst-plugins-good-plugins-rtpbin.html"/> + <sub name="rtpdtmfmux" link="gst-plugins-good-plugins-rtpdtmfmux.html"/> + <sub name="rtpdtmfsrc" link="gst-plugins-good-plugins-rtpdtmfsrc.html"/> <sub name="rtpjitterbuffer" link="gst-plugins-good-plugins-rtpjitterbuffer.html"/> + <sub name="rtpmux" link="gst-plugins-good-plugins-rtpmux.html"/> <sub name="rtpptdemux" link="gst-plugins-good-plugins-rtpptdemux.html"/> <sub name="rtpsession" link="gst-plugins-good-plugins-rtpsession.html"/> <sub name="rtpssrcdemux" link="gst-plugins-good-plugins-rtpssrcdemux.html"/> + <sub name="sbcparse" link="gst-plugins-good-plugins-sbcparse.html"/> + <sub name="scaletempo" link="gst-plugins-good-plugins-scaletempo.html"/> <sub name="shagadelictv" link="gst-plugins-good-plugins-shagadelictv.html"/> <sub name="shapewipe" link="gst-plugins-good-plugins-shapewipe.html"/> <sub name="smpte" link="gst-plugins-good-plugins-smpte.html"/> @@ -173,6 +187,7 @@ <sub name="debug" link="gst-plugins-good-plugins-plugin-debug.html"/> <sub name="deinterlace" link="gst-plugins-good-plugins-plugin-deinterlace.html"/> <sub name="directsound" link="gst-plugins-good-plugins-plugin-directsound.html"/> + <sub name="dtmf" link="gst-plugins-good-plugins-plugin-dtmf.html"/> <sub name="dv" link="gst-plugins-good-plugins-plugin-dv.html"/> <sub name="equalizer" link="gst-plugins-good-plugins-plugin-equalizer.html"/> <sub name="effectv" link="gst-plugins-good-plugins-plugin-effectv.html"/> @@ -233,15 +248,15 @@ </sub> </chapters> <functions> - <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-3gppmux.html#idp7887072"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-3gppmux.html#idp6318096"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-3gppmux.html#idp6781776"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-aacparse.html#idp7811328"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-aacparse.html#idp8244176"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-aacparse.html#idp6690416"/> + <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-3gppmux.html#id-1.2.2.4.8.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-3gppmux.html#id-1.2.2.4.10.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-3gppmux.html#id-1.2.2.4.10.2"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-aacparse.html#id-1.2.3.5.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-aacparse.html#id-1.2.3.5.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-aacparse.html#id-1.2.3.5.5.2"/> <keyword type="struct" name="struct GstAacParse" link="gst-plugins-good-plugins-aacparse.html#GstAacParse-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-aasink.html#idp6483936"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-aasink.html#idp6475600"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-aasink.html#id-1.2.4.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-aasink.html#id-1.2.4.7.2.2"/> <keyword type="struct" name="struct GstAASink" link="gst-plugins-good-plugins-aasink.html#GstAASink-struct"/> <keyword type="property" name="The "brightness" property" link="gst-plugins-good-plugins-aasink.html#GstAASink--brightness"/> <keyword type="property" name="The "contrast" property" link="gst-plugins-good-plugins-aasink.html#GstAASink--contrast"/> @@ -256,20 +271,20 @@ <keyword type="property" name="The "width" property" link="gst-plugins-good-plugins-aasink.html#GstAASink--width"/> <keyword type="signal" name="The "frame-displayed" signal" link="gst-plugins-good-plugins-aasink.html#GstAASink-frame-displayed"/> <keyword type="signal" name="The "have-size" signal" link="gst-plugins-good-plugins-aasink.html#GstAASink-have-size"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-ac3parse.html#idp8002592"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-ac3parse.html#idp7366592"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-ac3parse.html#idp9332464"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-ac3parse.html#id-1.2.5.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-ac3parse.html#id-1.2.5.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-ac3parse.html#id-1.2.5.5.4.2"/> <keyword type="struct" name="struct GstAc3Parse" link="gst-plugins-good-plugins-ac3parse.html#GstAc3Parse-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-agingtv.html#idp5984768"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-agingtv.html#idp5771520"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-agingtv.html#idp9944928"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-agingtv.html#id-1.2.6.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-agingtv.html#id-1.2.6.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-agingtv.html#id-1.2.6.6.4.2"/> <keyword type="struct" name="struct GstAgingTV" link="gst-plugins-good-plugins-agingtv.html#GstAgingTV-struct"/> <keyword type="property" name="The "color-aging" property" link="gst-plugins-good-plugins-agingtv.html#GstAgingTV--color-aging"/> <keyword type="property" name="The "dusts" property" link="gst-plugins-good-plugins-agingtv.html#GstAgingTV--dusts"/> <keyword type="property" name="The "pits" property" link="gst-plugins-good-plugins-agingtv.html#GstAgingTV--pits"/> <keyword type="property" name="The "scratch-lines" property" link="gst-plugins-good-plugins-agingtv.html#GstAgingTV--scratch-lines"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-alpha.html#idp6929216"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-alpha.html#idp6519232"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-alpha.html#id-1.2.7.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-alpha.html#id-1.2.7.6.4.2"/> <keyword type="struct" name="struct GstAlpha" link="gst-plugins-good-plugins-alpha.html#GstAlpha-struct"/> <keyword type="enum" name="enum GstAlphaMethod" link="gst-plugins-good-plugins-alpha.html#GstAlphaMethod"/> <keyword type="property" name="The "alpha" property" link="gst-plugins-good-plugins-alpha.html#GstAlpha--alpha"/> @@ -282,41 +297,41 @@ <keyword type="property" name="The "black-sensitivity" property" link="gst-plugins-good-plugins-alpha.html#GstAlpha--black-sensitivity"/> <keyword type="property" name="The "white-sensitivity" property" link="gst-plugins-good-plugins-alpha.html#GstAlpha--white-sensitivity"/> <keyword type="property" name="The "prefer-passthrough" property" link="gst-plugins-good-plugins-alpha.html#GstAlpha--prefer-passthrough"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-alphacolor.html#idp6880768"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-alphacolor.html#idp9297936"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-alphacolor.html#id-1.2.8.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-alphacolor.html#id-1.2.8.5.4.2"/> <keyword type="struct" name="struct GstAlphaColor" link="gst-plugins-good-plugins-alphacolor.html#GstAlphaColor-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-alawdec.html#idp10478432"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-alawdec.html#idp10127584"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-alawdec.html#id-1.2.9.5.3.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-alawdec.html#id-1.2.9.5.3.2"/> <keyword type="struct" name="struct GstALawDec" link="gst-plugins-good-plugins-alawdec.html#GstALawDec-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-alawenc.html#idp10458272"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-alawenc.html#idp6142160"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-alawenc.html#id-1.2.10.4.3.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-alawenc.html#id-1.2.10.4.3.2"/> <keyword type="struct" name="struct GstALawDec" link="gst-plugins-good-plugins-alawenc.html#GstALawDec-struct"/> <keyword type="struct" name="struct GstALawEnc" link="gst-plugins-good-plugins-alawenc.html#GstALawEnc"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-amrparse.html#idp9034304"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-amrparse.html#idp5616624"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-amrparse.html#idp10629744"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-amrparse.html#id-1.2.11.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-amrparse.html#id-1.2.11.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-amrparse.html#id-1.2.11.5.4.2"/> <keyword type="struct" name="struct GstAmrParse" link="gst-plugins-good-plugins-amrparse.html#GstAmrParse-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-apedemux.html#idp8454848"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-apedemux.html#idp6137536"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-apedemux.html#idp9320784"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-apedemux.html#id-1.2.12.5.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-apedemux.html#id-1.2.12.5.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-apedemux.html#id-1.2.12.5.5.2"/> <keyword type="struct" name="struct GstApeDemux" link="gst-plugins-good-plugins-apedemux.html#GstApeDemux-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-apev2mux.html#idp6636736"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-apev2mux.html#idp8787968"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-apev2mux.html#id-1.2.13.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-apev2mux.html#id-1.2.13.6.2.2"/> <keyword type="struct" name="struct GstApev2Mux" link="gst-plugins-good-plugins-apev2mux.html#GstApev2Mux-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-aspectratiocrop.html#idp7497696"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-aspectratiocrop.html#idp5722208"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-aspectratiocrop.html#idp10329696"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-aspectratiocrop.html#id-1.2.14.7.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-aspectratiocrop.html#id-1.2.14.7.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-aspectratiocrop.html#id-1.2.14.7.5.2"/> <keyword type="struct" name="struct GstAspectRatioCrop" link="gst-plugins-good-plugins-aspectratiocrop.html#GstAspectRatioCrop-struct"/> <keyword type="property" name="The "aspect-ratio" property" link="gst-plugins-good-plugins-aspectratiocrop.html#GstAspectRatioCrop--aspect-ratio"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audioamplify.html#idp7855776"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audioamplify.html#idp7498368"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audioamplify.html#idp6409024"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audioamplify.html#id-1.2.15.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audioamplify.html#id-1.2.15.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audioamplify.html#id-1.2.15.6.4.2"/> <keyword type="struct" name="struct GstAudioAmplify" link="gst-plugins-good-plugins-audioamplify.html#GstAudioAmplify-struct"/> <keyword type="property" name="The "amplification" property" link="gst-plugins-good-plugins-audioamplify.html#GstAudioAmplify--amplification"/> <keyword type="property" name="The "clipping-method" property" link="gst-plugins-good-plugins-audioamplify.html#GstAudioAmplify--clipping-method"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiochebband.html#idp6405808"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiochebband.html#idp9274080"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiochebband.html#idp8839472"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiochebband.html#id-1.2.16.6.8.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiochebband.html#id-1.2.16.6.9.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiochebband.html#id-1.2.16.6.9.2"/> <keyword type="struct" name="struct GstAudioChebBand" link="gst-plugins-good-plugins-audiochebband.html#GstAudioChebBand-struct"/> <keyword type="property" name="The "lower-frequency" property" link="gst-plugins-good-plugins-audiochebband.html#GstAudioChebBand--lower-frequency"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-audiochebband.html#GstAudioChebBand--mode"/> @@ -324,155 +339,157 @@ <keyword type="property" name="The "ripple" property" link="gst-plugins-good-plugins-audiochebband.html#GstAudioChebBand--ripple"/> <keyword type="property" name="The "type" property" link="gst-plugins-good-plugins-audiochebband.html#GstAudioChebBand--type"/> <keyword type="property" name="The "upper-frequency" property" link="gst-plugins-good-plugins-audiochebband.html#GstAudioChebBand--upper-frequency"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiocheblimit.html#idp7497248"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiocheblimit.html#idp8717728"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiocheblimit.html#idp9169424"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiocheblimit.html#id-1.2.17.6.8.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiocheblimit.html#id-1.2.17.6.9.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiocheblimit.html#id-1.2.17.6.9.2"/> <keyword type="struct" name="struct GstAudioChebLimit" link="gst-plugins-good-plugins-audiocheblimit.html#GstAudioChebLimit-struct"/> <keyword type="property" name="The "cutoff" property" link="gst-plugins-good-plugins-audiocheblimit.html#GstAudioChebLimit--cutoff"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-audiocheblimit.html#GstAudioChebLimit--mode"/> <keyword type="property" name="The "poles" property" link="gst-plugins-good-plugins-audiocheblimit.html#GstAudioChebLimit--poles"/> <keyword type="property" name="The "ripple" property" link="gst-plugins-good-plugins-audiocheblimit.html#GstAudioChebLimit--ripple"/> <keyword type="property" name="The "type" property" link="gst-plugins-good-plugins-audiocheblimit.html#GstAudioChebLimit--type"/> - <keyword type="" name="Example application" link="gst-plugins-good-plugins-audiofirfilter.html#idp5849872"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiofirfilter.html#idp7477856"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiofirfilter.html#idp10058384"/> + <keyword type="" name="Example application" link="gst-plugins-good-plugins-audiofirfilter.html#id-1.2.18.7.5.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiofirfilter.html#id-1.2.18.7.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiofirfilter.html#id-1.2.18.7.6.2"/> <keyword type="struct" name="struct GstAudioFIRFilter" link="gst-plugins-good-plugins-audiofirfilter.html#GstAudioFIRFilter-struct"/> <keyword type="property" name="The "kernel" property" link="gst-plugins-good-plugins-audiofirfilter.html#GstAudioFIRFilter--kernel"/> <keyword type="property" name="The "latency" property" link="gst-plugins-good-plugins-audiofirfilter.html#GstAudioFIRFilter--latency"/> <keyword type="signal" name="The "rate-changed" signal" link="gst-plugins-good-plugins-audiofirfilter.html#GstAudioFIRFilter-rate-changed"/> - <keyword type="" name="Example application" link="gst-plugins-good-plugins-audioiirfilter.html#idp6803008"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audioiirfilter.html#idp5448512"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audioiirfilter.html#idp5939424"/> + <keyword type="" name="Example application" link="gst-plugins-good-plugins-audioiirfilter.html#id-1.2.19.7.5.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audioiirfilter.html#id-1.2.19.7.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audioiirfilter.html#id-1.2.19.7.6.2"/> <keyword type="struct" name="struct GstAudioIIRFilter" link="gst-plugins-good-plugins-audioiirfilter.html#GstAudioIIRFilter-struct"/> <keyword type="property" name="The "a" property" link="gst-plugins-good-plugins-audioiirfilter.html#GstAudioIIRFilter--a"/> <keyword type="property" name="The "b" property" link="gst-plugins-good-plugins-audioiirfilter.html#GstAudioIIRFilter--b"/> <keyword type="signal" name="The "rate-changed" signal" link="gst-plugins-good-plugins-audioiirfilter.html#GstAudioIIRFilter-rate-changed"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiowsincband.html#idp6470368"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiowsincband.html#idp9741456"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiowsincband.html#idp5945200"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiowsincband.html#id-1.2.20.6.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiowsincband.html#id-1.2.20.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiowsincband.html#id-1.2.20.6.5.2"/> <keyword type="struct" name="struct GstAudioWSincBand" link="gst-plugins-good-plugins-audiowsincband.html#GstAudioWSincBand-struct"/> <keyword type="property" name="The "lower-frequency" property" link="gst-plugins-good-plugins-audiowsincband.html#GstAudioWSincBand--lower-frequency"/> <keyword type="property" name="The "upper-frequency" property" link="gst-plugins-good-plugins-audiowsincband.html#GstAudioWSincBand--upper-frequency"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-audiowsincband.html#GstAudioWSincBand--mode"/> <keyword type="property" name="The "window" property" link="gst-plugins-good-plugins-audiowsincband.html#GstAudioWSincBand--window"/> <keyword type="property" name="The "length" property" link="gst-plugins-good-plugins-audiowsincband.html#GstAudioWSincBand--length"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiowsinclimit.html#idp3883584"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiowsinclimit.html#idp7246896"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiowsinclimit.html#idp5649504"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiowsinclimit.html#id-1.2.21.6.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiowsinclimit.html#id-1.2.21.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiowsinclimit.html#id-1.2.21.6.5.2"/> <keyword type="struct" name="struct GstAudioWSincLimit" link="gst-plugins-good-plugins-audiowsinclimit.html#GstAudioWSincLimit-struct"/> <keyword type="property" name="The "frequency" property" link="gst-plugins-good-plugins-audiowsinclimit.html#GstAudioWSincLimit--frequency"/> <keyword type="property" name="The "length" property" link="gst-plugins-good-plugins-audiowsinclimit.html#GstAudioWSincLimit--length"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-audiowsinclimit.html#GstAudioWSincLimit--mode"/> <keyword type="property" name="The "window" property" link="gst-plugins-good-plugins-audiowsinclimit.html#GstAudioWSincLimit--window"/> <keyword type="property" name="The "cutoff" property" link="gst-plugins-good-plugins-audiowsinclimit.html#GstAudioWSincLimit--cutoff"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audioecho.html#idp8731280"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audioecho.html#idp8190352"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audioecho.html#idp8048608"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audioecho.html#id-1.2.22.6.5.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audioecho.html#id-1.2.22.6.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audioecho.html#id-1.2.22.6.6.2"/> <keyword type="struct" name="struct GstAudioEcho" link="gst-plugins-good-plugins-audioecho.html#GstAudioEcho-struct"/> <keyword type="property" name="The "delay" property" link="gst-plugins-good-plugins-audioecho.html#GstAudioEcho--delay"/> <keyword type="property" name="The "feedback" property" link="gst-plugins-good-plugins-audioecho.html#GstAudioEcho--feedback"/> <keyword type="property" name="The "intensity" property" link="gst-plugins-good-plugins-audioecho.html#GstAudioEcho--intensity"/> <keyword type="property" name="The "max-delay" property" link="gst-plugins-good-plugins-audioecho.html#GstAudioEcho--max-delay"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiodynamic.html#idp7185840"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiodynamic.html#idp10122960"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiodynamic.html#idp11748096"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiodynamic.html#id-1.2.23.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiodynamic.html#id-1.2.23.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiodynamic.html#id-1.2.23.6.4.2"/> <keyword type="struct" name="struct GstAudioDynamic" link="gst-plugins-good-plugins-audiodynamic.html#GstAudioDynamic-struct"/> <keyword type="property" name="The "characteristics" property" link="gst-plugins-good-plugins-audiodynamic.html#GstAudioDynamic--characteristics"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-audiodynamic.html#GstAudioDynamic--mode"/> <keyword type="property" name="The "ratio" property" link="gst-plugins-good-plugins-audiodynamic.html#GstAudioDynamic--ratio"/> <keyword type="property" name="The "threshold" property" link="gst-plugins-good-plugins-audiodynamic.html#GstAudioDynamic--threshold"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audioinvert.html#idp7423968"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audioinvert.html#idp8441952"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audioinvert.html#idp10012160"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audioinvert.html#id-1.2.24.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audioinvert.html#id-1.2.24.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audioinvert.html#id-1.2.24.6.4.2"/> <keyword type="struct" name="struct GstAudioInvert" link="gst-plugins-good-plugins-audioinvert.html#GstAudioInvert-struct"/> <keyword type="property" name="The "degree" property" link="gst-plugins-good-plugins-audioinvert.html#GstAudioInvert--degree"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiopanorama.html#idp9585392"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiopanorama.html#idp6637376"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiopanorama.html#idp10957920"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiopanorama.html#id-1.2.25.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiopanorama.html#id-1.2.25.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiopanorama.html#id-1.2.25.6.4.2"/> <keyword type="struct" name="struct GstAudioPanorama" link="gst-plugins-good-plugins-audiopanorama.html#GstAudioPanorama-struct"/> <keyword type="property" name="The "panorama" property" link="gst-plugins-good-plugins-audiopanorama.html#GstAudioPanorama--panorama"/> <keyword type="property" name="The "method" property" link="gst-plugins-good-plugins-audiopanorama.html#GstAudioPanorama--method"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiokaraoke.html#idp5910096"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiokaraoke.html#idp8704048"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiokaraoke.html#idp10794560"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-audiokaraoke.html#id-1.2.26.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-audiokaraoke.html#id-1.2.26.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-audiokaraoke.html#id-1.2.26.6.4.2"/> <keyword type="struct" name="struct GstAudioKaraoke" link="gst-plugins-good-plugins-audiokaraoke.html#GstAudioKaraoke-struct"/> <keyword type="property" name="The "filter-band" property" link="gst-plugins-good-plugins-audiokaraoke.html#GstAudioKaraoke--filter-band"/> <keyword type="property" name="The "filter-width" property" link="gst-plugins-good-plugins-audiokaraoke.html#GstAudioKaraoke--filter-width"/> <keyword type="property" name="The "level" property" link="gst-plugins-good-plugins-audiokaraoke.html#GstAudioKaraoke--level"/> <keyword type="property" name="The "mono-level" property" link="gst-plugins-good-plugins-audiokaraoke.html#GstAudioKaraoke--mono-level"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-auparse.html#idp9709104"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-auparse.html#idp7914560"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-auparse.html#id-1.2.27.5.3.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-auparse.html#id-1.2.27.5.3.2"/> <keyword type="struct" name="struct GstAuParse" link="gst-plugins-good-plugins-auparse.html#GstAuParse-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-autoaudiosink.html#idp7273088"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-autoaudiosink.html#idp10295792"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-autoaudiosink.html#idp7242528"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-autoaudiosink.html#id-1.2.28.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-autoaudiosink.html#id-1.2.28.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-autoaudiosink.html#id-1.2.28.7.4.2"/> <keyword type="struct" name="GstAutoAudioSink" link="gst-plugins-good-plugins-autoaudiosink.html#GstAutoAudioSink-struct"/> <keyword type="property" name="The "filter-caps" property" link="gst-plugins-good-plugins-autoaudiosink.html#GstAutoAudioSink--filter-caps"/> <keyword type="property" name="The "ts-offset" property" link="gst-plugins-good-plugins-autoaudiosink.html#GstAutoAudioSink--ts-offset"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-autoaudiosrc.html#idp1631696"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-autoaudiosrc.html#idp7352448"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-autoaudiosrc.html#idp8925248"/> + <keyword type="property" name="The "sync" property" link="gst-plugins-good-plugins-autoaudiosink.html#GstAutoAudioSink--sync"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-autoaudiosrc.html#id-1.2.29.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-autoaudiosrc.html#id-1.2.29.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-autoaudiosrc.html#id-1.2.29.7.4.2"/> <keyword type="struct" name="GstAutoAudioSrc" link="gst-plugins-good-plugins-autoaudiosrc.html#GstAutoAudioSrc-struct"/> <keyword type="property" name="The "filter-caps" property" link="gst-plugins-good-plugins-autoaudiosrc.html#GstAutoAudioSrc--filter-caps"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-autovideosink.html#idp11387984"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-autovideosink.html#idp8905808"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-autovideosink.html#idp12041024"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-autovideosink.html#id-1.2.30.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-autovideosink.html#id-1.2.30.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-autovideosink.html#id-1.2.30.7.4.2"/> <keyword type="struct" name="GstAutoVideoSink" link="gst-plugins-good-plugins-autovideosink.html#GstAutoVideoSink-struct"/> <keyword type="property" name="The "filter-caps" property" link="gst-plugins-good-plugins-autovideosink.html#GstAutoVideoSink--filter-caps"/> <keyword type="property" name="The "ts-offset" property" link="gst-plugins-good-plugins-autovideosink.html#GstAutoVideoSink--ts-offset"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-autovideosrc.html#idp7830272"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-autovideosrc.html#idp5565008"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-autovideosrc.html#idp9392240"/> + <keyword type="property" name="The "sync" property" link="gst-plugins-good-plugins-autovideosink.html#GstAutoVideoSink--sync"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-autovideosrc.html#id-1.2.31.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-autovideosrc.html#id-1.2.31.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-autovideosrc.html#id-1.2.31.7.4.2"/> <keyword type="struct" name="GstAutoVideoSrc" link="gst-plugins-good-plugins-autovideosrc.html#GstAutoVideoSrc-struct"/> <keyword type="property" name="The "filter-caps" property" link="gst-plugins-good-plugins-autovideosrc.html#GstAutoVideoSrc--filter-caps"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-avidemux.html#idp11554480"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-avidemux.html#idp11551280"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-avidemux.html#idp11545504"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-avidemux.html#id-1.2.32.5.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-avidemux.html#id-1.2.32.5.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-avidemux.html#id-1.2.32.5.6.2"/> <keyword type="struct" name="GstAviDemux" link="gst-plugins-good-plugins-avidemux.html#GstAviDemux-struct"/> - <keyword type="" name="Example launch lines" link="gst-plugins-good-plugins-avimux.html#idp6097360"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-avimux.html#idp9869536"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-avimux.html#idp5967488"/> + <keyword type="" name="Example launch lines" link="gst-plugins-good-plugins-avimux.html#id-1.2.33.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-avimux.html#id-1.2.33.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-avimux.html#id-1.2.33.7.4.2"/> <keyword type="struct" name="struct GstAviMux" link="gst-plugins-good-plugins-avimux.html#GstAviMux-struct"/> <keyword type="property" name="The "bigfile" property" link="gst-plugins-good-plugins-avimux.html#GstAviMux--bigfile"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-avisubtitle.html#idp11799168"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-avisubtitle.html#idp11916592"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-avisubtitle.html#idp10857376"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-avisubtitle.html#id-1.2.34.5.2.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-avisubtitle.html#id-1.2.34.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-avisubtitle.html#id-1.2.34.5.4.2"/> <keyword type="struct" name="struct GstAviSubtitle" link="gst-plugins-good-plugins-avisubtitle.html#GstAviSubtitle-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-cacasink.html#idp8058688"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-cacasink.html#idp3333664"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-cacasink.html#id-1.2.35.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-cacasink.html#id-1.2.35.6.2.2"/> <keyword type="struct" name="struct GstCACASink" link="gst-plugins-good-plugins-cacasink.html#GstCACASink-struct"/> <keyword type="property" name="The "anti-aliasing" property" link="gst-plugins-good-plugins-cacasink.html#GstCACASink--anti-aliasing"/> <keyword type="property" name="The "dither" property" link="gst-plugins-good-plugins-cacasink.html#GstCACASink--dither"/> <keyword type="property" name="The "screen-height" property" link="gst-plugins-good-plugins-cacasink.html#GstCACASink--screen-height"/> <keyword type="property" name="The "screen-width" property" link="gst-plugins-good-plugins-cacasink.html#GstCACASink--screen-width"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-cairooverlay.html#idp9014608"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-cairooverlay.html#idp7359472"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-cairooverlay.html#id-1.2.36.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-cairooverlay.html#id-1.2.36.6.2.2"/> <keyword type="struct" name="struct GstCairoOverlay" link="gst-plugins-good-plugins-cairooverlay.html#GstCairoOverlay-struct"/> <keyword type="signal" name="The "caps-changed" signal" link="gst-plugins-good-plugins-cairooverlay.html#GstCairoOverlay-caps-changed"/> <keyword type="signal" name="The "draw" signal" link="gst-plugins-good-plugins-cairooverlay.html#GstCairoOverlay-draw"/> - <keyword type="" name="" link="gst-plugins-good-plugins-capssetter.html#idp7476272"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-capssetter.html#idp11379728"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-capssetter.html#idp11438896"/> + <keyword type="" name="" link="gst-plugins-good-plugins-capssetter.html#id-1.2.37.6.2.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-capssetter.html#id-1.2.37.6.3.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-capssetter.html#id-1.2.37.6.3.2"/> <keyword type="struct" name="struct GstCapsSetter" link="gst-plugins-good-plugins-capssetter.html#GstCapsSetter-struct"/> <keyword type="property" name="The "caps" property" link="gst-plugins-good-plugins-capssetter.html#GstCapsSetter--caps"/> <keyword type="property" name="The "join" property" link="gst-plugins-good-plugins-capssetter.html#GstCapsSetter--join"/> <keyword type="property" name="The "replace" property" link="gst-plugins-good-plugins-capssetter.html#GstCapsSetter--replace"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-cutter.html#idp11730464"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-cutter.html#idp11855744"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-cutter.html#idp11785712"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-cutter.html#id-1.2.38.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-cutter.html#id-1.2.38.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-cutter.html#id-1.2.38.6.4.2"/> <keyword type="struct" name="struct GstCutter" link="gst-plugins-good-plugins-cutter.html#GstCutter-struct"/> <keyword type="property" name="The "leaky" property" link="gst-plugins-good-plugins-cutter.html#GstCutter--leaky"/> <keyword type="property" name="The "pre-length" property" link="gst-plugins-good-plugins-cutter.html#GstCutter--pre-length"/> <keyword type="property" name="The "run-length" property" link="gst-plugins-good-plugins-cutter.html#GstCutter--run-length"/> <keyword type="property" name="The "threshold" property" link="gst-plugins-good-plugins-cutter.html#GstCutter--threshold"/> <keyword type="property" name="The "threshold-dB" property" link="gst-plugins-good-plugins-cutter.html#GstCutter--threshold-dB"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-dcaparse.html#idp7998080"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dcaparse.html#idp5582816"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dcaparse.html#idp6704816"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-dcaparse.html#id-1.2.39.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dcaparse.html#id-1.2.39.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dcaparse.html#id-1.2.39.5.4.2"/> <keyword type="struct" name="struct GstDcaParse" link="gst-plugins-good-plugins-dcaparse.html#GstDcaParse-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-deinterlace.html#idp12042896"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-deinterlace.html#idp10996288"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-deinterlace.html#idp12830496"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-deinterlace.html#id-1.2.40.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-deinterlace.html#id-1.2.40.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-deinterlace.html#id-1.2.40.7.4.2"/> <keyword type="struct" name="struct GstDeinterlace" link="gst-plugins-good-plugins-deinterlace.html#GstDeinterlace-struct"/> <keyword type="property" name="The "fields" property" link="gst-plugins-good-plugins-deinterlace.html#GstDeinterlace--fields"/> <keyword type="property" name="The "method" property" link="gst-plugins-good-plugins-deinterlace.html#GstDeinterlace--method"/> @@ -481,22 +498,26 @@ <keyword type="property" name="The "drop-orphans" property" link="gst-plugins-good-plugins-deinterlace.html#GstDeinterlace--drop-orphans"/> <keyword type="property" name="The "ignore-obscure" property" link="gst-plugins-good-plugins-deinterlace.html#GstDeinterlace--ignore-obscure"/> <keyword type="property" name="The "locking" property" link="gst-plugins-good-plugins-deinterlace.html#GstDeinterlace--locking"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-deinterleave.html#idp9965248"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-deinterleave.html#idp6298064"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-deinterleave.html#idp8978480"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-deinterleave.html#id-1.2.41.6.5.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-deinterleave.html#id-1.2.41.6.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-deinterleave.html#id-1.2.41.6.6.2"/> <keyword type="struct" name="struct GstDeinterleave" link="gst-plugins-good-plugins-deinterleave.html#GstDeinterleave-struct"/> <keyword type="property" name="The "keep-positions" property" link="gst-plugins-good-plugins-deinterleave.html#GstDeinterleave--keep-positions"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-dicetv.html#idp8486032"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dicetv.html#idp7605648"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dicetv.html#idp8638848"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-dicetv.html#id-1.2.42.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dicetv.html#id-1.2.42.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dicetv.html#id-1.2.42.7.4.2"/> <keyword type="struct" name="struct GstDiceTV" link="gst-plugins-good-plugins-dicetv.html#GstDiceTV-struct"/> <keyword type="property" name="The "square-bits" property" link="gst-plugins-good-plugins-dicetv.html#GstDiceTV--square-bits"/> <keyword type="signal" name="The "reset" signal" link="gst-plugins-good-plugins-dicetv.html#GstDiceTV-reset"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-directsoundsink.html#idp7534912"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-directsoundsink.html#idp10938960"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-directsoundsink.html#id-1.2.43.4.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-directsoundsink.html#id-1.2.43.4.2.2"/> <keyword type="struct" name="struct GstDirectSoundSink" link="gst-plugins-good-plugins-directsoundsink.html#GstDirectSoundSink"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dv1394src.html#idp5887584"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dv1394src.html#idp6345728"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dtmfsrc.html#id-1.2.44.6.7.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dtmfsrc.html#id-1.2.44.6.7.2"/> + <keyword type="struct" name="struct GstDTMFSrc" link="gst-plugins-good-plugins-dtmfsrc.html#GstDTMFSrc-struct"/> + <keyword type="property" name="The "interval" property" link="gst-plugins-good-plugins-dtmfsrc.html#GstDTMFSrc--interval"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dv1394src.html#id-1.2.45.8.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dv1394src.html#id-1.2.45.8.2.2"/> <keyword type="struct" name="struct GstDV1394Src" link="gst-plugins-good-plugins-dv1394src.html#GstDV1394Src-struct"/> <keyword type="property" name="The "channel" property" link="gst-plugins-good-plugins-dv1394src.html#GstDV1394Src--channel"/> <keyword type="property" name="The "consecutive" property" link="gst-plugins-good-plugins-dv1394src.html#GstDV1394Src--consecutive"/> @@ -507,23 +528,23 @@ <keyword type="property" name="The "use-avc" property" link="gst-plugins-good-plugins-dv1394src.html#GstDV1394Src--use-avc"/> <keyword type="property" name="The "device-name" property" link="gst-plugins-good-plugins-dv1394src.html#GstDV1394Src--device-name"/> <keyword type="signal" name="The "frame-dropped" signal" link="gst-plugins-good-plugins-dv1394src.html#GstDV1394Src-frame-dropped"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dvdec.html#idp12061488"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dvdec.html#idp13340688"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dvdec.html#id-1.2.46.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dvdec.html#id-1.2.46.6.2.2"/> <keyword type="struct" name="struct GstDVDec" link="gst-plugins-good-plugins-dvdec.html#GstDVDec-struct"/> <keyword type="property" name="The "clamp-chroma" property" link="gst-plugins-good-plugins-dvdec.html#GstDVDec--clamp-chroma"/> <keyword type="property" name="The "clamp-luma" property" link="gst-plugins-good-plugins-dvdec.html#GstDVDec--clamp-luma"/> <keyword type="property" name="The "drop-factor" property" link="gst-plugins-good-plugins-dvdec.html#GstDVDec--drop-factor"/> <keyword type="property" name="The "quality" property" link="gst-plugins-good-plugins-dvdec.html#GstDVDec--quality"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dvdemux.html#idp6809760"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dvdemux.html#idp8043472"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-dvdemux.html#id-1.2.47.5.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-dvdemux.html#id-1.2.47.5.2.2"/> <keyword type="struct" name="struct GstDVDemux" link="gst-plugins-good-plugins-dvdemux.html#GstDVDemux-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-edgetv.html#idp10558800"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-edgetv.html#idp5916576"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-edgetv.html#idp13310560"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-edgetv.html#id-1.2.48.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-edgetv.html#id-1.2.48.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-edgetv.html#id-1.2.48.5.4.2"/> <keyword type="struct" name="struct GstEdgeTV" link="gst-plugins-good-plugins-edgetv.html#GstEdgeTV-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-equalizer-10bands.html#idp10493440"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-equalizer-10bands.html#idp11034496"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-equalizer-10bands.html#idp12732432"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-equalizer-10bands.html#id-1.2.49.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-equalizer-10bands.html#id-1.2.49.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-equalizer-10bands.html#id-1.2.49.7.4.2"/> <keyword type="struct" name="struct GstIirEqualizer10Bands" link="gst-plugins-good-plugins-equalizer-10bands.html#GstIirEqualizer10Bands-struct"/> <keyword type="property" name="The "band0" property" link="gst-plugins-good-plugins-equalizer-10bands.html#GstIirEqualizer10Bands--band0"/> <keyword type="property" name="The "band1" property" link="gst-plugins-good-plugins-equalizer-10bands.html#GstIirEqualizer10Bands--band1"/> @@ -535,24 +556,24 @@ <keyword type="property" name="The "band7" property" link="gst-plugins-good-plugins-equalizer-10bands.html#GstIirEqualizer10Bands--band7"/> <keyword type="property" name="The "band8" property" link="gst-plugins-good-plugins-equalizer-10bands.html#GstIirEqualizer10Bands--band8"/> <keyword type="property" name="The "band9" property" link="gst-plugins-good-plugins-equalizer-10bands.html#GstIirEqualizer10Bands--band9"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-equalizer-3bands.html#idp13032048"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-equalizer-3bands.html#idp7433952"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-equalizer-3bands.html#idp10233872"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-equalizer-3bands.html#id-1.2.50.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-equalizer-3bands.html#id-1.2.50.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-equalizer-3bands.html#id-1.2.50.7.4.2"/> <keyword type="struct" name="struct GstIirEqualizer3Bands" link="gst-plugins-good-plugins-equalizer-3bands.html#GstIirEqualizer3Bands-struct"/> <keyword type="property" name="The "band0" property" link="gst-plugins-good-plugins-equalizer-3bands.html#GstIirEqualizer3Bands--band0"/> <keyword type="property" name="The "band1" property" link="gst-plugins-good-plugins-equalizer-3bands.html#GstIirEqualizer3Bands--band1"/> <keyword type="property" name="The "band2" property" link="gst-plugins-good-plugins-equalizer-3bands.html#GstIirEqualizer3Bands--band2"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-equalizer-nbands.html#idp7478336"/> - <keyword type="" name="Example code" link="gst-plugins-good-plugins-equalizer-nbands.html#idp8811840"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-equalizer-nbands.html#idp10758976"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-equalizer-nbands.html#idp14137664"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-equalizer-nbands.html#id-1.2.51.7.3.1"/> + <keyword type="" name="Example code" link="gst-plugins-good-plugins-equalizer-nbands.html#id-1.2.51.7.3.2"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-equalizer-nbands.html#id-1.2.51.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-equalizer-nbands.html#id-1.2.51.7.4.2"/> <keyword type="struct" name="struct GstIirEqualizerNBands" link="gst-plugins-good-plugins-equalizer-nbands.html#GstIirEqualizerNBands-struct"/> <keyword type="property" name="The "num-bands" property" link="gst-plugins-good-plugins-equalizer-nbands.html#GstIirEqualizerNBands--num-bands"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flacdec.html#idp11457088"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flacdec.html#idp10655248"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flacdec.html#id-1.2.52.5.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flacdec.html#id-1.2.52.5.2.2"/> <keyword type="struct" name="struct GstFlacDec" link="gst-plugins-good-plugins-flacdec.html#GstFlacDec-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flacenc.html#idp11967952"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flacenc.html#idp8915104"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flacenc.html#id-1.2.53.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flacenc.html#id-1.2.53.7.2.2"/> <keyword type="struct" name="struct GstFlacEnc" link="gst-plugins-good-plugins-flacenc.html#GstFlacEnc-struct"/> <keyword type="property" name="The "blocksize" property" link="gst-plugins-good-plugins-flacenc.html#GstFlacEnc--blocksize"/> <keyword type="property" name="The "escape-coding" property" link="gst-plugins-good-plugins-flacenc.html#GstFlacEnc--escape-coding"/> @@ -569,141 +590,131 @@ <keyword type="property" name="The "streamable-subset" property" link="gst-plugins-good-plugins-flacenc.html#GstFlacEnc--streamable-subset"/> <keyword type="property" name="The "padding" property" link="gst-plugins-good-plugins-flacenc.html#GstFlacEnc--padding"/> <keyword type="property" name="The "seekpoints" property" link="gst-plugins-good-plugins-flacenc.html#GstFlacEnc--seekpoints"/> - <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-flacparse.html#idp7709728"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flacparse.html#idp14137952"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flacparse.html#idp11696240"/> + <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-flacparse.html#id-1.2.54.6.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flacparse.html#id-1.2.54.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flacparse.html#id-1.2.54.6.5.2"/> <keyword type="struct" name="struct GstFlacParse" link="gst-plugins-good-plugins-flacparse.html#GstFlacParse-struct"/> <keyword type="property" name="The "check-frame-checksums" property" link="gst-plugins-good-plugins-flacparse.html#GstFlacParse--check-frame-checksums"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flactag.html#idp10448688"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flactag.html#idp9567712"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flactag.html#id-1.2.55.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flactag.html#id-1.2.55.6.2.2"/> <keyword type="struct" name="struct GstFlacTag" link="gst-plugins-good-plugins-flactag.html#GstFlacTag-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-flvdemux.html#idp12607568"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flvdemux.html#idp8766880"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flvdemux.html#idp8310288"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-flvdemux.html#id-1.2.56.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flvdemux.html#id-1.2.56.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flvdemux.html#id-1.2.56.5.4.2"/> <keyword type="struct" name="struct GstFlvDemux" link="gst-plugins-good-plugins-flvdemux.html#GstFlvDemux-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-flvmux.html#idp11106816"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flvmux.html#idp12534864"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flvmux.html#idp10836800"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-flvmux.html#id-1.2.57.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flvmux.html#id-1.2.57.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flvmux.html#id-1.2.57.7.4.2"/> <keyword type="struct" name="GstFlvMux" link="gst-plugins-good-plugins-flvmux.html#GstFlvMux-struct"/> <keyword type="property" name="The "is-live" property" link="gst-plugins-good-plugins-flvmux.html#GstFlvMux--is-live"/> <keyword type="property" name="The "streamable" property" link="gst-plugins-good-plugins-flvmux.html#GstFlvMux--streamable"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flxdec.html#idp8060336"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flxdec.html#idp9321968"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-flxdec.html#id-1.2.58.5.3.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-flxdec.html#id-1.2.58.5.3.2"/> <keyword type="struct" name="struct GstFlxDec" link="gst-plugins-good-plugins-flxdec.html#GstFlxDec-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-gamma.html#idp13475872"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-gamma.html#idp8130160"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-gamma.html#idp13560656"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-gamma.html#id-1.2.59.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-gamma.html#id-1.2.59.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-gamma.html#id-1.2.59.6.5.2"/> <keyword type="struct" name="struct GstGamma" link="gst-plugins-good-plugins-gamma.html#GstGamma-struct"/> <keyword type="property" name="The "gamma" property" link="gst-plugins-good-plugins-gamma.html#GstGamma--gamma"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#idp6209632"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#idp14002320"/> - <keyword type="struct" name="struct GstGdkPixbufOverlay" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay-struct"/> - <keyword type="property" name="The "location" property" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--location"/> - <keyword type="property" name="The "offset-x" property" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--offset-x"/> - <keyword type="property" name="The "offset-y" property" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--offset-y"/> - <keyword type="property" name="The "overlay-height" property" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--overlay-height"/> - <keyword type="property" name="The "overlay-width" property" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--overlay-width"/> - <keyword type="property" name="The "relative-x" property" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--relative-x"/> - <keyword type="property" name="The "relative-y" property" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--relative-y"/> - <keyword type="property" name="The "alpha" property" link="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--alpha"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-gdkpixbufsink.html#idp12306336"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-gdkpixbufsink.html#idp11347488"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-gdkpixbufsink.html#id-1.2.60.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-gdkpixbufsink.html#id-1.2.60.6.2.2"/> <keyword type="struct" name="struct GstGdkPixbufSink" link="gst-plugins-good-plugins-gdkpixbufsink.html#GstGdkPixbufSink-struct"/> <keyword type="property" name="The "last-pixbuf" property" link="gst-plugins-good-plugins-gdkpixbufsink.html#GstGdkPixbufSink--last-pixbuf"/> <keyword type="property" name="The "send-messages" property" link="gst-plugins-good-plugins-gdkpixbufsink.html#GstGdkPixbufSink--send-messages"/> <keyword type="property" name="The "post-messages" property" link="gst-plugins-good-plugins-gdkpixbufsink.html#GstGdkPixbufSink--post-messages"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-goom.html#idp11453232"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-goom.html#idp12340112"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-goom.html#idp10735056"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-goom.html#id-1.2.61.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-goom.html#id-1.2.61.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-goom.html#id-1.2.61.5.4.2"/> <keyword type="struct" name="struct GstGoom" link="gst-plugins-good-plugins-goom.html#GstGoom-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-goom2k1.html#idp5458224"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-goom2k1.html#idp11333200"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-goom2k1.html#idp10553728"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-goom2k1.html#id-1.2.62.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-goom2k1.html#id-1.2.62.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-goom2k1.html#id-1.2.62.5.4.2"/> <keyword type="struct" name="struct GstGoom" link="gst-plugins-good-plugins-goom2k1.html#GstGoom-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-hdv1394src.html#idp13657280"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-hdv1394src.html#idp13208992"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-hdv1394src.html#id-1.2.63.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-hdv1394src.html#id-1.2.63.7.2.2"/> <keyword type="struct" name="struct GstHDV1394Src" link="gst-plugins-good-plugins-hdv1394src.html#GstHDV1394Src-struct"/> <keyword type="property" name="The "channel" property" link="gst-plugins-good-plugins-hdv1394src.html#GstHDV1394Src--channel"/> <keyword type="property" name="The "device-name" property" link="gst-plugins-good-plugins-hdv1394src.html#GstHDV1394Src--device-name"/> <keyword type="property" name="The "guid" property" link="gst-plugins-good-plugins-hdv1394src.html#GstHDV1394Src--guid"/> <keyword type="property" name="The "port" property" link="gst-plugins-good-plugins-hdv1394src.html#GstHDV1394Src--port"/> <keyword type="property" name="The "use-avc" property" link="gst-plugins-good-plugins-hdv1394src.html#GstHDV1394Src--use-avc"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-icydemux.html#idp7688128"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-icydemux.html#idp12043920"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-icydemux.html#idp13656576"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-icydemux.html#id-1.2.64.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-icydemux.html#id-1.2.64.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-icydemux.html#id-1.2.64.5.4.2"/> <keyword type="struct" name="struct GstICYDemux" link="gst-plugins-good-plugins-icydemux.html#GstICYDemux-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-id3demux.html#idp10540912"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-id3demux.html#idp10291600"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-id3demux.html#idp12381392"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-id3demux.html#id-1.2.65.6.5.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-id3demux.html#id-1.2.65.6.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-id3demux.html#id-1.2.65.6.6.2"/> <keyword type="struct" name="struct GstID3Demux" link="gst-plugins-good-plugins-id3demux.html#GstID3Demux-struct"/> <keyword type="property" name="The "prefer-v1" property" link="gst-plugins-good-plugins-id3demux.html#GstID3Demux--prefer-v1"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-id3v2mux.html#idp7096544"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-id3v2mux.html#idp14641408"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-id3v2mux.html#id-1.2.66.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-id3v2mux.html#id-1.2.66.6.2.2"/> <keyword type="struct" name="struct GstId3v2Mux" link="gst-plugins-good-plugins-id3v2mux.html#GstId3v2Mux-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-imagefreeze.html#idp14187104"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-imagefreeze.html#idp8765840"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-imagefreeze.html#idp9475824"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-imagefreeze.html#id-1.2.67.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-imagefreeze.html#id-1.2.67.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-imagefreeze.html#id-1.2.67.5.4.2"/> <keyword type="struct" name="struct GstImageFreeze" link="gst-plugins-good-plugins-imagefreeze.html#GstImageFreeze-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-interleave.html#idp9931760"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-interleave.html#idp10952512"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-interleave.html#idp13543472"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-interleave.html#id-1.2.68.6.6.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-interleave.html#id-1.2.68.6.7.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-interleave.html#id-1.2.68.6.7.2"/> <keyword type="struct" name="struct GstInterleave" link="gst-plugins-good-plugins-interleave.html#GstInterleave-struct"/> <keyword type="property" name="The "channel-positions" property" link="gst-plugins-good-plugins-interleave.html#GstInterleave--channel-positions"/> <keyword type="property" name="The "channel-positions-from-input" property" link="gst-plugins-good-plugins-interleave.html#GstInterleave--channel-positions-from-input"/> - <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-ismlmux.html#idp10480544"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-ismlmux.html#idp10680912"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-ismlmux.html#idp6826720"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-jackaudiosrc.html#idp15642352"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-jackaudiosrc.html#idp14135472"/> + <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-ismlmux.html#id-1.2.69.4.8.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-ismlmux.html#id-1.2.69.4.10.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-ismlmux.html#id-1.2.69.4.10.2"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-jackaudiosrc.html#id-1.2.70.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-jackaudiosrc.html#id-1.2.70.6.2.2"/> <keyword type="struct" name="struct GstJackAudioSrc" link="gst-plugins-good-plugins-jackaudiosrc.html#GstJackAudioSrc-struct"/> <keyword type="property" name="The "client" property" link="gst-plugins-good-plugins-jackaudiosrc.html#GstJackAudioSrc--client"/> <keyword type="property" name="The "connect" property" link="gst-plugins-good-plugins-jackaudiosrc.html#GstJackAudioSrc--connect"/> <keyword type="property" name="The "server" property" link="gst-plugins-good-plugins-jackaudiosrc.html#GstJackAudioSrc--server"/> <keyword type="property" name="The "client-name" property" link="gst-plugins-good-plugins-jackaudiosrc.html#GstJackAudioSrc--client-name"/> <keyword type="property" name="The "transport" property" link="gst-plugins-good-plugins-jackaudiosrc.html#GstJackAudioSrc--transport"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-jackaudiosink.html#idp15028368"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-jackaudiosink.html#idp8507472"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-jackaudiosink.html#id-1.2.71.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-jackaudiosink.html#id-1.2.71.6.2.2"/> <keyword type="struct" name="struct GstJackAudioSink" link="gst-plugins-good-plugins-jackaudiosink.html#GstJackAudioSink-struct"/> <keyword type="property" name="The "client" property" link="gst-plugins-good-plugins-jackaudiosink.html#GstJackAudioSink--client"/> <keyword type="property" name="The "connect" property" link="gst-plugins-good-plugins-jackaudiosink.html#GstJackAudioSink--connect"/> <keyword type="property" name="The "server" property" link="gst-plugins-good-plugins-jackaudiosink.html#GstJackAudioSink--server"/> <keyword type="property" name="The "client-name" property" link="gst-plugins-good-plugins-jackaudiosink.html#GstJackAudioSink--client-name"/> <keyword type="property" name="The "transport" property" link="gst-plugins-good-plugins-jackaudiosink.html#GstJackAudioSink--transport"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-jpegdec.html#idp7630624"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-jpegdec.html#idp12698544"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-jpegdec.html#id-1.2.72.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-jpegdec.html#id-1.2.72.6.2.2"/> <keyword type="struct" name="struct GstJpegDec" link="gst-plugins-good-plugins-jpegdec.html#GstJpegDec-struct"/> <keyword type="property" name="The "idct-method" property" link="gst-plugins-good-plugins-jpegdec.html#GstJpegDec--idct-method"/> <keyword type="property" name="The "max-errors" property" link="gst-plugins-good-plugins-jpegdec.html#GstJpegDec--max-errors"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-jpegenc.html#idp11983664"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-jpegenc.html#idp2240256"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-jpegenc.html#id-1.2.73.8.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-jpegenc.html#id-1.2.73.8.2.2"/> <keyword type="struct" name="struct GstJpegEnc" link="gst-plugins-good-plugins-jpegenc.html#GstJpegEnc-struct"/> <keyword type="property" name="The "quality" property" link="gst-plugins-good-plugins-jpegenc.html#GstJpegEnc--quality"/> <keyword type="property" name="The "idct-method" property" link="gst-plugins-good-plugins-jpegenc.html#GstJpegEnc--idct-method"/> <keyword type="signal" name="The "frame-encoded" signal" link="gst-plugins-good-plugins-jpegenc.html#GstJpegEnc-frame-encoded"/> - <keyword type="" name="Example application" link="gst-plugins-good-plugins-level.html#idp15582496"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-level.html#idp13295664"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-level.html#idp10809472"/> + <keyword type="" name="Example application" link="gst-plugins-good-plugins-level.html#id-1.2.74.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-level.html#id-1.2.74.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-level.html#id-1.2.74.6.4.2"/> <keyword type="struct" name="struct GstLevel" link="gst-plugins-good-plugins-level.html#GstLevel-struct"/> <keyword type="property" name="The "interval" property" link="gst-plugins-good-plugins-level.html#GstLevel--interval"/> <keyword type="property" name="The "message" property" link="gst-plugins-good-plugins-level.html#GstLevel--message"/> <keyword type="property" name="The "peak-falloff" property" link="gst-plugins-good-plugins-level.html#GstLevel--peak-falloff"/> <keyword type="property" name="The "peak-ttl" property" link="gst-plugins-good-plugins-level.html#GstLevel--peak-ttl"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-matroskamux.html#idp16428416"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-matroskamux.html#idp14045152"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-matroskamux.html#idp11308880"/> + <keyword type="property" name="The "post-messages" property" link="gst-plugins-good-plugins-level.html#GstLevel--post-messages"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-matroskamux.html#id-1.2.75.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-matroskamux.html#id-1.2.75.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-matroskamux.html#id-1.2.75.7.4.2"/> <keyword type="struct" name="GstMatroskaMux" link="gst-plugins-good-plugins-matroskamux.html#GstMatroskaMux-struct"/> <keyword type="property" name="The "writing-app" property" link="gst-plugins-good-plugins-matroskamux.html#GstMatroskaMux--writing-app"/> <keyword type="property" name="The "version" property" link="gst-plugins-good-plugins-matroskamux.html#GstMatroskaMux--version"/> <keyword type="property" name="The "min-index-interval" property" link="gst-plugins-good-plugins-matroskamux.html#GstMatroskaMux--min-index-interval"/> <keyword type="property" name="The "streamable" property" link="gst-plugins-good-plugins-matroskamux.html#GstMatroskaMux--streamable"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-matroskademux.html#idp13908848"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-matroskademux.html#idp5870256"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-matroskademux.html#idp13766336"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-matroskademux.html#id-1.2.76.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-matroskademux.html#id-1.2.76.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-matroskademux.html#id-1.2.76.6.4.2"/> <keyword type="struct" name="GstMatroskaDemux" link="gst-plugins-good-plugins-matroskademux.html#GstMatroskaDemux-struct"/> <keyword type="property" name="The "max-gap-time" property" link="gst-plugins-good-plugins-matroskademux.html#GstMatroskaDemux--max-gap-time"/> - <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-mj2mux.html#idp15226288"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mj2mux.html#idp15229632"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mj2mux.html#idp14579600"/> + <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-mj2mux.html#id-1.2.77.7.8.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mj2mux.html#id-1.2.77.7.10.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mj2mux.html#id-1.2.77.7.10.2"/> <keyword type="struct" name="GstMJ2Mux" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux-struct"/> <keyword type="property" name="The "dts-method" property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--dts-method"/> <keyword type="property" name="The "faststart" property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--faststart"/> @@ -714,17 +725,17 @@ <keyword type="property" name="The "presentation-time" property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--presentation-time"/> <keyword type="property" name="The "streamable" property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--streamable"/> <keyword type="property" name="The "trak-timescale" property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--trak-timescale"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-monoscope.html#idp15073616"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-monoscope.html#idp6870960"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-monoscope.html#idp6752496"/> - <keyword type="struct" name="struct GstMonoscope" link="gst-plugins-good-plugins-monoscope.html#GstMonoscope"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-mpegaudioparse.html#idp14140000"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mpegaudioparse.html#idp12409568"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mpegaudioparse.html#idp7768592"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-monoscope.html#id-1.2.78.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-monoscope.html#id-1.2.78.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-monoscope.html#id-1.2.78.5.4.2"/> + <keyword type="struct" name="struct GstMonoscope" link="gst-plugins-good-plugins-monoscope.html#GstMonoscope-struct"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-mpegaudioparse.html#id-1.2.79.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mpegaudioparse.html#id-1.2.79.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mpegaudioparse.html#id-1.2.79.5.4.2"/> <keyword type="struct" name="struct GstMpegAudioParse" link="gst-plugins-good-plugins-mpegaudioparse.html#GstMpegAudioParse-struct"/> - <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-mp4mux.html#idp15745744"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mp4mux.html#idp15269152"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mp4mux.html#idp14864352"/> + <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-mp4mux.html#id-1.2.80.7.8.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mp4mux.html#id-1.2.80.7.10.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mp4mux.html#id-1.2.80.7.10.2"/> <keyword type="typedef" name="GstMP4Mux" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux"/> <keyword type="property" name="The "dts-method" property" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--dts-method"/> <keyword type="property" name="The "faststart" property" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--faststart"/> @@ -735,16 +746,16 @@ <keyword type="property" name="The "presentation-time" property" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--presentation-time"/> <keyword type="property" name="The "streamable" property" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--streamable"/> <keyword type="property" name="The "trak-timescale" property" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--trak-timescale"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mulawdec.html#idp10846496"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mulawdec.html#idp8097568"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mulawdec.html#id-1.2.81.5.3.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mulawdec.html#id-1.2.81.5.3.2"/> <keyword type="struct" name="struct GstMuLawDec" link="gst-plugins-good-plugins-mulawdec.html#GstMuLawDec-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mulawenc.html#idp14042560"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mulawenc.html#idp13521968"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-mulawenc.html#id-1.2.82.4.3.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-mulawenc.html#id-1.2.82.4.3.2"/> <keyword type="struct" name="struct GstMuLawDec" link="gst-plugins-good-plugins-mulawenc.html#GstMuLawDec-struct"/> <keyword type="struct" name="struct GstMuLawEnc" link="gst-plugins-good-plugins-mulawenc.html#GstMuLawEnc"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-multifilesink.html#idp15385312"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-multifilesink.html#idp16268288"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-multifilesink.html#idp14692256"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-multifilesink.html#id-1.2.83.6.6.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-multifilesink.html#id-1.2.83.6.8.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-multifilesink.html#id-1.2.83.6.8.2"/> <keyword type="struct" name="struct GstMultiFileSink" link="gst-plugins-good-plugins-multifilesink.html#GstMultiFileSink-struct"/> <keyword type="enum" name="enum GstMultiFileSinkNext" link="gst-plugins-good-plugins-multifilesink.html#GstMultiFileSinkNext"/> <keyword type="property" name="The "location" property" link="gst-plugins-good-plugins-multifilesink.html#GstMultiFileSink--location"/> @@ -753,9 +764,9 @@ <keyword type="property" name="The "post-messages" property" link="gst-plugins-good-plugins-multifilesink.html#GstMultiFileSink--post-messages"/> <keyword type="property" name="The "max-files" property" link="gst-plugins-good-plugins-multifilesink.html#GstMultiFileSink--max-files"/> <keyword type="property" name="The "max-file-size" property" link="gst-plugins-good-plugins-multifilesink.html#GstMultiFileSink--max-file-size"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-multifilesrc.html#idp10523632"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-multifilesrc.html#idp11085936"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-multifilesrc.html#idp15361312"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-multifilesrc.html#id-1.2.84.6.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-multifilesrc.html#id-1.2.84.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-multifilesrc.html#id-1.2.84.6.5.2"/> <keyword type="struct" name="struct GstMultiFileSrc" link="gst-plugins-good-plugins-multifilesrc.html#GstMultiFileSrc-struct"/> <keyword type="property" name="The "caps" property" link="gst-plugins-good-plugins-multifilesrc.html#GstMultiFileSrc--caps"/> <keyword type="property" name="The "index" property" link="gst-plugins-good-plugins-multifilesrc.html#GstMultiFileSrc--index"/> @@ -763,20 +774,20 @@ <keyword type="property" name="The "loop" property" link="gst-plugins-good-plugins-multifilesrc.html#GstMultiFileSrc--loop"/> <keyword type="property" name="The "start-index" property" link="gst-plugins-good-plugins-multifilesrc.html#GstMultiFileSrc--start-index"/> <keyword type="property" name="The "stop-index" property" link="gst-plugins-good-plugins-multifilesrc.html#GstMultiFileSrc--stop-index"/> - <keyword type="" name="Sample pipelines" link="gst-plugins-good-plugins-multipartdemux.html#idp14962768"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-multipartdemux.html#idp15961200"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-multipartdemux.html#idp10760032"/> + <keyword type="" name="Sample pipelines" link="gst-plugins-good-plugins-multipartdemux.html#id-1.2.85.6.5.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-multipartdemux.html#id-1.2.85.6.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-multipartdemux.html#id-1.2.85.6.6.2"/> <keyword type="struct" name="struct GstMultipartDemux" link="gst-plugins-good-plugins-multipartdemux.html#GstMultipartDemux-struct"/> <keyword type="property" name="The "autoscan" property" link="gst-plugins-good-plugins-multipartdemux.html#GstMultipartDemux--autoscan"/> <keyword type="property" name="The "boundary" property" link="gst-plugins-good-plugins-multipartdemux.html#GstMultipartDemux--boundary"/> <keyword type="property" name="The "single-stream" property" link="gst-plugins-good-plugins-multipartdemux.html#GstMultipartDemux--single-stream"/> - <keyword type="" name="Sample pipelines" link="gst-plugins-good-plugins-multipartmux.html#idp14458240"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-multipartmux.html#idp15868848"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-multipartmux.html#idp17267872"/> + <keyword type="" name="Sample pipelines" link="gst-plugins-good-plugins-multipartmux.html#id-1.2.86.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-multipartmux.html#id-1.2.86.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-multipartmux.html#id-1.2.86.6.4.2"/> <keyword type="struct" name="struct GstMultipartMux" link="gst-plugins-good-plugins-multipartmux.html#GstMultipartMux-struct"/> <keyword type="property" name="The "boundary" property" link="gst-plugins-good-plugins-multipartmux.html#GstMultipartMux--boundary"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-multiudpsink.html#idp14668672"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-multiudpsink.html#idp7819664"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-multiudpsink.html#id-1.2.87.7.3.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-multiudpsink.html#id-1.2.87.7.3.2"/> <keyword type="struct" name="struct GstMultiUDPSink" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-struct"/> <keyword type="property" name="The "bytes-served" property" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--bytes-served"/> <keyword type="property" name="The "bytes-to-serve" property" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--bytes-to-serve"/> @@ -796,71 +807,75 @@ <keyword type="property" name="The "used-socket" property" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--used-socket"/> <keyword type="property" name="The "force-ipv4" property" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--force-ipv4"/> <keyword type="property" name="The "multicast-iface" property" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--multicast-iface"/> + <keyword type="property" name="The "bind-address" property" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--bind-address"/> + <keyword type="property" name="The "bind-port" property" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--bind-port"/> + <keyword type="property" name="The "socket-v6" property" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--socket-v6"/> + <keyword type="property" name="The "used-socket-v6" property" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--used-socket-v6"/> <keyword type="signal" name="The "add" signal" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-add"/> <keyword type="signal" name="The "clear" signal" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-clear"/> <keyword type="signal" name="The "client-added" signal" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-client-added"/> <keyword type="signal" name="The "client-removed" signal" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-client-removed"/> <keyword type="signal" name="The "get-stats" signal" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-get-stats"/> <keyword type="signal" name="The "remove" signal" link="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-remove"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-optv.html#idp5593680"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-optv.html#idp15624000"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-optv.html#idp14426080"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-optv.html#id-1.2.88.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-optv.html#id-1.2.88.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-optv.html#id-1.2.88.6.4.2"/> <keyword type="struct" name="struct GstOpTV" link="gst-plugins-good-plugins-optv.html#GstOpTV-struct"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-optv.html#GstOpTV--mode"/> <keyword type="property" name="The "speed" property" link="gst-plugins-good-plugins-optv.html#GstOpTV--speed"/> <keyword type="property" name="The "threshold" property" link="gst-plugins-good-plugins-optv.html#GstOpTV--threshold"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-oss4sink.html#idp18248704"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-oss4sink.html#idp18228176"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-oss4sink.html#id-1.2.89.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-oss4sink.html#id-1.2.89.7.2.2"/> <keyword type="struct" name="struct GstOss4Sink" link="gst-plugins-good-plugins-oss4sink.html#GstOss4Sink-struct"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-oss4sink.html#GstOss4Sink--device"/> <keyword type="property" name="The "device-name" property" link="gst-plugins-good-plugins-oss4sink.html#GstOss4Sink--device-name"/> <keyword type="property" name="The "mute" property" link="gst-plugins-good-plugins-oss4sink.html#GstOss4Sink--mute"/> <keyword type="property" name="The "volume" property" link="gst-plugins-good-plugins-oss4sink.html#GstOss4Sink--volume"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-oss4src.html#idp16699888"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-oss4src.html#idp11705600"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-oss4src.html#id-1.2.90.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-oss4src.html#id-1.2.90.7.2.2"/> <keyword type="struct" name="struct GstOss4Source" link="gst-plugins-good-plugins-oss4src.html#GstOss4Source-struct"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-oss4src.html#GstOss4Source--device"/> <keyword type="property" name="The "device-name" property" link="gst-plugins-good-plugins-oss4src.html#GstOss4Source--device-name"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-osssink.html#idp17198544"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-osssink.html#idp14716880"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-osssink.html#id-1.2.91.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-osssink.html#id-1.2.91.6.2.2"/> <keyword type="struct" name="struct GstOssSink" link="gst-plugins-good-plugins-osssink.html#GstOssSink-struct"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-osssink.html#GstOssSink--device"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-osssrc.html#idp14986240"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-osssrc.html#idp12005152"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-osssrc.html#id-1.2.92.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-osssrc.html#id-1.2.92.7.2.2"/> <keyword type="struct" name="struct GstOssSrc" link="gst-plugins-good-plugins-osssrc.html#GstOssSrc-struct"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-osssrc.html#GstOssSrc--device"/> <keyword type="property" name="The "device-name" property" link="gst-plugins-good-plugins-osssrc.html#GstOssSrc--device-name"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-osxaudiosink.html#idp12645200"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-osxaudiosink.html#idp17313952"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-osxaudiosink.html#id-1.2.93.5.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-osxaudiosink.html#id-1.2.93.5.2.2"/> <keyword type="struct" name="struct GstOsxAudioSink" link="gst-plugins-good-plugins-osxaudiosink.html#GstOsxAudioSink"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-osxaudiosink.html#GstOsxAudioSink--device"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-osxaudiosrc.html#idp14974832"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-osxaudiosrc.html#idp17489456"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-osxaudiosrc.html#id-1.2.94.5.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-osxaudiosrc.html#id-1.2.94.5.2.2"/> <keyword type="struct" name="struct GstOsxAudioSrc" link="gst-plugins-good-plugins-osxaudiosrc.html#GstOsxAudioSrc"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-osxaudiosrc.html#GstOsxAudioSrc--device"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-osxvideosink.html#idp17559520"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-osxvideosink.html#idp17363312"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-osxvideosink.html#id-1.2.95.5.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-osxvideosink.html#id-1.2.95.5.2.2"/> <keyword type="struct" name="struct GstOSXVideoSink" link="gst-plugins-good-plugins-osxvideosink.html#GstOSXVideoSink"/> <keyword type="property" name="The "embed" property" link="gst-plugins-good-plugins-osxvideosink.html#GstOSXVideoSink--embed"/> <keyword type="property" name="The "fullscreen" property" link="gst-plugins-good-plugins-osxvideosink.html#GstOSXVideoSink--fullscreen"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-pngdec.html#idp18115200"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-pngdec.html#idp18756400"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-pngdec.html#id-1.2.96.5.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-pngdec.html#id-1.2.96.5.2.2"/> <keyword type="struct" name="struct GstPngDec" link="gst-plugins-good-plugins-pngdec.html#GstPngDec-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-pngenc.html#idp6895344"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-pngenc.html#idp16263840"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-pngenc.html#id-1.2.97.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-pngenc.html#id-1.2.97.7.2.2"/> <keyword type="struct" name="struct GstPngEnc" link="gst-plugins-good-plugins-pngenc.html#GstPngEnc-struct"/> <keyword type="property" name="The "compression-level" property" link="gst-plugins-good-plugins-pngenc.html#GstPngEnc--compression-level"/> <keyword type="property" name="The "snapshot" property" link="gst-plugins-good-plugins-pngenc.html#GstPngEnc--snapshot"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-progressreport.html#idp16261984"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-progressreport.html#idp14790512"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-progressreport.html#idp18106256"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-progressreport.html#id-1.2.98.6.7.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-progressreport.html#id-1.2.98.6.8.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-progressreport.html#id-1.2.98.6.8.2"/> <keyword type="struct" name="struct GstProgressReport" link="gst-plugins-good-plugins-progressreport.html#GstProgressReport-struct"/> <keyword type="property" name="The "silent" property" link="gst-plugins-good-plugins-progressreport.html#GstProgressReport--silent"/> <keyword type="property" name="The "update-freq" property" link="gst-plugins-good-plugins-progressreport.html#GstProgressReport--update-freq"/> <keyword type="property" name="The "format" property" link="gst-plugins-good-plugins-progressreport.html#GstProgressReport--format"/> <keyword type="property" name="The "do-query" property" link="gst-plugins-good-plugins-progressreport.html#GstProgressReport--do-query"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-pulsesink.html#idp18593120"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-pulsesink.html#idp14965120"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-pulsesink.html#id-1.2.99.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-pulsesink.html#id-1.2.99.7.2.2"/> <keyword type="struct" name="struct GstPulseSink" link="gst-plugins-good-plugins-pulsesink.html#GstPulseSink-struct"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-pulsesink.html#GstPulseSink--device"/> <keyword type="property" name="The "server" property" link="gst-plugins-good-plugins-pulsesink.html#GstPulseSink--server"/> @@ -870,8 +885,9 @@ <keyword type="property" name="The "client" property" link="gst-plugins-good-plugins-pulsesink.html#GstPulseSink--client"/> <keyword type="property" name="The "stream-properties" property" link="gst-plugins-good-plugins-pulsesink.html#GstPulseSink--stream-properties"/> <keyword type="property" name="The "client-name" property" link="gst-plugins-good-plugins-pulsesink.html#GstPulseSink--client-name"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-pulsesrc.html#idp16340160"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-pulsesrc.html#idp12388752"/> + <keyword type="property" name="The "current-device" property" link="gst-plugins-good-plugins-pulsesink.html#GstPulseSink--current-device"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-pulsesrc.html#id-1.2.100.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-pulsesrc.html#id-1.2.100.7.2.2"/> <keyword type="struct" name="struct GstPulseSrc" link="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc-struct"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--device"/> <keyword type="property" name="The "server" property" link="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--server"/> @@ -882,19 +898,20 @@ <keyword type="property" name="The "source-output-index" property" link="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--source-output-index"/> <keyword type="property" name="The "volume" property" link="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--volume"/> <keyword type="property" name="The "client-name" property" link="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--client-name"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-quarktv.html#idp16257024"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-quarktv.html#idp14284272"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-quarktv.html#idp18841936"/> + <keyword type="property" name="The "current-device" property" link="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--current-device"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-quarktv.html#id-1.2.101.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-quarktv.html#id-1.2.101.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-quarktv.html#id-1.2.101.6.4.2"/> <keyword type="struct" name="struct GstQuarkTV" link="gst-plugins-good-plugins-quarktv.html#GstQuarkTV-struct"/> <keyword type="property" name="The "planes" property" link="gst-plugins-good-plugins-quarktv.html#GstQuarkTV--planes"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-qtdemux.html#idp18001200"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-qtdemux.html#idp7661856"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-qtdemux.html#idp18740912"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-qtdemux.html#id-1.2.102.6.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-qtdemux.html#id-1.2.102.6.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-qtdemux.html#id-1.2.102.6.6.2"/> <keyword type="struct" name="struct GstQTDemux" link="gst-plugins-good-plugins-qtdemux.html#GstQTDemux-struct"/> <keyword type="signal" name="The "got-redirect" signal" link="gst-plugins-good-plugins-qtdemux.html#GstQTDemux-got-redirect"/> - <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-qtmux.html#idp13712640"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-qtmux.html#idp13075632"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-qtmux.html#idp18075376"/> + <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-qtmux.html#id-1.2.103.7.7.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-qtmux.html#id-1.2.103.7.9.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-qtmux.html#id-1.2.103.7.9.2"/> <keyword type="struct" name="struct GstQTMux" link="gst-plugins-good-plugins-qtmux.html#GstQTMux-struct"/> <keyword type="property" name="The "dts-method" property" link="gst-plugins-good-plugins-qtmux.html#GstQTMux--dts-method"/> <keyword type="property" name="The "faststart" property" link="gst-plugins-good-plugins-qtmux.html#GstQTMux--faststart"/> @@ -905,9 +922,9 @@ <keyword type="property" name="The "presentation-time" property" link="gst-plugins-good-plugins-qtmux.html#GstQTMux--presentation-time"/> <keyword type="property" name="The "streamable" property" link="gst-plugins-good-plugins-qtmux.html#GstQTMux--streamable"/> <keyword type="property" name="The "trak-timescale" property" link="gst-plugins-good-plugins-qtmux.html#GstQTMux--trak-timescale"/> - <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-qtmoovrecover.html#idp18524464"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-qtmoovrecover.html#idp18192768"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-qtmoovrecover.html#idp15097392"/> + <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-qtmoovrecover.html#id-1.2.104.7.2.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-qtmoovrecover.html#id-1.2.104.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-qtmoovrecover.html#id-1.2.104.7.4.2"/> <keyword type="struct" name="struct GstQTMoovRecover" link="gst-plugins-good-plugins-qtmoovrecover.html#GstQTMoovRecover-struct"/> <keyword type="struct" name="struct GstQTMoovRecoverClass" link="gst-plugins-good-plugins-qtmoovrecover.html#GstQTMoovRecoverClass"/> <keyword type="function" name="gst_qt_moov_recover_get_type ()" link="gst-plugins-good-plugins-qtmoovrecover.html#gst-qt-moov-recover-get-type"/> @@ -916,37 +933,37 @@ <keyword type="property" name="The "faststart-mode" property" link="gst-plugins-good-plugins-qtmoovrecover.html#GstQTMoovRecover--faststart-mode"/> <keyword type="property" name="The "fixed-output" property" link="gst-plugins-good-plugins-qtmoovrecover.html#GstQTMoovRecover--fixed-output"/> <keyword type="property" name="The "recovery-input" property" link="gst-plugins-good-plugins-qtmoovrecover.html#GstQTMoovRecover--recovery-input"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-radioactv.html#idp6617776"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-radioactv.html#idp14167280"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-radioactv.html#idp13290032"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-radioactv.html#id-1.2.105.6.5.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-radioactv.html#id-1.2.105.6.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-radioactv.html#id-1.2.105.6.6.2"/> <keyword type="struct" name="struct GstRadioacTV" link="gst-plugins-good-plugins-radioactv.html#GstRadioacTV-struct"/> <keyword type="property" name="The "color" property" link="gst-plugins-good-plugins-radioactv.html#GstRadioacTV--color"/> <keyword type="property" name="The "interval" property" link="gst-plugins-good-plugins-radioactv.html#GstRadioacTV--interval"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-radioactv.html#GstRadioacTV--mode"/> <keyword type="property" name="The "trigger" property" link="gst-plugins-good-plugins-radioactv.html#GstRadioacTV--trigger"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-revtv.html#idp18855152"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-revtv.html#idp14633984"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-revtv.html#id-1.2.106.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-revtv.html#id-1.2.106.6.2.2"/> <keyword type="struct" name="struct GstRevTV" link="gst-plugins-good-plugins-revtv.html#GstRevTV-struct"/> <keyword type="property" name="The "delay" property" link="gst-plugins-good-plugins-revtv.html#GstRevTV--delay"/> <keyword type="property" name="The "gain" property" link="gst-plugins-good-plugins-revtv.html#GstRevTV--gain"/> <keyword type="property" name="The "linespace" property" link="gst-plugins-good-plugins-revtv.html#GstRevTV--linespace"/> - <keyword type="" name="Example launch lines" link="gst-plugins-good-plugins-rganalysis.html#idp6301280"/> - <keyword type="" name="Acknowledgements" link="gst-plugins-good-plugins-rganalysis.html#idp16897136"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rganalysis.html#idp18060720"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rganalysis.html#idp19055552"/> + <keyword type="" name="Example launch lines" link="gst-plugins-good-plugins-rganalysis.html#id-1.2.107.6.4.1"/> + <keyword type="" name="Acknowledgements" link="gst-plugins-good-plugins-rganalysis.html#id-1.2.107.6.4.2"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rganalysis.html#id-1.2.107.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rganalysis.html#id-1.2.107.6.5.2"/> <keyword type="struct" name="struct GstRgAnalysis" link="gst-plugins-good-plugins-rganalysis.html#GstRgAnalysis-struct"/> <keyword type="property" name="The "forced" property" link="gst-plugins-good-plugins-rganalysis.html#GstRgAnalysis--forced"/> <keyword type="property" name="The "num-tracks" property" link="gst-plugins-good-plugins-rganalysis.html#GstRgAnalysis--num-tracks"/> <keyword type="property" name="The "reference-level" property" link="gst-plugins-good-plugins-rganalysis.html#GstRgAnalysis--reference-level"/> <keyword type="property" name="The "message" property" link="gst-plugins-good-plugins-rganalysis.html#GstRgAnalysis--message"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-rglimiter.html#idp17142800"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rglimiter.html#idp15771760"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rglimiter.html#idp18363552"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-rglimiter.html#id-1.2.108.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rglimiter.html#id-1.2.108.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rglimiter.html#id-1.2.108.6.4.2"/> <keyword type="struct" name="struct GstRgLimiter" link="gst-plugins-good-plugins-rglimiter.html#GstRgLimiter-struct"/> <keyword type="property" name="The "enabled" property" link="gst-plugins-good-plugins-rglimiter.html#GstRgLimiter--enabled"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-rgvolume.html#idp19683248"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rgvolume.html#idp13817536"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rgvolume.html#idp19188016"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-rgvolume.html#id-1.2.109.7.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rgvolume.html#id-1.2.109.7.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rgvolume.html#id-1.2.109.7.5.2"/> <keyword type="struct" name="struct GstRgVolume" link="gst-plugins-good-plugins-rgvolume.html#GstRgVolume-struct"/> <keyword type="property" name="The "album-mode" property" link="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--album-mode"/> <keyword type="property" name="The "fallback-gain" property" link="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--fallback-gain"/> @@ -954,14 +971,14 @@ <keyword type="property" name="The "pre-amp" property" link="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--pre-amp"/> <keyword type="property" name="The "result-gain" property" link="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--result-gain"/> <keyword type="property" name="The "target-gain" property" link="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--target-gain"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-rippletv.html#idp14957280"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rippletv.html#idp15828896"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rippletv.html#idp19834944"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-rippletv.html#id-1.2.110.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rippletv.html#id-1.2.110.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rippletv.html#id-1.2.110.6.4.2"/> <keyword type="struct" name="struct GstRippleTV" link="gst-plugins-good-plugins-rippletv.html#GstRippleTV-struct"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-rippletv.html#GstRippleTV--mode"/> <keyword type="property" name="The "reset" property" link="gst-plugins-good-plugins-rippletv.html#GstRippleTV--reset"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpdec.html#idp18036352"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpdec.html#idp16977632"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpdec.html#id-1.2.111.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpdec.html#id-1.2.111.7.4.2"/> <keyword type="struct" name="struct GstRTPDec" link="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-struct"/> <keyword type="property" name="The "skip" property" link="gst-plugins-good-plugins-rtpdec.html#GstRTPDec--skip"/> <keyword type="property" name="The "latency" property" link="gst-plugins-good-plugins-rtpdec.html#GstRTPDec--latency"/> @@ -973,19 +990,51 @@ <keyword type="signal" name="The "on-ssrc-collision" signal" link="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-ssrc-collision"/> <keyword type="signal" name="The "on-ssrc-validated" signal" link="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-ssrc-validated"/> <keyword type="signal" name="The "on-timeout" signal" link="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-timeout"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpj2kpay.html#idp13520112"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpj2kpay.html#idp14822528"/> + <keyword type="" name="Example pipeline" link="gst-plugins-good-plugins-rtpac3depay.html#id-1.2.112.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpac3depay.html#id-1.2.112.5.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpac3depay.html#id-1.2.112.5.5.2"/> + <keyword type="struct" name="struct GstRtpAC3Depay" link="gst-plugins-good-plugins-rtpac3depay.html#GstRtpAC3Depay-struct"/> + <keyword type="" name="Example pipeline" link="gst-plugins-good-plugins-rtpac3pay.html#id-1.2.113.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpac3pay.html#id-1.2.113.5.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpac3pay.html#id-1.2.113.5.5.2"/> + <keyword type="struct" name="struct GstRtpAC3Pay" link="gst-plugins-good-plugins-rtpac3pay.html#GstRtpAC3Pay-struct"/> + <keyword type="" name="Example pipeline" link="gst-plugins-good-plugins-rtpamrdepay.html#id-1.2.114.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpamrdepay.html#id-1.2.114.5.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpamrdepay.html#id-1.2.114.5.5.2"/> + <keyword type="struct" name="struct GstRtpAMRDepay" link="gst-plugins-good-plugins-rtpamrdepay.html#GstRtpAMRDepay-struct"/> + <keyword type="" name="Example pipeline" link="gst-plugins-good-plugins-rtpamrpay.html#id-1.2.115.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpamrpay.html#id-1.2.115.5.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpamrpay.html#id-1.2.115.5.5.2"/> + <keyword type="struct" name="struct GstRtpAMRPay" link="gst-plugins-good-plugins-rtpamrpay.html#GstRtpAMRPay-struct"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpbvdepay.html#id-1.2.116.4.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpbvdepay.html#id-1.2.116.4.4.2"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpbvpay.html#id-1.2.117.4.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpbvpay.html#id-1.2.117.4.4.2"/> + <keyword type="" name="Example pipeline" link="gst-plugins-good-plugins-rtpL16depay.html#id-1.2.118.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpL16depay.html#id-1.2.118.5.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpL16depay.html#id-1.2.118.5.5.2"/> + <keyword type="struct" name="struct GstRtpL16Depay" link="gst-plugins-good-plugins-rtpL16depay.html#GstRtpL16Depay-struct"/> + <keyword type="" name="Example pipeline" link="gst-plugins-good-plugins-rtpL16pay.html#id-1.2.119.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpL16pay.html#id-1.2.119.5.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpL16pay.html#id-1.2.119.5.5.2"/> + <keyword type="struct" name="struct GstRtpL16Pay" link="gst-plugins-good-plugins-rtpL16pay.html#GstRtpL16Pay-struct"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpj2kpay.html#id-1.2.120.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpj2kpay.html#id-1.2.120.6.4.2"/> <keyword type="struct" name="struct GstRtpJ2KPay" link="gst-plugins-good-plugins-rtpj2kpay.html#GstRtpJ2KPay-struct"/> <keyword type="property" name="The "buffer-list" property" link="gst-plugins-good-plugins-rtpj2kpay.html#GstRtpJ2KPay--buffer-list"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpjpegpay.html#idp13519024"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpjpegpay.html#idp14802800"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpjpegpay.html#id-1.2.121.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpjpegpay.html#id-1.2.121.6.5.2"/> <keyword type="struct" name="struct GstRtpJPEGPay" link="gst-plugins-good-plugins-rtpjpegpay.html#GstRtpJPEGPay-struct"/> <keyword type="property" name="The "quality" property" link="gst-plugins-good-plugins-rtpjpegpay.html#GstRtpJPEGPay--quality"/> <keyword type="property" name="The "type" property" link="gst-plugins-good-plugins-rtpjpegpay.html#GstRtpJPEGPay--type"/> <keyword type="property" name="The "buffer-list" property" link="gst-plugins-good-plugins-rtpjpegpay.html#GstRtpJPEGPay--buffer-list"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-rtspsrc.html#idp19568768"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtspsrc.html#idp16724304"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtspsrc.html#idp19490848"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpsbcpay.html#id-1.2.122.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpsbcpay.html#id-1.2.122.6.2.2"/> + <keyword type="struct" name="struct GstRtpSBCPay" link="gst-plugins-good-plugins-rtpsbcpay.html#GstRtpSBCPay-struct"/> + <keyword type="property" name="The "min-frames" property" link="gst-plugins-good-plugins-rtpsbcpay.html#GstRtpSBCPay--min-frames"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-rtspsrc.html#id-1.2.123.8.7.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtspsrc.html#id-1.2.123.8.9.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtspsrc.html#id-1.2.123.8.9.2"/> <keyword type="struct" name="struct GstRTSPSrc" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-struct"/> <keyword type="property" name="The "debug" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--debug"/> <keyword type="property" name="The "location" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--location"/> @@ -1008,8 +1057,19 @@ <keyword type="property" name="The "do-rtsp-keep-alive" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--do-rtsp-keep-alive"/> <keyword type="property" name="The "drop-on-latency" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--drop-on-latency"/> <keyword type="property" name="The "probation" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--probation"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpbin.html#idp20720704"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpbin.html#idp20903568"/> + <keyword type="property" name="The "udp-reconnect" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--udp-reconnect"/> + <keyword type="property" name="The "proxy-id" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--proxy-id"/> + <keyword type="property" name="The "proxy-pw" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--proxy-pw"/> + <keyword type="property" name="The "multicast-iface" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--multicast-iface"/> + <keyword type="property" name="The "ntp-sync" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--ntp-sync"/> + <keyword type="property" name="The "use-pipeline-clock" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--use-pipeline-clock"/> + <keyword type="property" name="The "sdes" property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--sdes"/> + <keyword type="signal" name="The "handle-request" signal" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-handle-request"/> + <keyword type="signal" name="The "on-sdp" signal" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-on-sdp"/> + <keyword type="signal" name="The "select-stream" signal" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-select-stream"/> + <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-rtpbin.html#id-1.2.124.8.10.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpbin.html#id-1.2.124.8.12.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpbin.html#id-1.2.124.8.12.2"/> <keyword type="struct" name="struct GstRtpBin" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-struct"/> <keyword type="property" name="The "do-lost" property" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--do-lost"/> <keyword type="property" name="The "latency" property" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--latency"/> @@ -1022,6 +1082,8 @@ <keyword type="property" name="The "rtcp-sync" property" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--rtcp-sync"/> <keyword type="property" name="The "rtcp-sync-interval" property" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--rtcp-sync-interval"/> <keyword type="property" name="The "drop-on-latency" property" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--drop-on-latency"/> + <keyword type="property" name="The "do-sync-event" property" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--do-sync-event"/> + <keyword type="property" name="The "do-retransmission" property" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--do-retransmission"/> <keyword type="signal" name="The "clear-pt-map" signal" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-clear-pt-map"/> <keyword type="signal" name="The "get-internal-session" signal" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-get-internal-session"/> <keyword type="signal" name="The "on-bye-ssrc" signal" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-bye-ssrc"/> @@ -1037,8 +1099,22 @@ <keyword type="signal" name="The "request-pt-map" signal" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-pt-map"/> <keyword type="signal" name="The "reset-sync" signal" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-reset-sync"/> <keyword type="signal" name="The "payload-type-change" signal" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-payload-type-change"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpjitterbuffer.html#idp15832480"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpjitterbuffer.html#idp20808448"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpdtmfmux.html#id-1.2.125.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpdtmfmux.html#id-1.2.125.5.4.2"/> + <keyword type="struct" name="struct GstRTPDTMFMux" link="gst-plugins-good-plugins-rtpdtmfmux.html#GstRTPDTMFMux-struct"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpdtmfsrc.html#id-1.2.126.6.7.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpdtmfsrc.html#id-1.2.126.6.7.2"/> + <keyword type="struct" name="struct GstRTPDTMFSrc" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc-struct"/> + <keyword type="property" name="The "clock-rate" property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--clock-rate"/> + <keyword type="property" name="The "packet-redundancy" property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--packet-redundancy"/> + <keyword type="property" name="The "pt" property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--pt"/> + <keyword type="property" name="The "seqnum" property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--seqnum"/> + <keyword type="property" name="The "seqnum-offset" property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--seqnum-offset"/> + <keyword type="property" name="The "ssrc" property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--ssrc"/> + <keyword type="property" name="The "timestamp" property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--timestamp"/> + <keyword type="property" name="The "timestamp-offset" property" link="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--timestamp-offset"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpjitterbuffer.html#id-1.2.127.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpjitterbuffer.html#id-1.2.127.7.2.2"/> <keyword type="struct" name="struct GstRtpJitterBuffer" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-struct"/> <keyword type="property" name="The "do-lost" property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-lost"/> <keyword type="property" name="The "drop-on-latency" property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--drop-on-latency"/> @@ -1046,20 +1122,33 @@ <keyword type="property" name="The "ts-offset" property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--ts-offset"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--mode"/> <keyword type="property" name="The "percent" property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--percent"/> + <keyword type="property" name="The "do-retransmission" property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-retransmission"/> + <keyword type="property" name="The "rtx-delay" property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay"/> + <keyword type="property" name="The "rtx-delay-reorder" property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay-reorder"/> + <keyword type="property" name="The "rtx-retry-period" property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-period"/> + <keyword type="property" name="The "rtx-retry-timeout" property" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout"/> <keyword type="signal" name="The "clear-pt-map" signal" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-clear-pt-map"/> <keyword type="signal" name="The "handle-sync" signal" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-handle-sync"/> <keyword type="signal" name="The "on-npt-stop" signal" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-on-npt-stop"/> <keyword type="signal" name="The "request-pt-map" signal" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-request-pt-map"/> <keyword type="signal" name="The "set-active" signal" link="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-set-active"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpptdemux.html#idp19637328"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpptdemux.html#idp18182624"/> + <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-rtpmux.html#id-1.2.128.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpmux.html#id-1.2.128.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpmux.html#id-1.2.128.6.5.2"/> + <keyword type="struct" name="struct GstRTPMux" link="gst-plugins-good-plugins-rtpmux.html#GstRTPMux-struct"/> + <keyword type="property" name="The "seqnum" property" link="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--seqnum"/> + <keyword type="property" name="The "seqnum-offset" property" link="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--seqnum-offset"/> + <keyword type="property" name="The "ssrc" property" link="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--ssrc"/> + <keyword type="property" name="The "timestamp-offset" property" link="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--timestamp-offset"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpptdemux.html#id-1.2.129.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpptdemux.html#id-1.2.129.6.2.2"/> <keyword type="struct" name="struct GstRtpPtDemux" link="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-struct"/> <keyword type="signal" name="The "clear-pt-map" signal" link="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-clear-pt-map"/> <keyword type="signal" name="The "new-payload-type" signal" link="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-new-payload-type"/> <keyword type="signal" name="The "payload-type-change" signal" link="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-payload-type-change"/> <keyword type="signal" name="The "request-pt-map" signal" link="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-request-pt-map"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpsession.html#idp20765456"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpsession.html#idp16014576"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpsession.html#id-1.2.130.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpsession.html#id-1.2.130.7.2.2"/> <keyword type="struct" name="struct GstRtpSession" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-struct"/> <keyword type="property" name="The "bandwidth" property" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession--bandwidth"/> <keyword type="property" name="The "internal-session" property" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession--internal-session"/> @@ -1084,25 +1173,36 @@ <keyword type="signal" name="The "on-ssrc-validated" signal" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-ssrc-validated"/> <keyword type="signal" name="The "on-timeout" signal" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-timeout"/> <keyword type="signal" name="The "request-pt-map" signal" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-request-pt-map"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpssrcdemux.html#idp20154320"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpssrcdemux.html#idp14495680"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-rtpssrcdemux.html#id-1.2.131.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-rtpssrcdemux.html#id-1.2.131.6.2.2"/> <keyword type="struct" name="struct GstRtpSsrcDemux" link="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-struct"/> <keyword type="signal" name="The "clear-ssrc" signal" link="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-clear-ssrc"/> <keyword type="signal" name="The "new-ssrc-pad" signal" link="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-new-ssrc-pad"/> <keyword type="signal" name="The "removed-ssrc-pad" signal" link="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-removed-ssrc-pad"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-shagadelictv.html#idp17582672"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-shagadelictv.html#idp20764928"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-shagadelictv.html#idp19509600"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-sbcparse.html#id-1.2.132.5.3.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-sbcparse.html#id-1.2.132.5.3.2"/> + <keyword type="struct" name="struct GstSbcParse" link="gst-plugins-good-plugins-sbcparse.html#GstSbcParse-struct"/> + <keyword type="" name="Example pipelines" link="gst-plugins-good-plugins-scaletempo.html#id-1.2.133.6.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-scaletempo.html#id-1.2.133.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-scaletempo.html#id-1.2.133.6.5.2"/> + <keyword type="struct" name="struct GstScaletempo" link="gst-plugins-good-plugins-scaletempo.html#GstScaletempo-struct"/> + <keyword type="property" name="The "overlap" property" link="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--overlap"/> + <keyword type="property" name="The "rate" property" link="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--rate"/> + <keyword type="property" name="The "search" property" link="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--search"/> + <keyword type="property" name="The "stride" property" link="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--stride"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-shagadelictv.html#id-1.2.134.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-shagadelictv.html#id-1.2.134.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-shagadelictv.html#id-1.2.134.5.4.2"/> <keyword type="struct" name="struct GstShagadelicTV" link="gst-plugins-good-plugins-shagadelictv.html#GstShagadelicTV-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-shapewipe.html#idp17257968"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-shapewipe.html#idp19798816"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-shapewipe.html#idp20204112"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-shapewipe.html#id-1.2.135.6.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-shapewipe.html#id-1.2.135.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-shapewipe.html#id-1.2.135.6.5.2"/> <keyword type="struct" name="struct GstShapeWipe" link="gst-plugins-good-plugins-shapewipe.html#GstShapeWipe-struct"/> <keyword type="property" name="The "border" property" link="gst-plugins-good-plugins-shapewipe.html#GstShapeWipe--border"/> <keyword type="property" name="The "position" property" link="gst-plugins-good-plugins-shapewipe.html#GstShapeWipe--position"/> - <keyword type="" name="Sample pipelines" link="gst-plugins-good-plugins-smpte.html#idp6897584"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-smpte.html#idp18137328"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-smpte.html#idp17055536"/> + <keyword type="" name="Sample pipelines" link="gst-plugins-good-plugins-smpte.html#id-1.2.136.6.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-smpte.html#id-1.2.136.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-smpte.html#id-1.2.136.6.5.2"/> <keyword type="struct" name="struct GstSMPTE" link="gst-plugins-good-plugins-smpte.html#GstSMPTE-struct"/> <keyword type="property" name="The "border" property" link="gst-plugins-good-plugins-smpte.html#GstSMPTE--border"/> <keyword type="property" name="The "depth" property" link="gst-plugins-good-plugins-smpte.html#GstSMPTE--depth"/> @@ -1110,17 +1210,17 @@ <keyword type="property" name="The "type" property" link="gst-plugins-good-plugins-smpte.html#GstSMPTE--type"/> <keyword type="property" name="The "duration" property" link="gst-plugins-good-plugins-smpte.html#GstSMPTE--duration"/> <keyword type="property" name="The "invert" property" link="gst-plugins-good-plugins-smpte.html#GstSMPTE--invert"/> - <keyword type="" name="Sample pipelines" link="gst-plugins-good-plugins-smptealpha.html#idp18055712"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-smptealpha.html#idp18824528"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-smptealpha.html#idp17258608"/> + <keyword type="" name="Sample pipelines" link="gst-plugins-good-plugins-smptealpha.html#id-1.2.137.6.5.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-smptealpha.html#id-1.2.137.6.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-smptealpha.html#id-1.2.137.6.6.2"/> <keyword type="struct" name="struct GstSMPTEAlpha" link="gst-plugins-good-plugins-smptealpha.html#GstSMPTEAlpha-struct"/> <keyword type="property" name="The "border" property" link="gst-plugins-good-plugins-smptealpha.html#GstSMPTEAlpha--border"/> <keyword type="property" name="The "depth" property" link="gst-plugins-good-plugins-smptealpha.html#GstSMPTEAlpha--depth"/> <keyword type="property" name="The "position" property" link="gst-plugins-good-plugins-smptealpha.html#GstSMPTEAlpha--position"/> <keyword type="property" name="The "type" property" link="gst-plugins-good-plugins-smptealpha.html#GstSMPTEAlpha--type"/> <keyword type="property" name="The "invert" property" link="gst-plugins-good-plugins-smptealpha.html#GstSMPTEAlpha--invert"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-souphttpsrc.html#idp20833264"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-souphttpsrc.html#idp20485936"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-souphttpsrc.html#id-1.2.138.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-souphttpsrc.html#id-1.2.138.7.2.2"/> <keyword type="struct" name="struct GstSoupHTTPSrc" link="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc-struct"/> <keyword type="property" name="The "automatic-redirect" property" link="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--automatic-redirect"/> <keyword type="property" name="The "cookies" property" link="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--cookies"/> @@ -1139,9 +1239,9 @@ <keyword type="property" name="The "user-pw" property" link="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--user-pw"/> <keyword type="property" name="The "extra-headers" property" link="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--extra-headers"/> <keyword type="property" name="The "timeout" property" link="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--timeout"/> - <keyword type="" name="Example application" link="gst-plugins-good-plugins-spectrum.html#idp20074400"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-spectrum.html#idp20735232"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-spectrum.html#idp21979648"/> + <keyword type="" name="Example application" link="gst-plugins-good-plugins-spectrum.html#id-1.2.139.6.5.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-spectrum.html#id-1.2.139.6.7.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-spectrum.html#id-1.2.139.6.7.2"/> <keyword type="struct" name="struct GstSpectrum" link="gst-plugins-good-plugins-spectrum.html#GstSpectrum-struct"/> <keyword type="property" name="The "bands" property" link="gst-plugins-good-plugins-spectrum.html#GstSpectrum--bands"/> <keyword type="property" name="The "interval" property" link="gst-plugins-good-plugins-spectrum.html#GstSpectrum--interval"/> @@ -1151,8 +1251,8 @@ <keyword type="property" name="The "message-phase" property" link="gst-plugins-good-plugins-spectrum.html#GstSpectrum--message-phase"/> <keyword type="property" name="The "post-messages" property" link="gst-plugins-good-plugins-spectrum.html#GstSpectrum--post-messages"/> <keyword type="property" name="The "multi-channel" property" link="gst-plugins-good-plugins-spectrum.html#GstSpectrum--multi-channel"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-speexenc.html#idp20671936"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-speexenc.html#idp19006304"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-speexenc.html#id-1.2.140.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-speexenc.html#id-1.2.140.7.2.2"/> <keyword type="struct" name="struct GstSpeexEnc" link="gst-plugins-good-plugins-speexenc.html#GstSpeexEnc-struct"/> <keyword type="property" name="The "abr" property" link="gst-plugins-good-plugins-speexenc.html#GstSpeexEnc--abr"/> <keyword type="property" name="The "bitrate" property" link="gst-plugins-good-plugins-speexenc.html#GstSpeexEnc--bitrate"/> @@ -1164,28 +1264,28 @@ <keyword type="property" name="The "vad" property" link="gst-plugins-good-plugins-speexenc.html#GstSpeexEnc--vad"/> <keyword type="property" name="The "vbr" property" link="gst-plugins-good-plugins-speexenc.html#GstSpeexEnc--vbr"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-speexenc.html#GstSpeexEnc--mode"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-speexdec.html#idp20094080"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-speexdec.html#idp21962464"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-speexdec.html#id-1.2.141.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-speexdec.html#id-1.2.141.6.2.2"/> <keyword type="struct" name="struct GstSpeexDec" link="gst-plugins-good-plugins-speexdec.html#GstSpeexDec-struct"/> <keyword type="property" name="The "enh" property" link="gst-plugins-good-plugins-speexdec.html#GstSpeexDec--enh"/> - <keyword type="" name="Example launch lines" link="gst-plugins-good-plugins-splitfilesrc.html#idp16940736"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-splitfilesrc.html#idp18820224"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-splitfilesrc.html#idp20641456"/> + <keyword type="" name="Example launch lines" link="gst-plugins-good-plugins-splitfilesrc.html#id-1.2.142.7.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-splitfilesrc.html#id-1.2.142.7.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-splitfilesrc.html#id-1.2.142.7.5.2"/> <keyword type="struct" name="struct GstSplitFileSrc" link="gst-plugins-good-plugins-splitfilesrc.html#GstSplitFileSrc-struct"/> <keyword type="property" name="The "location" property" link="gst-plugins-good-plugins-splitfilesrc.html#GstSplitFileSrc--location"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-streaktv.html#idp20074816"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-streaktv.html#idp18201120"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-streaktv.html#idp15220960"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-streaktv.html#id-1.2.143.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-streaktv.html#id-1.2.143.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-streaktv.html#id-1.2.143.6.4.2"/> <keyword type="struct" name="struct GstStreakTV" link="gst-plugins-good-plugins-streaktv.html#GstStreakTV-struct"/> <keyword type="property" name="The "feedback" property" link="gst-plugins-good-plugins-streaktv.html#GstStreakTV--feedback"/> - <keyword type="" name="Example launch lines" link="gst-plugins-good-plugins-taginject.html#idp10734928"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-taginject.html#idp20644976"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-taginject.html#idp12698416"/> + <keyword type="" name="Example launch lines" link="gst-plugins-good-plugins-taginject.html#id-1.2.144.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-taginject.html#id-1.2.144.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-taginject.html#id-1.2.144.6.4.2"/> <keyword type="struct" name="struct GstTagInject" link="gst-plugins-good-plugins-taginject.html#GstTagInject-struct"/> <keyword type="property" name="The "tags" property" link="gst-plugins-good-plugins-taginject.html#GstTagInject--tags"/> - <keyword type="" name="Examples" link="gst-plugins-good-plugins-udpsrc.html#idp19650112"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-udpsrc.html#idp20160688"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-udpsrc.html#idp22844880"/> + <keyword type="" name="Examples" link="gst-plugins-good-plugins-udpsrc.html#id-1.2.145.7.13.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-udpsrc.html#id-1.2.145.7.15.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-udpsrc.html#id-1.2.145.7.15.2"/> <keyword type="struct" name="struct GstUDPSrc" link="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc-struct"/> <keyword type="property" name="The "caps" property" link="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--caps"/> <keyword type="property" name="The "multicast-group" property" link="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--multicast-group"/> @@ -1203,14 +1303,16 @@ <keyword type="property" name="The "close-socket" property" link="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--close-socket"/> <keyword type="property" name="The "socket" property" link="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--socket"/> <keyword type="property" name="The "used-socket" property" link="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--used-socket"/> - <keyword type="" name="Examples" link="gst-plugins-good-plugins-udpsink.html#idp20458256"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-udpsink.html#idp22059472"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-udpsink.html#idp19496288"/> + <keyword type="property" name="The "bind-address" property" link="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--bind-address"/> + <keyword type="property" name="The "address" property" link="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--address"/> + <keyword type="" name="Examples" link="gst-plugins-good-plugins-udpsink.html#id-1.2.146.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-udpsink.html#id-1.2.146.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-udpsink.html#id-1.2.146.7.4.2"/> <keyword type="struct" name="struct GstUDPSink" link="gst-plugins-good-plugins-udpsink.html#GstUDPSink-struct"/> <keyword type="property" name="The "host" property" link="gst-plugins-good-plugins-udpsink.html#GstUDPSink--host"/> <keyword type="property" name="The "port" property" link="gst-plugins-good-plugins-udpsink.html#GstUDPSink--port"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-v4l2src.html#idp21959872"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-v4l2src.html#idp22902864"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-v4l2src.html#id-1.2.147.8.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-v4l2src.html#id-1.2.147.8.2.2"/> <keyword type="struct" name="struct GstV4l2Src" link="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src-struct"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--device"/> <keyword type="property" name="The "device-name" property" link="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--device-name"/> @@ -1225,9 +1327,12 @@ <keyword type="property" name="The "saturation" property" link="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--saturation"/> <keyword type="property" name="The "norm" property" link="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--norm"/> <keyword type="property" name="The "io-mode" property" link="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--io-mode"/> + <keyword type="property" name="The "extra-controls" property" link="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--extra-controls"/> + <keyword type="property" name="The "force-aspect-ratio" property" link="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--force-aspect-ratio"/> + <keyword type="property" name="The "pixel-aspect-ratio" property" link="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--pixel-aspect-ratio"/> <keyword type="signal" name="The "prepare-format" signal" link="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src-prepare-format"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-v4l2sink.html#idp17423808"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-v4l2sink.html#idp22115328"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-v4l2sink.html#id-1.2.148.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-v4l2sink.html#id-1.2.148.7.2.2"/> <keyword type="struct" name="struct GstV4l2Sink" link="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink-struct"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--device"/> <keyword type="property" name="The "device-fd" property" link="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--device-fd"/> @@ -1249,28 +1354,31 @@ <keyword type="property" name="The "min-queued-bufs" property" link="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--min-queued-bufs"/> <keyword type="property" name="The "io-mode" property" link="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--io-mode"/> <keyword type="property" name="The "norm" property" link="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--norm"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-v4l2radio.html#idp19590288"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-v4l2radio.html#idp21885312"/> + <keyword type="property" name="The "extra-controls" property" link="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--extra-controls"/> + <keyword type="property" name="The "force-aspect-ratio" property" link="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--force-aspect-ratio"/> + <keyword type="property" name="The "pixel-aspect-ratio" property" link="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--pixel-aspect-ratio"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-v4l2radio.html#id-1.2.149.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-v4l2radio.html#id-1.2.149.7.2.2"/> <keyword type="struct" name="struct GstV4l2Radio" link="gst-plugins-good-plugins-v4l2radio.html#GstV4l2Radio-struct"/> <keyword type="property" name="The "device" property" link="gst-plugins-good-plugins-v4l2radio.html#GstV4l2Radio--device"/> <keyword type="property" name="The "frequency" property" link="gst-plugins-good-plugins-v4l2radio.html#GstV4l2Radio--frequency"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-vertigotv.html#idp22056704"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-vertigotv.html#idp13658720"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-vertigotv.html#idp23287488"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-vertigotv.html#id-1.2.150.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-vertigotv.html#id-1.2.150.7.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-vertigotv.html#id-1.2.150.7.4.2"/> <keyword type="struct" name="struct GstVertigoTV" link="gst-plugins-good-plugins-vertigotv.html#GstVertigoTV-struct"/> <keyword type="property" name="The "speed" property" link="gst-plugins-good-plugins-vertigotv.html#GstVertigoTV--speed"/> <keyword type="property" name="The "zoom-speed" property" link="gst-plugins-good-plugins-vertigotv.html#GstVertigoTV--zoom-speed"/> <keyword type="signal" name="The "reset-parms" signal" link="gst-plugins-good-plugins-vertigotv.html#GstVertigoTV-reset-parms"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-videobalance.html#idp23100816"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-videobalance.html#idp23953536"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-videobalance.html#idp18413248"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-videobalance.html#id-1.2.151.7.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-videobalance.html#id-1.2.151.7.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-videobalance.html#id-1.2.151.7.5.2"/> <keyword type="struct" name="struct GstVideoBalance" link="gst-plugins-good-plugins-videobalance.html#GstVideoBalance-struct"/> <keyword type="property" name="The "brightness" property" link="gst-plugins-good-plugins-videobalance.html#GstVideoBalance--brightness"/> <keyword type="property" name="The "contrast" property" link="gst-plugins-good-plugins-videobalance.html#GstVideoBalance--contrast"/> <keyword type="property" name="The "hue" property" link="gst-plugins-good-plugins-videobalance.html#GstVideoBalance--hue"/> <keyword type="property" name="The "saturation" property" link="gst-plugins-good-plugins-videobalance.html#GstVideoBalance--saturation"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-videobox.html#idp12182448"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-videobox.html#idp12467184"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-videobox.html#id-1.2.152.6.8.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-videobox.html#id-1.2.152.6.8.2"/> <keyword type="struct" name="struct GstVideoBox" link="gst-plugins-good-plugins-videobox.html#GstVideoBox-struct"/> <keyword type="property" name="The "alpha" property" link="gst-plugins-good-plugins-videobox.html#GstVideoBox--alpha"/> <keyword type="property" name="The "border-alpha" property" link="gst-plugins-good-plugins-videobox.html#GstVideoBox--border-alpha"/> @@ -1280,33 +1388,33 @@ <keyword type="property" name="The "right" property" link="gst-plugins-good-plugins-videobox.html#GstVideoBox--right"/> <keyword type="property" name="The "top" property" link="gst-plugins-good-plugins-videobox.html#GstVideoBox--top"/> <keyword type="property" name="The "autocrop" property" link="gst-plugins-good-plugins-videobox.html#GstVideoBox--autocrop"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-videocrop.html#idp15223760"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-videocrop.html#idp19874896"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-videocrop.html#idp21469104"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-videocrop.html#id-1.2.153.6.6.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-videocrop.html#id-1.2.153.6.7.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-videocrop.html#id-1.2.153.6.7.2"/> <keyword type="struct" name="struct GstVideoCrop" link="gst-plugins-good-plugins-videocrop.html#GstVideoCrop-struct"/> <keyword type="property" name="The "bottom" property" link="gst-plugins-good-plugins-videocrop.html#GstVideoCrop--bottom"/> <keyword type="property" name="The "left" property" link="gst-plugins-good-plugins-videocrop.html#GstVideoCrop--left"/> <keyword type="property" name="The "right" property" link="gst-plugins-good-plugins-videocrop.html#GstVideoCrop--right"/> <keyword type="property" name="The "top" property" link="gst-plugins-good-plugins-videocrop.html#GstVideoCrop--top"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-videoflip.html#idp22239616"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-videoflip.html#idp18926704"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-videoflip.html#idp21940848"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-videoflip.html#id-1.2.154.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-videoflip.html#id-1.2.154.6.5.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-videoflip.html#id-1.2.154.6.5.2"/> <keyword type="struct" name="struct GstVideoFlip" link="gst-plugins-good-plugins-videoflip.html#GstVideoFlip-struct"/> <keyword type="enum" name="enum GstVideoFlipMethod" link="gst-plugins-good-plugins-videoflip.html#GstVideoFlipMethod"/> <keyword type="property" name="The "method" property" link="gst-plugins-good-plugins-videoflip.html#GstVideoFlip--method"/> - <keyword type="" name="Sample pipelines" link="gst-plugins-good-plugins-videomixer.html#idp20595360"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-videomixer.html#idp20724272"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-videomixer.html#idp23957520"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-vp8dec.html#idp8443904"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-vp8dec.html#idp22696576"/> + <keyword type="" name="Sample pipelines" link="gst-plugins-good-plugins-videomixer.html#id-1.2.155.4.5.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-videomixer.html#id-1.2.155.4.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-videomixer.html#id-1.2.155.4.6.2"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-vp8dec.html#id-1.2.156.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-vp8dec.html#id-1.2.156.6.2.2"/> <keyword type="struct" name="struct GstVP8Dec" link="gst-plugins-good-plugins-vp8dec.html#GstVP8Dec-struct"/> <keyword type="property" name="The "deblocking-level" property" link="gst-plugins-good-plugins-vp8dec.html#GstVP8Dec--deblocking-level"/> <keyword type="property" name="The "noise-level" property" link="gst-plugins-good-plugins-vp8dec.html#GstVP8Dec--noise-level"/> <keyword type="property" name="The "post-processing" property" link="gst-plugins-good-plugins-vp8dec.html#GstVP8Dec--post-processing"/> <keyword type="property" name="The "post-processing-flags" property" link="gst-plugins-good-plugins-vp8dec.html#GstVP8Dec--post-processing-flags"/> <keyword type="property" name="The "threads" property" link="gst-plugins-good-plugins-vp8dec.html#GstVP8Dec--threads"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-vp8enc.html#idp24654896"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-vp8enc.html#idp24662304"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-vp8enc.html#id-1.2.157.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-vp8enc.html#id-1.2.157.7.2.2"/> <keyword type="struct" name="struct GstVP8Enc" link="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc-struct"/> <keyword type="property" name="The "arnr-maxframes" property" link="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--arnr-maxframes"/> <keyword type="property" name="The "arnr-strength" property" link="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--arnr-strength"/> @@ -1366,21 +1474,23 @@ <keyword type="property" name="The "twopass-vbr-minsection" property" link="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--twopass-vbr-minsection"/> <keyword type="property" name="The "undershoot" property" link="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--undershoot"/> <keyword type="property" name="The "vertical-scaling-mode" property" link="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--vertical-scaling-mode"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-warptv.html#idp18254976"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-warptv.html#idp12090048"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-warptv.html#idp23178496"/> + <keyword type="property" name="The "timebase" property" link="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--timebase"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-warptv.html#id-1.2.158.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-warptv.html#id-1.2.158.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-warptv.html#id-1.2.158.5.4.2"/> <keyword type="struct" name="struct GstWarpTV" link="gst-plugins-good-plugins-warptv.html#GstWarpTV-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-wavenc.html#idp22127056"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-wavenc.html#idp22268976"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-wavenc.html#id-1.2.159.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-wavenc.html#id-1.2.159.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-wavenc.html#id-1.2.159.6.4.2"/> <keyword type="struct" name="struct GstWavEnc" link="gst-plugins-good-plugins-wavenc.html#GstWavEnc-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-waveformsink.html#idp21469392"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-waveformsink.html#idp23266352"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-waveformsink.html#id-1.2.160.4.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-waveformsink.html#id-1.2.160.4.2.2"/> <keyword type="struct" name="struct GstWaveFormSink" link="gst-plugins-good-plugins-waveformsink.html#GstWaveFormSink"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-wavpackdec.html#idp22602800"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-wavpackdec.html#idp20644112"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-wavpackdec.html#id-1.2.161.5.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-wavpackdec.html#id-1.2.161.5.2.2"/> <keyword type="struct" name="struct GstWavpackDec" link="gst-plugins-good-plugins-wavpackdec.html#GstWavpackDec-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-wavpackenc.html#idp18268144"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-wavpackenc.html#idp24332144"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-wavpackenc.html#id-1.2.162.7.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-wavpackenc.html#id-1.2.162.7.2.2"/> <keyword type="struct" name="struct GstWavpackEnc" link="gst-plugins-good-plugins-wavpackenc.html#GstWavpackEnc-struct"/> <keyword type="property" name="The "bitrate" property" link="gst-plugins-good-plugins-wavpackenc.html#GstWavpackEnc--bitrate"/> <keyword type="property" name="The "bits-per-sample" property" link="gst-plugins-good-plugins-wavpackenc.html#GstWavpackEnc--bits-per-sample"/> @@ -1389,21 +1499,21 @@ <keyword type="property" name="The "joint-stereo-mode" property" link="gst-plugins-good-plugins-wavpackenc.html#GstWavpackEnc--joint-stereo-mode"/> <keyword type="property" name="The "md5" property" link="gst-plugins-good-plugins-wavpackenc.html#GstWavpackEnc--md5"/> <keyword type="property" name="The "mode" property" link="gst-plugins-good-plugins-wavpackenc.html#GstWavpackEnc--mode"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-wavpackparse.html#idp24282400"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-wavpackparse.html#idp24314800"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-wavpackparse.html#idp24524960"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-wavpackparse.html#id-1.2.163.5.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-wavpackparse.html#id-1.2.163.5.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-wavpackparse.html#id-1.2.163.5.4.2"/> <keyword type="struct" name="struct GstWavpackParse" link="gst-plugins-good-plugins-wavpackparse.html#GstWavpackParse-struct"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-wavparse.html#idp25680160"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-wavparse.html#idp18877136"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-wavparse.html#idp23199856"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-wavparse.html#id-1.2.164.6.4.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-wavparse.html#id-1.2.164.6.6.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-wavparse.html#id-1.2.164.6.6.2"/> <keyword type="struct" name="struct GstWavParse" link="gst-plugins-good-plugins-wavparse.html#GstWavParse-struct"/> <keyword type="property" name="The "ignore-length" property" link="gst-plugins-good-plugins-wavparse.html#GstWavParse--ignore-length"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-webmmux.html#idp25024608"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-webmmux.html#idp22790368"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-webmmux.html#idp21959376"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-webmmux.html#id-1.2.165.6.3.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-webmmux.html#id-1.2.165.6.4.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-webmmux.html#id-1.2.165.6.4.2"/> <keyword type="struct" name="struct GstWebMMux" link="gst-plugins-good-plugins-webmmux.html#GstWebMMux-struct"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-ximagesrc.html#idp23721472"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-ximagesrc.html#idp22841648"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-ximagesrc.html#id-1.2.166.6.2.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-ximagesrc.html#id-1.2.166.6.2.2"/> <keyword type="struct" name="struct GstXImageSrc" link="gst-plugins-good-plugins-ximagesrc.html#GstXImageSrc-struct"/> <keyword type="property" name="The "display-name" property" link="gst-plugins-good-plugins-ximagesrc.html#GstXImageSrc--display-name"/> <keyword type="property" name="The "screen-num" property" link="gst-plugins-good-plugins-ximagesrc.html#GstXImageSrc--screen-num"/> @@ -1416,9 +1526,9 @@ <keyword type="property" name="The "remote" property" link="gst-plugins-good-plugins-ximagesrc.html#GstXImageSrc--remote"/> <keyword type="property" name="The "xid" property" link="gst-plugins-good-plugins-ximagesrc.html#GstXImageSrc--xid"/> <keyword type="property" name="The "xname" property" link="gst-plugins-good-plugins-ximagesrc.html#GstXImageSrc--xname"/> - <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-y4menc.html#idp25229888"/> - <keyword type="" name="Element Information" link="gst-plugins-good-plugins-y4menc.html#idp15954944"/> - <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-y4menc.html#idp20742976"/> + <keyword type="" name="Example launch line" link="gst-plugins-good-plugins-y4menc.html#id-1.2.167.5.2.1"/> + <keyword type="" name="Element Information" link="gst-plugins-good-plugins-y4menc.html#id-1.2.167.5.3.1"/> + <keyword type="" name="Element Pads" link="gst-plugins-good-plugins-y4menc.html#id-1.2.167.5.3.2"/> <keyword type="struct" name="struct GstY4mEncode" link="gst-plugins-good-plugins-y4menc.html#GstY4mEncode-struct"/> <keyword type="struct" name="struct GstIirEqualizer" link="GstIirEqualizer.html#GstIirEqualizer-struct"/> <keyword type="constant" name="ALPHA_METHOD_SET" link="gst-plugins-good-plugins-alpha.html#ALPHA-METHOD-SET:CAPS"/> diff --git a/docs/plugins/html/gst-plugins-good-plugins-3gppmux.html b/docs/plugins/html/gst-plugins-good-plugins-3gppmux.html index b4be7938a8aef4c1f76916419dc8cf6f08af7238..339029d3c659f7398134a625e0eb529d259e50de 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-3gppmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-3gppmux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>3gppmux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="ch01.html" title="gst-plugins-good Elements"> <link rel="next" href="gst-plugins-good-plugins-aacparse.html" title="aacparse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -96,7 +96,7 @@ presentation-timestamp. <p> </p> <div class="refsect2"> -<a name="idp7887072"></a><h3>Example pipelines</h3> +<a name="id-1.2.2.4.8.1"></a><h3>Example pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -119,9 +119,12 @@ Documentation last reviewed on 2011-04-21 <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6318096"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.2.4.10.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -142,9 +145,12 @@ Documentation last reviewed on 2011-04-21 </div> <hr> <div class="refsect2"> -<a name="idp6781776"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.2.4.10.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -176,8 +182,11 @@ Documentation last reviewed on 2011-04-21 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -209,8 +218,11 @@ Documentation last reviewed on 2011-04-21 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -241,6 +253,6 @@ Documentation last reviewed on 2011-04-21 </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-GstVideoMixerPad.html b/docs/plugins/html/gst-plugins-good-plugins-GstVideoMixerPad.html index 6cf38a6eb458daef798bd9774e24934b9df54f81..88042c63dcc2b097e287beaafb697f8ffe4c196d 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-GstVideoMixerPad.html +++ b/docs/plugins/html/gst-plugins-good-plugins-GstVideoMixerPad.html @@ -3,11 +3,11 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>GstVideoMixerPad</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch03.html" title="gst-plugins-good Base Classes"> <link rel="prev" href="GstIirEqualizer.html" title="GstIirEqualizer"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -49,6 +49,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-aacparse.html b/docs/plugins/html/gst-plugins-good-plugins-aacparse.html index 2cd840510d2cb2a4f3516029dfb31b70aeaf9f2e..695cb2df54f7cd82fbcaf7bf736bee1bad00accd 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-aacparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-aacparse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>aacparse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-3gppmux.html" title="3gppmux"> <link rel="next" href="gst-plugins-good-plugins-aasink.html" title="aasink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -66,7 +66,7 @@ can also estimate playback position and clip duration. <p> </p> <div class="refsect2"> -<a name="idp7811328"></a><h3>Example launch line</h3> +<a name="id-1.2.3.5.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -84,9 +84,12 @@ can also estimate playback position and clip duration. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8244176"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.3.5.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -107,9 +110,12 @@ can also estimate playback position and clip duration. </div> <hr> <div class="refsect2"> -<a name="idp6690416"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.3.5.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -129,8 +135,11 @@ can also estimate playback position and clip duration. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -172,6 +181,6 @@ The opaque GstAacParse data structure. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-aasink.html b/docs/plugins/html/gst-plugins-good-plugins-aasink.html index 8715410b8a2e0f0dc3a36dfe7786306812130c3a..25d5d67ad86a101d22c4bc8f0098cf1413bdfc07 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-aasink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-aasink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>aasink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-aacparse.html" title="aacparse"> <link rel="next" href="gst-plugins-good-plugins-ac3parse.html" title="ac3parse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -86,9 +86,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6483936"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.4.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -109,9 +112,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp6475600"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.4.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -233,8 +239,11 @@ <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstaasink</code></em> :</span></p></td> @@ -256,8 +265,11 @@ <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstaasink</code></em> :</span></p></td> @@ -274,6 +286,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html b/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html index f8e3573c8cf081641ee685edd0499a718353f39a..f286a64ee5701d8174986f295b75fb232df9ba62 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ac3parse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-aasink.html" title="aasink"> <link rel="next" href="gst-plugins-good-plugins-agingtv.html" title="agingtv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -61,7 +61,7 @@ This is an AC3 parser. <p> </p> <div class="refsect2"> -<a name="idp8002592"></a><h3>Example launch line</h3> +<a name="id-1.2.5.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -79,9 +79,12 @@ This is an AC3 parser. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7366592"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.5.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -102,9 +105,12 @@ This is an AC3 parser. </div> <hr> <div class="refsect2"> -<a name="idp9332464"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.5.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -130,10 +136,17 @@ This is an AC3 parser. <td><p><span class="term"></span></p></td> <td> audio/ac3</td> </tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> audio/x-private1-ac3</td> +</tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -179,6 +192,6 @@ The opaque GstAc3Parse object </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-agingtv.html b/docs/plugins/html/gst-plugins-good-plugins-agingtv.html index e0d9db8a6c01648642aaddd4590c5166f8658ff1..0f30eba2d7307df67594d9f1596b8e0969c6c966 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-agingtv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-agingtv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>agingtv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-ac3parse.html" title="ac3parse"> <link rel="next" href="gst-plugins-good-plugins-alpha.html" title="alpha"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -74,7 +74,7 @@ scratches and dust. <p> </p> <div class="refsect2"> -<a name="idp5984768"></a><h3>Example launch line</h3> +<a name="id-1.2.6.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -92,9 +92,12 @@ scratches and dust. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp5771520"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.6.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -115,9 +118,12 @@ scratches and dust. </div> <hr> <div class="refsect2"> -<a name="idp9944928"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.6.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -137,8 +143,11 @@ scratches and dust. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -206,6 +215,6 @@ scratches and dust. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-alawdec.html b/docs/plugins/html/gst-plugins-good-plugins-alawdec.html index 185268ad3e085a6f369c339953f6074d863d98e8..dbe4d07fe486848c0ddcfa6dc767cd6a96c41e3f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-alawdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-alawdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>alawdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-alphacolor.html" title="alphacolor"> <link rel="next" href="gst-plugins-good-plugins-alawenc.html" title="alawenc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -60,9 +60,12 @@ This element decodes alaw audio. Alaw coding is also known as G.711. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10478432"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.9.5.3.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -83,9 +86,12 @@ This element decodes alaw audio. Alaw coding is also known as G.711. </div> <hr> <div class="refsect2"> -<a name="idp10127584"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.9.5.3.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -105,8 +111,11 @@ This element decodes alaw audio. Alaw coding is also known as G.711. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -143,6 +152,6 @@ This element decodes alaw audio. Alaw coding is also known as G.711. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-alawenc.html b/docs/plugins/html/gst-plugins-good-plugins-alawenc.html index 52fbb0c9e29628c453b3d7c94883fdfba76a0afa..f433e146ba200d87292551e0198688038cdcb1a2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-alawenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-alawenc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>alawenc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-alawdec.html" title="alawdec"> <link rel="next" href="gst-plugins-good-plugins-amrparse.html" title="amrparse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -49,9 +49,12 @@ This element encode alaw audio. Alaw coding is also known as G.711. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10458272"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.10.4.3.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -72,9 +75,12 @@ This element encode alaw audio. Alaw coding is also known as G.711. </div> <hr> <div class="refsect2"> -<a name="idp6142160"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.10.4.3.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -94,8 +100,11 @@ This element encode alaw audio. Alaw coding is also known as G.711. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -147,6 +156,6 @@ This element encode alaw audio. Alaw coding is also known as G.711. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-alpha.html b/docs/plugins/html/gst-plugins-good-plugins-alpha.html index a77c12a38cb332c687e5d4bae71b8db1fd7b3634..ca89e0de63437a9972170bb357b16e1c90576382 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-alpha.html +++ b/docs/plugins/html/gst-plugins-good-plugins-alpha.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>alpha</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-agingtv.html" title="agingtv"> <link rel="next" href="gst-plugins-good-plugins-alphacolor.html" title="alphacolor"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -105,9 +105,12 @@ a snow video stream. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6929216"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.7.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -130,9 +133,12 @@ Jan Schmidt <thaytan@noraisin.net></td> </div> <hr> <div class="refsect2"> -<a name="idp6519232"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.7.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -152,8 +158,11 @@ Jan Schmidt <thaytan@noraisin.net></td> </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -196,8 +205,11 @@ Jan Schmidt <thaytan@noraisin.net></td> ALPHA_METHOD_CUSTOM, } GstAlphaMethod; </pre> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><a name="ALPHA-METHOD-SET:CAPS"></a><span class="term"><code class="literal">ALPHA_METHOD_SET</code></span></p></td> @@ -259,7 +271,7 @@ Jan Schmidt <thaytan@noraisin.net></td> <div class="refsect2"> <a name="GstAlpha--target-b"></a><h3>The <code class="literal">"target-b"</code> property</h3> <pre class="programlisting"> "target-b" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> -<p>The Blue target.</p> +<p>The blue color value for custom RGB chroma keying.</p> <p>Allowed values: <= 255</p> <p>Default value: 0</p> </div> @@ -267,7 +279,7 @@ Jan Schmidt <thaytan@noraisin.net></td> <div class="refsect2"> <a name="GstAlpha--target-g"></a><h3>The <code class="literal">"target-g"</code> property</h3> <pre class="programlisting"> "target-g" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> -<p>The Green target.</p> +<p>The green color value for custom RGB chroma keying.</p> <p>Allowed values: <= 255</p> <p>Default value: 255</p> </div> @@ -275,7 +287,7 @@ Jan Schmidt <thaytan@noraisin.net></td> <div class="refsect2"> <a name="GstAlpha--target-r"></a><h3>The <code class="literal">"target-r"</code> property</h3> <pre class="programlisting"> "target-r" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> -<p>The Red target.</p> +<p>The red color value for custom RGB chroma keying.</p> <p>Allowed values: <= 255</p> <p>Default value: 0</p> </div> @@ -306,6 +318,6 @@ Jan Schmidt <thaytan@noraisin.net></td> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-alphacolor.html b/docs/plugins/html/gst-plugins-good-plugins-alphacolor.html index f7421246e37fabe29c064cb213c21c55d181db96..43b10b604e0ac218fd2675b76a61722772963210 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-alphacolor.html +++ b/docs/plugins/html/gst-plugins-good-plugins-alphacolor.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>alphacolor</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-alpha.html" title="alpha"> <link rel="next" href="gst-plugins-good-plugins-alawdec.html" title="alawdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -82,9 +82,12 @@ Sample pipeline: <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6880768"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.8.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -105,9 +108,12 @@ Sample pipeline: </div> <hr> <div class="refsect2"> -<a name="idp9297936"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.8.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -127,8 +133,11 @@ Sample pipeline: </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -165,6 +174,6 @@ Sample pipeline: </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-amrparse.html b/docs/plugins/html/gst-plugins-good-plugins-amrparse.html index ced70badd0437cf75963ff242becbf04153c7ba0..604c57d673c0ad2e2bd0846a5b52f66ac551f567 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-amrparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-amrparse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>amrparse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-alawenc.html" title="alawenc"> <link rel="next" href="gst-plugins-good-plugins-apedemux.html" title="apedemux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -62,7 +62,7 @@ formats. <p> </p> <div class="refsect2"> -<a name="idp9034304"></a><h3>Example launch line</h3> +<a name="id-1.2.11.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -80,9 +80,12 @@ formats. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp5616624"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.11.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -103,9 +106,12 @@ formats. </div> <hr> <div class="refsect2"> -<a name="idp10629744"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.11.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -129,8 +135,11 @@ formats. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -167,19 +176,22 @@ formats. <p> The opaque GstAacParse data structure. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody></tbody> </table></div> </div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-amrparse.see-also"></a><h2>See Also</h2> -<span class="type">GstAmrnbDec</span>, <span class="type">GstAmrnbEnc</span> +<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly/html/gst-plugins-ugly-plugins-amrnbdec.html#GstAmrnbDec"><span class="type">GstAmrnbDec</span></a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly/html/gst-plugins-ugly-plugins-amrnbenc.html#GstAmrnbEnc"><span class="type">GstAmrnbEnc</span></a> </div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-apedemux.html b/docs/plugins/html/gst-plugins-good-plugins-apedemux.html index af47c44b6fb0f11fc79628b5f3469628c008bb6a..89a696514c9df2326d9fbdb000842b6e07433d12 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-apedemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-apedemux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>apedemux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-amrparse.html" title="amrparse"> <link rel="next" href="gst-plugins-good-plugins-apev2mux.html" title="apev2mux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -72,7 +72,7 @@ information. <p> </p> <div class="refsect2"> -<a name="idp8454848"></a><h3>Example launch line</h3> +<a name="id-1.2.12.5.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -92,9 +92,12 @@ the appropriate mime type set on buffers produced from apedemux. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6137536"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.12.5.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -115,9 +118,12 @@ the appropriate mime type set on buffers produced from apedemux. </div> <hr> <div class="refsect2"> -<a name="idp9320784"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.12.5.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -137,8 +143,11 @@ the appropriate mime type set on buffers produced from apedemux. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -175,6 +184,6 @@ the appropriate mime type set on buffers produced from apedemux. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-apev2mux.html b/docs/plugins/html/gst-plugins-good-plugins-apev2mux.html index ff453e34ac294f43c3a0b304779fc56f4d2ec3ae..a8c520bd30842dd40f173b5281fe472e41384851 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-apev2mux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-apev2mux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>apev2mux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-apedemux.html" title="apedemux"> <link rel="next" href="gst-plugins-good-plugins-aspectratiocrop.html" title="aspectratiocrop"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -66,9 +66,12 @@ GstApev2Mux implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6636736"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.13.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -89,9 +92,12 @@ GstApev2Mux implements </div> <hr> <div class="refsect2"> -<a name="idp8787968"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.13.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -111,8 +117,11 @@ GstApev2Mux implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -149,6 +158,6 @@ GstApev2Mux implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-aspectratiocrop.html b/docs/plugins/html/gst-plugins-good-plugins-aspectratiocrop.html index 0928ed1fb52a17af17281df1e1e96b8435a06724..1f04f85ea9436a3941d83cf605ab66d570ce2cba 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-aspectratiocrop.html +++ b/docs/plugins/html/gst-plugins-good-plugins-aspectratiocrop.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>aspectratiocrop</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-apev2mux.html" title="apev2mux"> <link rel="next" href="gst-plugins-good-plugins-audioamplify.html" title="audioamplify"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -81,7 +81,7 @@ in pass-through mode. <p> </p> <div class="refsect2"> -<a name="idp7497696"></a><h3>Example launch line</h3> +<a name="id-1.2.14.7.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -99,9 +99,12 @@ in pass-through mode. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp5722208"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.14.7.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -122,9 +125,12 @@ in pass-through mode. </div> <hr> <div class="refsect2"> -<a name="idp10329696"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.14.7.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -140,12 +146,15 @@ in pass-through mode. </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, RGB16, RGB15, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, YV12, RGB16, RGB15, GRAY8, NV12, NV21, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -161,7 +170,7 @@ in pass-through mode. </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, RGB16, RGB15, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, YV12, RGB16, RGB15, GRAY8, NV12, NV21, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> </tr> </tbody> </table></div> @@ -194,6 +203,6 @@ in pass-through mode. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audioamplify.html b/docs/plugins/html/gst-plugins-good-plugins-audioamplify.html index 046cda4540ed61b78d73eefbb9cef9ef9817322e..454632a9d8cc77833235c8c913930e9bbc74a869 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audioamplify.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audioamplify.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audioamplify</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-aspectratiocrop.html" title="aspectratiocrop"> <link rel="next" href="gst-plugins-good-plugins-audiochebband.html" title="audiochebband"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -72,7 +72,7 @@ The difference between the clipping modes is best evaluated by testing. <p> </p> <div class="refsect2"> -<a name="idp7855776"></a><h3>Example launch line</h3> +<a name="id-1.2.15.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -94,9 +94,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7498368"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.15.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -117,9 +120,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <hr> <div class="refsect2"> -<a name="idp6409024"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.15.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -139,8 +145,11 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -197,6 +206,6 @@ opposite side, wrap-positive pushes them back from the same side. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiochebband.html b/docs/plugins/html/gst-plugins-good-plugins-audiochebband.html index 35c287f9f04754083c2ff709c3a3e353b9f4a369..a91f2898a9fe430d3f43d56d509514ca98d9b6cd 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiochebband.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiochebband.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audiochebband</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audioamplify.html" title="audioamplify"> <link rel="next" href="gst-plugins-good-plugins-audiocheblimit.html" title="audiocheblimit"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -103,7 +103,7 @@ a cutoff frequency at a quarter of the sampling rate. <p> </p> <div class="refsect2"> -<a name="idp6405808"></a><h3>Example launch line</h3> +<a name="id-1.2.16.6.8.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -125,9 +125,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp9274080"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.16.6.9.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -148,9 +151,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <hr> <div class="refsect2"> -<a name="idp8839472"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.16.6.9.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -170,8 +176,11 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -257,6 +266,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiocheblimit.html b/docs/plugins/html/gst-plugins-good-plugins-audiocheblimit.html index e3f6690ad836541e1e81d988982a19e173a5cc16..82426d345ccca48c3c76ecae15b695158cde0c33 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiocheblimit.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiocheblimit.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audiocheblimit</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audiochebband.html" title="audiochebband"> <link rel="next" href="gst-plugins-good-plugins-audiofirfilter.html" title="audiofirfilter"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -100,7 +100,7 @@ a cutoff frequency at a quarter of the sampling rate. <p> </p> <div class="refsect2"> -<a name="idp7497248"></a><h3>Example launch line</h3> +<a name="id-1.2.17.6.8.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -122,9 +122,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8717728"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.17.6.9.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -145,9 +148,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <hr> <div class="refsect2"> -<a name="idp9169424"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.17.6.9.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -167,8 +173,11 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -246,6 +255,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiodynamic.html b/docs/plugins/html/gst-plugins-good-plugins-audiodynamic.html index f636aa3b036cea0606de64e1fa04572caf1601eb..b3d84be3e5c90fa185e90b7a7321872c880eb2d8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiodynamic.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiodynamic.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audiodynamic</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audioecho.html" title="audioecho"> <link rel="next" href="gst-plugins-good-plugins-audioinvert.html" title="audioinvert"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -76,7 +76,7 @@ soft-knee mode is selected the ratio is applied smoothly. <p> </p> <div class="refsect2"> -<a name="idp7185840"></a><h3>Example launch line</h3> +<a name="id-1.2.23.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -98,9 +98,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10122960"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.23.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -121,9 +124,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <hr> <div class="refsect2"> -<a name="idp11748096"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.23.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -143,8 +149,11 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -213,6 +222,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audioecho.html b/docs/plugins/html/gst-plugins-good-plugins-audioecho.html index d7483b5eacc3173a44cd8ae589659a90b6919d66..a34c2d90c0b33b8bc7f58c6738463c70591df8eb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audioecho.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audioecho.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audioecho</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audiowsinclimit.html" title="audiowsinclimit"> <link rel="next" href="gst-plugins-good-plugins-audiodynamic.html" title="audiodynamic"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -84,7 +84,7 @@ state and will be set to the current delay by default. <p> </p> <div class="refsect2"> -<a name="idp8731280"></a><h3>Example launch line</h3> +<a name="id-1.2.22.6.5.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -104,9 +104,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8190352"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.22.6.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -127,9 +130,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <hr> <div class="refsect2"> -<a name="idp8048608"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.22.6.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -149,8 +155,11 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -221,6 +230,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiofirfilter.html b/docs/plugins/html/gst-plugins-good-plugins-audiofirfilter.html index 599bf95b4e72f428a1a14a83566ad7119b580fc1..a6fa07c17761b1de08741ec0aa2e6bd8d475da25 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiofirfilter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiofirfilter.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audiofirfilter</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audiocheblimit.html" title="audiocheblimit"> <link rel="next" href="gst-plugins-good-plugins-audioiirfilter.html" title="audioiirfilter"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -95,7 +95,7 @@ FIR filters as they're depending on the sampling rate. <p> </p> <div class="refsect2"> -<a name="idp5849872"></a><h3>Example application</h3> +<a name="id-1.2.18.7.5.1"></a><h3>Example application</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -280,8 +280,8 @@ FIR filters as they're depending on the sampling rate. <span class="comment"> *</span> <span class="comment"> * You should have received a copy of the GNU Library General Public</span> <span class="comment"> * License along with this library; if not, write to the</span> -<span class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330,</span> -<span class="comment"> * Boston, MA 02111-1307, USA.</span> +<span class="comment"> * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span> +<span class="comment"> * Boston, MA 02110-1301, USA.</span> <span class="comment"> */</span> <span class="comment">/* This small sample application creates a bandpass FIR filter</span> @@ -441,9 +441,12 @@ gint <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7477856"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.18.7.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -464,9 +467,12 @@ gint </div> <hr> <div class="refsect2"> -<a name="idp10058384"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.18.7.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -486,8 +492,11 @@ gint </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -549,8 +558,11 @@ Will be emitted when the sampling rate changes. The callbacks will be called from the streaming thread and processing will stop until the event is handled. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>filter</code></em> :</span></p></td> @@ -571,6 +583,6 @@ stop until the event is handled. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audioiirfilter.html b/docs/plugins/html/gst-plugins-good-plugins-audioiirfilter.html index 57d7e33b2f93895b29411c90a13f0bbd8ca69bdf..60917b9e133c658d852f16b094b8987a4d6b872c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audioiirfilter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audioiirfilter.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audioiirfilter</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audiofirfilter.html" title="audiofirfilter"> <link rel="next" href="gst-plugins-good-plugins-audiowsincband.html" title="audiowsincband"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -91,7 +91,7 @@ IIR filters as they're depending on the sampling rate. <p> </p> <div class="refsect2"> -<a name="idp6803008"></a><h3>Example application</h3> +<a name="id-1.2.19.7.5.1"></a><h3>Example application</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -252,8 +252,8 @@ IIR filters as they're depending on the sampling rate. <span class="comment"> *</span> <span class="comment"> * You should have received a copy of the GNU Library General Public</span> <span class="comment"> * License along with this library; if not, write to the</span> -<span class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330,</span> -<span class="comment"> * Boston, MA 02111-1307, USA.</span> +<span class="comment"> * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span> +<span class="comment"> * Boston, MA 02110-1301, USA.</span> <span class="comment"> */</span> <span class="comment">/* This small sample application creates a lowpass IIR filter</span> @@ -389,9 +389,12 @@ gint <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp5448512"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.19.7.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -412,9 +415,12 @@ gint </div> <hr> <div class="refsect2"> -<a name="idp5939424"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.19.7.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -434,8 +440,11 @@ gint </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -496,8 +505,11 @@ Will be emitted when the sampling rate changes. The callbacks will be called from the streaming thread and processing will stop until the event is handled. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>filter</code></em> :</span></p></td> @@ -518,6 +530,6 @@ stop until the event is handled. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audioinvert.html b/docs/plugins/html/gst-plugins-good-plugins-audioinvert.html index afe923f59f67fd2bf39b0ff5cb96ccb3289ad0a4..aad7109ba45c18741fe4f2c71b50658110cacc1f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audioinvert.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audioinvert.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audioinvert</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audiodynamic.html" title="audiodynamic"> <link rel="next" href="gst-plugins-good-plugins-audiopanorama.html" title="audiopanorama"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -72,7 +72,7 @@ Creating a stereo sample from a mono source, with one channel inverted produces <p> </p> <div class="refsect2"> -<a name="idp7423968"></a><h3>Example launch line</h3> +<a name="id-1.2.24.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -94,9 +94,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8441952"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.24.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -117,9 +120,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <hr> <div class="refsect2"> -<a name="idp10012160"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.24.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -139,8 +145,11 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -187,6 +196,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiokaraoke.html b/docs/plugins/html/gst-plugins-good-plugins-audiokaraoke.html index 4ed01ca126c27c7454f9e1de78656d1508d346b1..d6568bc57b6151fe7f1605da11c61e3c2a124a91 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiokaraoke.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiokaraoke.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audiokaraoke</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audiopanorama.html" title="audiopanorama"> <link rel="next" href="gst-plugins-good-plugins-auparse.html" title="auparse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -74,7 +74,7 @@ This plugin is useful for karaoke applications. <p> </p> <div class="refsect2"> -<a name="idp5910096"></a><h3>Example launch line</h3> +<a name="id-1.2.26.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -92,9 +92,12 @@ This plugin is useful for karaoke applications. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8704048"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.26.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -115,9 +118,12 @@ This plugin is useful for karaoke applications. </div> <hr> <div class="refsect2"> -<a name="idp10794560"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.26.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -137,8 +143,11 @@ This plugin is useful for karaoke applications. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -209,6 +218,6 @@ This plugin is useful for karaoke applications. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiopanorama.html b/docs/plugins/html/gst-plugins-good-plugins-audiopanorama.html index 38b750724c18af7f53742910fa4adebefdab784c..f3be1dfd59b27f1d3a433e308ab57e451261cdb8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiopanorama.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiopanorama.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audiopanorama</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audioinvert.html" title="audioinvert"> <link rel="next" href="gst-plugins-good-plugins-audiokaraoke.html" title="audiokaraoke"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -71,7 +71,7 @@ which keeps the same perceived loudness, and a simple panning method that just c <p> </p> <div class="refsect2"> -<a name="idp9585392"></a><h3>Example launch line</h3> +<a name="id-1.2.25.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -95,9 +95,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6637376"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.25.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -118,9 +121,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <hr> <div class="refsect2"> -<a name="idp10957920"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.25.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -136,16 +142,15 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>audio/x-raw, format=(string){ F32LE, S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)1, layout=(string)interleaved</td> -</tr> -<tr> -<td><p><span class="term"></span></p></td> -<td> audio/x-raw, format=(string){ F32LE, S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003</td> +<td>audio/x-raw, format=(string){ F32LE, S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2 ], layout=(string)interleaved</td> </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -161,7 +166,7 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>audio/x-raw, format=(string){ S32LE, S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003</td> +<td>audio/x-raw, format=(string){ F32LE, S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)2, layout=(string)interleaved</td> </tr> </tbody> </table></div> @@ -204,6 +209,6 @@ a matter of taste which method should be chosen. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiowsincband.html b/docs/plugins/html/gst-plugins-good-plugins-audiowsincband.html index 8438559786f3f83f695ed4490518ff811c2c23fd..948455396d3ac191c770821810e936c40eaff612 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiowsincband.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiowsincband.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audiowsincband</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audioiirfilter.html" title="audioiirfilter"> <link rel="next" href="gst-plugins-good-plugins-audiowsinclimit.html" title="audiowsinclimit"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -83,7 +83,7 @@ disadvantage is the much slower execution time with larger kernels. <p> </p> <div class="refsect2"> -<a name="idp6470368"></a><h3>Example launch line</h3> +<a name="id-1.2.20.6.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -105,9 +105,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp9741456"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.20.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -128,9 +131,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <hr> <div class="refsect2"> -<a name="idp5945200"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.20.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -150,8 +156,11 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -229,6 +238,6 @@ Opaque data structure. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiowsinclimit.html b/docs/plugins/html/gst-plugins-good-plugins-audiowsinclimit.html index 350b060534b91d03a490fd8c7ee526e31adc5cc4..f89997421ebdd11b908501cdccfebd4c40fa0c34 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiowsinclimit.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiowsinclimit.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audiowsinclimit</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audiowsincband.html" title="audiowsincband"> <link rel="next" href="gst-plugins-good-plugins-audioecho.html" title="audioecho"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -83,7 +83,7 @@ disadvantage is the much slower execution time with larger kernels. <p> </p> <div class="refsect2"> -<a name="idp3883584"></a><h3>Example launch line</h3> +<a name="id-1.2.21.6.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -91,9 +91,9 @@ disadvantage is the much slower execution time with larger kernels. <td class="listing_lines" align="right"><pre>1 2 3</pre></td> - <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc freq<span class="gtkdoc opt">=</span><span class="number">1500</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audiowsinclimit mode<span class="gtkdoc opt">=</span>low<span class="gtkdoc opt">-</span>pass frequency<span class="gtkdoc opt">=</span><span class="number">1000</span> length<span class="gtkdoc opt">=</span><span class="number">501</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink -gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span><span class="string">"melo1.ogg"</span> <span class="gtkdoc opt">!</span> oggdemux <span class="gtkdoc opt">!</span> vorbisdec <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audiowsinclimit mode<span class="gtkdoc opt">=</span>high<span class="gtkdoc opt">-</span>pass frequency<span class="gtkdoc opt">=</span><span class="number">15000</span> length<span class="gtkdoc opt">=</span><span class="number">501</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink -gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc wave<span class="gtkdoc opt">=</span>white<span class="gtkdoc opt">-</span>noise <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audiowsinclimit mode<span class="gtkdoc opt">=</span>low<span class="gtkdoc opt">-</span>pass frequency<span class="gtkdoc opt">=</span><span class="number">1000</span> length<span class="gtkdoc opt">=</span><span class="number">10001</span> window<span class="gtkdoc opt">=</span>blackman <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc freq<span class="gtkdoc opt">=</span><span class="number">1500</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audiowsinclimit mode<span class="gtkdoc opt">=</span>low<span class="gtkdoc opt">-</span>pass cutoff<span class="gtkdoc opt">=</span><span class="number">1000</span> length<span class="gtkdoc opt">=</span><span class="number">501</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink +gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span><span class="string">"melo1.ogg"</span> <span class="gtkdoc opt">!</span> oggdemux <span class="gtkdoc opt">!</span> vorbisdec <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audiowsinclimit mode<span class="gtkdoc opt">=</span>high<span class="gtkdoc opt">-</span>pass cutoff<span class="gtkdoc opt">=</span><span class="number">15000</span> length<span class="gtkdoc opt">=</span><span class="number">501</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink +gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc wave<span class="gtkdoc opt">=</span>white<span class="gtkdoc opt">-</span>noise <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audiowsinclimit mode<span class="gtkdoc opt">=</span>low<span class="gtkdoc opt">-</span>pass cutoff<span class="gtkdoc opt">=</span><span class="number">1000</span> length<span class="gtkdoc opt">=</span><span class="number">10001</span> window<span class="gtkdoc opt">=</span>blackman <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink</pre></td> </tr> </tbody> </table> @@ -105,9 +105,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7246896"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.21.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -128,9 +131,12 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </div> <hr> <div class="refsect2"> -<a name="idp5649504"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.21.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -150,8 +156,11 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -229,6 +238,6 @@ Opaque data structure. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-auparse.html b/docs/plugins/html/gst-plugins-good-plugins-auparse.html index 990b15b08f3e37abee4823d5624872c17fd201d8..749af4342708ce5d309f315a675ff8633e45ad58 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-auparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-auparse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>auparse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-audiokaraoke.html" title="audiokaraoke"> <link rel="next" href="gst-plugins-good-plugins-autoaudiosink.html" title="autoaudiosink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -60,9 +60,12 @@ Parses .au files mostly originating from sun os based computers. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp9709104"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.27.5.3.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -83,9 +86,12 @@ Parses .au files mostly originating from sun os based computers. </div> <hr> <div class="refsect2"> -<a name="idp7914560"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.27.5.3.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -105,8 +111,11 @@ Parses .au files mostly originating from sun os based computers. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -159,6 +168,6 @@ Parses .au files mostly originating from sun os based computers. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-autoaudiosink.html b/docs/plugins/html/gst-plugins-good-plugins-autoaudiosink.html index e699ecfd49d47ef239f0c63f0b31f51ab47194a2..eba84ae4cf4fbc1c50520111df2ff2ab3a58f5ef 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-autoaudiosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-autoaudiosink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>autoaudiosink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-auparse.html" title="auparse"> <link rel="next" href="gst-plugins-good-plugins-autoaudiosrc.html" title="autoaudiosrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -68,6 +68,7 @@ GstAutoAudioSink implements <pre class="synopsis"> "<a class="link" href="gst-plugins-good-plugins-autoaudiosink.html#GstAutoAudioSink--filter-caps" title='The "filter-caps" property'>filter-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write "<a class="link" href="gst-plugins-good-plugins-autoaudiosink.html#GstAutoAudioSink--ts-offset" title='The "ts-offset" property'>ts-offset</a>" <span class="type">gint64</span> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-autoaudiosink.html#GstAutoAudioSink--sync" title='The "sync" property'>sync</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write </pre> </div> <div class="refsect1"> @@ -81,7 +82,7 @@ of their element information, and also have a non-zero autoplugging rank. <p> </p> <div class="refsect2"> -<a name="idp7273088"></a><h3>Example launch line</h3> +<a name="id-1.2.28.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -99,9 +100,12 @@ of their element information, and also have a non-zero autoplugging rank. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10295792"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.28.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -122,9 +126,12 @@ of their element information, and also have a non-zero autoplugging rank. </div> <hr> <div class="refsect2"> -<a name="idp7242528"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.28.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -180,6 +187,13 @@ This property can only be set before the element goes to the READY state. <p>Timestamp offset in nanoseconds.</p> <p>Default value: 0</p> </div> +<hr> +<div class="refsect2"> +<a name="GstAutoAudioSink--sync"></a><h3>The <code class="literal">"sync"</code> property</h3> +<pre class="programlisting"> "sync" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<p>Sync on the clock.</p> +<p>Default value: TRUE</p> +</div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-autoaudiosink.see-also"></a><h2>See Also</h2> @@ -188,6 +202,6 @@ autovideosink, alsasink, osssink </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-autoaudiosrc.html b/docs/plugins/html/gst-plugins-good-plugins-autoaudiosrc.html index 2eca5bbd2cbfc7c59eeb975ade5db56df04b9fb1..29480c2a708d947172fe76b1095d553400460c04 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-autoaudiosrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-autoaudiosrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>autoaudiosrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-autoaudiosink.html" title="autoaudiosink"> <link rel="next" href="gst-plugins-good-plugins-autovideosink.html" title="autovideosink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -80,7 +80,7 @@ of their element information, and also have a non-zero autoplugging rank. <p> </p> <div class="refsect2"> -<a name="idp1631696"></a><h3>Example launch line</h3> +<a name="id-1.2.29.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -98,9 +98,12 @@ of their element information, and also have a non-zero autoplugging rank. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7352448"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.29.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -121,9 +124,12 @@ of their element information, and also have a non-zero autoplugging rank. </div> <hr> <div class="refsect2"> -<a name="idp8925248"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.29.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -180,6 +186,6 @@ autovideosrc, alsasrc, osssrc </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-autovideosink.html b/docs/plugins/html/gst-plugins-good-plugins-autovideosink.html index 1ff25addd69acb73237767b29381a215d114587b..c79ba85cb627f0f3725ad788faf60f4e0e8238e4 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-autovideosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-autovideosink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>autovideosink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-autoaudiosrc.html" title="autoaudiosrc"> <link rel="next" href="gst-plugins-good-plugins-autovideosrc.html" title="autovideosrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -68,6 +68,7 @@ GstAutoVideoSink implements <pre class="synopsis"> "<a class="link" href="gst-plugins-good-plugins-autovideosink.html#GstAutoVideoSink--filter-caps" title='The "filter-caps" property'>filter-caps</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>* : Read / Write "<a class="link" href="gst-plugins-good-plugins-autovideosink.html#GstAutoVideoSink--ts-offset" title='The "ts-offset" property'>ts-offset</a>" <span class="type">gint64</span> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-autovideosink.html#GstAutoVideoSink--sync" title='The "sync" property'>sync</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write </pre> </div> <div class="refsect1"> @@ -81,7 +82,7 @@ of their element information, and also have a non-zero autoplugging rank. <p> </p> <div class="refsect2"> -<a name="idp11387984"></a><h3>Example launch line</h3> +<a name="id-1.2.30.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -99,9 +100,12 @@ of their element information, and also have a non-zero autoplugging rank. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8905808"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.30.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -122,9 +126,12 @@ of their element information, and also have a non-zero autoplugging rank. </div> <hr> <div class="refsect2"> -<a name="idp12041024"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.30.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -180,6 +187,13 @@ This property can only be set before the element goes to the READY state. <p>Timestamp offset in nanoseconds.</p> <p>Default value: 0</p> </div> +<hr> +<div class="refsect2"> +<a name="GstAutoVideoSink--sync"></a><h3>The <code class="literal">"sync"</code> property</h3> +<pre class="programlisting"> "sync" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<p>Sync on the clock.</p> +<p>Default value: TRUE</p> +</div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-autovideosink.see-also"></a><h2>See Also</h2> @@ -188,6 +202,6 @@ autoaudiosink, ximagesink, xvimagesink, sdlvideosink </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-autovideosrc.html b/docs/plugins/html/gst-plugins-good-plugins-autovideosrc.html index 6c9c5f117b4226dbbcdc9af290ddc7297f60628d..e0b3f9b54edfc4f13adfdc93581af09ea33d58b5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-autovideosrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-autovideosrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>autovideosrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-autovideosink.html" title="autovideosink"> <link rel="next" href="gst-plugins-good-plugins-avidemux.html" title="avidemux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -80,7 +80,7 @@ of their element information, and also have a non-zero autoplugging rank. <p> </p> <div class="refsect2"> -<a name="idp7830272"></a><h3>Example launch line</h3> +<a name="id-1.2.31.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -98,9 +98,12 @@ of their element information, and also have a non-zero autoplugging rank. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp5565008"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.31.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -121,9 +124,12 @@ of their element information, and also have a non-zero autoplugging rank. </div> <hr> <div class="refsect2"> -<a name="idp9392240"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.31.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -180,6 +186,6 @@ autoaudiosrc, v4l2src, v4lsrc </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-avidemux.html b/docs/plugins/html/gst-plugins-good-plugins-avidemux.html index dc0c9555d1045033738a2fba1784c53c9ab4e450..9d14b660ec20671658f33aa8a3292afe90a27bbe 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-avidemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-avidemux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>avidemux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-autovideosrc.html" title="autovideosrc"> <link rel="next" href="gst-plugins-good-plugins-avimux.html" title="avimux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -64,7 +64,7 @@ capabilities of the upstream elements. <p> </p> <div class="refsect2"> -<a name="idp11554480"></a><h3>Example launch line</h3> +<a name="id-1.2.32.5.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -88,9 +88,12 @@ Last reviewed on 2006-12-29 (0.10.6) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp11551280"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.32.5.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -111,9 +114,12 @@ Last reviewed on 2006-12-29 (0.10.6) </div> <hr> <div class="refsect2"> -<a name="idp11545504"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.32.5.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -133,8 +139,11 @@ Last reviewed on 2006-12-29 (0.10.6) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -262,8 +271,11 @@ Last reviewed on 2006-12-29 (0.10.6) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -283,8 +295,11 @@ Last reviewed on 2006-12-29 (0.10.6) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -512,7 +527,7 @@ Last reviewed on 2006-12-29 (0.10.6) </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-wmv, wmvversion=(int)3, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]</td> +<td> video/x-wmv, wmvversion=(int)3, format=(string)WMV3, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> @@ -649,6 +664,6 @@ Last reviewed on 2006-12-29 (0.10.6) </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-avimux.html b/docs/plugins/html/gst-plugins-good-plugins-avimux.html index eac6dbb85cdf494d2863efdc066612d4766abf97..2f295f8aed1819da05132a457da30b7d978470e0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-avimux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-avimux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>avimux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-avidemux.html" title="avidemux"> <link rel="next" href="gst-plugins-good-plugins-avisubtitle.html" title="avisubtitle"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -76,7 +76,7 @@ Muxes raw or compressed audio and/or video streams into an AVI file. <p> </p> <div class="refsect2"> -<a name="idp6097360"></a><h3>Example launch lines</h3> +<a name="id-1.2.33.7.3.1"></a><h3>Example launch lines</h3> <p>(write everything in one line, without the backslash characters)</p> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> @@ -130,9 +130,12 @@ only work if you have the necessary encoder elements installed of course. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp9869536"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.33.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -153,9 +156,12 @@ only work if you have the necessary encoder elements installed of course. </div> <hr> <div class="refsect2"> -<a name="idp5967488"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.33.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -199,8 +205,11 @@ only work if you have the necessary encoder elements installed of course. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -216,7 +225,7 @@ only work if you have the necessary encoder elements installed of course. </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>video/x-raw, format=(string){ YUY2, I420 }, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td>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 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> @@ -264,8 +273,11 @@ only work if you have the necessary encoder elements installed of course. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -311,6 +323,6 @@ only work if you have the necessary encoder elements installed of course. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-avisubtitle.html b/docs/plugins/html/gst-plugins-good-plugins-avisubtitle.html index 9290ecba9722be3d6ee4eddc0867e82642ca531f..adbbd26f6d8e27ac00580d19853c4733231f9d11 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-avisubtitle.html +++ b/docs/plugins/html/gst-plugins-good-plugins-avisubtitle.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>avisubtitle</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-avimux.html" title="avimux"> <link rel="next" href="gst-plugins-good-plugins-cacasink.html" title="cacasink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -57,7 +57,7 @@ <p> </p> <div class="refsect2"> -<a name="idp11799168"></a><h3>Example launch line</h3> +<a name="id-1.2.34.5.2.1"></a><h3>Example launch line</h3> <p> Parses the subtitle stream from an avi file. </p> @@ -78,9 +78,12 @@ Last reviewed on 2008-02-01 <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp11916592"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.34.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -101,9 +104,12 @@ Last reviewed on 2008-02-01 </div> <hr> <div class="refsect2"> -<a name="idp10857376"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.34.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -123,8 +129,11 @@ Last reviewed on 2008-02-01 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -161,6 +170,6 @@ Last reviewed on 2008-02-01 </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-cacasink.html b/docs/plugins/html/gst-plugins-good-plugins-cacasink.html index 151d800256bf504c9a4dbd78b4e42ab97efc706a..b9b17bc27b7a2a54d7de131330f8265e6412936b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-cacasink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-cacasink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>cacasink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-avisubtitle.html" title="avisubtitle"> <link rel="next" href="gst-plugins-good-plugins-cairooverlay.html" title="cairooverlay"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -69,9 +69,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8058688"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.35.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -92,9 +95,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp3333664"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.35.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -110,7 +116,7 @@ </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>video/x-raw, format=(string){ RGB, RGBx, RGB16, RGB15 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td>video/x-raw, format=(string){ RGB, BGR, RGBx, xRGB, BGRx, xBGR, RGB16, RGB15 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> </tr> </tbody> </table></div> @@ -163,6 +169,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-cairooverlay.html b/docs/plugins/html/gst-plugins-good-plugins-cairooverlay.html index 8efc8b1a4db890cff5ea0c2187834c521cd8b65b..c4bbec6b136798e9cf59386e4737c152f5bfbe57 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-cairooverlay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-cairooverlay.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>cairooverlay</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-cacasink.html" title="cacasink"> <link rel="next" href="gst-plugins-good-plugins-capssetter.html" title="capssetter"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -68,9 +68,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp9014608"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.36.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -91,9 +94,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp7359472"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.36.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -113,8 +119,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -157,8 +166,11 @@ <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstcairooverlay</code></em> :</span></p></td> @@ -181,8 +193,11 @@ <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstcairooverlay</code></em> :</span></p></td> @@ -199,6 +214,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-capssetter.html b/docs/plugins/html/gst-plugins-good-plugins-capssetter.html index fbcb27c2db9c7abe212d49fba5e9050d4fd0ba54..277fe2c978eb3f3269cc3b80487e89a955b1dc06 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-capssetter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-capssetter.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>capssetter</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-cairooverlay.html" title="cairooverlay"> <link rel="next" href="gst-plugins-good-plugins-cutter.html" title="cutter"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -68,7 +68,7 @@ <p> </p> <div class="refsect2"> -<a name="idp7476272"></a><p> +<a name="id-1.2.37.6.2.1"></a><p> Sets or merges caps on a stream's buffers. That is, a buffer's caps are updated using (fields of) <a class="link" href="gst-plugins-good-plugins-capssetter.html#GstCapsSetter--caps" title='The "caps" property'>caps</a>. Note that this may @@ -99,9 +99,12 @@ alike. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp11379728"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.37.6.3.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -122,9 +125,12 @@ alike. </div> <hr> <div class="refsect2"> -<a name="idp11438896"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.37.6.3.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -144,8 +150,11 @@ alike. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -204,6 +213,6 @@ alike. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-cutter.html b/docs/plugins/html/gst-plugins-good-plugins-cutter.html index ffbfeffc4cdd4610dec545edf98b0cf5133a70cd..05ab8fbd4a07a0c91f76239369ac70aa4eaaaef4 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-cutter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-cutter.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>cutter</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-capssetter.html" title="capssetter"> <link rel="next" href="gst-plugins-good-plugins-dcaparse.html" title="dcaparse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -72,7 +72,7 @@ silence is signalled by bus messages named <code class="classname">"cutter"</code>. The message's structure contains two fields: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"><p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> <code class="classname">"timestamp"</code>: @@ -89,7 +89,7 @@ The message's structure contains two fields: <p> </p> <div class="refsect2"> -<a name="idp11730464"></a><h3>Example launch line</h3> +<a name="id-1.2.38.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -107,9 +107,12 @@ The message's structure contains two fields: <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp11855744"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.38.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -130,9 +133,12 @@ The message's structure contains two fields: </div> <hr> <div class="refsect2"> -<a name="idp11785712"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.38.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -152,8 +158,11 @@ The message's structure contains two fields: </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -227,6 +236,6 @@ The message's structure contains two fields: </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html b/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html index e981af89879af2f97c4b98406e4cdb7f1f7ecce1..b7bfd2a759ea53e619efcda5d083af56d9f8f374 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>dcaparse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-cutter.html" title="cutter"> <link rel="next" href="gst-plugins-good-plugins-deinterlace.html" title="deinterlace"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -61,7 +61,7 @@ This is a DCA (DTS Coherent Acoustics) parser. <p> </p> <div class="refsect2"> -<a name="idp7998080"></a><h3>Example launch line</h3> +<a name="id-1.2.39.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -79,9 +79,12 @@ This is a DCA (DTS Coherent Acoustics) parser. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp5582816"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.39.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -102,9 +105,12 @@ This is a DCA (DTS Coherent Acoustics) parser. </div> <hr> <div class="refsect2"> -<a name="idp6704816"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.39.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -122,10 +128,17 @@ This is a DCA (DTS Coherent Acoustics) parser. <td><p><span class="term">details</span></p></td> <td>audio/x-dts</td> </tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> audio/x-private1-dts</td> +</tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -167,6 +180,6 @@ The opaque GstDcaParse object </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html b/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html index 4c5de15bb23404cb116c1cdbc57dfb10c54673e9..26c029df523897f287808c1848531d4965cc6e04 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html +++ b/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>deinterlace</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-dcaparse.html" title="dcaparse"> <link rel="next" href="gst-plugins-good-plugins-deinterleave.html" title="deinterleave"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -83,7 +83,7 @@ For this different algorithms can be selected which will be described later. <p> </p> <div class="refsect2"> -<a name="idp12042896"></a><h3>Example launch line</h3> +<a name="id-1.2.40.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -101,9 +101,12 @@ For this different algorithms can be selected which will be described later. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10996288"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.40.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -124,9 +127,12 @@ For this different algorithms can be selected which will be described later. </div> <hr> <div class="refsect2"> -<a name="idp12830496"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.40.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -146,8 +152,11 @@ For this different algorithms can be selected which will be described later. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -207,7 +216,7 @@ setting the appropiate properties on it. </p> <p> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"><p> tomsmocomp Motion Adaptive: Motion Search @@ -310,6 +319,6 @@ streams. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-deinterleave.html b/docs/plugins/html/gst-plugins-good-plugins-deinterleave.html index 8e80a7fd97ca67cb64fecec010f694e8bd95d2f7..c9801a17f93b09ae013a3bee6b60167e2c09307f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-deinterleave.html +++ b/docs/plugins/html/gst-plugins-good-plugins-deinterleave.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>deinterleave</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-deinterlace.html" title="deinterlace"> <link rel="next" href="gst-plugins-good-plugins-dicetv.html" title="dicetv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -78,7 +78,7 @@ before further processing of the audio data. <p> </p> <div class="refsect2"> -<a name="idp9965248"></a><h3>Example launch line</h3> +<a name="id-1.2.41.6.5.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -110,9 +110,12 @@ channels exchanged. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6298064"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.41.6.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -133,9 +136,12 @@ channels exchanged. </div> <hr> <div class="refsect2"> -<a name="idp8978480"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.41.6.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -155,8 +161,11 @@ channels exchanged. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -211,6 +220,6 @@ interleave </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-dicetv.html b/docs/plugins/html/gst-plugins-good-plugins-dicetv.html index d67da2388e0f31543866606ad1d39ef367f0a005..09a5946bd4a4bbd0be4d8902f2af39f4d81e94ed 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dicetv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dicetv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>dicetv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-deinterleave.html" title="deinterleave"> <link rel="next" href="gst-plugins-good-plugins-directsoundsink.html" title="directsoundsink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -83,7 +83,7 @@ consistent between each frame. <p> </p> <div class="refsect2"> -<a name="idp8486032"></a><h3>Example launch line</h3> +<a name="id-1.2.42.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -101,9 +101,12 @@ consistent between each frame. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7605648"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.42.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -124,9 +127,12 @@ consistent between each frame. </div> <hr> <div class="refsect2"> -<a name="idp8638848"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.42.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -146,8 +152,11 @@ consistent between each frame. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -199,8 +208,11 @@ consistent between each frame. <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstdicetv</code></em> :</span></p></td> @@ -217,6 +229,6 @@ consistent between each frame. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-directsoundsink.html b/docs/plugins/html/gst-plugins-good-plugins-directsoundsink.html index 1f666034cc762b797027428d35daeaf03fd6521f..bf223f2a2934cb7aca540e7d29da2dd6630671ce 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-directsoundsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-directsoundsink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>directsoundsink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-dicetv.html" title="dicetv"> -<link rel="next" href="gst-plugins-good-plugins-dv1394src.html" title="dv1394src"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<link rel="next" href="gst-plugins-good-plugins-dtmfsrc.html" title="dtmfsrc"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -18,7 +18,7 @@ <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> -<td><a accesskey="n" href="gst-plugins-good-plugins-dv1394src.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="gst-plugins-good-plugins-dtmfsrc.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr> <tr><td colspan="5" class="shortcuts"> <a href="#gst-plugins-good-plugins-directsoundsink.synopsis" class="shortcut">Top</a> @@ -45,9 +45,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7534912"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.43.4.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -68,7 +71,7 @@ </div> <hr> <div class="refsect2"> -<a name="idp10938960"></a><h3>Element Pads</h3> +<a name="id-1.2.43.4.2.2"></a><h3>Element Pads</h3> </div> </div> <p> @@ -116,6 +119,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-dtmfsrc.html b/docs/plugins/html/gst-plugins-good-plugins-dtmfsrc.html new file mode 100644 index 0000000000000000000000000000000000000000..f6e68e976a393adf4c4f035e45096deb957bb320 --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-dtmfsrc.html @@ -0,0 +1,256 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>dtmfsrc</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-directsoundsink.html" title="directsoundsink"> +<link rel="next" href="gst-plugins-good-plugins-dv1394src.html" title="dv1394src"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-directsoundsink.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-dv1394src.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-dtmfsrc.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-dtmfsrc.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-dtmfsrc.object-hierarchy" class="shortcut">Object Hierarchy</a> +  | + <a href="#gst-plugins-good-plugins-dtmfsrc.properties" class="shortcut">Properties</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-dtmfsrc"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-dtmfsrc.top_of_page"></a>dtmfsrc</span></h2> +<p>dtmfsrc — Generates DTMF tones</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-dtmfsrc.synopsis"></a><h2>Synopsis</h2> +<a name="GstDTMFSrc"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-dtmfsrc.html#GstDTMFSrc-struct" title="struct GstDTMFSrc">GstDTMFSrc</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-dtmfsrc.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseSrc.html">GstBaseSrc</a> + +----GstDTMFSrc +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-dtmfsrc.properties"></a><h2>Properties</h2> +<pre class="synopsis"> + "<a class="link" href="gst-plugins-good-plugins-dtmfsrc.html#GstDTMFSrc--interval" title='The "interval" property'>interval</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-dtmfsrc.description"></a><h2>Description</h2> +<p> +The DTMFSrc element generates DTMF (ITU-T Q.23 Specification) tone packets on request +from application. The application communicates the beginning and end of a +DTMF event using custom upstream gstreamer events. To report a DTMF event, an +application must send an event of type GST_EVENT_CUSTOM_UPSTREAM, having a +structure of name "dtmf-event" with fields set according to the following +table: +</p> +<p> +</p> +<div class="informaltable"><table border="1"> +<colgroup> +<col class="Name"> +<col class="Type"> +<col class="Possible values"> +<col class="Purpose"> +</colgroup> +<thead><tr> +<th>Name</th> +<th>GType</th> +<th>Possible values</th> +<th>Purpose</th> +</tr></thead> +<tbody> +<tr> +<td>type</td> +<td>G_TYPE_INT</td> +<td>0-1</td> +<td>The application uses this field to specify which of the two methods +specified in RFC 2833 to use. The value should be 0 for tones and 1 for +named events. Tones are specified by their frequencies and events are specied +by their number. This element can only take events as input. Do not confuse +with "method" which specified the output. +</td> +</tr> +<tr> +<td>number</td> +<td>G_TYPE_INT</td> +<td>0-15</td> +<td>The event number.</td> +</tr> +<tr> +<td>volume</td> +<td>G_TYPE_INT</td> +<td>0-36</td> +<td>This field describes the power level of the tone, expressed in dBm0 +after dropping the sign. Power levels range from 0 to -63 dBm0. The range of +valid DTMF is from 0 to -36 dBm0. Can be omitted if start is set to FALSE. +</td> +</tr> +<tr> +<td>start</td> +<td>G_TYPE_BOOLEAN</td> +<td>True or False</td> +<td>Whether the event is starting or ending.</td> +</tr> +<tr> +<td>method</td> +<td>G_TYPE_INT</td> +<td>2</td> +<td>The method used for sending event, this element will react if this +field is absent or 2. +</td> +</tr> +</tbody> +</table></div> +<p> +</p> +<p> +For example, the following code informs the pipeline (and in turn, the +DTMFSrc element inside the pipeline) about the start of a DTMF named +event '1' of volume -25 dBm0: +</p> +<p> +</p> +<pre class="programlisting"> +structure = gst_structure_new ("dtmf-event", + "type", G_TYPE_INT, 1, + "number", G_TYPE_INT, 1, + "volume", G_TYPE_INT, 25, + "start", G_TYPE_BOOLEAN, TRUE, NULL); + +event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, structure); +gst_element_send_event (pipeline, event); +</pre> +<p> +</p> +<p> +When a DTMF tone actually starts or stop, a "dtmf-event-processed" +element <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GstMessage"><span class="type">GstMessage</span></a> with the same fields as the "dtmf-event" +<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstEvent.html#GstEvent"><span class="type">GstEvent</span></a> that was used to request the event. Also, if any event +has not been processed when the element goes from the PAUSED to the +READY state, then a "dtmf-event-dropped" message is posted on the +<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html"><span class="type">GstBus</span></a> in the order that they were received. +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.44.6.7.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-dtmf.html#plugin-dtmf">dtmf</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Youness Alaoui <youness.alaoui@collabora.co.uk></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Source/Audio</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.44.6.7.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/x-raw, format=(string)S16LE, rate=(int)[ 1, 2147483647 ], channels=(int)1</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-dtmfsrc.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstDTMFSrc-struct"></a><h3>struct GstDTMFSrc</h3> +<pre class="programlisting">struct GstDTMFSrc;</pre> +<p> +The opaque <a class="link" href="gst-plugins-good-plugins-dtmfsrc.html#GstDTMFSrc"><span class="type">GstDTMFSrc</span></a> data structure. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody></tbody> +</table></div> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-dtmfsrc.property-details"></a><h2>Property Details</h2> +<div class="refsect2"> +<a name="GstDTMFSrc--interval"></a><h3>The <code class="literal">"interval"</code> property</h3> +<pre class="programlisting"> "interval" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> +<p>Interval in ms between two tone packets.</p> +<p>Allowed values: [10,50]</p> +<p>Default value: 50</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-dtmfsrc.see-also"></a><h2>See Also</h2> +rtpdtmsrc, rtpdtmfmuxx +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-dv1394src.html b/docs/plugins/html/gst-plugins-good-plugins-dv1394src.html index 85ff97028452511b111ebc59a3e0b1de5a371dbe..caccf970cca004d05b44848d1539a9594aa1d607 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dv1394src.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dv1394src.html @@ -3,18 +3,18 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>dv1394src</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> -<link rel="prev" href="gst-plugins-good-plugins-directsoundsink.html" title="directsoundsink"> +<link rel="prev" href="gst-plugins-good-plugins-dtmfsrc.html" title="dtmfsrc"> <link rel="next" href="gst-plugins-good-plugins-dvdec.html" title="dvdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> <tr valign="middle"> -<td><a accesskey="p" href="gst-plugins-good-plugins-directsoundsink.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="gst-plugins-good-plugins-dtmfsrc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> @@ -64,7 +64,7 @@ <a name="gst-plugins-good-plugins-dv1394src.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstDV1394Src implements - <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUriHandler.html#GstURIHandler">GstURIHandler</a> and GstPropertyProbe.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUriHandler.html#GstURIHandler">GstURIHandler</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstpropertyprobe.html#GstPropertyProbe">GstPropertyProbe</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-dv1394src.properties"></a><h2>Properties</h2> @@ -90,9 +90,12 @@ GstDV1394Src implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp5887584"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.45.8.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -113,9 +116,12 @@ GstDV1394Src implements </div> <hr> <div class="refsect2"> -<a name="idp6345728"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.45.8.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -219,8 +225,11 @@ GstDV1394Src implements <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstdv1394src</code></em> :</span></p></td> @@ -237,6 +246,6 @@ GstDV1394Src implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-dvdec.html b/docs/plugins/html/gst-plugins-good-plugins-dvdec.html index 932b9f3cc576e56f6f4d1ec4119d65fdecb058a6..75237d4be17bcd9181f39f78cb63643aeb18e7f5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dvdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dvdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>dvdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-dv1394src.html" title="dv1394src"> <link rel="next" href="gst-plugins-good-plugins-dvdemux.html" title="dvdemux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -68,9 +68,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp12061488"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.46.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -91,9 +94,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp13340688"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.46.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -113,8 +119,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -182,6 +191,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-dvdemux.html b/docs/plugins/html/gst-plugins-good-plugins-dvdemux.html index 8442b77daf6a06032c650f14fd0c25f234d0063f..ebbf8311e18d22d0270baf218c85cd9ffc9c7c4b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dvdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dvdemux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>dvdemux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-dvdec.html" title="dvdec"> <link rel="next" href="gst-plugins-good-plugins-edgetv.html" title="edgetv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -57,9 +57,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6809760"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.47.5.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -80,9 +83,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp8043472"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.47.5.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -102,8 +108,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -123,8 +132,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -161,6 +173,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-edgetv.html b/docs/plugins/html/gst-plugins-good-plugins-edgetv.html index be51ff6812b7347509497298acf17ad04ab6c02a..7e8b711616d904970ca913a09ac1e8c3763508ac 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-edgetv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-edgetv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>edgetv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-dvdemux.html" title="dvdemux"> <link rel="next" href="gst-plugins-good-plugins-equalizer-10bands.html" title="equalizer-10bands"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -63,7 +63,7 @@ computer way. <p> </p> <div class="refsect2"> -<a name="idp10558800"></a><h3>Example launch line</h3> +<a name="id-1.2.48.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -81,9 +81,12 @@ computer way. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp5916576"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.48.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -104,9 +107,12 @@ computer way. </div> <hr> <div class="refsect2"> -<a name="idp13310560"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.48.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -126,8 +132,11 @@ computer way. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -164,6 +173,6 @@ computer way. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-equalizer-10bands.html b/docs/plugins/html/gst-plugins-good-plugins-equalizer-10bands.html index 9cd0cd0e5d357cb161ce05a37ced58e8f3b9464d..e72bb128b98ee099c3cc55fdd51113cb95787a99 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-equalizer-10bands.html +++ b/docs/plugins/html/gst-plugins-good-plugins-equalizer-10bands.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>equalizer-10bands</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-edgetv.html" title="edgetv"> <link rel="next" href="gst-plugins-good-plugins-equalizer-3bands.html" title="equalizer-3bands"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -89,7 +89,7 @@ frequency bands between 30 Hz and 15 kHz. <p> </p> <div class="refsect2"> -<a name="idp10493440"></a><h3>Example launch line</h3> +<a name="id-1.2.49.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -107,9 +107,12 @@ frequency bands between 30 Hz and 15 kHz. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp11034496"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.49.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -130,9 +133,12 @@ frequency bands between 30 Hz and 15 kHz. </div> <hr> <div class="refsect2"> -<a name="idp12732432"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.49.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -152,8 +158,11 @@ frequency bands between 30 Hz and 15 kHz. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -272,6 +281,6 @@ frequency bands between 30 Hz and 15 kHz. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-equalizer-3bands.html b/docs/plugins/html/gst-plugins-good-plugins-equalizer-3bands.html index bf9a47e869d5201997547b67d7d70ba35644c2bc..0d82b107531c4d217d66fc881eb5b30191a1b5e5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-equalizer-3bands.html +++ b/docs/plugins/html/gst-plugins-good-plugins-equalizer-3bands.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>equalizer-3bands</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-equalizer-10bands.html" title="equalizer-10bands"> <link rel="next" href="gst-plugins-good-plugins-equalizer-nbands.html" title="equalizer-nbands"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -82,7 +82,7 @@ medium frequency and high frequency band. <p> </p> <div class="refsect2"> -<a name="idp13032048"></a><h3>Example launch line</h3> +<a name="id-1.2.50.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -100,9 +100,12 @@ medium frequency and high frequency band. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7433952"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.50.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -123,9 +126,12 @@ medium frequency and high frequency band. </div> <hr> <div class="refsect2"> -<a name="idp10233872"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.50.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -145,8 +151,11 @@ medium frequency and high frequency band. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -209,6 +218,6 @@ medium frequency and high frequency band. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-equalizer-nbands.html b/docs/plugins/html/gst-plugins-good-plugins-equalizer-nbands.html index fe3b36e4196ad00709b71b3cbcbaa5a9e9e6c83f..0614b873c7012f2d2b076558f13efc5fb28faa7b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-equalizer-nbands.html +++ b/docs/plugins/html/gst-plugins-good-plugins-equalizer-nbands.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>equalizer-nbands</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-equalizer-3bands.html" title="equalizer-3bands"> <link rel="next" href="gst-plugins-good-plugins-flacdec.html" title="flacdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -81,7 +81,7 @@ the center frequency, band width and gain. <p> </p> <div class="refsect2"> -<a name="idp7478336"></a><h3>Example launch line</h3> +<a name="id-1.2.51.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -98,7 +98,7 @@ the center frequency, band width and gain. </p> <hr> <div class="refsect2"> -<a name="idp8811840"></a><h3>Example code</h3> +<a name="id-1.2.51.7.3.2"></a><h3>Example code</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -190,9 +190,12 @@ the center frequency, band width and gain. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10758976"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.51.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -213,9 +216,12 @@ the center frequency, band width and gain. </div> <hr> <div class="refsect2"> -<a name="idp14137664"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.51.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -235,8 +241,11 @@ the center frequency, band width and gain. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -283,6 +292,6 @@ the center frequency, band width and gain. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-flacdec.html b/docs/plugins/html/gst-plugins-good-plugins-flacdec.html index 62fc75b82ce1b0b056cf9166c0a8f9df7c2888cc..78b729cecfaa083b6dbc18aca8984a3f00bf5ae7 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flacdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flacdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>flacdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-equalizer-nbands.html" title="equalizer-nbands"> <link rel="next" href="gst-plugins-good-plugins-flacenc.html" title="flacenc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -58,9 +58,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp11457088"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.52.5.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -81,9 +84,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp10655248"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.52.5.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -103,8 +109,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -141,6 +150,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-flacenc.html b/docs/plugins/html/gst-plugins-good-plugins-flacenc.html index 6a2697fa6ad7a851c76c179e622e5054a345fefb..6fb08aceef188f56f866679f96e80efa8eed40d4 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flacenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flacenc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>flacenc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-flacdec.html" title="flacdec"> <link rel="next" href="gst-plugins-good-plugins-flacparse.html" title="flacparse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -88,9 +88,12 @@ GstFlacEnc implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp11967952"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.53.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -111,9 +114,12 @@ GstFlacEnc implements </div> <hr> <div class="refsect2"> -<a name="idp8915104"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.53.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -133,8 +139,11 @@ GstFlacEnc implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -285,6 +294,6 @@ GstFlacEnc implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-flacparse.html b/docs/plugins/html/gst-plugins-good-plugins-flacparse.html index 2d1b7595349476128ccacc81b3705fba1131eb9a..ea217e20797612803adeef3b01e8e4301953120c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flacparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flacparse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>flacparse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-flacenc.html" title="flacenc"> <link rel="next" href="gst-plugins-good-plugins-flactag.html" title="flactag"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -80,7 +80,7 @@ format file to an ogg bitstream. <p> </p> <div class="refsect2"> -<a name="idp7709728"></a><h3>Example pipelines</h3> +<a name="id-1.2.54.6.4.1"></a><h3>Example pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -102,9 +102,12 @@ buffer has the timestamp, duration, offset, and offset_end set. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp14137952"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.54.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -125,9 +128,12 @@ buffer has the timestamp, duration, offset, and offset_end set. </div> <hr> <div class="refsect2"> -<a name="idp11696240"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.54.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -147,8 +153,11 @@ buffer has the timestamp, duration, offset, and offset_end set. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -198,6 +207,6 @@ flacdec, oggdemux, vorbisparse </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-flactag.html b/docs/plugins/html/gst-plugins-good-plugins-flactag.html index eb8395d55bdc6d122fce13402b1a8fab0ed95472..9a6e04d52a909118911cd1bd5155c7da34dd9573 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flactag.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flactag.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>flactag</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-flacparse.html" title="flacparse"> <link rel="next" href="gst-plugins-good-plugins-flvdemux.html" title="flvdemux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -65,9 +65,12 @@ GstFlacTag implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10448688"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.55.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -88,9 +91,12 @@ GstFlacTag implements </div> <hr> <div class="refsect2"> -<a name="idp9567712"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.55.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -110,8 +116,11 @@ GstFlacTag implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -148,6 +157,6 @@ GstFlacTag implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html b/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html index 77d68309ff87ffc17f0fe7dedac2382ab06827ce..5a9e61148ad0d67189559cb3d68f80ad94288f58 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>flvdemux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-flactag.html" title="flactag"> <link rel="next" href="gst-plugins-good-plugins-flvmux.html" title="flvmux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -60,7 +60,7 @@ flvdemux demuxes an FLV file into the different contained streams. <p> </p> <div class="refsect2"> -<a name="idp12607568"></a><h3>Example launch line</h3> +<a name="id-1.2.56.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -78,9 +78,12 @@ flvdemux demuxes an FLV file into the different contained streams. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8766880"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.56.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -101,9 +104,12 @@ flvdemux demuxes an FLV file into the different contained streams. </div> <hr> <div class="refsect2"> -<a name="idp8310288"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.56.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -123,8 +129,11 @@ flvdemux demuxes an FLV file into the different contained streams. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -172,8 +181,11 @@ flvdemux demuxes an FLV file into the different contained streams. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -226,6 +238,6 @@ flvdemux demuxes an FLV file into the different contained streams. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-flvmux.html b/docs/plugins/html/gst-plugins-good-plugins-flvmux.html index f3d372cf9c97f5979b5a33b0e54e9e0a7728a76b..289d027208212b6fe20981cdb026e07618163d12 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flvmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flvmux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>flvmux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-flvdemux.html" title="flvdemux"> <link rel="next" href="gst-plugins-good-plugins-flxdec.html" title="flxdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -77,7 +77,7 @@ flvmux muxes different streams into an FLV file. <p> </p> <div class="refsect2"> -<a name="idp11106816"></a><h3>Example launch line</h3> +<a name="id-1.2.57.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -95,9 +95,12 @@ flvmux muxes different streams into an FLV file. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp12534864"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.57.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -118,9 +121,12 @@ flvmux muxes different streams into an FLV file. </div> <hr> <div class="refsect2"> -<a name="idp10836800"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.57.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -172,8 +178,11 @@ flvmux muxes different streams into an FLV file. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -209,8 +218,11 @@ flvmux muxes different streams into an FLV file. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -267,6 +279,6 @@ duration) </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-flxdec.html b/docs/plugins/html/gst-plugins-good-plugins-flxdec.html index db04d12f20c58db02a029489bf8ae4072627494e..a32bd5d385aeb32713b5311a2246e72efd21700e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flxdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flxdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>flxdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-flvmux.html" title="flvmux"> <link rel="next" href="gst-plugins-good-plugins-gamma.html" title="gamma"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -60,9 +60,12 @@ This element decodes fli/flc/flx-video into raw video <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8060336"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.58.5.3.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -83,9 +86,12 @@ This element decodes fli/flc/flx-video into raw video </div> <hr> <div class="refsect2"> -<a name="idp9321968"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.58.5.3.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -105,8 +111,11 @@ This element decodes fli/flc/flx-video into raw video </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -143,6 +152,6 @@ This element decodes fli/flc/flx-video into raw video </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-gamma.html b/docs/plugins/html/gst-plugins-good-plugins-gamma.html index e0b67abed7019f3ae0bf467374e6122174ded585..7a826fc32ceda1c6990ccffce38ef835c2040512 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-gamma.html +++ b/docs/plugins/html/gst-plugins-good-plugins-gamma.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>gamma</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-flxdec.html" title="flxdec"> -<link rel="next" href="gst-plugins-good-plugins-gdkpixbufoverlay.html" title="gdkpixbufoverlay"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<link rel="next" href="gst-plugins-good-plugins-gdkpixbufsink.html" title="gdkpixbufsink"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -18,7 +18,7 @@ <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> -<td><a accesskey="n" href="gst-plugins-good-plugins-gdkpixbufoverlay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="gst-plugins-good-plugins-gdkpixbufsink.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr> <tr><td colspan="5" class="shortcuts"> <a href="#gst-plugins-good-plugins-gamma.synopsis" class="shortcut">Top</a> @@ -70,7 +70,7 @@ Performs gamma correction on a video stream. <p> </p> <div class="refsect2"> -<a name="idp13475872"></a><h3>Example launch line</h3> +<a name="id-1.2.59.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -102,9 +102,12 @@ Last reviewed on 2010-04-18 (0.10.22) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8130160"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.59.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -125,9 +128,12 @@ Last reviewed on 2010-04-18 (0.10.22) </div> <hr> <div class="refsect2"> -<a name="idp13560656"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.59.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -147,8 +153,11 @@ Last reviewed on 2010-04-18 (0.10.22) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -196,6 +205,6 @@ Opaque data structure. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufoverlay.html b/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufoverlay.html deleted file mode 100644 index 59064d4b45902f4fa19d663a892d3c531978dc5b..0000000000000000000000000000000000000000 --- a/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufoverlay.html +++ /dev/null @@ -1,225 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> -<title>gdkpixbufoverlay</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> -<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> -<link rel="prev" href="gst-plugins-good-plugins-gamma.html" title="gamma"> -<link rel="next" href="gst-plugins-good-plugins-gdkpixbufsink.html" title="gdkpixbufsink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> -<link rel="stylesheet" href="style.css" type="text/css"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> -<tr valign="middle"> -<td><a accesskey="p" href="gst-plugins-good-plugins-gamma.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> -<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> -<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> -<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> -<td><a accesskey="n" href="gst-plugins-good-plugins-gdkpixbufsink.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> -</tr> -<tr><td colspan="5" class="shortcuts"> -<a href="#gst-plugins-good-plugins-gdkpixbufoverlay.synopsis" class="shortcut">Top</a> -  | - <a href="#gst-plugins-good-plugins-gdkpixbufoverlay.description" class="shortcut">Description</a> -  | - <a href="#gst-plugins-good-plugins-gdkpixbufoverlay.object-hierarchy" class="shortcut">Object Hierarchy</a> -  | - <a href="#gst-plugins-good-plugins-gdkpixbufoverlay.properties" class="shortcut">Properties</a> -</td></tr> -</table> -<div class="refentry"> -<a name="gst-plugins-good-plugins-gdkpixbufoverlay"></a><div class="titlepage"></div> -<div class="refnamediv"><table width="100%"><tr> -<td valign="top"> -<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-gdkpixbufoverlay.top_of_page"></a>gdkpixbufoverlay</span></h2> -<p>gdkpixbufoverlay — Overlay an image onto a video stream</p> -</td> -<td valign="top" align="right"></td> -</tr></table></div> -<div class="refsynopsisdiv"> -<a name="gst-plugins-good-plugins-gdkpixbufoverlay.synopsis"></a><h2>Synopsis</h2> -<a name="GstGdkPixbufOverlay"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay-struct" title="struct GstGdkPixbufOverlay">GstGdkPixbufOverlay</a>; -</pre> -</div> -<div class="refsect1"> -<a name="gst-plugins-good-plugins-gdkpixbufoverlay.object-hierarchy"></a><h2>Object Hierarchy</h2> -<pre class="synopsis"> - <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> - +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> - +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> - +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> - +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseTransform.html">GstBaseTransform</a> - +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter">GstVideoFilter</a> - +----GstGdkPixbufOverlay -</pre> -</div> -<div class="refsect1"> -<a name="gst-plugins-good-plugins-gdkpixbufoverlay.properties"></a><h2>Properties</h2> -<pre class="synopsis"> - "<a class="link" href="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--location" title='The "location" property'>location</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write - "<a class="link" href="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--offset-x" title='The "offset-x" property'>offset-x</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write - "<a class="link" href="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--offset-y" title='The "offset-y" property'>offset-y</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write - "<a class="link" href="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--overlay-height" title='The "overlay-height" property'>overlay-height</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write - "<a class="link" href="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--overlay-width" title='The "overlay-width" property'>overlay-width</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write - "<a class="link" href="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--relative-x" title='The "relative-x" property'>relative-x</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write - "<a class="link" href="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--relative-y" title='The "relative-y" property'>relative-y</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write - "<a class="link" href="gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--alpha" title='The "alpha" property'>alpha</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write -</pre> -</div> -<div class="refsect1"> -<a name="gst-plugins-good-plugins-gdkpixbufoverlay.description"></a><h2>Description</h2> -<div class="refsynopsisdiv"> -<h2>Synopsis</h2> -<div class="refsect2"> -<a name="idp6209632"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">plugin</span></p></td> -<td> - <a class="link" href="gst-plugins-good-plugins-plugin-gdkpixbuf.html#plugin-gdkpixbuf">gdkpixbuf</a> - </td> -</tr> -<tr> -<td><p><span class="term">author</span></p></td> -<td>Tim-Philipp Müller <tim centricular net></td> -</tr> -<tr> -<td><p><span class="term">class</span></p></td> -<td>Filter/Effect/Video</td> -</tr> -</tbody> -</table></div> -</div> -<hr> -<div class="refsect2"> -<a name="idp14002320"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">name</span></p></td> -<td>sink</td> -</tr> -<tr> -<td><p><span class="term">direction</span></p></td> -<td>sink</td> -</tr> -<tr> -<td><p><span class="term">presence</span></p></td> -<td>always</td> -</tr> -<tr> -<td><p><span class="term">details</span></p></td> -<td>video/x-raw, format=(string){ RGBx, RGB, BGR, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, I420, YV12, AYUV, YUY2, UYVY, v308, v210, v216, Y41B, Y42B, Y444, YVYU, NV12, NV21, UYVP, RGB16, BGR16, RGB15, BGR15, UYVP, A420, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, GRAY8, GRAY16_BE, GRAY16_LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> -</tr> -</tbody> -</table></div> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">name</span></p></td> -<td>src</td> -</tr> -<tr> -<td><p><span class="term">direction</span></p></td> -<td>source</td> -</tr> -<tr> -<td><p><span class="term">presence</span></p></td> -<td>always</td> -</tr> -<tr> -<td><p><span class="term">details</span></p></td> -<td>video/x-raw, format=(string){ RGBx, RGB, BGR, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, I420, YV12, AYUV, YUY2, UYVY, v308, v210, v216, Y41B, Y42B, Y444, YVYU, NV12, NV21, UYVP, RGB16, BGR16, RGB15, BGR15, UYVP, A420, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, GRAY8, GRAY16_BE, GRAY16_LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> -</tr> -</tbody> -</table></div> -</div> -</div> -<p> -</p> -</div> -<div class="refsect1"> -<a name="gst-plugins-good-plugins-gdkpixbufoverlay.details"></a><h2>Details</h2> -<div class="refsect2"> -<a name="GstGdkPixbufOverlay-struct"></a><h3>struct GstGdkPixbufOverlay</h3> -<pre class="programlisting">struct GstGdkPixbufOverlay;</pre> -<p> -</p> -</div> -</div> -<div class="refsect1"> -<a name="gst-plugins-good-plugins-gdkpixbufoverlay.property-details"></a><h2>Property Details</h2> -<div class="refsect2"> -<a name="GstGdkPixbufOverlay--location"></a><h3>The <code class="literal">"location"</code> property</h3> -<pre class="programlisting"> "location" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre> -<p>Location of image file to overlay.</p> -<p>Default value: NULL</p> -</div> -<hr> -<div class="refsect2"> -<a name="GstGdkPixbufOverlay--offset-x"></a><h3>The <code class="literal">"offset-x"</code> property</h3> -<pre class="programlisting"> "offset-x" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> -<p>Horizontal offset of overlay image in pixels from top-left corner of video image.</p> -<p>Default value: 0</p> -</div> -<hr> -<div class="refsect2"> -<a name="GstGdkPixbufOverlay--offset-y"></a><h3>The <code class="literal">"offset-y"</code> property</h3> -<pre class="programlisting"> "offset-y" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> -<p>Vertical offset of overlay image in pixels from top-left corner of video image.</p> -<p>Default value: 0</p> -</div> -<hr> -<div class="refsect2"> -<a name="GstGdkPixbufOverlay--overlay-height"></a><h3>The <code class="literal">"overlay-height"</code> property</h3> -<pre class="programlisting"> "overlay-height" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> -<p>Height of overlay image in pixels (0 = same as overlay image).</p> -<p>Allowed values: >= 0</p> -<p>Default value: 0</p> -</div> -<hr> -<div class="refsect2"> -<a name="GstGdkPixbufOverlay--overlay-width"></a><h3>The <code class="literal">"overlay-width"</code> property</h3> -<pre class="programlisting"> "overlay-width" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> -<p>Width of overlay image in pixels (0 = same as overlay image).</p> -<p>Allowed values: >= 0</p> -<p>Default value: 0</p> -</div> -<hr> -<div class="refsect2"> -<a name="GstGdkPixbufOverlay--relative-x"></a><h3>The <code class="literal">"relative-x"</code> property</h3> -<pre class="programlisting"> "relative-x" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write</pre> -<p>Horizontal offset of overlay image in fractions of video image width, from top-left corner of video image.</p> -<p>Allowed values: [0,1]</p> -<p>Default value: 0</p> -</div> -<hr> -<div class="refsect2"> -<a name="GstGdkPixbufOverlay--relative-y"></a><h3>The <code class="literal">"relative-y"</code> property</h3> -<pre class="programlisting"> "relative-y" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write</pre> -<p>Vertical offset of overlay image in fractions of video image height, from top-left corner of video image.</p> -<p>Allowed values: [0,1]</p> -<p>Default value: 0</p> -</div> -<hr> -<div class="refsect2"> -<a name="GstGdkPixbufOverlay--alpha"></a><h3>The <code class="literal">"alpha"</code> property</h3> -<pre class="programlisting"> "alpha" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write</pre> -<p>Global alpha of overlay image.</p> -<p>Allowed values: [0,1]</p> -<p>Default value: 1</p> -</div> -</div> -</div> -<div class="footer"> -<hr> - Generated by GTK-Doc V1.18</div> -</body> -</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufsink.html b/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufsink.html index 1484ba3263d720214bcd8a112e6f856126329b44..f8aa1263174692ca82c13545f39b5bc0e560e180 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufsink.html @@ -3,18 +3,18 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>gdkpixbufsink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> -<link rel="prev" href="gst-plugins-good-plugins-gdkpixbufoverlay.html" title="gdkpixbufoverlay"> +<link rel="prev" href="gst-plugins-good-plugins-gamma.html" title="gamma"> <link rel="next" href="gst-plugins-good-plugins-goom.html" title="goom"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> <tr valign="middle"> -<td><a accesskey="p" href="gst-plugins-good-plugins-gdkpixbufoverlay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="gst-plugins-good-plugins-gamma.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> @@ -59,7 +59,7 @@ <div class="refsect1"> <a name="gst-plugins-good-plugins-gdkpixbufsink.properties"></a><h2>Properties</h2> <pre class="synopsis"> - "<a class="link" href="gst-plugins-good-plugins-gdkpixbufsink.html#GstGdkPixbufSink--last-pixbuf" title='The "last-pixbuf" property'>last-pixbuf</a>" <span class="type">GdkPixbuf</span>* : Read + "<a class="link" href="gst-plugins-good-plugins-gdkpixbufsink.html#GstGdkPixbufSink--last-pixbuf" title='The "last-pixbuf" property'>last-pixbuf</a>" <a href="http://library.gnome.org/devel/gdk-pixbuf/unstable/gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a>* : Read "<a class="link" href="gst-plugins-good-plugins-gdkpixbufsink.html#GstGdkPixbufSink--send-messages" title='The "send-messages" property'>send-messages</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-gdkpixbufsink.html#GstGdkPixbufSink--post-messages" title='The "post-messages" property'>post-messages</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write </pre> @@ -69,9 +69,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp12306336"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.60.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -92,9 +95,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp11347488"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.60.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -136,7 +142,7 @@ <a name="gst-plugins-good-plugins-gdkpixbufsink.property-details"></a><h2>Property Details</h2> <div class="refsect2"> <a name="GstGdkPixbufSink--last-pixbuf"></a><h3>The <code class="literal">"last-pixbuf"</code> property</h3> -<pre class="programlisting"> "last-pixbuf" <span class="type">GdkPixbuf</span>* : Read</pre> +<pre class="programlisting"> "last-pixbuf" <a href="http://library.gnome.org/devel/gdk-pixbuf/unstable/gdk-pixbuf-The-GdkPixbuf-Structure.html#GdkPixbuf"><span class="type">GdkPixbuf</span></a>* : Read</pre> <p>Last GdkPixbuf object rendered.</p> </div> <hr> @@ -157,6 +163,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-goom.html b/docs/plugins/html/gst-plugins-good-plugins-goom.html index ae6acf1df8a9bf97df6faa7249796ed8c70c6432..7014ace66295a6afe3a6755078b3050091abccdf 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-goom.html +++ b/docs/plugins/html/gst-plugins-good-plugins-goom.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>goom</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-gdkpixbufsink.html" title="gdkpixbufsink"> <link rel="next" href="gst-plugins-good-plugins-goom2k1.html" title="goom2k1"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -61,7 +61,7 @@ based on the incoming audio signal. <p> </p> <div class="refsect2"> -<a name="idp11453232"></a><h3>Example launch line</h3> +<a name="id-1.2.61.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -79,9 +79,12 @@ based on the incoming audio signal. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp12340112"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.61.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -102,9 +105,12 @@ based on the incoming audio signal. </div> <hr> <div class="refsect2"> -<a name="idp10735056"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.61.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -128,8 +134,11 @@ based on the incoming audio signal. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -170,6 +179,6 @@ synaesthesia </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-goom2k1.html b/docs/plugins/html/gst-plugins-good-plugins-goom2k1.html index f251bb25e6c11a559edd6e29ac1dba95c4bdd975..c492865a2d6c06341aef6a5b8c876b9b65e8f867 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-goom2k1.html +++ b/docs/plugins/html/gst-plugins-good-plugins-goom2k1.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>goom2k1</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-goom.html" title="goom"> <link rel="next" href="gst-plugins-good-plugins-hdv1394src.html" title="hdv1394src"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -62,7 +62,7 @@ visualisation. Also available is goom2k4, with a different look. <p> </p> <div class="refsect2"> -<a name="idp5458224"></a><h3>Example launch line</h3> +<a name="id-1.2.62.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -80,9 +80,12 @@ visualisation. Also available is goom2k4, with a different look. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp11333200"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.62.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -103,9 +106,12 @@ visualisation. Also available is goom2k4, with a different look. </div> <hr> <div class="refsect2"> -<a name="idp10553728"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.62.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -129,8 +135,11 @@ visualisation. Also available is goom2k4, with a different look. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -171,6 +180,6 @@ goom, synaesthesia </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-hdv1394src.html b/docs/plugins/html/gst-plugins-good-plugins-hdv1394src.html index 4d67aa22a7858cbebd024ea16a21baa2aac712a4..4ca2fd16b95a36f1eaf2fa091bb131eaae18ed46 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-hdv1394src.html +++ b/docs/plugins/html/gst-plugins-good-plugins-hdv1394src.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>hdv1394src</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-goom2k1.html" title="goom2k1"> <link rel="next" href="gst-plugins-good-plugins-icydemux.html" title="icydemux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -62,7 +62,7 @@ <a name="gst-plugins-good-plugins-hdv1394src.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstHDV1394Src implements - <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUriHandler.html#GstURIHandler">GstURIHandler</a> and GstPropertyProbe.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUriHandler.html#GstURIHandler">GstURIHandler</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstpropertyprobe.html#GstPropertyProbe">GstPropertyProbe</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-hdv1394src.properties"></a><h2>Properties</h2> @@ -79,9 +79,12 @@ GstHDV1394Src implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp13657280"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.63.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -102,9 +105,12 @@ GstHDV1394Src implements </div> <hr> <div class="refsect2"> -<a name="idp13208992"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.63.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -180,6 +186,6 @@ GstHDV1394Src implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-icydemux.html b/docs/plugins/html/gst-plugins-good-plugins-icydemux.html index c5f35c67bb49c903951bd2df5437842b5fc9e9cb..a0d4fe64468ab636aef86fc5af6779d7989dc986 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-icydemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-icydemux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>icydemux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-hdv1394src.html" title="hdv1394src"> <link rel="next" href="gst-plugins-good-plugins-id3demux.html" title="id3demux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -64,7 +64,7 @@ on outgoing buffers. <p> </p> <div class="refsect2"> -<a name="idp7688128"></a><h3>Example launch line</h3> +<a name="id-1.2.64.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -85,9 +85,12 @@ or giosrc instead of souphttpsrc should also work.) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp12043920"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.64.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -108,9 +111,12 @@ or giosrc instead of souphttpsrc should also work.) </div> <hr> <div class="refsect2"> -<a name="idp13656576"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.64.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -130,8 +136,11 @@ or giosrc instead of souphttpsrc should also work.) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -168,6 +177,6 @@ or giosrc instead of souphttpsrc should also work.) </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-id3demux.html b/docs/plugins/html/gst-plugins-good-plugins-id3demux.html index c2983d6fd87064ea8979edd2f9e38795b58df33d..0e94409b56d45089d850071b8caaaaf6bd4f2901 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-id3demux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-id3demux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>id3demux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-icydemux.html" title="icydemux"> <link rel="next" href="gst-plugins-good-plugins-id3v2mux.html" title="id3v2mux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -83,7 +83,7 @@ relied on libid3tag from the MAD project. <p> </p> <div class="refsect2"> -<a name="idp10540912"></a><h3>Example launch line</h3> +<a name="id-1.2.65.6.5.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -103,9 +103,12 @@ the appropriate mime type set on buffers produced from id3demux. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10291600"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.65.6.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -126,9 +129,12 @@ the appropriate mime type set on buffers produced from id3demux. </div> <hr> <div class="refsect2"> -<a name="idp12381392"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.65.6.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -148,8 +154,11 @@ the appropriate mime type set on buffers produced from id3demux. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -195,6 +204,6 @@ the appropriate mime type set on buffers produced from id3demux. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-id3v2mux.html b/docs/plugins/html/gst-plugins-good-plugins-id3v2mux.html index cb1ce8b1e8e43b32baff93fae964012f0edd1d1a..803f01e8469134174ee4de25b2b57b34f048c86e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-id3v2mux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-id3v2mux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>id3v2mux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-id3demux.html" title="id3demux"> <link rel="next" href="gst-plugins-good-plugins-imagefreeze.html" title="imagefreeze"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -66,9 +66,12 @@ GstId3v2Mux implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7096544"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.66.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -89,9 +92,12 @@ GstId3v2Mux implements </div> <hr> <div class="refsect2"> -<a name="idp14641408"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.66.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -111,8 +117,11 @@ GstId3v2Mux implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -149,6 +158,6 @@ GstId3v2Mux implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-imagefreeze.html b/docs/plugins/html/gst-plugins-good-plugins-imagefreeze.html index a4d410b9d41fa73c711c763615936092fde812d0..bb3ec370d28093767772f9010fb39a2a12589e8e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-imagefreeze.html +++ b/docs/plugins/html/gst-plugins-good-plugins-imagefreeze.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>imagefreeze</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-id3v2mux.html" title="id3v2mux"> <link rel="next" href="gst-plugins-good-plugins-interleave.html" title="interleave"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -62,7 +62,7 @@ by downstream, allows seeking and answers queries. <p> </p> <div class="refsect2"> -<a name="idp14187104"></a><h3>Example launch line</h3> +<a name="id-1.2.67.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -80,9 +80,12 @@ by downstream, allows seeking and answers queries. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8765840"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.67.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -103,9 +106,12 @@ by downstream, allows seeking and answers queries. </div> <hr> <div class="refsect2"> -<a name="idp9475824"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.67.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -125,8 +131,11 @@ by downstream, allows seeking and answers queries. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -163,6 +172,6 @@ by downstream, allows seeking and answers queries. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-interleave.html b/docs/plugins/html/gst-plugins-good-plugins-interleave.html index f3c8cd0637ea1bc7c0ee00fd98894fc97c08f583..768c9f263daef7bc2b8115cbddae3275b6976fc0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-interleave.html +++ b/docs/plugins/html/gst-plugins-good-plugins-interleave.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>interleave</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-imagefreeze.html" title="imagefreeze"> <link rel="next" href="gst-plugins-good-plugins-ismlmux.html" title="ismlmux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -82,7 +82,7 @@ The channel number of every sinkpad in the out can be retrieved from the "channe <p> </p> <div class="refsect2"> -<a name="idp9931760"></a><h3>Example launch line</h3> +<a name="id-1.2.68.6.6.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -113,9 +113,12 @@ channels exchanged. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10952512"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.68.6.7.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -136,9 +139,12 @@ channels exchanged. </div> <hr> <div class="refsect2"> -<a name="idp13543472"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.68.6.7.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -158,8 +164,11 @@ channels exchanged. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -231,6 +240,6 @@ deinterleave </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-ismlmux.html b/docs/plugins/html/gst-plugins-good-plugins-ismlmux.html index d3ed27807b212ade2e08afa80a3b8efee9d25ca2..beeadcdbaef60016bcb47e6d56841163107cc5f4 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-ismlmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-ismlmux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ismlmux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-interleave.html" title="interleave"> <link rel="next" href="gst-plugins-good-plugins-jackaudiosrc.html" title="jackaudiosrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -96,7 +96,7 @@ presentation-timestamp. <p> </p> <div class="refsect2"> -<a name="idp10480544"></a><h3>Example pipelines</h3> +<a name="id-1.2.69.4.8.1"></a><h3>Example pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -119,9 +119,12 @@ Documentation last reviewed on 2011-04-21 <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10680912"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.69.4.10.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -142,9 +145,12 @@ Documentation last reviewed on 2011-04-21 </div> <hr> <div class="refsect2"> -<a name="idp6826720"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.69.4.10.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -168,8 +174,11 @@ Documentation last reviewed on 2011-04-21 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -197,8 +206,11 @@ Documentation last reviewed on 2011-04-21 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -229,6 +241,6 @@ Documentation last reviewed on 2011-04-21 </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-jackaudiosink.html b/docs/plugins/html/gst-plugins-good-plugins-jackaudiosink.html index d32492ecea7d71d3922b7ddb621355ccf5c7cc9d..cc9ebfdfa35390834542895d4994baa1a688766c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-jackaudiosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-jackaudiosink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>jackaudiosink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-jackaudiosrc.html" title="jackaudiosrc"> <link rel="next" href="gst-plugins-good-plugins-jpegdec.html" title="jpegdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -71,9 +71,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15028368"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.71.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -94,9 +97,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp8507472"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.71.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -168,6 +174,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-jackaudiosrc.html b/docs/plugins/html/gst-plugins-good-plugins-jackaudiosrc.html index 8220abfd0955212cadfdca627e90c2494d9a12e9..a4df480f864af5eccc316a03b39ff43dd9e0a7a7 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-jackaudiosrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-jackaudiosrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>jackaudiosrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-ismlmux.html" title="ismlmux"> <link rel="next" href="gst-plugins-good-plugins-jackaudiosink.html" title="jackaudiosink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -72,9 +72,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15642352"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.70.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -95,9 +98,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp14135472"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.70.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -169,6 +175,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-jpegdec.html b/docs/plugins/html/gst-plugins-good-plugins-jpegdec.html index 62e96621cd51c2ae66d9ebe6286ead6cf22e75ad..b284e221ee00094e9a551b7fd7fa24dbc415098c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-jpegdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-jpegdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>jpegdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-jackaudiosink.html" title="jackaudiosink"> <link rel="next" href="gst-plugins-good-plugins-jpegenc.html" title="jpegenc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -67,9 +67,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7630624"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.72.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -90,9 +93,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp12698544"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.72.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -112,8 +118,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -167,6 +176,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-jpegenc.html b/docs/plugins/html/gst-plugins-good-plugins-jpegenc.html index 6ecc94eb12cd9bc444bd411c830876ea8d60c6cc..828590ee1f0c7b0fa9b34c3f296caaa4f72f8842 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-jpegenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-jpegenc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>jpegenc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-jpegdec.html" title="jpegdec"> <link rel="next" href="gst-plugins-good-plugins-level.html" title="level"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -83,9 +83,12 @@ GstJpegEnc implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp11983664"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.73.8.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -106,9 +109,12 @@ GstJpegEnc implements </div> <hr> <div class="refsect2"> -<a name="idp2240256"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.73.8.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -128,8 +134,11 @@ GstJpegEnc implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -188,8 +197,11 @@ GstJpegEnc implements <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstjpegenc</code></em> :</span></p></td> @@ -206,6 +218,6 @@ GstJpegEnc implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-level.html b/docs/plugins/html/gst-plugins-good-plugins-level.html index 0adea511c0d630582d4961966bde8eb55abefa04..8377f1deb739f284f289791a00d3af3eb74902d5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-level.html +++ b/docs/plugins/html/gst-plugins-good-plugins-level.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>level</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-jpegenc.html" title="jpegenc"> <link rel="next" href="gst-plugins-good-plugins-matroskamux.html" title="matroskamux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -62,6 +62,7 @@ "<a class="link" href="gst-plugins-good-plugins-level.html#GstLevel--message" title='The "message" property'>message</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-level.html#GstLevel--peak-falloff" title='The "peak-falloff" property'>peak-falloff</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-level.html#GstLevel--peak-ttl" title='The "peak-ttl" property'>peak-ttl</a>" <span class="type">guint64</span> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-level.html#GstLevel--post-messages" title='The "post-messages" property'>post-messages</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write </pre> </div> <div class="refsect1"> @@ -73,7 +74,7 @@ is <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.ht after each interval of time given by the <a class="link" href="gst-plugins-good-plugins-level.html#GstLevel--interval" title='The "interval" property'><span class="type">"interval"</span></a> property. The message's structure contains these fields: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"><p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> <code class="classname">"timestamp"</code>: @@ -127,7 +128,7 @@ The message's structure contains these fields: <p> </p> <div class="refsect2"> -<a name="idp15582496"></a><h3>Example application</h3> +<a name="id-1.2.74.6.3.1"></a><h3>Example application</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -268,7 +269,10 @@ The message's structure contains these fields: 134 135 136 -137</pre></td> +137 +138 +139 +140</pre></td> <td class="listing_code"><pre class="programlisting"><span class="comment">/* GStreamer</span> <span class="comment"> * Copyright (C) 2000,2001,2002,2003,2005</span> <span class="comment"> * Thomas Vander Stichele <thomas at apestaart dot org></span> @@ -285,8 +289,8 @@ The message's structure contains these fields: <span class="comment"> *</span> <span class="comment"> * You should have received a copy of the GNU Library General Public</span> <span class="comment"> * License along with this library; if not, write to the</span> -<span class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330,</span> -<span class="comment"> * Boston, MA 02111-1307, USA.</span> +<span class="comment"> * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span> +<span class="comment"> * Boston, MA 02110-1301, USA.</span> <span class="comment"> */</span> <span class="gtkdoc ppc">#include <string.h></span> @@ -311,34 +315,37 @@ The message's structure contains these fields: gdouble rms<span class="gtkdoc opt">;</span> <span class="gtkdoc kwb">const</span> GValue <span class="gtkdoc opt">*</span>array_val<span class="gtkdoc opt">;</span> <span class="gtkdoc kwb">const</span> GValue <span class="gtkdoc opt">*</span>value<span class="gtkdoc opt">;</span> - GValueArray <span class="gtkdoc opt">*</span>arr<span class="gtkdoc opt">;</span> - + GValueArray <span class="gtkdoc opt">*</span>rms_arr<span class="gtkdoc opt">, *</span>peak_arr<span class="gtkdoc opt">, *</span>decay_arr<span class="gtkdoc opt">;</span> gint i<span class="gtkdoc opt">;</span> <span class="keyword">if</span> <span class="gtkdoc opt">(!</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#gst-structure-get-clock-time">gst_structure_get_clock_time</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">,</span> <span class="string">"endtime"</span><span class="gtkdoc opt">, &</span>endtime<span class="gtkdoc opt">))</span> <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-Message-Logging.html#g-warning">g_warning</a></span> <span class="gtkdoc opt">(</span><span class="string">"Could not parse endtime"</span><span class="gtkdoc opt">);</span> - <span class="comment">/* we can get the number of channels as the length of any of the value</span> -<span class="comment"> * lists */</span> + + <span class="comment">/* the values are packed into GValueArrays with the value per channel */</span> array_val <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#gst-structure-get-value">gst_structure_get_value</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">,</span> <span class="string">"rms"</span><span class="gtkdoc opt">);</span> - arr <span class="gtkdoc opt">= (</span>GValueArray <span class="gtkdoc opt">*)</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-boxed">g_value_get_boxed</a></span> <span class="gtkdoc opt">(</span>array_val<span class="gtkdoc opt">);</span> - channels <span class="gtkdoc opt">=</span> arr<span class="gtkdoc opt">-></span>n_values<span class="gtkdoc opt">;</span> + rms_arr <span class="gtkdoc opt">= (</span>GValueArray <span class="gtkdoc opt">*)</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-boxed">g_value_get_boxed</a></span> <span class="gtkdoc opt">(</span>array_val<span class="gtkdoc opt">);</span> + + array_val <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#gst-structure-get-value">gst_structure_get_value</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">,</span> <span class="string">"peak"</span><span class="gtkdoc opt">);</span> + peak_arr <span class="gtkdoc opt">= (</span>GValueArray <span class="gtkdoc opt">*)</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-boxed">g_value_get_boxed</a></span> <span class="gtkdoc opt">(</span>array_val<span class="gtkdoc opt">);</span> + array_val <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#gst-structure-get-value">gst_structure_get_value</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">,</span> <span class="string">"decay"</span><span class="gtkdoc opt">);</span> + decay_arr <span class="gtkdoc opt">= (</span>GValueArray <span class="gtkdoc opt">*)</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-boxed">g_value_get_boxed</a></span> <span class="gtkdoc opt">(</span>array_val<span class="gtkdoc opt">);</span> + + <span class="comment">/* we can get the number of channels as the length of any of the value</span> +<span class="comment"> * arrays */</span> + channels <span class="gtkdoc opt">=</span> rms_arr<span class="gtkdoc opt">-></span>n_values<span class="gtkdoc opt">;</span> <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-Warnings-and-Assertions.html#g-print">g_print</a></span> <span class="gtkdoc opt">(</span><span class="string">"endtime: %"</span> GST_TIME_FORMAT <span class="string">", channels: %d</span><span class="gtkdoc esc">\n</span><span class="string">"</span><span class="gtkdoc opt">,</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#GST-TIME-ARGS:CAPS">GST_TIME_ARGS</a></span> <span class="gtkdoc opt">(</span>endtime<span class="gtkdoc opt">),</span> channels<span class="gtkdoc opt">);</span> <span class="keyword">for</span> <span class="gtkdoc opt">(</span>i <span class="gtkdoc opt">=</span> <span class="number">0</span><span class="gtkdoc opt">;</span> i <span class="gtkdoc opt"><</span> channels<span class="gtkdoc opt">; ++</span>i<span class="gtkdoc opt">) {</span> <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-Warnings-and-Assertions.html#g-print">g_print</a></span> <span class="gtkdoc opt">(</span><span class="string">"channel %d</span><span class="gtkdoc esc">\n</span><span class="string">"</span><span class="gtkdoc opt">,</span> i<span class="gtkdoc opt">);</span> - array_val <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#gst-structure-get-value">gst_structure_get_value</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">,</span> <span class="string">"rms"</span><span class="gtkdoc opt">);</span> - arr <span class="gtkdoc opt">= (</span>GValueArray <span class="gtkdoc opt">*)</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-boxed">g_value_get_boxed</a></span> <span class="gtkdoc opt">(</span>array_val<span class="gtkdoc opt">);</span> - value <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-get-nth">g_value_array_get_nth</a></span> <span class="gtkdoc opt">(</span>arr<span class="gtkdoc opt">,</span> i<span class="gtkdoc opt">);</span> + value <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-get-nth">g_value_array_get_nth</a></span> <span class="gtkdoc opt">(</span>rms_arr<span class="gtkdoc opt">,</span> i<span class="gtkdoc opt">);</span> rms_dB <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-double">g_value_get_double</a></span> <span class="gtkdoc opt">(</span>value<span class="gtkdoc opt">);</span> - array_val <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#gst-structure-get-value">gst_structure_get_value</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">,</span> <span class="string">"peak"</span><span class="gtkdoc opt">);</span> - arr <span class="gtkdoc opt">= (</span>GValueArray <span class="gtkdoc opt">*)</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-boxed">g_value_get_boxed</a></span> <span class="gtkdoc opt">(</span>array_val<span class="gtkdoc opt">);</span> - value <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-get-nth">g_value_array_get_nth</a></span> <span class="gtkdoc opt">(</span>arr<span class="gtkdoc opt">,</span> i<span class="gtkdoc opt">);</span> + + value <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-get-nth">g_value_array_get_nth</a></span> <span class="gtkdoc opt">(</span>peak_arr<span class="gtkdoc opt">,</span> i<span class="gtkdoc opt">);</span> peak_dB <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-double">g_value_get_double</a></span> <span class="gtkdoc opt">(</span>value<span class="gtkdoc opt">);</span> - array_val <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#gst-structure-get-value">gst_structure_get_value</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">,</span> <span class="string">"decay"</span><span class="gtkdoc opt">);</span> - arr <span class="gtkdoc opt">= (</span>GValueArray <span class="gtkdoc opt">*)</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-boxed">g_value_get_boxed</a></span> <span class="gtkdoc opt">(</span>array_val<span class="gtkdoc opt">);</span> - value <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-get-nth">g_value_array_get_nth</a></span> <span class="gtkdoc opt">(</span>arr<span class="gtkdoc opt">,</span> i<span class="gtkdoc opt">);</span> + + value <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-get-nth">g_value_array_get_nth</a></span> <span class="gtkdoc opt">(</span>decay_arr<span class="gtkdoc opt">,</span> i<span class="gtkdoc opt">);</span> decay_dB <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-double">g_value_get_double</a></span> <span class="gtkdoc opt">(</span>value<span class="gtkdoc opt">);</span> <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-Warnings-and-Assertions.html#g-print">g_print</a></span> <span class="gtkdoc opt">(</span><span class="string">" RMS: %f dB, peak: %f dB, decay: %f dB</span><span class="gtkdoc esc">\n</span><span class="string">"</span><span class="gtkdoc opt">,</span> rms_dB<span class="gtkdoc opt">,</span> peak_dB<span class="gtkdoc opt">,</span> decay_dB<span class="gtkdoc opt">);</span> @@ -389,7 +396,7 @@ The message's structure contains these fields: <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-Message-Logging.html#g-error">g_error</a></span> <span class="gtkdoc opt">(</span><span class="string">"Failed to link level and fakesink"</span><span class="gtkdoc opt">);</span> <span class="comment">/* make sure we'll get messages */</span> - <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-set">g_object_set</a></span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span> <span class="gtkdoc opt">(</span>level<span class="gtkdoc opt">),</span> <span class="string">"message"</span><span class="gtkdoc opt">,</span> TRUE<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span> + <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-set">g_object_set</a></span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span> <span class="gtkdoc opt">(</span>level<span class="gtkdoc opt">),</span> <span class="string">"post-messages"</span><span class="gtkdoc opt">,</span> TRUE<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span> <span class="comment">/* run synced and not as fast as we can */</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-set">g_object_set</a></span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span> <span class="gtkdoc opt">(</span>fakesink<span class="gtkdoc opt">),</span> <span class="string">"sync"</span><span class="gtkdoc opt">,</span> TRUE<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span> @@ -417,9 +424,12 @@ The message's structure contains these fields: <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp13295664"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.74.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -440,9 +450,12 @@ The message's structure contains these fields: </div> <hr> <div class="refsect2"> -<a name="idp10809472"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.74.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -462,8 +475,11 @@ The message's structure contains these fields: </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -511,7 +527,7 @@ Opaque data structure. <div class="refsect2"> <a name="GstLevel--message"></a><h3>The <code class="literal">"message"</code> property</h3> <pre class="programlisting"> "message" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> -<p>Post a level message for each passed interval.</p> +<p>Post a 'level' message for each passed interval (deprecated).</p> <p>Default value: TRUE</p> </div> <hr> @@ -529,10 +545,24 @@ Opaque data structure. <p>Time To Live of decay peak before it falls back (in nanoseconds).</p> <p>Default value: 300000000</p> </div> +<hr> +<div class="refsect2"> +<a name="GstLevel--post-messages"></a><h3>The <code class="literal">"post-messages"</code> property</h3> +<pre class="programlisting"> "post-messages" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"> +<h3 class="title">Warning</h3> +<p><code class="literal">GstLevel:post-messages</code> is deprecated and should not be used in newly-written code. use the <a class="link" href="gst-plugins-good-plugins-level.html#GstLevel--post-messages" title='The "post-messages" property'><span class="type">"post-messages"</span></a> property</p> +</div> +<p> +Post messages on the bus with level information. +</p> +<p>Default value: TRUE</p> +<p class="since">Since 1.1.0</p> +</div> </div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-matroskademux.html b/docs/plugins/html/gst-plugins-good-plugins-matroskademux.html index 679ed2fe219564a625344aa5e6408c71cacdb459..819cff24df5b689720a779012a0ee88fbfa9c304 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-matroskademux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-matroskademux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>matroskademux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-matroskamux.html" title="matroskamux"> <link rel="next" href="gst-plugins-good-plugins-mj2mux.html" title="mj2mux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -68,7 +68,7 @@ matroskademux demuxes a Matroska file into the different contained streams. <p> </p> <div class="refsect2"> -<a name="idp13908848"></a><h3>Example launch line</h3> +<a name="id-1.2.76.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -86,9 +86,12 @@ matroskademux demuxes a Matroska file into the different contained streams. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp5870256"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.76.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -109,9 +112,12 @@ matroskademux demuxes a Matroska file into the different contained streams. </div> <hr> <div class="refsect2"> -<a name="idp13766336"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.76.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -147,8 +153,11 @@ matroskademux demuxes a Matroska file into the different contained streams. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -168,8 +177,11 @@ matroskademux demuxes a Matroska file into the different contained streams. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -217,8 +229,11 @@ matroskademux demuxes a Matroska file into the different contained streams. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -264,6 +279,6 @@ matroskademux demuxes a Matroska file into the different contained streams. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-matroskamux.html b/docs/plugins/html/gst-plugins-good-plugins-matroskamux.html index cda50762aa88b4b4f67a36ac64355908f1015eeb..3b1bfc06c33da3f5741671d500c1676303a62119 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-matroskamux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-matroskamux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>matroskamux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-level.html" title="level"> <link rel="next" href="gst-plugins-good-plugins-matroskademux.html" title="matroskademux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -80,13 +80,13 @@ matroskamux muxes different input streams into a Matroska file. <p> </p> <div class="refsect2"> -<a name="idp16428416"></a><h3>Example launch line</h3> +<a name="id-1.2.75.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td class="listing_lines" align="right"><pre>1</pre></td> - <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v filesrc location<span class="gtkdoc opt">=/</span>path<span class="gtkdoc opt">/</span>to<span class="gtkdoc opt">/</span>mp3 <span class="gtkdoc opt">!</span> mp3parse <span class="gtkdoc opt">!</span> matroskamux name<span class="gtkdoc opt">=</span>mux <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>test<span class="gtkdoc opt">.</span>mkv filesrc location<span class="gtkdoc opt">=/</span>path<span class="gtkdoc opt">/</span>to<span class="gtkdoc opt">/</span>theora<span class="gtkdoc opt">.</span>ogg <span class="gtkdoc opt">!</span> oggdemux <span class="gtkdoc opt">!</span> theoraparse <span class="gtkdoc opt">!</span> mux<span class="gtkdoc opt">.</span></pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v filesrc location<span class="gtkdoc opt">=/</span>path<span class="gtkdoc opt">/</span>to<span class="gtkdoc opt">/</span>mp3 <span class="gtkdoc opt">!</span> mpegaudioparse <span class="gtkdoc opt">!</span> matroskamux name<span class="gtkdoc opt">=</span>mux <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>test<span class="gtkdoc opt">.</span>mkv filesrc location<span class="gtkdoc opt">=/</span>path<span class="gtkdoc opt">/</span>to<span class="gtkdoc opt">/</span>theora<span class="gtkdoc opt">.</span>ogg <span class="gtkdoc opt">!</span> oggdemux <span class="gtkdoc opt">!</span> theoraparse <span class="gtkdoc opt">!</span> mux<span class="gtkdoc opt">.</span></pre></td> </tr> </tbody> </table> @@ -109,9 +109,12 @@ matroskamux muxes different input streams into a Matroska file. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp14045152"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.75.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -132,9 +135,12 @@ matroskamux muxes different input streams into a Matroska file. </div> <hr> <div class="refsect2"> -<a name="idp11308880"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.75.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -206,8 +212,11 @@ matroskamux muxes different input streams into a Matroska file. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -251,8 +260,11 @@ matroskamux muxes different input streams into a Matroska file. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -268,31 +280,31 @@ matroskamux muxes different input streams into a Matroska file. </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>video/mpeg, mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td>video/mpeg, mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-h264, stream-format=(string)avc, alignment=(string)au, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-h264, stream-format=(string)avc, alignment=(string)au, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-divx, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-divx, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-huffyuv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-huffyuv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-dv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-dv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-h263, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-h263, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-msmpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-msmpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> @@ -304,28 +316,31 @@ matroskamux muxes different input streams into a Matroska file. </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-dirac, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-dirac, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-pn-realvideo, rmversion=(int)[ 1, 4 ], width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-pn-realvideo, rmversion=(int)[ 1, 4 ], width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-vp8, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-vp8, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-raw, format=(string){ YUY2, I420, YV12, UYVY, AYUV }, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-raw, format=(string){ YUY2, I420, YV12, UYVY, AYUV }, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> -<td> video/x-wmv, wmvversion=(int)[ 1, 3 ], width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td> video/x-wmv, wmvversion=(int)[ 1, 3 ], width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</td> </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -402,6 +417,6 @@ matroskamux muxes different input streams into a Matroska file. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html b/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html index 305207edb04a96dcddda5a57918eb390a4e41ce3..988740d2442cf7ae07c3a053dbf494832fee8c3a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>mj2mux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-matroskademux.html" title="matroskademux"> <link rel="next" href="gst-plugins-good-plugins-monoscope.html" title="monoscope"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -133,7 +133,7 @@ presentation-timestamp. <p> </p> <div class="refsect2"> -<a name="idp15226288"></a><h3>Example pipelines</h3> +<a name="id-1.2.77.7.8.1"></a><h3>Example pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -156,9 +156,12 @@ Documentation last reviewed on 2011-04-21 <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15229632"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.77.7.10.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -179,9 +182,12 @@ Documentation last reviewed on 2011-04-21 </div> <hr> <div class="refsect2"> -<a name="idp14579600"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.77.7.10.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -205,8 +211,11 @@ Documentation last reviewed on 2011-04-21 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -230,8 +239,11 @@ Documentation last reviewed on 2011-04-21 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -270,7 +282,7 @@ Documentation last reviewed on 2011-04-21 <div class="refsect2"> <a name="GstMJ2Mux--dts-method"></a><h3>The <code class="literal">"dts-method"</code> property</h3> <pre class="programlisting"> "dts-method" <span class="type">GstQTMuxDtsMethods</span> : Read / Write / Construct</pre> -<p>Method to determine DTS time.</p> +<p>(DEPRECATED) Method to determine DTS time.</p> <p>Default value: reorder</p> </div> <hr> @@ -334,6 +346,6 @@ Documentation last reviewed on 2011-04-21 </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-monoscope.html b/docs/plugins/html/gst-plugins-good-plugins-monoscope.html index ca2ffad12c53c95766c8b593657337d143c7c5a5..98979c568aae346b26a710a410c81aca345cef23 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-monoscope.html +++ b/docs/plugins/html/gst-plugins-good-plugins-monoscope.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>monoscope</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-mj2mux.html" title="mj2mux"> <link rel="next" href="gst-plugins-good-plugins-mpegaudioparse.html" title="mpegaudioparse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -24,6 +24,8 @@ <a href="#gst-plugins-good-plugins-monoscope.synopsis" class="shortcut">Top</a>  | <a href="#gst-plugins-good-plugins-monoscope.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-monoscope.object-hierarchy" class="shortcut">Object Hierarchy</a> </td></tr> </table> <div class="refentry"> @@ -37,7 +39,17 @@ </tr></table></div> <div class="refsynopsisdiv"> <a name="gst-plugins-good-plugins-monoscope.synopsis"></a><h2>Synopsis</h2> -<pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-monoscope.html#GstMonoscope" title="struct GstMonoscope">GstMonoscope</a>; +<a name="GstMonoscope"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-monoscope.html#GstMonoscope-struct" title="struct GstMonoscope">GstMonoscope</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-monoscope.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----GstMonoscope </pre> </div> <div class="refsect1"> @@ -49,7 +61,7 @@ curve of the audio signal like on an oscilloscope. <p> </p> <div class="refsect2"> -<a name="idp15073616"></a><h3>Example launch line</h3> +<a name="id-1.2.78.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -67,9 +79,12 @@ curve of the audio signal like on an oscilloscope. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6870960"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.78.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -90,9 +105,12 @@ curve of the audio signal like on an oscilloscope. </div> <hr> <div class="refsect2"> -<a name="idp6752496"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.78.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -112,8 +130,11 @@ curve of the audio signal like on an oscilloscope. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -141,40 +162,8 @@ curve of the audio signal like on an oscilloscope. <div class="refsect1"> <a name="gst-plugins-good-plugins-monoscope.details"></a><h2>Details</h2> <div class="refsect2"> -<a name="GstMonoscope"></a><h3>struct GstMonoscope</h3> -<pre class="programlisting">struct GstMonoscope { - GstElement element; - - /* pads */ - GstPad *sinkpad; - GstPad *srcpad; - - GstAdapter *adapter; - - guint64 next_ts; /* expected timestamp of the next frame */ - guint64 frame_duration; /* video frame duration */ - gint rate; /* sample rate */ - guint bps; /* bytes per sample */ - guint spf; /* samples per video frame */ - GstBufferPool *pool; - - GstSegment segment; - - /* QoS stuff *//* with LOCK */ - gdouble proportion; - GstClockTime earliest_time; - - /* video state */ - gint fps_num; - gint fps_denom; - gint width; - gint height; - guint outsize; - - /* visualisation state */ - struct monoscope_state *visstate; -}; -</pre> +<a name="GstMonoscope-struct"></a><h3>struct GstMonoscope</h3> +<pre class="programlisting">struct GstMonoscope;</pre> <p> </p> </div> @@ -186,6 +175,6 @@ goom </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html b/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html index 5f93fbffcb19a5a4fe154e4643ee071a237964c5..ec84c2dc960c83b94886c230806d478589173f73 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>mp4mux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-mpegaudioparse.html" title="mpegaudioparse"> <link rel="next" href="gst-plugins-good-plugins-mulawdec.html" title="mulawdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -133,7 +133,7 @@ presentation-timestamp. <p> </p> <div class="refsect2"> -<a name="idp15745744"></a><h3>Example pipelines</h3> +<a name="id-1.2.80.7.8.1"></a><h3>Example pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -156,9 +156,12 @@ Documentation last reviewed on 2011-04-21 <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15269152"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.80.7.10.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -179,9 +182,12 @@ Documentation last reviewed on 2011-04-21 </div> <hr> <div class="refsect2"> -<a name="idp14864352"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.80.7.10.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -209,8 +215,11 @@ Documentation last reviewed on 2011-04-21 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -242,8 +251,11 @@ Documentation last reviewed on 2011-04-21 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -283,7 +295,7 @@ Documentation last reviewed on 2011-04-21 <div class="refsect2"> <a name="GstMP4Mux--dts-method"></a><h3>The <code class="literal">"dts-method"</code> property</h3> <pre class="programlisting"> "dts-method" <span class="type">GstQTMuxDtsMethods</span> : Read / Write / Construct</pre> -<p>Method to determine DTS time.</p> +<p>(DEPRECATED) Method to determine DTS time.</p> <p>Default value: reorder</p> </div> <hr> @@ -347,6 +359,6 @@ Documentation last reviewed on 2011-04-21 </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html b/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html index 78d04fa78cbf7b7c219f3e5ec6267b36ad15a7b5..5a830f3d3e39c044dd6e3daffc7f2b732208217e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>mpegaudioparse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-monoscope.html" title="monoscope"> <link rel="next" href="gst-plugins-good-plugins-mp4mux.html" title="mp4mux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -61,7 +61,7 @@ Parses and frames mpeg1 audio streams. Provides seeking. <p> </p> <div class="refsect2"> -<a name="idp14140000"></a><h3>Example launch line</h3> +<a name="id-1.2.79.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -79,9 +79,12 @@ Parses and frames mpeg1 audio streams. Provides seeking. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp12409568"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.79.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -102,9 +105,12 @@ Parses and frames mpeg1 audio streams. Provides seeking. </div> <hr> <div class="refsect2"> -<a name="idp7768592"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.79.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -124,8 +130,11 @@ Parses and frames mpeg1 audio streams. Provides seeking. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -167,6 +176,6 @@ The opaque GstMpegAudioParse object </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-mulawdec.html b/docs/plugins/html/gst-plugins-good-plugins-mulawdec.html index 0134ffa7955272f21924224e6a8fa6ae31c89415..e644260adeaf94a106c56447263181b9f3b0da0c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-mulawdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-mulawdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>mulawdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-mp4mux.html" title="mp4mux"> <link rel="next" href="gst-plugins-good-plugins-mulawenc.html" title="mulawenc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -49,7 +49,8 @@ +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> - +----GstMuLawDec + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiodecoder.html#GstAudioDecoder">GstAudioDecoder</a> + +----GstMuLawDec </pre> </div> <div class="refsect1"> @@ -60,9 +61,12 @@ This element decodes mulaw audio. Mulaw coding is also known as G.711. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp10846496"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.81.5.3.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -83,9 +87,12 @@ This element decodes mulaw audio. Mulaw coding is also known as G.711. </div> <hr> <div class="refsect2"> -<a name="idp8097568"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.81.5.3.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -105,8 +112,11 @@ This element decodes mulaw audio. Mulaw coding is also known as G.711. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -143,6 +153,6 @@ This element decodes mulaw audio. Mulaw coding is also known as G.711. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-mulawenc.html b/docs/plugins/html/gst-plugins-good-plugins-mulawenc.html index 18dead8b443d58dd91a4096dbb9045a49ada68cc..055b6562b14964c100c3267d66dd01074f4f75ba 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-mulawenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-mulawenc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>mulawenc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-mulawdec.html" title="mulawdec"> <link rel="next" href="gst-plugins-good-plugins-multifilesink.html" title="multifilesink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -49,9 +49,12 @@ This element encode mulaw audio. Mulaw coding is also known as G.711. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp14042560"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.82.4.3.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -72,9 +75,12 @@ This element encode mulaw audio. Mulaw coding is also known as G.711. </div> <hr> <div class="refsect2"> -<a name="idp13521968"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.82.4.3.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -94,8 +100,11 @@ This element encode mulaw audio. Mulaw coding is also known as G.711. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -132,9 +141,7 @@ This element encode mulaw audio. Mulaw coding is also known as G.711. <div class="refsect2"> <a name="GstMuLawEnc"></a><h3>struct GstMuLawEnc</h3> <pre class="programlisting">struct GstMuLawEnc { - GstElement element; - - GstPad *sinkpad,*srcpad; + GstAudioEncoder element; gint channels; gint rate; @@ -147,6 +154,6 @@ This element encode mulaw audio. Mulaw coding is also known as G.711. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-multifilesink.html b/docs/plugins/html/gst-plugins-good-plugins-multifilesink.html index 0e10233f4a7e63463dccfaa78b0b3155219ac3f3..0281704b7b8a9be32947b313be997c21436976d8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-multifilesink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-multifilesink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>multifilesink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-mulawenc.html" title="mulawenc"> <link rel="next" href="gst-plugins-good-plugins-multifilesrc.html" title="multifilesrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -85,7 +85,7 @@ buffer. <p> The message's structure contains these fields: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"><p> <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> * <code class="classname">"filename"</code>: @@ -132,7 +132,7 @@ The message's structure contains these fields: <p> </p> <div class="refsect2"> -<a name="idp15385312"></a><h3>Example launch line</h3> +<a name="id-1.2.83.6.6.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -155,9 +155,12 @@ Last reviewed on 2009-09-11 (0.10.17) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp16268288"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.83.6.8.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -178,9 +181,12 @@ Last reviewed on 2009-09-11 (0.10.17) </div> <hr> <div class="refsect2"> -<a name="idp14692256"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.83.6.8.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -227,8 +233,11 @@ Last reviewed on 2009-09-11 (0.10.17) <p> File splitting modes. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><a name="GST-MULTI-FILE-SINK-NEXT-BUFFER:CAPS"></a><span class="term"><code class="literal">GST_MULTI_FILE_SINK_NEXT_BUFFER</code></span></p></td> @@ -327,6 +336,6 @@ Maximum file size before starting a new file in max-size mode. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-multifilesrc.html b/docs/plugins/html/gst-plugins-good-plugins-multifilesrc.html index 8606a54f1d0756852734393fe750247d5f4afca1..8f9926ef67ddd139ce4dcfd10b884266fc7c7772 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-multifilesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-multifilesrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>multifilesrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-multifilesink.html" title="multifilesink"> <link rel="next" href="gst-plugins-good-plugins-multipartdemux.html" title="multipartdemux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -82,7 +82,7 @@ File names are created by replacing "%d" with the index using <code class="funct <p> </p> <div class="refsect2"> -<a name="idp10523632"></a><h3>Example launch line</h3> +<a name="id-1.2.84.6.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -105,9 +105,12 @@ files named img.0000.png, img.0001.png, etc. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp11085936"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.84.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -128,9 +131,12 @@ files named img.0000.png, img.0001.png, etc. </div> <hr> <div class="refsect2"> -<a name="idp15361312"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.84.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -217,6 +223,6 @@ files named img.0000.png, img.0001.png, etc. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-multipartdemux.html b/docs/plugins/html/gst-plugins-good-plugins-multipartdemux.html index ea65d039d9a543539777ed95dfad9ca5439d0139..f874cdd4b653f23ed61a1b5d6a3a22515e123c1f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-multipartdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-multipartdemux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>multipartdemux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-multifilesrc.html" title="multifilesrc"> <link rel="next" href="gst-plugins-good-plugins-multipartmux.html" title="multipartmux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -83,13 +83,13 @@ otherwise it will be autodetected. <p> </p> <div class="refsect2"> -<a name="idp14962768"></a><h3>Sample pipelines</h3> +<a name="id-1.2.85.6.5.1"></a><h3>Sample pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td class="listing_lines" align="right"><pre>1</pre></td> - <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=/</span>tmp<span class="gtkdoc opt">/</span>test<span class="gtkdoc opt">.</span>multipart <span class="gtkdoc opt">!</span> multipartdemux <span class="gtkdoc opt">!</span> jpegdec <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> ximagesink</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=/</span>tmp<span class="gtkdoc opt">/</span>test<span class="gtkdoc opt">.</span>multipart <span class="gtkdoc opt">!</span> multipartdemux <span class="gtkdoc opt">!</span> image<span class="gtkdoc opt">/</span>jpeg<span class="gtkdoc opt">,</span>framerate<span class="gtkdoc opt">=</span>\<span class="gtkdoc opt">(</span>fraction\<span class="gtkdoc opt">)</span><span class="number">5</span><span class="gtkdoc opt">/</span><span class="number">1</span> <span class="gtkdoc opt">!</span> jpegparse <span class="gtkdoc opt">!</span> jpegdec <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td> </tr> </tbody> </table> @@ -102,9 +102,12 @@ containing JPEG frames. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15961200"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.85.6.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -125,9 +128,12 @@ containing JPEG frames. </div> <hr> <div class="refsect2"> -<a name="idp10760032"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.85.6.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -147,8 +153,11 @@ containing JPEG frames. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -213,6 +222,6 @@ The opaque <a class="link" href="gst-plugins-good-plugins-multipartdemux.html#Gs </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-multipartmux.html b/docs/plugins/html/gst-plugins-good-plugins-multipartmux.html index 8618611049e36713583b4e09988b79fe4a6b207b..bb4326333704dca8de8679cd898270bb0a7cd11d 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-multipartmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-multipartmux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>multipartmux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-multipartdemux.html" title="multipartdemux"> <link rel="next" href="gst-plugins-good-plugins-multiudpsink.html" title="multiudpsink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -70,7 +70,7 @@ multipart streams are sequential JPEG frames. <p> </p> <div class="refsect2"> -<a name="idp14458240"></a><h3>Sample pipelines</h3> +<a name="id-1.2.86.6.3.1"></a><h3>Sample pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -89,9 +89,12 @@ stored to a file. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15868848"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.86.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -112,9 +115,12 @@ stored to a file. </div> <hr> <div class="refsect2"> -<a name="idp17267872"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.86.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -134,8 +140,11 @@ stored to a file. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -182,6 +191,6 @@ The opaque <a class="link" href="gst-plugins-good-plugins-multipartmux.html#GstM </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html b/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html index 4989c7f8371fd5340c30688b813d0cf3e5ce4dfb..a7173910cb29734b757f9717c773a011008d6d28 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>multiudpsink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-multipartmux.html" title="multipartmux"> <link rel="next" href="gst-plugins-good-plugins-optv.html" title="optv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -79,6 +79,10 @@ "<a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--used-socket" title='The "used-socket" property'>used-socket</a>" <a href="http://library.gnome.org/devel/gio/unstable/GSocket.html"><span class="type">GSocket</span></a>* : Read "<a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--force-ipv4" title='The "force-ipv4" property'>force-ipv4</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--multicast-iface" title='The "multicast-iface" property'>multicast-iface</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--bind-address" title='The "bind-address" property'>bind-address</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--bind-port" title='The "bind-port" property'>bind-port</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--socket-v6" title='The "socket-v6" property'>socket-v6</a>" <a href="http://library.gnome.org/devel/gio/unstable/GSocket.html"><span class="type">GSocket</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--used-socket-v6" title='The "used-socket-v6" property'>used-socket-v6</a>" <a href="http://library.gnome.org/devel/gio/unstable/GSocket.html"><span class="type">GSocket</span></a>* : Read </pre> </div> <div class="refsect1"> @@ -102,9 +106,12 @@ It can be combined with rtp payload encoders to implement RTP streaming. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp14668672"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.87.7.3.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -125,9 +132,12 @@ It can be combined with rtp payload encoders to implement RTP streaming. </div> <hr> <div class="refsect2"> -<a name="idp7819664"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.87.7.3.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -282,7 +292,7 @@ It can be combined with rtp payload encoders to implement RTP streaming. <div class="refsect2"> <a name="GstMultiUDPSink--force-ipv4"></a><h3>The <code class="literal">"force-ipv4"</code> property</h3> <pre class="programlisting"> "force-ipv4" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> -<p>Forcing the use of an IPv4 socket.</p> +<p>Forcing the use of an IPv4 socket (DEPRECATED, has no effect anymore).</p> <p>Default value: FALSE</p> </div> <hr> @@ -292,6 +302,33 @@ It can be combined with rtp payload encoders to implement RTP streaming. <p>The network interface on which to join the multicast group.</p> <p>Default value: NULL</p> </div> +<hr> +<div class="refsect2"> +<a name="GstMultiUDPSink--bind-address"></a><h3>The <code class="literal">"bind-address"</code> property</h3> +<pre class="programlisting"> "bind-address" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre> +<p>Address to bind the socket to.</p> +<p>Default value: NULL</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstMultiUDPSink--bind-port"></a><h3>The <code class="literal">"bind-port"</code> property</h3> +<pre class="programlisting"> "bind-port" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> +<p>Port to bind the socket to.</p> +<p>Allowed values: [0,65535]</p> +<p>Default value: 0</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstMultiUDPSink--socket-v6"></a><h3>The <code class="literal">"socket-v6"</code> property</h3> +<pre class="programlisting"> "socket-v6" <a href="http://library.gnome.org/devel/gio/unstable/GSocket.html"><span class="type">GSocket</span></a>* : Read / Write</pre> +<p>Socket to use for UDPv6 sending. (NULL == allocate).</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstMultiUDPSink--used-socket-v6"></a><h3>The <code class="literal">"used-socket-v6"</code> property</h3> +<pre class="programlisting"> "used-socket-v6" <a href="http://library.gnome.org/devel/gio/unstable/GSocket.html"><span class="type">GSocket</span></a>* : Read</pre> +<p>Socket currently in use for UDPv6 sending. (NULL == no socket).</p> +</div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-multiudpsink.signal-details"></a><h2>Signal Details</h2> @@ -312,8 +349,11 @@ When a host/port pair is added multiple times, an equal amount of remove calls must be performed to actually remove the host/port pair from the list of destinations. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstmultiudpsink</code></em> :</span></p></td> @@ -342,8 +382,11 @@ of destinations. <p> Clear the list of clients. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstmultiudpsink</code></em> :</span></p></td> @@ -367,8 +410,11 @@ Clear the list of clients. Signal emited when a new client is added to the list of clients. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstmultiudpsink</code></em> :</span></p></td> @@ -400,8 +446,11 @@ clients. Signal emited when a client is removed from the list of clients. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstmultiudpsink</code></em> :</span></p></td> @@ -432,8 +481,11 @@ clients. <p> Get the statistics of the client with destination <em class="parameter"><code>host</code></em> and <em class="parameter"><code>port</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstmultiudpsink</code></em> :</span></p></td> @@ -470,8 +522,11 @@ connect_time (in epoch seconds), disconnect_time (in epoch seconds)</td> Remove the client with destination <em class="parameter"><code>host</code></em> and <em class="parameter"><code>port</code></em> from the list of clients. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstmultiudpsink</code></em> :</span></p></td> @@ -500,6 +555,6 @@ udpsink, multifdsink </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-optv.html b/docs/plugins/html/gst-plugins-good-plugins-optv.html index 2fe3f9dd508cdab74626bad5ee890d2275200688..a174221d137f16372813817277fe382276f85276 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-optv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-optv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>optv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-multiudpsink.html" title="multiudpsink"> <link rel="next" href="gst-plugins-good-plugins-oss4sink.html" title="oss4sink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -74,7 +74,7 @@ various optical pattern. <p> </p> <div class="refsect2"> -<a name="idp5593680"></a><h3>Example launch line</h3> +<a name="id-1.2.88.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -92,9 +92,12 @@ various optical pattern. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15624000"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.88.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -115,9 +118,12 @@ various optical pattern. </div> <hr> <div class="refsect2"> -<a name="idp14426080"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.88.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -137,8 +143,11 @@ various optical pattern. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -199,6 +208,6 @@ various optical pattern. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-oss4sink.html b/docs/plugins/html/gst-plugins-good-plugins-oss4sink.html index ddb8ffa5278d7395f5a137f4a80948aae1111dea..c8ef645cc663904a2fd6242a42a75cc8c7cb25ab 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-oss4sink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-oss4sink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>oss4sink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-optv.html" title="optv"> <link rel="next" href="gst-plugins-good-plugins-oss4src.html" title="oss4src"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -63,7 +63,7 @@ <a name="gst-plugins-good-plugins-oss4sink.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstOss4Sink implements - <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gststreamvolume.html#GstStreamVolume">GstStreamVolume</a> and GstPropertyProbe.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gststreamvolume.html#GstStreamVolume">GstStreamVolume</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstpropertyprobe.html#GstPropertyProbe">GstPropertyProbe</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-oss4sink.properties"></a><h2>Properties</h2> @@ -79,9 +79,12 @@ GstOss4Sink implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18248704"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.89.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -102,9 +105,12 @@ GstOss4Sink implements </div> <hr> <div class="refsect2"> -<a name="idp18228176"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.89.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -180,6 +186,6 @@ GstOss4Sink implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-oss4src.html b/docs/plugins/html/gst-plugins-good-plugins-oss4src.html index a7cf805f7bdacac633f827b722c5e02a73bd0ea1..b71a9d3a721bd3b57afe991aa946e9fce07f1c68 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-oss4src.html +++ b/docs/plugins/html/gst-plugins-good-plugins-oss4src.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>oss4src</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-oss4sink.html" title="oss4sink"> <link rel="next" href="gst-plugins-good-plugins-osssink.html" title="osssink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -64,7 +64,7 @@ <a name="gst-plugins-good-plugins-oss4src.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstOss4Source implements - GstImplementsInterface, GstMixer and GstPropertyProbe.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstImplementsInterface.html">GstImplementsInterface</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstmixer.html#GstMixer">GstMixer</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstpropertyprobe.html#GstPropertyProbe">GstPropertyProbe</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-oss4src.properties"></a><h2>Properties</h2> @@ -78,9 +78,12 @@ GstOss4Source implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp16699888"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.90.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -101,9 +104,12 @@ GstOss4Source implements </div> <hr> <div class="refsect2"> -<a name="idp11705600"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.90.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -164,6 +170,6 @@ GstOss4Source implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-osssink.html b/docs/plugins/html/gst-plugins-good-plugins-osssink.html index e8299673b56b24e29d229da3cedb799a8ea93415..87e9e73f14706162ca7ae6386ee41a7e0f58631f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osssink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osssink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>osssink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-oss4src.html" title="oss4src"> <link rel="next" href="gst-plugins-good-plugins-osssrc.html" title="osssrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -68,9 +68,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp17198544"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.91.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -91,9 +94,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp14716880"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.91.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -143,6 +149,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-osssrc.html b/docs/plugins/html/gst-plugins-good-plugins-osssrc.html index 923df649f87fd74abfa4a958d6b001bbe38a9193..823f24a3b3c3d97dc4d35ef5749162d9e5fb960b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osssrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osssrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>osssrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-osssink.html" title="osssink"> <link rel="next" href="gst-plugins-good-plugins-osxaudiosink.html" title="osxaudiosink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -64,7 +64,7 @@ <a name="gst-plugins-good-plugins-osssrc.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstOssSrc implements - GstImplementsInterface and GstMixer.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstImplementsInterface.html">GstImplementsInterface</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstmixer.html#GstMixer">GstMixer</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-osssrc.properties"></a><h2>Properties</h2> @@ -78,9 +78,12 @@ GstOssSrc implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp14986240"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.92.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -101,9 +104,12 @@ GstOssSrc implements </div> <hr> <div class="refsect2"> -<a name="idp12005152"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.92.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -160,6 +166,6 @@ GstOssSrc implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-osxaudiosink.html b/docs/plugins/html/gst-plugins-good-plugins-osxaudiosink.html index 325b583a36e8170319c8ec4905847ec651a8f8c5..6d3649abbc51ddb7cd5da97c1f282f7c6661cba8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osxaudiosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osxaudiosink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>osxaudiosink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-osssrc.html" title="osssrc"> <link rel="next" href="gst-plugins-good-plugins-osxaudiosrc.html" title="osxaudiosrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -53,9 +53,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp12645200"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.93.5.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -76,7 +79,7 @@ </div> <hr> <div class="refsect2"> -<a name="idp17313952"></a><h3>Element Pads</h3> +<a name="id-1.2.93.5.2.2"></a><h3>Element Pads</h3> </div> </div> <p> @@ -116,6 +119,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-osxaudiosrc.html b/docs/plugins/html/gst-plugins-good-plugins-osxaudiosrc.html index 1582879293d1f99c95c3d67f956c476cd3953afb..83c7088d7d3ce6329f8597ccf38fcddcfc640a9e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osxaudiosrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osxaudiosrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>osxaudiosrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-osxaudiosink.html" title="osxaudiosink"> <link rel="next" href="gst-plugins-good-plugins-osxvideosink.html" title="osxvideosink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -53,9 +53,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp14974832"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.94.5.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -76,7 +79,7 @@ </div> <hr> <div class="refsect2"> -<a name="idp17489456"></a><h3>Element Pads</h3> +<a name="id-1.2.94.5.2.2"></a><h3>Element Pads</h3> </div> </div> <p> @@ -112,6 +115,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html b/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html index 2ab7ae71e922d3f47b56c007177d7523e5aa663e..355516e3e5c057dd033c377f25c888678eb1d2fa 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>osxvideosink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-osxaudiosrc.html" title="osxaudiosrc"> <link rel="next" href="gst-plugins-good-plugins-pngdec.html" title="pngdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -54,9 +54,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp17559520"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.95.5.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -77,7 +80,7 @@ </div> <hr> <div class="refsect2"> -<a name="idp17363312"></a><h3>Element Pads</h3> +<a name="id-1.2.95.5.2.2"></a><h3>Element Pads</h3> </div> </div> <p> @@ -120,6 +123,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 54ed0551c509265d0d84279d3f3f9b0f4627a3bf..6f9dc30168b3943bfe7236bd28567867cb907f40 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>1394</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="next" href="gst-plugins-good-plugins-plugin-aasink.html" title="aasink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24931824"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.2.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23918432"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.2.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-dv1394src.html" title="dv1394src">dv1394src</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 82aa3c2e2115070b570167ae4387da531559a58f..5526afb8838c28aa1bb35904746d705165711342 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>aasink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-1394.html" title="1394"> <link rel="next" href="gst-plugins-good-plugins-plugin-alaw.html" title="alaw"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25619568"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.3.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24365968"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.3.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-aasink.html" title="aasink">aasink</a></span></p></td> <td>An ASCII art videosink</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 f876ce6d298fdae6dbba4a60b81b287c91016592..3ecb3f2ab0d7f2bb7c3cef1e264f74193a9b1756 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>alaw</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-aasink.html" title="aasink"> <link rel="next" href="gst-plugins-good-plugins-plugin-alpha.html" title="alpha"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24390560"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.4.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23955696"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.4.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-alawdec.html" title="alawdec">alawdec</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 453cd3465f5808158b213f686ac3200772dff6f4..1e9d66733018f8264f60230d6e985ced88d39c48 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>alpha</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-alaw.html" title="alaw"> <link rel="next" href="gst-plugins-good-plugins-plugin-alphacolor.html" title="alphacolor"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26087104"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.5.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23665296"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.5.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-alpha.html" title="alpha">alpha</a></span></p></td> <td>Adds an alpha channel to video - uniform or via chroma-keying</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 a30dfbd8493efab47ed7b7fe5110b5ca4fbd29a9..2c08188ca858b1f041d19a1c2c0db8922b4216c1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>alphacolor</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-alpha.html" title="alpha"> <link rel="next" href="gst-plugins-good-plugins-plugin-apetag.html" title="apetag"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25770448"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.6.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24618032"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.6.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-alphacolor.html" title="alphacolor">alphacolor</a></span></p></td> <td>ARGB from/to AYUV colorspace conversion preserving the alpha channel</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 623c0ba9c0f0a651a5459f93acfebd1e8eaa277a..93ce7872a52fdd617881958ea49b4a2271a1772f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>apetag</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-alphacolor.html" title="alphacolor"> <link rel="next" href="gst-plugins-good-plugins-plugin-audiofx.html" title="audiofx"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp23547216"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.7.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25721888"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.7.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-apedemux.html" title="apedemux">apedemux</a></span></p></td> <td>Read and output APE tags while demuxing the contents</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 0bf5567fd82489221196c3e12191a04bedc6528d..b1c5e55f75da4cba20ef1283812fa9a258b13cec 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>audiofx</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-apetag.html" title="apetag"> <link rel="next" href="gst-plugins-good-plugins-plugin-auparse.html" title="auparse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26097968"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.8.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22110128"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.8.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-audioamplify.html" title="audioamplify">audioamplify</a></span></p></td> @@ -109,12 +115,16 @@ <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-audiowsinclimit.html" title="audiowsinclimit">audiowsinclimit</a></span></p></td> <td>Low pass and high pass windowed sinc filter</td> </tr> +<tr> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-scaletempo.html" title="scaletempo">scaletempo</a></span></p></td> +<td>Sync audio tempo with playback rate</td> +</tr> </tbody> </table></div> </div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 9b401cad787bddfa85e699acbb991a529d48cf5d..299b6b5fadc54316e836b94a2f3f1df434bfcee6 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>auparse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-audiofx.html" title="audiofx"> <link rel="next" href="gst-plugins-good-plugins-plugin-autodetect.html" title="autodetect"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp22855456"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.9.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24551264"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.9.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-auparse.html" title="auparse">auparse</a></span></p></td> <td>Parse an .au file into raw audio</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 3649e0b4af019fd6788e0003a4573e6802d510c2..464954a86fc0a09e0d0d5dcc7df4e1cd63b81b92 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>autodetect</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-auparse.html" title="auparse"> <link rel="next" href="gst-plugins-good-plugins-plugin-avi.html" title="avi"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24091920"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.10.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23259440"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.10.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-autoaudiosink.html" title="autoaudiosink">autoaudiosink</a></span></p></td> @@ -83,6 +89,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 c18bcf86bfbacb59483e3191b540ca20f8eee1fb..3864b7836979765f21acf50bedc01888f789e241 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>avi</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-autodetect.html" title="autodetect"> <link rel="next" href="gst-plugins-good-plugins-plugin-cacasink.html" title="cacasink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25122400"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.11.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24218320"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.11.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-avidemux.html" title="avidemux">avidemux</a></span></p></td> @@ -79,6 +85,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 45ff388191d2adb1cfc35f2e3ab07275f4c5f0ed..f0acc36ef30b87d287d4221bf753b82beb984f3b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>cacasink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-avi.html" title="avi"> <link rel="next" href="gst-plugins-good-plugins-plugin-cairo.html" title="cairo"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp22076064"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.12.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp20581600"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.12.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-cacasink.html" title="cacasink">cacasink</a></span></p></td> <td>A colored ASCII art videosink</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 412c14ce14837af95db1f17e2662035078b06226..caad990009519b92bf6e3085b10d58b68351c0d7 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>cairo</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-cacasink.html" title="cacasink"> <link rel="next" href="gst-plugins-good-plugins-plugin-cutter.html" title="cutter"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26032832"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.13.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp20468160"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.13.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-cairooverlay.html" title="cairooverlay">cairooverlay</a></span></p></td> <td>Render overlay on a video stream using Cairo</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 48d74d57ad145ae352c54eef71d79297bb700166..cb2349cc3ad7dd339be22a52d03f7fcdb91bf39d 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>cutter</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-cairo.html" title="cairo"> <link rel="next" href="gst-plugins-good-plugins-plugin-debug.html" title="debug"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24056928"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.14.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25731760"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.14.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-cutter.html" title="cutter">cutter</a></span></p></td> <td>Audio Cutter to split audio into non-silent bits</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 aea09d688de00f8d7aaa7202f179d20b5e442595..ec9f754e24be0f56b9ac33e353ece3c00357af23 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>debug</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-cutter.html" title="cutter"> <link rel="next" href="gst-plugins-good-plugins-plugin-deinterlace.html" title="deinterlace"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp7538240"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.15.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25061792"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.15.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">breakmydata</span></p></td> @@ -103,6 +109,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 e23db861acd198a5192c7f60dd2d6ded6b39485f..c8ce29355793220a77c18a75228925886f5d1d85 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>deinterlace</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-debug.html" title="debug"> <link rel="next" href="gst-plugins-good-plugins-plugin-directsound.html" title="directsound"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp20455776"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.16.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24417824"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.16.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-deinterlace.html" title="deinterlace">deinterlace</a></span></p></td> <td>Deinterlace Methods ported from DScaler/TvTime</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-directsound.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-directsound.html index 0cdae98c9845fe49a18db7309b512566751c4517..328cbd40f1900ab2c6eac9bc9cdfebaf68e53947 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-directsound.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-directsound.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>directsound</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-deinterlace.html" title="deinterlace"> -<link rel="next" href="gst-plugins-good-plugins-plugin-dv.html" title="dv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<link rel="next" href="gst-plugins-good-plugins-plugin-dtmf.html" title="dtmf"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -17,7 +17,7 @@ <td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> -<td><a accesskey="n" href="gst-plugins-good-plugins-plugin-dv.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="gst-plugins-good-plugins-plugin-dtmf.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr></table> <div class="refentry"> <a name="gst-plugins-good-plugins-plugin-directsound"></a><div class="titlepage"></div> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp23728736"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.17.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23787680"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.17.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-directsoundsink.html" title="directsoundsink">directsoundsink</a></span></p></td> <td>DirectSound audio sink</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html new file mode 100644 index 0000000000000000000000000000000000000000..483fe9f072d298a09000dc73565dfe2fd733c88e --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html @@ -0,0 +1,90 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>dtmf</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> +<link rel="prev" href="gst-plugins-good-plugins-plugin-directsound.html" title="directsound"> +<link rel="next" href="gst-plugins-good-plugins-plugin-dv.html" title="dv"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-plugin-directsound.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-plugin-dv.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr></table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-plugin-dtmf"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle">dtmf</span></h2> +<p>dtmf — <a name="plugin-dtmf"></a>DTMF plugins</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsect1"> +<a name="id-1.3.18.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">filename</span></p></td> +<td>libgstdtmf.so</td> +</tr> +<tr> +<td><p><span class="term">version</span></p></td> +<td>1.1.90</td> +</tr> +<tr> +<td><p><span class="term">run-time license</span></p></td> +<td>LGPL</td> +</tr> +<tr> +<td><p><span class="term">package</span></p></td> +<td>GStreamer Good Plug-ins source release</td> +</tr> +<tr> +<td><p><span class="term">origin</span></p></td> +<td>Unknown package origin</td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect1"> +<a name="id-1.3.18.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-dtmfsrc.html" title="dtmfsrc">dtmfsrc</a></span></p></td> +<td>Generates DTMF tones</td> +</tr> +<tr> +<td><p><span class="term">rtpdtmfdepay</span></p></td> +<td>Generates DTMF Sound from telephone-event RTP packets</td> +</tr> +<tr> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html" title="rtpdtmfsrc">rtpdtmfsrc</a></span></p></td> +<td>Generates RTP DTMF packets</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file 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 35dc60d2b1b54c3fe2a2faa87cbf8dc25098d341..3c064a3cc89a09524c11cea5c3260556714ed8c1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html @@ -3,17 +3,17 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>dv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> -<link rel="prev" href="gst-plugins-good-plugins-plugin-directsound.html" title="directsound"> +<link rel="prev" href="gst-plugins-good-plugins-plugin-dtmf.html" title="dtmf"> <link rel="next" href="gst-plugins-good-plugins-plugin-equalizer.html" title="equalizer"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"> -<td><a accesskey="p" href="gst-plugins-good-plugins-plugin-directsound.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="gst-plugins-good-plugins-plugin-dtmf.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24518704"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.19.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24592400"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.19.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-dvdec.html" title="dvdec">dvdec</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 ea79d0a53d401c34a52171c900b4f172313db144..aa3c5421cef8852155180e0fe0298a6ca577690d 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>effectv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-equalizer.html" title="equalizer"> <link rel="next" href="gst-plugins-good-plugins-plugin-flac.html" title="flac"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26168560"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.21.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23654080"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.21.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-agingtv.html" title="agingtv">agingtv</a></span></p></td> @@ -115,6 +121,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 f67185d9d91b3f8396e8e3edd83a8f88e90d260e..452dbd774c6f0f1a1270b2d5218dc06a94bb4eba 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>equalizer</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-dv.html" title="dv"> <link rel="next" href="gst-plugins-good-plugins-plugin-effectv.html" title="effectv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp22683040"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.20.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp19707728"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.20.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-equalizer-10bands.html" title="equalizer-10bands">equalizer-10bands</a></span></p></td> @@ -79,6 +85,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 571ecba6416b45a732ce2d3dda3e1c066c235ed1..e7445f7bfb9d6726276aa13c2107281b1f910016 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>flac</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-effectv.html" title="effectv"> <link rel="next" href="gst-plugins-good-plugins-plugin-flv.html" title="flv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25886784"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.22.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp20020976"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.22.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-flacdec.html" title="flacdec">flacdec</a></span></p></td> @@ -79,6 +85,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 61949bd398774cc8eb3288702818e27ca96ae6d1..143f3ba73e64a64b1547e3e81ef08857e010795c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>flv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-flac.html" title="flac"> <link rel="next" href="gst-plugins-good-plugins-plugin-flxdec.html" title="flxdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26029600"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.23.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp21870304"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.23.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-flvdemux.html" title="flvdemux">flvdemux</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 6a892a4742470c3adb5d507f8118b10cd591a4ae..0402963583d999ef1a5935dd9b667b711f6e67ca 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>flxdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-flv.html" title="flv"> <link rel="next" href="gst-plugins-good-plugins-plugin-gdkpixbuf.html" title="gdkpixbuf"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp23731712"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.24.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp5666400"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.24.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-flxdec.html" title="flxdec">flxdec</a></span></p></td> <td>FLC/FLI/FLX video decoder</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 6f82d9fb6287ab352f20c7a2c1a249951c384366..c2100f045f797513955293631bc964e166d72623 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>gdkpixbuf</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-flxdec.html" title="flxdec"> <link rel="next" href="gst-plugins-good-plugins-plugin-goom.html" title="goom"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp22810016"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.25.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,16 +60,19 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22825744"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.25.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">gdkpixbufdec</span></p></td> <td>Decodes images in a video stream using GdkPixbuf</td> </tr> <tr> -<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-gdkpixbufoverlay.html" title="gdkpixbufoverlay">gdkpixbufoverlay</a></span></p></td> +<td><p><span class="term">gdkpixbufoverlay</span></p></td> <td>Overlay an image onto a video stream</td> </tr> <tr> @@ -79,6 +85,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 17735959bc7ce493be106d52ce67535fc26a0532..0d95f2627744584ff6969ae6aca710eebb1e31d2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>goom</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-gdkpixbuf.html" title="gdkpixbuf"> <link rel="next" href="gst-plugins-good-plugins-plugin-goom2k1.html" title="goom2k1"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26056976"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.26.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22538256"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.26.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-goom.html" title="goom">goom</a></span></p></td> <td>Takes frames of data and outputs video frames using the GOOM filter</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 e63e7f024ade366ba70427dfbdb0ff27d653014d..73e2b73d44d2870ce0aae61c939dc64d2edf1a96 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>goom2k1</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-goom.html" title="goom"> <link rel="next" href="gst-plugins-good-plugins-plugin-icydemux.html" title="icydemux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25927984"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.27.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24897776"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.27.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-goom2k1.html" title="goom2k1">goom2k1</a></span></p></td> <td>Takes frames of data and outputs video frames using the GOOM 2k1 filter</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 e43b4ba573e2f97b31b7440bceb5f6c57aab8b5b..7ca46898704344a1238c9507a15e19fe39df5252 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>icydemux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-goom2k1.html" title="goom2k1"> <link rel="next" href="gst-plugins-good-plugins-plugin-id3demux.html" title="id3demux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp23931952"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.28.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24539040"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.28.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-icydemux.html" title="icydemux">icydemux</a></span></p></td> <td>Read and output ICY tags while demuxing the contents</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 fefe684743c771595312bdaab71504a291f7768d..1087f0e7f5721d61cee2093dd61879c5d3e22c6a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>id3demux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-icydemux.html" title="icydemux"> <link rel="next" href="gst-plugins-good-plugins-plugin-imagefreeze.html" title="imagefreeze"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25181472"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.29.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24331568"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.29.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-id3demux.html" title="id3demux">id3demux</a></span></p></td> <td>Read and output ID3v1 and ID3v2 tags while demuxing the contents</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 37b9af77b867a5c7364bd6c0cab0be41e725390a..5f60f6023ce485f996365191482504bbfe09c5db 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>imagefreeze</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-id3demux.html" title="id3demux"> <link rel="next" href="gst-plugins-good-plugins-plugin-interleave.html" title="interleave"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp22580096"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.30.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24570400"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.30.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-imagefreeze.html" title="imagefreeze">imagefreeze</a></span></p></td> <td>Generates a still frame stream from an image</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 84c0266c313878ddcef5f5966b045e8523fbf25b..5286ab22a0315c107015d8c5be32f6754de50507 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>interleave</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-imagefreeze.html" title="imagefreeze"> <link rel="next" href="gst-plugins-good-plugins-plugin-isomp4.html" title="isomp4"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24459136"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.31.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25644448"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.31.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-deinterleave.html" title="deinterleave">deinterleave</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 daf641fbdde89fedac5f7d437af989fe38ba7995..014b12a6649b2153dfd6fade407877d6ad0b7d3e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>isomp4</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-interleave.html" title="interleave"> <link rel="next" href="gst-plugins-good-plugins-plugin-jack.html" title="jack"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp21869664"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.32.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25732752"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.32.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-3gppmux.html" title="3gppmux">3gppmux</a></span></p></td> @@ -99,6 +105,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 2c672a4ef006a3231bd6674b647a3c9f43b31f0c..5618e8b981c19081148eb688dbdb4acf83f72859 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>jack</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-isomp4.html" title="isomp4"> <link rel="next" href="gst-plugins-good-plugins-plugin-jpeg.html" title="jpeg"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26183968"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.33.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22483152"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.33.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-jackaudiosink.html" title="jackaudiosink">jackaudiosink</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 289d78e41af6adb6f40f7befb29a15c4300ed855..23a71c74ae3f9ff5495b439b43d1e667fb9c5c82 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>jpeg</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-jack.html" title="jack"> <link rel="next" href="gst-plugins-good-plugins-plugin-level.html" title="level"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25555600"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.34.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22545952"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.34.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-jpegdec.html" title="jpegdec">jpegdec</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 9abe544c457548b591c90198b6a3b994c900906b..2d3ab39280f8b9d04f60f84f0dc2cdf8aadcc933 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>level</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-jpeg.html" title="jpeg"> <link rel="next" href="gst-plugins-good-plugins-plugin-matroska.html" title="matroska"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp20485088"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.35.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23150560"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.35.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-level.html" title="level">level</a></span></p></td> <td>RMS/Peak/Decaying Peak Level messager for audio/raw</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 062b7311fa4e406e1f4df4ac1859ada8ff7fee21..f422972cf155cefbce400f6b3b918c0e9da4576b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>matroska</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-level.html" title="level"> <link rel="next" href="gst-plugins-good-plugins-plugin-monoscope.html" title="monoscope"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp23780560"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.36.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23240880"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.36.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-matroskademux.html" title="matroskademux">matroskademux</a></span></p></td> @@ -83,6 +89,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-monoscope.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-monoscope.html index 45bd953aee06255e210be1bd35a4af0bc62e147b..042892322341b7016f702d350ba54fb7187f785b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-monoscope.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-monoscope.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>monoscope</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-matroska.html" title="matroska"> <link rel="next" href="gst-plugins-good-plugins-plugin-mulaw.html" title="mulaw"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26005104"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.37.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>0.11.94.1</td> +<td>1.1.3</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -47,7 +50,7 @@ </tr> <tr> <td><p><span class="term">package</span></p></td> -<td>GStreamer Good Plug-ins git</td> +<td>GStreamer Good Plug-ins source release</td> </tr> <tr> <td><p><span class="term">origin</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25948384"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.37.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-monoscope.html" title="monoscope">monoscope</a></span></p></td> <td>Displays a highly stabilised waveform of audio input</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 ce20378c3920d376b263666600699ddbb6d97999..94a9fa426076fc41542de16da47120a8facdad67 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>mulaw</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-monoscope.html" title="monoscope"> <link rel="next" href="gst-plugins-good-plugins-plugin-multifile.html" title="multifile"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24066544"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.38.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22911664"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.38.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-mulawdec.html" title="mulawdec">mulawdec</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 1267a42e83c973be653a2f7e8e66ec3eca537f9d..57c4d6b08a90de55be87aa32045b9bb88bff6bbc 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>multifile</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-mulaw.html" title="mulaw"> <link rel="next" href="gst-plugins-good-plugins-plugin-multipart.html" title="multipart"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25979856"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.39.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22577104"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.39.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-multifilesink.html" title="multifilesink">multifilesink</a></span></p></td> @@ -79,6 +85,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 bfeff265460498b1051c224d79eceae581543e4d..d17278a0e960bf5fd40fc86a8d0bddc716066967 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>multipart</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-multifile.html" title="multifile"> <link rel="next" href="gst-plugins-good-plugins-plugin-navigationtest.html" title="navigationtest"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25993952"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.40.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25950144"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.40.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-multipartdemux.html" title="multipartdemux">multipartdemux</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 cc0a7c33d644be12fcfd68af8e0486693d890e9e..d21f14726ea2fa7b54c93e4668c22a8bea5292b9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>navigationtest</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-multipart.html" title="multipart"> <link rel="next" href="gst-plugins-good-plugins-plugin-oss4.html" title="oss4"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp5700768"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.41.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23707056"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.41.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term">navigationtest</span></p></td> <td>Handle navigation events showing a black square following mouse pointer</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 5f8acf3763a58f6679ddd9bddd64b80220bc3fab..54b4ba50314bf3faa210cd831de3eb4c28c25409 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>oss4</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-navigationtest.html" title="navigationtest"> <link rel="next" href="gst-plugins-good-plugins-plugin-ossaudio.html" title="ossaudio"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26105904"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.42.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp18372768"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.42.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-oss4sink.html" title="oss4sink">oss4sink</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 c8a317d7e6e8eead81975676e94919a573cca58a..639ddf9e5c839da2b726abcdd342757b5af7fd40 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ossaudio</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-oss4.html" title="oss4"> <link rel="next" href="gst-plugins-good-plugins-plugin-osxaudio.html" title="osxaudio"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp23810464"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.43.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp26789424"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.43.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-osssink.html" title="osssink">osssink</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-osxaudio.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-osxaudio.html index 9676d27e57b677378a632cacdd8efdda2c3afd07..3395e818f3ec71a160ce4b4bfda492ac20ccee85 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-osxaudio.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-osxaudio.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>osxaudio</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-ossaudio.html" title="ossaudio"> <link rel="next" href="gst-plugins-good-plugins-plugin-osxvideo.html" title="osxvideo"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24615824"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.44.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp26651024"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.44.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-osxaudiosink.html" title="osxaudiosink">osxaudiosink</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-osxvideo.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-osxvideo.html index 6f849706ec319cf5f71bfe2c8a6eb389fc1589c3..98243b3f329c17161fbc2f8b2b04541776f56eb5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-osxvideo.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-osxvideo.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>osxvideo</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-osxaudio.html" title="osxaudio"> <link rel="next" href="gst-plugins-good-plugins-plugin-png.html" title="png"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp21869968"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.45.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24965040"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.45.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-osxvideosink.html" title="osxvideosink">osxvideosink</a></span></p></td> <td>OSX native videosink</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 4a5c3216559d83054c6b8f3af2191eb43881435d..41d3e6440ebb16db89ebf98e29e888b704932cc8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>png</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-osxvideo.html" title="osxvideo"> <link rel="next" href="gst-plugins-good-plugins-plugin-pulseaudio.html" title="pulseaudio"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp23893840"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.46.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp26712688"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.46.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-pngdec.html" title="pngdec">pngdec</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 2ea030a652b43bb4254b9192da091d00e34710de..830c89d89210208e0281324e8e65a6e349e72945 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>pulseaudio</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-png.html" title="png"> <link rel="next" href="gst-plugins-good-plugins-plugin-replaygain.html" title="replaygain"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp19990544"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.47.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25943648"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.47.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-pulsesink.html" title="pulsesink">pulsesink</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 e7c8b3efad89c734566c73e4d19a93ba8a20c629..61d461516a36207a2639fa5054f5b6d48351525e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>replaygain</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-pulseaudio.html" title="pulseaudio"> <link rel="next" href="gst-plugins-good-plugins-plugin-rtp.html" title="rtp"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26452032"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.48.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22470160"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.48.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rganalysis.html" title="rganalysis">rganalysis</a></span></p></td> @@ -79,6 +85,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 0a1cffcdf75998a5cca82a703e90a518c99ad5f2..6ed5d4a8e9caa79852f9b1dd9d8696b425e23277 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtp</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-replaygain.html" title="replaygain"> <link rel="next" href="gst-plugins-good-plugins-plugin-rtpmanager.html" title="rtpmanager"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24381872"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.49.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,44 +60,55 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22220224"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.49.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">asteriskh263</span></p></td> <td>Extracts H263 video from RTP and encodes in Asterisk H263 format</td> </tr> <tr> -<td><p><span class="term">rtpL16depay</span></p></td> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpL16depay.html" title="rtpL16depay">rtpL16depay</a></span></p></td> <td>Extracts raw audio from RTP packets</td> </tr> <tr> -<td><p><span class="term">rtpL16pay</span></p></td> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpL16pay.html" title="rtpL16pay">rtpL16pay</a></span></p></td> <td>Payload-encode Raw audio into RTP packets (RFC 3551)</td> </tr> <tr> -<td><p><span class="term">rtpac3depay</span></p></td> +<td><p><span class="term">rtpL24depay</span></p></td> +<td>Extracts raw 24-bit audio from RTP packets</td> +</tr> +<tr> +<td><p><span class="term">rtpL24pay</span></p></td> +<td>Payload-encode Raw 24-bit audio into RTP packets (RFC 3190)</td> +</tr> +<tr> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpac3depay.html" title="rtpac3depay">rtpac3depay</a></span></p></td> <td>Extracts AC3 audio from RTP packets (RFC 4184)</td> </tr> <tr> -<td><p><span class="term">rtpac3pay</span></p></td> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpac3pay.html" title="rtpac3pay">rtpac3pay</a></span></p></td> <td>Payload AC3 audio as RTP packets (RFC 4184)</td> </tr> <tr> -<td><p><span class="term">rtpamrdepay</span></p></td> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpamrdepay.html" title="rtpamrdepay">rtpamrdepay</a></span></p></td> <td>Extracts AMR or AMR-WB audio from RTP packets (RFC 3267)</td> </tr> <tr> -<td><p><span class="term">rtpamrpay</span></p></td> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpamrpay.html" title="rtpamrpay">rtpamrpay</a></span></p></td> <td>Payload-encode AMR or AMR-WB audio into RTP packets (RFC 3267)</td> </tr> <tr> -<td><p><span class="term">rtpbvdepay</span></p></td> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpbvdepay.html" title="rtpbvdepay">rtpbvdepay</a></span></p></td> <td>Extracts BroadcomVoice audio from RTP packets (RFC 4298)</td> </tr> <tr> -<td><p><span class="term">rtpbvpay</span></p></td> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpbvpay.html" title="rtpbvpay">rtpbvpay</a></span></p></td> <td>Packetize BroadcomVoice audio streams into RTP packets (RFC 4298)</td> </tr> <tr> @@ -290,6 +304,14 @@ <td>Extracts QDM2 audio from RTP packets (no RFC)</td> </tr> <tr> +<td><p><span class="term">rtpsbcdepay</span></p></td> +<td>Extracts SBC audio from RTP packets</td> +</tr> +<tr> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpsbcpay.html" title="rtpsbcpay">rtpsbcpay</a></span></p></td> +<td>Payload SBC audio as RTP packets</td> +</tr> +<tr> <td><p><span class="term">rtpsirendepay</span></p></td> <td>Extracts Siren audio from RTP packets</td> </tr> @@ -326,6 +348,14 @@ <td>Payload-encode Vorbis audio into RTP packets (RFC 5215)</td> </tr> <tr> +<td><p><span class="term">rtpvp8depay</span></p></td> +<td>Extracts VP8 video from RTP packets)</td> +</tr> +<tr> +<td><p><span class="term">rtpvp8pay</span></p></td> +<td>Puts VP8 video in RTP packets)</td> +</tr> +<tr> <td><p><span class="term">rtpvrawdepay</span></p></td> <td>Extracts raw video from RTP packets (RFC 4175)</td> </tr> @@ -339,6 +369,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 164bf6340f1ca41506eed65098720b34345d8fed..afa9ad2e17efef29e201155ae14c24fde8c75800 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtpmanager</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-rtp.html" title="rtp"> <link rel="next" href="gst-plugins-good-plugins-plugin-rtsp.html" title="rtsp"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25029632"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.50.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,23 +60,38 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23483504"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.50.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpbin.html" title="rtpbin">rtpbin</a></span></p></td> <td>Real-Time Transport Protocol bin</td> </tr> <tr> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpdtmfmux.html" title="rtpdtmfmux">rtpdtmfmux</a></span></p></td> +<td>mixes RTP DTMF streams into other RTP streams</td> +</tr> +<tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html" title="rtpjitterbuffer">rtpjitterbuffer</a></span></p></td> <td>A buffer that deals with network jitter and other transmission faults</td> </tr> <tr> +<td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpmux.html" title="rtpmux">rtpmux</a></span></p></td> +<td>multiplex N rtp streams into one</td> +</tr> +<tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpptdemux.html" title="rtpptdemux">rtpptdemux</a></span></p></td> <td>Parses codec streams transmitted in the same RTP session</td> </tr> <tr> +<td><p><span class="term">rtprtxqueue</span></p></td> +<td>Keep RTP packets in a queue for retransmission</td> +</tr> +<tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpsession.html" title="rtpsession">rtpsession</a></span></p></td> <td>Implement an RTP session</td> </tr> @@ -87,6 +105,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 109f631ac89ddabfc3f7beeabbd45f29ad0de21b..5908799da23cf8f6562abc2ca42bfce2c51ab46b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtsp</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-rtpmanager.html" title="rtpmanager"> <link rel="next" href="gst-plugins-good-plugins-plugin-shapewipe.html" title="shapewipe"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24241296"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.51.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25013136"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.51.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-rtpdec.html" title="rtpdec">rtpdec</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 b7a1a6cf4b190e1fec8cc7dc84a5ce2c68759f0d..90a7fe1d1ffefe9db7c663fdf9ef90deff260ac4 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>shapewipe</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-rtsp.html" title="rtsp"> <link rel="next" href="gst-plugins-good-plugins-plugin-shout2send.html" title="shout2send"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26804464"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.52.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24407296"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.52.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-shapewipe.html" title="shapewipe">shapewipe</a></span></p></td> <td>Adds a shape wipe transition to a video stream</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 b3fb817a762d9408e8ed08f50052f03abd1bfa3b..3054459c028463f59d3a195fdd92174abe619c92 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>shout2send</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-shapewipe.html" title="shapewipe"> <link rel="next" href="gst-plugins-good-plugins-plugin-smpte.html" title="smpte"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp27118352"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.53.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22627216"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.53.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term">shout2send</span></p></td> <td>Sends data to an icecast server</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 ecc11af41e053527945a62666c71c77bf9a96955..b311e2e143604800904bed3cb5a11cf8cd623336 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>smpte</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-shout2send.html" title="shout2send"> <link rel="next" href="gst-plugins-good-plugins-plugin-soup.html" title="soup"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp20027360"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.54.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp22819920"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.54.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-smpte.html" title="smpte">smpte</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 1164584178baca5dfa3375891bed6d4fabea92bc..adda77778fdda7c84f70aec4c8fea1c5e04c76d0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>soup</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-smpte.html" title="smpte"> <link rel="next" href="gst-plugins-good-plugins-plugin-spectrum.html" title="spectrum"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25717616"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.55.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp26077888"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.55.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">souphttpclientsink</span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 e00bf46c3b404cabdd7f97fb40e03189280566b7..b644b03d1db13280f7fa7334aa30415c07eb27b2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>spectrum</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-soup.html" title="soup"> <link rel="next" href="gst-plugins-good-plugins-plugin-speex.html" title="speex"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25267488"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.56.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp27187392"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.56.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-spectrum.html" title="spectrum">spectrum</a></span></p></td> <td>Run an FFT on the audio signal, output spectrum data</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 91d7b1803883eec2ea5622c5be70a66e47c677fd..cd74e8f1e495bea5eb84fa99e5a7d975326cb423 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>speex</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-spectrum.html" title="spectrum"> <link rel="next" href="gst-plugins-good-plugins-plugin-taglib.html" title="taglib"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25799488"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.57.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp26788608"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.57.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-speexdec.html" title="speexdec">speexdec</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 a1809f57f687a94472a27772aac79b35a687427e..4634602127034e24dca4ef3eff57ffb40fd571b2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>taglib</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-speex.html" title="speex"> <link rel="next" href="gst-plugins-good-plugins-plugin-udp.html" title="udp"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26818320"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.58.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp26171440"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.58.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-apev2mux.html" title="apev2mux">apev2mux</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 ab0557c52a21acc678880877d4594e6fe6f4107d..bd4fba046627b0f4ebebcbb705d8e896c256f372 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>udp</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-taglib.html" title="taglib"> <link rel="next" href="gst-plugins-good-plugins-plugin-video4linux2.html" title="video4linux2"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25492896"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.59.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23520688"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.59.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">dynudpsink</span></p></td> @@ -83,6 +89,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 7f0928b7a7741017cd9395db7d1b15c8f3c1502b..18cb8731fd536e26e25cf0f15910a355f5bb07b5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>video4linux2</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-udp.html" title="udp"> <link rel="next" href="gst-plugins-good-plugins-plugin-videobox.html" title="videobox"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25937808"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.60.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp26183072"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.60.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-v4l2radio.html" title="v4l2radio">v4l2radio</a></span></p></td> @@ -79,6 +85,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 57574171f5ce35817e43e771968f26ed3cc73b5b..68156c2a3d52b7d08db9c9fb300d90992dc039ba 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>videobox</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-video4linux2.html" title="video4linux2"> <link rel="next" href="gst-plugins-good-plugins-plugin-videocrop.html" title="videocrop"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp18839600"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.61.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp23554720"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.61.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-videobox.html" title="videobox">videobox</a></span></p></td> <td>Resizes a video by adding borders or cropping</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 975638103f9541a9d5ead7807b7e22cadffdb4f5..17b21d4f23be627b8ea8cfebd5a3b6dbe03bca8e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>videocrop</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-videobox.html" title="videobox"> <link rel="next" href="gst-plugins-good-plugins-plugin-videofilter.html" title="videofilter"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25515360"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.62.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25842560"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.62.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-aspectratiocrop.html" title="aspectratiocrop">aspectratiocrop</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 614bd3f934ab3ad287f46f4c5c62597440f838de..ba3001473ccabc8706c79e15b5a11de5915fd7a0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>videofilter</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-videocrop.html" title="videocrop"> <link rel="next" href="gst-plugins-good-plugins-plugin-videomixer.html" title="videomixer"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25621696"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.63.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25950528"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.63.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-gamma.html" title="gamma">gamma</a></span></p></td> @@ -83,6 +89,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 598f78dc347331b6c14b209f5caa37b85f8977e9..f45b604c8f13262d8c43a28921b902ef7047c601 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>videomixer</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-videofilter.html" title="videofilter"> <link rel="next" href="gst-plugins-good-plugins-plugin-vpx.html" title="vpx"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp27020560"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.64.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp27024864"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.64.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-videomixer.html" title="videomixer">videomixer</a></span></p></td> <td>Mix multiple video streams</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 d20985ba1b7c8997fb99bf8a3479d22b792f47a3..87464ec48e332aa2f86b7f081c161e67201a972d 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>vpx</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-videomixer.html" title="videomixer"> <link rel="next" href="gst-plugins-good-plugins-plugin-waveform.html" title="waveform"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26173824"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.65.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24361088"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.65.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-vp8dec.html" title="vp8dec">vp8dec</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-waveform.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-waveform.html index f3faed0710b72838a5b99d5dd38fe33382d67a37..868c485d7fcd51ac89ef8ec2d4e229920d7509ce 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-waveform.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-waveform.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>waveform</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-vpx.html" title="vpx"> <link rel="next" href="gst-plugins-good-plugins-plugin-wavenc.html" title="wavenc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24248144"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.66.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp24643984"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.66.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-waveformsink.html" title="waveformsink">waveformsink</a></span></p></td> <td>WaveForm audio sink</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 4982a9b5a3ca981c924a68ffd6df35278e779768..6914fbb70dcc84a93957a92cd3704bddefbee0de 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>wavenc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-waveform.html" title="waveform"> <link rel="next" href="gst-plugins-good-plugins-plugin-wavpack.html" title="wavpack"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp24607248"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.67.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp26673424"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.67.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-wavenc.html" title="wavenc">wavenc</a></span></p></td> <td>Encode raw audio into WAV</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 d669e51b23225ca79ad328a4804c76036b31752c..a0f938ffdb9824b13b3a3d568573d4a35e41d7c3 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>wavpack</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-wavenc.html" title="wavenc"> <link rel="next" href="gst-plugins-good-plugins-plugin-wavparse.html" title="wavparse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25414176"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.68.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25033440"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.68.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-wavpackdec.html" title="wavpackdec">wavpackdec</a></span></p></td> @@ -75,6 +81,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 4c38d178912a2d72d424ba1d95204a8f36ee6338..b348e5144b958403687d5815437ba99a344f01b1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>wavparse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-wavpack.html" title="wavpack"> <link rel="next" href="gst-plugins-good-plugins-plugin-ximagesrc.html" title="ximagesrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp16921968"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.69.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp26420944"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.69.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-wavparse.html" title="wavparse">wavparse</a></span></p></td> <td>Parse a .wav file into raw audio</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 ec139f32b63f0722903061182c55d4478dfe2e2e..54dcfa527bcb0db53b65cdd3c6b4e8db656e3cbb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ximagesrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-wavparse.html" title="wavparse"> <link rel="next" href="gst-plugins-good-plugins-plugin-y4menc.html" title="y4menc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp25104240"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.70.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp27120016"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.70.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-ximagesrc.html" title="ximagesrc">ximagesrc</a></span></p></td> <td>Creates a screenshot video stream</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file 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 784e692457fa29282ed23a95e032cae1c586d99b..b5ceb29fc4174cc71b31ac4fa84b93b9c2506912 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>y4menc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch02.html" title="gst-plugins-good Plugins"> <link rel="prev" href="gst-plugins-good-plugins-plugin-ximagesrc.html" title="ximagesrc"> <link rel="next" href="ch03.html" title="gst-plugins-good Base Classes"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -29,9 +29,12 @@ <td valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> -<a name="idp26565152"></a><h2>Plugin Information</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.71.3"></a><h2>Plugin Information</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">filename</span></p></td> @@ -39,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.0.10</td> +<td>1.1.90</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> @@ -57,9 +60,12 @@ </table></div> </div> <div class="refsect1"> -<a name="idp25932368"></a><h2>Elements</h2> -<div class="variablelist"><table border="0"> +<a name="id-1.3.71.4"></a><h2>Elements</h2> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody><tr> <td><p><span class="term"><a class="link" href="gst-plugins-good-plugins-y4menc.html" title="y4menc">y4menc</a></span></p></td> <td>Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</td> @@ -69,6 +75,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-pngdec.html b/docs/plugins/html/gst-plugins-good-plugins-pngdec.html index eabaa8c6f4dab08be1de20a547c3f275b094d8c6..5f6772750c9a33d3e44858af95a7df222d9e3929 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-pngdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-pngdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>pngdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-osxvideosink.html" title="osxvideosink"> <link rel="next" href="gst-plugins-good-plugins-pngenc.html" title="pngenc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -58,9 +58,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18115200"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.96.5.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -81,9 +84,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp18756400"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.96.5.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -103,8 +109,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -141,6 +150,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-pngenc.html b/docs/plugins/html/gst-plugins-good-plugins-pngenc.html index 54419a23c3b53dc8be6afca47af7935e2b20355d..41f803a59221560c708b7ce70550d95f3ca767fd 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-pngenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-pngenc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>pngenc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-pngdec.html" title="pngdec"> <link rel="next" href="gst-plugins-good-plugins-progressreport.html" title="progressreport"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -75,9 +75,12 @@ GstPngEnc implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp6895344"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.97.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -98,9 +101,12 @@ GstPngEnc implements </div> <hr> <div class="refsect2"> -<a name="idp16263840"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.97.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -120,8 +126,11 @@ GstPngEnc implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -175,6 +184,6 @@ GstPngEnc implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-progressreport.html b/docs/plugins/html/gst-plugins-good-plugins-progressreport.html index 39432136430cc2fc327794d23f5317b4c9b61956..54e417147c15d118b8b661b5f3a0ef75ba8b942a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-progressreport.html +++ b/docs/plugins/html/gst-plugins-good-plugins-progressreport.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>progressreport</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-pngenc.html" title="pngenc"> <link rel="next" href="gst-plugins-good-plugins-pulsesink.html" title="pulsesink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -104,7 +104,7 @@ a whole). <p> </p> <div class="refsect2"> -<a name="idp16261984"></a><h3>Example launch line</h3> +<a name="id-1.2.98.6.7.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -133,9 +133,12 @@ a whole). <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp14790512"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.98.6.8.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -156,9 +159,12 @@ a whole). </div> <hr> <div class="refsect2"> -<a name="idp18106256"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.98.6.8.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -178,8 +184,11 @@ a whole). </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -247,6 +256,6 @@ a whole). </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-pulsesink.html b/docs/plugins/html/gst-plugins-good-plugins-pulsesink.html index d51826ededfdb61fcaaa311c3d16367bbab4bc5f..26ebe9bdc4f00f5f1229c4667be18996ca73f375 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-pulsesink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-pulsesink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>pulsesink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-progressreport.html" title="progressreport"> <link rel="next" href="gst-plugins-good-plugins-pulsesrc.html" title="pulsesrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -62,7 +62,7 @@ <a name="gst-plugins-good-plugins-pulsesink.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstPulseSink implements - <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gststreamvolume.html#GstStreamVolume">GstStreamVolume</a>, GstImplementsInterface and GstPropertyProbe.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gststreamvolume.html#GstStreamVolume">GstStreamVolume</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstImplementsInterface.html">GstImplementsInterface</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstpropertyprobe.html#GstPropertyProbe">GstPropertyProbe</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-pulsesink.properties"></a><h2>Properties</h2> @@ -75,6 +75,7 @@ GstPulseSink implements "<a class="link" href="gst-plugins-good-plugins-pulsesink.html#GstPulseSink--client" title='The "client" property'>client</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write "<a class="link" href="gst-plugins-good-plugins-pulsesink.html#GstPulseSink--stream-properties" title='The "stream-properties" property'>stream-properties</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a>* : Read / Write "<a class="link" href="gst-plugins-good-plugins-pulsesink.html#GstPulseSink--client-name" title='The "client-name" property'>client-name</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-pulsesink.html#GstPulseSink--current-device" title='The "current-device" property'>current-device</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read </pre> </div> <div class="refsect1"> @@ -82,9 +83,12 @@ GstPulseSink implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18593120"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.99.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -105,9 +109,12 @@ GstPulseSink implements </div> <hr> <div class="refsect2"> -<a name="idp14965120"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.99.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -149,6 +156,10 @@ GstPulseSink implements <td><p><span class="term"></span></p></td> <td> audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)[ 1, 2 ], parsed=(boolean)true</td> </tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> audio/mpeg, mpegversion=(int){ 2, 4 }, framed=(boolean)true, stream-format=(string)adts</td> +</tr> </tbody> </table></div> </div> @@ -222,10 +233,17 @@ GstPulseSink implements <p>The PulseAudio client name to use.</p> <p>Default value: "lt-gst-plugins-good-plugins-scan"</p> </div> +<hr> +<div class="refsect2"> +<a name="GstPulseSink--current-device"></a><h3>The <code class="literal">"current-device"</code> property</h3> +<pre class="programlisting"> "current-device" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read</pre> +<p>The current PulseAudio sink device.</p> +<p>Default value: NULL</p> +</div> </div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-pulsesrc.html b/docs/plugins/html/gst-plugins-good-plugins-pulsesrc.html index bedb111bfc5a2843587492ecc274be2138166e8e..2e2d24b6e3f7c2a2111e7ff009ed8dc90c28a67e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-pulsesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-pulsesrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>pulsesrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-pulsesink.html" title="pulsesink"> <link rel="next" href="gst-plugins-good-plugins-quarktv.html" title="quarktv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -64,7 +64,7 @@ <a name="gst-plugins-good-plugins-pulsesrc.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstPulseSrc implements - <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gststreamvolume.html#GstStreamVolume">GstStreamVolume</a>, GstImplementsInterface, GstMixer and GstPropertyProbe.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gststreamvolume.html#GstStreamVolume">GstStreamVolume</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstImplementsInterface.html">GstImplementsInterface</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstmixer.html#GstMixer">GstMixer</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstpropertyprobe.html#GstPropertyProbe">GstPropertyProbe</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-pulsesrc.properties"></a><h2>Properties</h2> @@ -78,6 +78,7 @@ GstPulseSrc implements "<a class="link" href="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--source-output-index" title='The "source-output-index" property'>source-output-index</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read "<a class="link" href="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--volume" title='The "volume" property'>volume</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--client-name" title='The "client-name" property'>client-name</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--current-device" title='The "current-device" property'>current-device</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read </pre> </div> <div class="refsect1"> @@ -85,9 +86,12 @@ GstPulseSrc implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp16340160"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.100.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -108,9 +112,12 @@ GstPulseSrc implements </div> <hr> <div class="refsect2"> -<a name="idp12388752"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.100.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -126,7 +133,7 @@ GstPulseSrc implements </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]</td> +<td>audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]</td> </tr> <tr> <td><p><span class="term"></span></p></td> @@ -216,10 +223,17 @@ GstPulseSrc implements <p>The PulseAudio client_name_to_use.</p> <p>Default value: "lt-gst-plugins-good-plugins-scan"</p> </div> +<hr> +<div class="refsect2"> +<a name="GstPulseSrc--current-device"></a><h3>The <code class="literal">"current-device"</code> property</h3> +<pre class="programlisting"> "current-device" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read</pre> +<p>The current PulseAudio source device.</p> +<p>Default value: NULL</p> +</div> </div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-qtdemux.html b/docs/plugins/html/gst-plugins-good-plugins-qtdemux.html index 37f1e8e63ede642d737108344d4de62abe755fcd..df36fb3aea5f5b5fc3c9b49fb941b4d6ae4731a8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-qtdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-qtdemux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>qtdemux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-quarktv.html" title="quarktv"> <link rel="next" href="gst-plugins-good-plugins-qtmux.html" title="qtmux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -72,7 +72,7 @@ capabilities of the upstream elements. <p> </p> <div class="refsect2"> -<a name="idp18001200"></a><h3>Example launch line</h3> +<a name="id-1.2.102.6.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -96,9 +96,12 @@ Last reviewed on 2006-12-29 (0.10.5) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp7661856"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.102.6.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -119,9 +122,12 @@ Last reviewed on 2006-12-29 (0.10.5) </div> <hr> <div class="refsect2"> -<a name="idp18740912"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.102.6.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -153,8 +159,11 @@ Last reviewed on 2006-12-29 (0.10.5) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -174,8 +183,11 @@ Last reviewed on 2006-12-29 (0.10.5) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -195,8 +207,11 @@ Last reviewed on 2006-12-29 (0.10.5) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -239,8 +254,11 @@ Last reviewed on 2006-12-29 (0.10.5) <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstqtdemux</code></em> :</span></p></td> @@ -257,6 +275,6 @@ Last reviewed on 2006-12-29 (0.10.5) </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-qtmoovrecover.html b/docs/plugins/html/gst-plugins-good-plugins-qtmoovrecover.html index a55d1bb1517cf4be36c92d657bab61089bff86db..957247f49c0dccf243e293931023b79bf2f4e9c9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-qtmoovrecover.html +++ b/docs/plugins/html/gst-plugins-good-plugins-qtmoovrecover.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>qtmoovrecover</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-qtmux.html" title="qtmux"> <link rel="next" href="gst-plugins-good-plugins-radioactv.html" title="radioactv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -81,7 +81,7 @@ GstQTMoovRecover implements <p> </p> <div class="refsect2"> -<a name="idp18524464"></a><h3>Example pipelines</h3> +<a name="id-1.2.104.7.2.1"></a><h3>Example pipelines</h3> <p> This element recovers quicktime files created with qtmux using the moov recovery feature. @@ -102,9 +102,12 @@ Documentation last reviewed on 2011-04-21 <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18192768"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.104.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -125,7 +128,7 @@ Documentation last reviewed on 2011-04-21 </div> <hr> <div class="refsect2"> -<a name="idp15097392"></a><h3>Element Pads</h3> +<a name="id-1.2.104.7.4.2"></a><h3>Element Pads</h3> </div> </div> <p> @@ -197,6 +200,6 @@ Documentation last reviewed on 2011-04-21 </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-qtmux.html b/docs/plugins/html/gst-plugins-good-plugins-qtmux.html index 620565420afbec249cb559af75eb322361e7417c..361753f2b31e2d6d0c1f501471132ef0d9a9312b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-qtmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-qtmux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>qtmux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-qtdemux.html" title="qtdemux"> <link rel="next" href="gst-plugins-good-plugins-qtmoovrecover.html" title="qtmoovrecover"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -118,22 +118,9 @@ If such fragmented layout is intended for streaming purposes, then index metadata (at the end of file). </p> <p> -<a class="link" href="gst-plugins-good-plugins-qtmux.html#GstQTMux--dts-method" title='The "dts-method" property'>dts-method</a> allows selecting a -method for managing input timestamps (stay tuned for 0.11 to have this -automagically settled). The default delta/duration method should handle nice -(aka perfect streams) just fine, but may experience problems otherwise -(e.g. input stream with re-ordered B-frames and/or with frame dropping). -The re-ordering approach re-assigns incoming timestamps in ascending order -to incoming buffers and offers an alternative in such cases. In cases where -that might fail, the remaining method can be tried, which is exact and -according to specs, but might experience playback on not so spec-wise players. -Note that this latter approach also requires one to enable -presentation-timestamp. -</p> -<p> </p> <div class="refsect2"> -<a name="idp13712640"></a><h3>Example pipelines</h3> +<a name="id-1.2.103.7.7.1"></a><h3>Example pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -155,9 +142,12 @@ Last reviewed on 2010-12-03 <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp13075632"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.103.7.9.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -178,9 +168,12 @@ Last reviewed on 2010-12-03 </div> <hr> <div class="refsect2"> -<a name="idp18075376"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.103.7.9.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -244,8 +237,11 @@ Last reviewed on 2010-12-03 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -305,8 +301,11 @@ Last reviewed on 2010-12-03 </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -349,7 +348,7 @@ Last reviewed on 2010-12-03 <div class="refsect2"> <a name="GstQTMux--dts-method"></a><h3>The <code class="literal">"dts-method"</code> property</h3> <pre class="programlisting"> "dts-method" <span class="type">GstQTMuxDtsMethods</span> : Read / Write / Construct</pre> -<p>Method to determine DTS time.</p> +<p>(DEPRECATED) Method to determine DTS time.</p> <p>Default value: reorder</p> </div> <hr> @@ -413,6 +412,6 @@ Last reviewed on 2010-12-03 </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-quarktv.html b/docs/plugins/html/gst-plugins-good-plugins-quarktv.html index b9abd7c0b98391a82f7f1157a056b272f7e1ba2e..fd134c355861a86000af7ff31060353a6f7466f5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-quarktv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-quarktv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>quarktv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-pulsesrc.html" title="pulsesrc"> <link rel="next" href="gst-plugins-good-plugins-qtdemux.html" title="qtdemux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -65,33 +65,37 @@ <div class="refsect1"> <a name="gst-plugins-good-plugins-quarktv.description"></a><h2>Description</h2> <p> -QuarkTV disolves moving objects. It picks up pixels from -the last frames randomly. +RevTV acts like a video waveform monitor for each line of video +processed. This creates a pseudo 3D effect based on the brightness +of the video along each line. </p> <p> </p> <div class="refsect2"> -<a name="idp16257024"></a><h3>Example launch line</h3> +<a name="id-1.2.101.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td class="listing_lines" align="right"><pre>1</pre></td> - <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> quarktv <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> revtv <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td> </tr> </tbody> </table> </div> - This pipeline shows the effect of quarktv on a test stream. + This pipeline shows the effect of revtv on a test stream. </div> <p> </p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp14284272"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.101.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -112,9 +116,12 @@ the last frames randomly. </div> <hr> <div class="refsect2"> -<a name="idp18841936"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.101.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -134,8 +141,11 @@ the last frames randomly. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -182,6 +192,6 @@ the last frames randomly. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-radioactv.html b/docs/plugins/html/gst-plugins-good-plugins-radioactv.html index 7f7ef7f62d55040387302508bf5dc6ea2e932865..e54e066cdfdc8d1da75d2a0ac8dc887f323b26dc 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-radioactv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-radioactv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>radioactv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-qtmoovrecover.html" title="qtmoovrecover"> <link rel="next" href="gst-plugins-good-plugins-revtv.html" title="revtv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -83,7 +83,7 @@ previous frame displayed. The effect of strobe2 is stronger than strobe1. <p> </p> <div class="refsect2"> -<a name="idp6617776"></a><h3>Example launch line</h3> +<a name="id-1.2.105.6.5.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -101,9 +101,12 @@ previous frame displayed. The effect of strobe2 is stronger than strobe1. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp14167280"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.105.6.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -124,9 +127,12 @@ previous frame displayed. The effect of strobe2 is stronger than strobe1. </div> <hr> <div class="refsect2"> -<a name="idp13290032"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.105.6.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -146,8 +152,11 @@ previous frame displayed. The effect of strobe2 is stronger than strobe1. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -215,6 +224,6 @@ previous frame displayed. The effect of strobe2 is stronger than strobe1. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-revtv.html b/docs/plugins/html/gst-plugins-good-plugins-revtv.html index 4ee8a618b76ec7ecf6de6ed71d144f2987b9ec44..aef7f696f1582052c3bae7b87c04d9054d6849b6 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-revtv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-revtv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>revtv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-radioactv.html" title="radioactv"> <link rel="next" href="gst-plugins-good-plugins-rganalysis.html" title="rganalysis"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -69,9 +69,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18855152"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.106.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -92,9 +95,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp14633984"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.106.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -114,8 +120,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -178,6 +187,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rganalysis.html b/docs/plugins/html/gst-plugins-good-plugins-rganalysis.html index 94bbe14ce930719fa25c1eefe91b34a7fc8ff6ab..58f8db034d567a0d49c95e5564bcb6b5be27d9aa 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rganalysis.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rganalysis.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rganalysis</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-revtv.html" title="revtv"> <link rel="next" href="gst-plugins-good-plugins-rglimiter.html" title="rglimiter"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -90,7 +90,7 @@ an album, not just the last one. <p> </p> <div class="refsect2"> -<a name="idp6301280"></a><h3>Example launch lines</h3> +<a name="id-1.2.107.6.4.1"></a><h3>Example launch lines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -138,7 +138,7 @@ property documentation for more information. </p> <hr> <div class="refsect2"> -<a name="idp16897136"></a><h3>Acknowledgements</h3> +<a name="id-1.2.107.6.4.2"></a><h3>Acknowledgements</h3> <p> This element is based on code used in the <a class="ulink" href="http://sjeng.org/vorbisgain.html" target="_top">vorbisgain</a> program and many others. The relevant parts are copyrighted by David Robinson, Glen Sawyer @@ -150,9 +150,12 @@ and Frank Klemm. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18060720"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.107.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -173,9 +176,12 @@ and Frank Klemm. </div> <hr> <div class="refsect2"> -<a name="idp19055552"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.107.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -199,8 +205,11 @@ and Frank Klemm. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -353,6 +362,6 @@ tag, which allows to store the used value alongside the gain values. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rglimiter.html b/docs/plugins/html/gst-plugins-good-plugins-rglimiter.html index b3e65b99d6090a891209ff2d89c9af712bdbf502..6699eca2f95e2e587b632746dfec68cec9b17622 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rglimiter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rglimiter.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rglimiter</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-rganalysis.html" title="rganalysis"> <link rel="next" href="gst-plugins-good-plugins-rgvolume.html" title="rgvolume"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -71,7 +71,7 @@ threshold of -6 dB. This type of filter is mentioned in the proposed <a class=" <p> </p> <div class="refsect2"> -<a name="idp17142800"></a><h3>Example launch line</h3> +<a name="id-1.2.108.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -93,9 +93,12 @@ Playback of a file <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15771760"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.108.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -116,9 +119,12 @@ Playback of a file </div> <hr> <div class="refsect2"> -<a name="idp18363552"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.108.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -138,8 +144,11 @@ Playback of a file </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -190,6 +199,6 @@ Opaque data structure. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rgvolume.html b/docs/plugins/html/gst-plugins-good-plugins-rgvolume.html index 0ff35be09b1e06c128b783e4026446cce80e2eb3..3c2ee703917e792caa6956f7a4f97d59baa5721f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rgvolume.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rgvolume.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rgvolume</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-rglimiter.html" title="rglimiter"> <link rel="next" href="gst-plugins-good-plugins-rippletv.html" title="rippletv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -82,7 +82,7 @@ This element applies volume changes to streams as lined out in the proposed interprets the ReplayGain meta data tags and carries out the adjustment (by using a volume element internally). The relevant tags are: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GST-TAG-TRACK-GAIN:CAPS"><span class="type">GST_TAG_TRACK_GAIN</span></a></li> <li class="listitem"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GST-TAG-TRACK-PEAK:CAPS"><span class="type">GST_TAG_TRACK_PEAK</span></a></li> <li class="listitem"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GST-TAG-ALBUM-GAIN:CAPS"><span class="type">GST_TAG_ALBUM_GAIN</span></a></li> @@ -104,7 +104,7 @@ element applies -6 dB hard limiting as mentioned in the ReplayGain standard. <p> </p> <div class="refsect2"> -<a name="idp19683248"></a><h3>Example launch line</h3> +<a name="id-1.2.109.7.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -124,9 +124,12 @@ element applies -6 dB hard limiting as mentioned in the ReplayGain standard. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp13817536"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.109.7.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -147,9 +150,12 @@ element applies -6 dB hard limiting as mentioned in the ReplayGain standard. </div> <hr> <div class="refsect2"> -<a name="idp19188016"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.109.7.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -169,8 +175,11 @@ element applies -6 dB hard limiting as mentioned in the ReplayGain standard. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -330,7 +339,7 @@ these simple formulas: </p> <p> </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--pre-amp" title='The "pre-amp" property'>pre-amp</a> + album gain of the stream</li> @@ -354,6 +363,6 @@ of the stream</li> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rippletv.html b/docs/plugins/html/gst-plugins-good-plugins-rippletv.html index 7d25d41f4f5efcf7a46c96ac8ad08f11612b5c43..ae0e23de7c1bdab8e650ed5197dc5530aaa306b7 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rippletv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rippletv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rippletv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-rgvolume.html" title="rgvolume"> <link rel="next" href="gst-plugins-good-plugins-rtpdec.html" title="rtpdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -72,7 +72,7 @@ by motion or random rain drops. <p> </p> <div class="refsect2"> -<a name="idp14957280"></a><h3>Example launch line</h3> +<a name="id-1.2.110.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -90,9 +90,12 @@ by motion or random rain drops. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15828896"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.110.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -113,9 +116,12 @@ by motion or random rain drops. </div> <hr> <div class="refsect2"> -<a name="idp19834944"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.110.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -135,8 +141,11 @@ by motion or random rain drops. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -189,6 +198,6 @@ by motion or random rain drops. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpL16depay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpL16depay.html new file mode 100644 index 0000000000000000000000000000000000000000..12fe537386473aec1613b00afe762377ef5a7e85 --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpL16depay.html @@ -0,0 +1,189 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpL16depay</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpbvpay.html" title="rtpbvpay"> +<link rel="next" href="gst-plugins-good-plugins-rtpL16pay.html" title="rtpL16pay"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpbvpay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpL16pay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpL16depay.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpL16depay.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-rtpL16depay.object-hierarchy" class="shortcut">Object Hierarchy</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpL16depay"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpL16depay.top_of_page"></a>rtpL16depay</span></h2> +<p>rtpL16depay — Extracts raw audio from RTP packets</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpL16depay.synopsis"></a><h2>Synopsis</h2> +<a name="GstRtpL16Depay"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpL16depay.html#GstRtpL16Depay-struct" title="struct GstRtpL16Depay">GstRtpL16Depay</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpL16depay.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayload">GstRTPBaseDepayload</a> + +----GstRtpL16Depay +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpL16depay.description"></a><h2>Description</h2> +<p> +Extract raw audio from RTP packets according to RFC 3551. +For detailed information see: http://www.rfc-editor.org/rfc/rfc3551.txt +</p> +<p> +</p> +<div class="refsect2"> +<a name="id-1.2.118.5.3.1"></a><h3>Example pipeline</h3> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch udpsrc caps<span class="gtkdoc opt">=</span><span class="string">'application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(string)1, channels=(int)1, payload=(int)96'</span> <span class="gtkdoc opt">!</span> rtpL16depay <span class="gtkdoc opt">!</span> pulsesink</pre></td> + </tr> + </tbody> + </table> +</div> + This example pipeline will depayload an RTP raw audio stream. Refer to +the rtpL16pay example to create the RTP stream. +</div> +<p> +</p> +<p> +Last reviewed on 2013-04-25 (1.1.0) +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.118.5.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtp.html#plugin-rtp">rtp</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Zeeshan Ali <zak147@yahoo.com>,Wim Taymans <wim.taymans@gmail.com></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Depayloader/Network/RTP</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.118.5.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp, media=(string)audio, clock-rate=(int)[ 1, 2147483647 ], encoding-name=(string)L16</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> application/x-rtp, media=(string)audio, payload=(int){ 10, 11 }, clock-rate=(int)[ 1, 2147483647 ]</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/x-raw, format=(string)S16BE, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpL16depay.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstRtpL16Depay-struct"></a><h3>struct GstRtpL16Depay</h3> +<pre class="programlisting">struct GstRtpL16Depay;</pre> +<p> +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpL16depay.see-also"></a><h2>See Also</h2> +rtpL16pay +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpL16pay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpL16pay.html new file mode 100644 index 0000000000000000000000000000000000000000..01ca2ad520a700ff10b8165003b808c1f2108d2c --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpL16pay.html @@ -0,0 +1,194 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpL16pay</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpL16depay.html" title="rtpL16depay"> +<link rel="next" href="gst-plugins-good-plugins-rtpj2kpay.html" title="rtpj2kpay"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpL16depay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpj2kpay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpL16pay.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpL16pay.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-rtpL16pay.object-hierarchy" class="shortcut">Object Hierarchy</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpL16pay"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpL16pay.top_of_page"></a>rtpL16pay</span></h2> +<p>rtpL16pay — Payload-encode Raw audio into RTP packets (RFC 3551)</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpL16pay.synopsis"></a><h2>Synopsis</h2> +<a name="GstRtpL16Pay"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpL16pay.html#GstRtpL16Pay-struct" title="struct GstRtpL16Pay">GstRtpL16Pay</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpL16pay.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload">GstRTPBasePayload</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtpbaseaudiopayload.html#GstRTPBaseAudioPayload">GstRTPBaseAudioPayload</a> + +----GstRtpL16Pay +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpL16pay.description"></a><h2>Description</h2> +<p> +Payload raw audio into RTP packets according to RFC 3551. +For detailed information see: http://www.rfc-editor.org/rfc/rfc3551.txt +</p> +<p> +</p> +<div class="refsect2"> +<a name="id-1.2.119.5.3.1"></a><h3>Example pipeline</h3> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch <span class="gtkdoc opt">-</span>v audiotestsrc <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> rtpL16pay <span class="gtkdoc opt">!</span> udpsink</pre></td> + </tr> + </tbody> + </table> +</div> + This example pipeline will payload raw audio. Refer to +the rtpL16depay example to depayload and play the RTP stream. +</div> +<p> +</p> +<p> +Last reviewed on 2013-04-25 (1.1.0) +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.119.5.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtp.html#plugin-rtp">rtp</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Wim Taymans <wim.taymans@gmail.com></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Payloader/Network/RTP</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.119.5.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/x-raw, format=(string)S16BE, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)[ 1, 2147483647 ], encoding-name=(string)L16, channels=(int)[ 1, 2147483647 ]</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> application/x-rtp, media=(string)audio, encoding-name=(string)L16, payload=(int)10, clock-rate=(int)44100</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> application/x-rtp, media=(string)audio, encoding-name=(string)L16, payload=(int)11, clock-rate=(int)44100</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpL16pay.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstRtpL16Pay-struct"></a><h3>struct GstRtpL16Pay</h3> +<pre class="programlisting">struct GstRtpL16Pay;</pre> +<p> +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpL16pay.see-also"></a><h2>See Also</h2> +rtpL16depay +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpac3depay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpac3depay.html new file mode 100644 index 0000000000000000000000000000000000000000..52b65281d9eecf79a567f910f4a43a27217f47b4 --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpac3depay.html @@ -0,0 +1,185 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpac3depay</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpdec.html" title="rtpdec"> +<link rel="next" href="gst-plugins-good-plugins-rtpac3pay.html" title="rtpac3pay"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpdec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpac3pay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpac3depay.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpac3depay.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-rtpac3depay.object-hierarchy" class="shortcut">Object Hierarchy</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpac3depay"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpac3depay.top_of_page"></a>rtpac3depay</span></h2> +<p>rtpac3depay — Extracts AC3 audio from RTP packets (RFC 4184)</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpac3depay.synopsis"></a><h2>Synopsis</h2> +<a name="GstRtpAC3Depay"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpac3depay.html#GstRtpAC3Depay-struct" title="struct GstRtpAC3Depay">GstRtpAC3Depay</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpac3depay.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayload">GstRTPBaseDepayload</a> + +----GstRtpAC3Depay +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpac3depay.description"></a><h2>Description</h2> +<p> +Extract AC3 audio from RTP packets according to RFC 4184. +For detailed information see: http://www.rfc-editor.org/rfc/rfc4184.txt +</p> +<p> +</p> +<div class="refsect2"> +<a name="id-1.2.112.5.3.1"></a><h3>Example pipeline</h3> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> udpsrc caps<span class="gtkdoc opt">=</span><span class="string">'application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)AC3, payload=(int)96'</span> <span class="gtkdoc opt">!</span> rtpac3depay <span class="gtkdoc opt">!</span> a52dec <span class="gtkdoc opt">!</span> pulsesink</pre></td> + </tr> + </tbody> + </table> +</div> + This example pipeline will depayload and decode an RTP AC3 stream. Refer to +the rtpac3pay example to create the RTP stream. +</div> +<p> +</p> +<p> +Last reviewed on 2013-04-25 (1.1.0) +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.112.5.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtp.html#plugin-rtp">rtp</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Wim Taymans <wim.taymans@gmail.com></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Depayloader/Network/RTP</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.112.5.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp, media=(string)audio, clock-rate=(int){ 32000, 44100, 48000 }, encoding-name=(string)AC3</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/ac3</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpac3depay.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstRtpAC3Depay-struct"></a><h3>struct GstRtpAC3Depay</h3> +<pre class="programlisting">struct GstRtpAC3Depay;</pre> +<p> +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpac3depay.see-also"></a><h2>See Also</h2> +rtpac3pay +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpac3pay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpac3pay.html new file mode 100644 index 0000000000000000000000000000000000000000..c570cbf4e4eee5d33ac70a57e11cff6be02ad2b7 --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpac3pay.html @@ -0,0 +1,189 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpac3pay</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpac3depay.html" title="rtpac3depay"> +<link rel="next" href="gst-plugins-good-plugins-rtpamrdepay.html" title="rtpamrdepay"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpac3depay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpamrdepay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpac3pay.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpac3pay.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-rtpac3pay.object-hierarchy" class="shortcut">Object Hierarchy</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpac3pay"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpac3pay.top_of_page"></a>rtpac3pay</span></h2> +<p>rtpac3pay — Payload AC3 audio as RTP packets (RFC 4184)</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpac3pay.synopsis"></a><h2>Synopsis</h2> +<a name="GstRtpAC3Pay"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpac3pay.html#GstRtpAC3Pay-struct" title="struct GstRtpAC3Pay">GstRtpAC3Pay</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpac3pay.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload">GstRTPBasePayload</a> + +----GstRtpAC3Pay +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpac3pay.description"></a><h2>Description</h2> +<p> +Payload AC3 audio into RTP packets according to RFC 4184. +For detailed information see: http://www.rfc-editor.org/rfc/rfc4184.txt +</p> +<p> +</p> +<div class="refsect2"> +<a name="id-1.2.113.5.3.1"></a><h3>Example pipeline</h3> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch <span class="gtkdoc opt">-</span>v audiotestsrc <span class="gtkdoc opt">!</span> avenc_ac3 <span class="gtkdoc opt">!</span> rtpac3pay <span class="gtkdoc opt">!</span> udpsink</pre></td> + </tr> + </tbody> + </table> +</div> + This example pipeline will encode and payload AC3 stream. Refer to +the rtpac3depay example to depayload and decode the RTP stream. +</div> +<p> +</p> +<p> +Last reviewed on 2013-04-25 (1.1.0) +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.113.5.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtp.html#plugin-rtp">rtp</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Wim Taymans <wim.taymans@gmail.com></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Payloader/Network/RTP</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.113.5.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/ac3</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> audio/x-ac3</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int){ 32000, 44100, 48000 }, encoding-name=(string)AC3</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpac3pay.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstRtpAC3Pay-struct"></a><h3>struct GstRtpAC3Pay</h3> +<pre class="programlisting">struct GstRtpAC3Pay;</pre> +<p> +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpac3pay.see-also"></a><h2>See Also</h2> +rtpac3depay +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpamrdepay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpamrdepay.html new file mode 100644 index 0000000000000000000000000000000000000000..c0633b15ca1ef36636224f27140f7ed707dbccbe --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpamrdepay.html @@ -0,0 +1,193 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpamrdepay</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpac3pay.html" title="rtpac3pay"> +<link rel="next" href="gst-plugins-good-plugins-rtpamrpay.html" title="rtpamrpay"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpac3pay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpamrpay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpamrdepay.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpamrdepay.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-rtpamrdepay.object-hierarchy" class="shortcut">Object Hierarchy</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpamrdepay"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpamrdepay.top_of_page"></a>rtpamrdepay</span></h2> +<p>rtpamrdepay — Extracts AMR or AMR-WB audio from RTP packets (RFC 3267)</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpamrdepay.synopsis"></a><h2>Synopsis</h2> +<a name="GstRtpAMRDepay"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpamrdepay.html#GstRtpAMRDepay-struct" title="struct GstRtpAMRDepay">GstRtpAMRDepay</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpamrdepay.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtpbasedepayload.html#GstRTPBaseDepayload">GstRTPBaseDepayload</a> + +----GstRtpAMRDepay +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpamrdepay.description"></a><h2>Description</h2> +<p> +Extract AMR audio from RTP packets according to RFC 3267. +For detailed information see: http://www.rfc-editor.org/rfc/rfc3267.txt +</p> +<p> +</p> +<div class="refsect2"> +<a name="id-1.2.114.5.3.1"></a><h3>Example pipeline</h3> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> udpsrc caps<span class="gtkdoc opt">=</span><span class="string">'application/x-rtp, media=(string)audio, clock-rate=(int)8000, encoding-name=(string)AMR, encoding-params=(string)1, octet-align=(string)1, payload=(int)96'</span> <span class="gtkdoc opt">!</span> rtpamrdepay <span class="gtkdoc opt">!</span> amrnbdec <span class="gtkdoc opt">!</span> pulsesink</pre></td> + </tr> + </tbody> + </table> +</div> + This example pipeline will depayload and decode an RTP AMR stream. Refer to +the rtpamrpay example to create the RTP stream. +</div> +<p> +</p> +<p> +Last reviewed on 2013-04-25 (1.1.0) +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.114.5.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtp.html#plugin-rtp">rtp</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Wim Taymans <wim.taymans@gmail.com></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Depayloader/Network/RTP</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.114.5.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp, media=(string)audio, clock-rate=(int)8000, encoding-name=(string)AMR, encoding-params=(string)1, octet-align=(string)1</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)AMR-WB, encoding-params=(string)1, octet-align=(string)1</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/AMR, channels=(int)1, rate=(int)8000</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> audio/AMR-WB, channels=(int)1, rate=(int)16000</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpamrdepay.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstRtpAMRDepay-struct"></a><h3>struct GstRtpAMRDepay</h3> +<pre class="programlisting">struct GstRtpAMRDepay;</pre> +<p> +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpamrdepay.see-also"></a><h2>See Also</h2> +rtpamrpay +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpamrpay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpamrpay.html new file mode 100644 index 0000000000000000000000000000000000000000..1459bbc21466b5e8b88b577ded05ab5f92de37ed --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpamrpay.html @@ -0,0 +1,193 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpamrpay</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpamrdepay.html" title="rtpamrdepay"> +<link rel="next" href="gst-plugins-good-plugins-rtpbvdepay.html" title="rtpbvdepay"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpamrdepay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpbvdepay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpamrpay.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpamrpay.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-rtpamrpay.object-hierarchy" class="shortcut">Object Hierarchy</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpamrpay"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpamrpay.top_of_page"></a>rtpamrpay</span></h2> +<p>rtpamrpay — Payload-encode AMR or AMR-WB audio into RTP packets (RFC 3267)</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpamrpay.synopsis"></a><h2>Synopsis</h2> +<a name="GstRtpAMRPay"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpamrpay.html#GstRtpAMRPay-struct" title="struct GstRtpAMRPay">GstRtpAMRPay</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpamrpay.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload">GstRTPBasePayload</a> + +----GstRtpAMRPay +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpamrpay.description"></a><h2>Description</h2> +<p> +Payload AMR audio into RTP packets according to RFC 3267. +For detailed information see: http://www.rfc-editor.org/rfc/rfc3267.txt +</p> +<p> +</p> +<div class="refsect2"> +<a name="id-1.2.115.5.3.1"></a><h3>Example pipeline</h3> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch <span class="gtkdoc opt">-</span>v audiotestsrc <span class="gtkdoc opt">!</span> amrnbenc <span class="gtkdoc opt">!</span> rtpamrpay <span class="gtkdoc opt">!</span> udpsink</pre></td> + </tr> + </tbody> + </table> +</div> + This example pipeline will encode and payload an AMR stream. Refer to +the rtpamrdepay example to depayload and decode the RTP stream. +</div> +<p> +</p> +<p> +Last reviewed on 2013-04-25 (1.1.0) +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.115.5.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtp.html#plugin-rtp">rtp</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Wim Taymans <wim.taymans@gmail.com></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Payloader/Network/RTP</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.115.5.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/AMR, channels=(int)1, rate=(int)8000</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> audio/AMR-WB, channels=(int)1, rate=(int)16000</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)8000, encoding-name=(string)AMR, encoding-params=(string)1, octet-align=(string)1, crc=(string)0, robust-sorting=(string)0, interleaving=(string)0, mode-set=(int)[ 0, 7 ], mode-change-period=(int)[ 1, 2147483647 ], mode-change-neighbor=(string){ 0, 1 }, maxptime=(int)[ 20, 2147483647 ], ptime=(int)[ 20, 2147483647 ]</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)16000, encoding-name=(string)AMR-WB, encoding-params=(string)1, octet-align=(string)1, crc=(string)0, robust-sorting=(string)0, interleaving=(string)0, mode-set=(int)[ 0, 7 ], mode-change-period=(int)[ 1, 2147483647 ], mode-change-neighbor=(string){ 0, 1 }, maxptime=(int)[ 20, 2147483647 ], ptime=(int)[ 20, 2147483647 ]</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpamrpay.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstRtpAMRPay-struct"></a><h3>struct GstRtpAMRPay</h3> +<pre class="programlisting">struct GstRtpAMRPay;</pre> +<p> +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpamrpay.see-also"></a><h2>See Also</h2> +rtpamrdepay +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpbin.html b/docs/plugins/html/gst-plugins-good-plugins-rtpbin.html index 0e5e95aaabe62ce55b1f244a67760e6b3c277601..b44e3e72bb24afc3df8d61d367422a10a664db99 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpbin.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpbin.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtpbin</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-rtspsrc.html" title="rtspsrc"> -<link rel="next" href="gst-plugins-good-plugins-rtpjitterbuffer.html" title="rtpjitterbuffer"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<link rel="next" href="gst-plugins-good-plugins-rtpdtmfmux.html" title="rtpdtmfmux"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -18,7 +18,7 @@ <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> -<td><a accesskey="n" href="gst-plugins-good-plugins-rtpjitterbuffer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpdtmfmux.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr> <tr><td colspan="5" class="shortcuts"> <a href="#gst-plugins-good-plugins-rtpbin.synopsis" class="shortcut">Top</a> @@ -79,6 +79,8 @@ GstRtpBin implements "<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--rtcp-sync" title='The "rtcp-sync" property'>rtcp-sync</a>" <span class="type">GstRTCPSync</span> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--rtcp-sync-interval" title='The "rtcp-sync-interval" property'>rtcp-sync-interval</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--drop-on-latency" title='The "drop-on-latency" property'>drop-on-latency</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--do-sync-event" title='The "do-sync-event" property'>do-sync-event</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--do-retransmission" title='The "do-retransmission" property'>do-retransmission</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write </pre> </div> <div class="refsect1"> @@ -103,12 +105,162 @@ GstRtpBin implements </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpbin.description"></a><h2>Description</h2> +<p> +RTP bin combines the functions of <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession"><span class="type">GstRtpSession</span></a>, <a class="link" href="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux"><span class="type">GstRtpSsrcDemux</span></a>, +<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer"><span class="type">GstRtpJitterBuffer</span></a> and <a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux"><span class="type">GstRtpPtDemux</span></a> in one element. It allows for multiple +RTP sessions that will be synchronized together using RTCP SR packets. +</p> +<p> +<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin"><span class="type">GstRtpBin</span></a> is configured with a number of request pads that define the +functionality that is activated, similar to the <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession"><span class="type">GstRtpSession</span></a> element. +</p> +<p> +To use <a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin"><span class="type">GstRtpBin</span></a> as an RTP receiver, request a recv_rtp_sink_%u pad. The session +number must be specified in the pad name. +Data received on the recv_rtp_sink_%u pad will be processed in the <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession"><span class="type">GstRtpSession</span></a> +manager and after being validated forwarded on <a class="link" href="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux"><span class="type">GstRtpSsrcDemux</span></a> element. Each +RTP stream is demuxed based on the SSRC and send to a <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer"><span class="type">GstRtpJitterBuffer</span></a>. After +the packets are released from the jitterbuffer, they will be forwarded to a +<a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux"><span class="type">GstRtpPtDemux</span></a> element. The <a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux"><span class="type">GstRtpPtDemux</span></a> element will demux the packets based +on the payload type and will create a unique pad recv_rtp_src_%u_%u_%u on +rtpbin with the session number, SSRC and payload type respectively as the pad +name. +</p> +<p> +To also use <a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin"><span class="type">GstRtpBin</span></a> as an RTCP receiver, request a recv_rtcp_sink_%u pad. The +session number must be specified in the pad name. +</p> +<p> +If you want the session manager to generate and send RTCP packets, request +the send_rtcp_src_%u pad with the session number in the pad name. Packet pushed +on this pad contain SR/RR RTCP reports that should be sent to all participants +in the session. +</p> +<p> +To use <a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin"><span class="type">GstRtpBin</span></a> as a sender, request a send_rtp_sink_%u pad, which will +automatically create a send_rtp_src_%u pad. If the session number is not provided, +the pad from the lowest available session will be returned. The session manager will modify the +SSRC in the RTP packets to its own SSRC and wil forward the packets on the +send_rtp_src_%u pad after updating its internal state. +</p> +<p> +The session manager needs the clock-rate of the payload types it is handling +and will signal the <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-request-pt-map" title='The "request-pt-map" signal'><span class="type">"request-pt-map"</span></a> signal when it needs such a +mapping. One can clear the cached values with the <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-clear-pt-map" title='The "clear-pt-map" signal'><span class="type">"clear-pt-map"</span></a> +signal. +</p> +<p> +Access to the internal statistics of rtpbin is provided with the +get-internal-session property. This action signal gives access to the +RTPSession object which further provides action signals to retrieve the +internal source and other sources. +</p> +<p> +</p> +<div class="refsect2"> +<a name="id-1.2.124.8.10.1"></a><h3>Example pipelines</h3> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1 +2</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> udpsrc port<span class="gtkdoc opt">=</span><span class="number">5000</span> caps<span class="gtkdoc opt">=</span><span class="string">"application/x-rtp, ..."</span> <span class="gtkdoc opt">! .</span>recv_rtp_sink_0 \ + rtpbin <span class="gtkdoc opt">!</span> rtptheoradepay <span class="gtkdoc opt">!</span> theoradec <span class="gtkdoc opt">!</span> xvimagesink</pre></td> + </tr> + </tbody> + </table> +</div> + Receive RTP data from port 5000 and send to the session 0 in rtpbin. +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1 +2 +3 +4 +5 +6 +7 +8 +9</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> rtpbin name<span class="gtkdoc opt">=</span>rtpbin \ + v4l2src <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> ffenc_h263 <span class="gtkdoc opt">!</span> rtph263ppay <span class="gtkdoc opt">!</span> rtpbin<span class="gtkdoc opt">.</span>send_rtp_sink_0 \ + rtpbin<span class="gtkdoc opt">.</span>send_rtp_src_0 <span class="gtkdoc opt">!</span> udpsink port<span class="gtkdoc opt">=</span><span class="number">5000</span> \ + rtpbin<span class="gtkdoc opt">.</span>send_rtcp_src_0 <span class="gtkdoc opt">!</span> udpsink port<span class="gtkdoc opt">=</span><span class="number">5001</span> sync<span class="gtkdoc opt">=</span><span class="keyword">false</span> async<span class="gtkdoc opt">=</span><span class="keyword">false</span> \ + udpsrc port<span class="gtkdoc opt">=</span><span class="number">5005</span> <span class="gtkdoc opt">!</span> rtpbin<span class="gtkdoc opt">.</span>recv_rtcp_sink_0 \ + audiotestsrc <span class="gtkdoc opt">!</span> amrnbenc <span class="gtkdoc opt">!</span> rtpamrpay <span class="gtkdoc opt">!</span> rtpbin<span class="gtkdoc opt">.</span>send_rtp_sink_1 \ + rtpbin<span class="gtkdoc opt">.</span>send_rtp_src_1 <span class="gtkdoc opt">!</span> udpsink port<span class="gtkdoc opt">=</span><span class="number">5002</span> \ + rtpbin<span class="gtkdoc opt">.</span>send_rtcp_src_1 <span class="gtkdoc opt">!</span> udpsink port<span class="gtkdoc opt">=</span><span class="number">5003</span> sync<span class="gtkdoc opt">=</span><span class="keyword">false</span> async<span class="gtkdoc opt">=</span><span class="keyword">false</span> \ + udpsrc port<span class="gtkdoc opt">=</span><span class="number">5007</span> <span class="gtkdoc opt">!</span> rtpbin<span class="gtkdoc opt">.</span>recv_rtcp_sink_1</pre></td> + </tr> + </tbody> + </table> +</div> + Encode and payload H263 video captured from a v4l2src. Encode and payload AMR +audio generated from audiotestsrc. The video is sent to session 0 in rtpbin +and the audio is sent to session 1. Video packets are sent on UDP port 5000 +and audio packets on port 5002. The video RTCP packets for session 0 are sent +on port 5001 and the audio RTCP packets for session 0 are sent on port 5003. +RTCP packets for session 0 are received on port 5005 and RTCP for session 1 +is received on port 5007. Since RTCP packets from the sender should be sent +as soon as possible and do not participate in preroll, sync=false and +async=false is configured on udpsink +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v rtpbin name<span class="gtkdoc opt">=</span>rtpbin \ + udpsrc caps<span class="gtkdoc opt">=</span><span class="string">"application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998"</span> \ + port<span class="gtkdoc opt">=</span><span class="number">5000</span> <span class="gtkdoc opt">!</span> rtpbin<span class="gtkdoc opt">.</span>recv_rtp_sink_0 \ + rtpbin<span class="gtkdoc opt">. !</span> rtph263pdepay <span class="gtkdoc opt">!</span> ffdec_h263 <span class="gtkdoc opt">!</span> xvimagesink \ + udpsrc port<span class="gtkdoc opt">=</span><span class="number">5001</span> <span class="gtkdoc opt">!</span> rtpbin<span class="gtkdoc opt">.</span>recv_rtcp_sink_0 \ + rtpbin<span class="gtkdoc opt">.</span>send_rtcp_src_0 <span class="gtkdoc opt">!</span> udpsink port<span class="gtkdoc opt">=</span><span class="number">5005</span> sync<span class="gtkdoc opt">=</span><span class="keyword">false</span> async<span class="gtkdoc opt">=</span><span class="keyword">false</span> \ + udpsrc caps<span class="gtkdoc opt">=</span><span class="string">"application/x-rtp,media=(string)audio,clock-rate=(int)8000,encoding-name=(string)AMR,encoding-params=(string)1,octet-align=(string)1"</span> \ + port<span class="gtkdoc opt">=</span><span class="number">5002</span> <span class="gtkdoc opt">!</span> rtpbin<span class="gtkdoc opt">.</span>recv_rtp_sink_1 \ + rtpbin<span class="gtkdoc opt">. !</span> rtpamrdepay <span class="gtkdoc opt">!</span> amrnbdec <span class="gtkdoc opt">!</span> alsasink \ + udpsrc port<span class="gtkdoc opt">=</span><span class="number">5003</span> <span class="gtkdoc opt">!</span> rtpbin<span class="gtkdoc opt">.</span>recv_rtcp_sink_1 \ + rtpbin<span class="gtkdoc opt">.</span>send_rtcp_src_1 <span class="gtkdoc opt">!</span> udpsink port<span class="gtkdoc opt">=</span><span class="number">5007</span> sync<span class="gtkdoc opt">=</span><span class="keyword">false</span> async<span class="gtkdoc opt">=</span><span class="keyword">false</span></pre></td> + </tr> + </tbody> + </table> +</div> + Receive H263 on port 5000, send it through rtpbin in session 0, depayload, +decode and display the video. +Receive AMR on port 5002, send it through rtpbin in session 1, depayload, +decode and play the audio. +Receive server RTCP packets for session 0 on port 5001 and RTCP packets for +session 1 on port 5003. These packets will be used for session management and +synchronisation. +Send RTCP reports for session 0 on port 5005 and RTCP reports for session 1 +on port 5007. +</div> +<p> +</p> +<p> +Last reviewed on 2007-08-30 (0.10.6) +</p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20720704"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.124.8.12.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -129,9 +281,12 @@ GstRtpBin implements </div> <hr> <div class="refsect2"> -<a name="idp20903568"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.124.8.12.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -151,8 +306,11 @@ GstRtpBin implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -172,8 +330,11 @@ GstRtpBin implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -193,8 +354,11 @@ GstRtpBin implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -214,8 +378,11 @@ GstRtpBin implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -235,8 +402,11 @@ GstRtpBin implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -347,6 +517,20 @@ GstRtpBin implements <p>Tells the jitterbuffer to never exceed the given latency in size.</p> <p>Default value: FALSE</p> </div> +<hr> +<div class="refsect2"> +<a name="GstRtpBin--do-sync-event"></a><h3>The <code class="literal">"do-sync-event"</code> property</h3> +<pre class="programlisting"> "do-sync-event" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<p>Send event downstream when a stream is synchronized to the sender.</p> +<p>Default value: FALSE</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRtpBin--do-retransmission"></a><h3>The <code class="literal">"do-retransmission"</code> property</h3> +<pre class="programlisting"> "do-retransmission" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<p>Send an event downstream to request packet retransmission.</p> +<p>Default value: FALSE</p> +</div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpbin.signal-details"></a><h2>Signal Details</h2> @@ -358,8 +542,11 @@ GstRtpBin implements Clear all previously cached pt-mapping obtained with <a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-pt-map" title='The "request-pt-map" signal'><span class="type">"request-pt-map"</span></a>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -381,8 +568,11 @@ Clear all previously cached pt-mapping obtained with <p> Request the internal RTPSession object as <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> in session <em class="parameter"><code>id</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -409,8 +599,11 @@ Request the internal RTPSession object as <a href="http://library.gnome.org/deve <p> Notify of an SSRC that became inactive because of a BYE packet. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -441,8 +634,11 @@ Notify of an SSRC that became inactive because of a BYE packet. <p> Notify of an SSRC that has timed out because of BYE </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -473,8 +669,11 @@ Notify of an SSRC that has timed out because of BYE <p> Notify of a new SSRC that entered <em class="parameter"><code>session</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -505,8 +704,11 @@ Notify of a new SSRC that entered <em class="parameter"><code>session</code></em <p> Notify that SSRC sender has sent data up to the configured NPT stop time. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -537,8 +739,11 @@ Notify that SSRC sender has sent data up to the configured NPT stop time. <p> Notify of a sender SSRC that has timed out and became a receiver </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -569,8 +774,11 @@ Notify of a sender SSRC that has timed out and became a receiver <p> Notify of a SSRC that is active, i.e., sending RTCP. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -601,8 +809,11 @@ Notify of a SSRC that is active, i.e., sending RTCP. <p> Notify when we have an SSRC collision </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -633,8 +844,11 @@ Notify when we have an SSRC collision <p> Notify of a SSRC that is active, i.e., sending RTCP. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -665,8 +879,11 @@ Notify of a SSRC that is active, i.e., sending RTCP. <p> Notify of a new SSRC that became validated. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -697,8 +914,11 @@ Notify of a new SSRC that became validated. <p> Notify of an SSRC that has timed out </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -729,8 +949,11 @@ Notify of an SSRC that has timed out <p> Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> for <em class="parameter"><code>pt</code></em> in <em class="parameter"><code>session</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -760,8 +983,11 @@ Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/g Reset all currently configured lip-sync parameters and require new SR packets for all streams before lip-sync is attempted again. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -784,8 +1010,11 @@ packets for all streams before lip-sync is attempted again. <p> Signal that the current payload type changed to <em class="parameter"><code>pt</code></em> in <em class="parameter"><code>session</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -808,9 +1037,13 @@ Signal that the current payload type changed to <em class="parameter"><code>pt</ <p class="since">Since 0.10.17</p> </div> </div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpbin.see-also"></a><h2>See Also</h2> +rtpjitterbuffer, rtpsession, rtpptdemux, rtpssrcdemux +</div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpbvdepay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpbvdepay.html new file mode 100644 index 0000000000000000000000000000000000000000..f1ffc7c808b2fcf41b8e75aebe3fc809eb0d82a5 --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpbvdepay.html @@ -0,0 +1,150 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpbvdepay</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpamrpay.html" title="rtpamrpay"> +<link rel="next" href="gst-plugins-good-plugins-rtpbvpay.html" title="rtpbvpay"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpamrpay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpbvpay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpbvdepay.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpbvdepay.description" class="shortcut">Description</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpbvdepay"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpbvdepay.top_of_page"></a>rtpbvdepay</span></h2> +<p>rtpbvdepay — Extracts BroadcomVoice audio from RTP packets (RFC 4298)</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpbvdepay.synopsis"></a><h2>Synopsis</h2> +<pre class="synopsis"></pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpbvdepay.description"></a><h2>Description</h2> +<p> +Extract BroadcomVoice audio from RTP packets according to RFC 4298. +For detailed information see: http://www.rfc-editor.org/rfc/rfc4298.txt +</p> +<p> +Last reviewed on 2013-04-25 (1.1.0) +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.116.4.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtp.html#plugin-rtp">rtp</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Wim Taymans <wim.taymans@collabora.co.uk></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Depayloader/Network/RTP</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.116.4.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp, media=(string)audio, clock-rate=(int)8000, encoding-name=(string)BV16</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)BV32</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/x-bv, mode=(int){ 16, 32 }</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpbvdepay.details"></a><h2>Details</h2> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpbvdepay.see-also"></a><h2>See Also</h2> +rtpbvpay +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpbvpay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpbvpay.html new file mode 100644 index 0000000000000000000000000000000000000000..28e2749bc5e4ddd81957dbabccfb8df22e3daf48 --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpbvpay.html @@ -0,0 +1,150 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpbvpay</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpbvdepay.html" title="rtpbvdepay"> +<link rel="next" href="gst-plugins-good-plugins-rtpL16depay.html" title="rtpL16depay"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpbvdepay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpL16depay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpbvpay.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpbvpay.description" class="shortcut">Description</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpbvpay"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpbvpay.top_of_page"></a>rtpbvpay</span></h2> +<p>rtpbvpay — Packetize BroadcomVoice audio streams into RTP packets (RFC 4298)</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpbvpay.synopsis"></a><h2>Synopsis</h2> +<pre class="synopsis"></pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpbvpay.description"></a><h2>Description</h2> +<p> +Payload BroadcomVoice audio into RTP packets according to RFC 4298. +For detailed information see: http://www.rfc-editor.org/rfc/rfc4298.txt +</p> +<p> +Last reviewed on 2013-04-25 (1.1.0) +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.117.4.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtp.html#plugin-rtp">rtp</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Wim Taymans <wim.taymans@collabora.co.uk></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Payloader/Network/RTP</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.117.4.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/x-bv, mode=(int){ 16, 32 }</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)8000, encoding-name=(string)BV16</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)16000, encoding-name=(string)BV32</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpbvpay.details"></a><h2>Details</h2> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpbvpay.see-also"></a><h2>See Also</h2> +rtpbvdepay +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpdec.html b/docs/plugins/html/gst-plugins-good-plugins-rtpdec.html index d087baec2010dc20f7e77f5f7b41b38cc00512e4..75916f8d4af11e0dc6254924370e0e76da13f6c1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtpdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-rippletv.html" title="rippletv"> -<link rel="next" href="gst-plugins-good-plugins-rtpj2kpay.html" title="rtpj2kpay"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<link rel="next" href="gst-plugins-good-plugins-rtpac3depay.html" title="rtpac3depay"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -18,7 +18,7 @@ <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> -<td><a accesskey="n" href="gst-plugins-good-plugins-rtpj2kpay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpac3depay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr> <tr><td colspan="5" class="shortcuts"> <a href="#gst-plugins-good-plugins-rtpdec.synopsis" class="shortcut">Top</a> @@ -87,9 +87,12 @@ Last reviewed on 2006-06-20 (0.10.4) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18036352"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.111.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -110,9 +113,12 @@ Last reviewed on 2006-06-20 (0.10.4) </div> <hr> <div class="refsect2"> -<a name="idp16977632"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.111.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -132,8 +138,11 @@ Last reviewed on 2006-06-20 (0.10.4) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -153,8 +162,11 @@ Last reviewed on 2006-06-20 (0.10.4) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -174,8 +186,11 @@ Last reviewed on 2006-06-20 (0.10.4) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -233,8 +248,11 @@ Last reviewed on 2006-06-20 (0.10.4) <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstrtpdec</code></em> :</span></p></td> @@ -257,8 +275,11 @@ Last reviewed on 2006-06-20 (0.10.4) <p> Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> for <em class="parameter"><code>pt</code></em> in <em class="parameter"><code>session</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpdec</code></em> :</span></p></td> @@ -289,8 +310,11 @@ Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/g <p> Notify of an SSRC that became inactive because of a BYE packet. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -321,8 +345,11 @@ Notify of an SSRC that became inactive because of a BYE packet. <p> Notify of an SSRC that has timed out because of BYE </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -353,8 +380,11 @@ Notify of an SSRC that has timed out because of BYE <p> Notify of a new SSRC that entered <em class="parameter"><code>session</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -384,8 +414,11 @@ Notify of a new SSRC that entered <em class="parameter"><code>session</code></em <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstrtpdec</code></em> :</span></p></td> @@ -407,8 +440,11 @@ Notify of a new SSRC that entered <em class="parameter"><code>session</code></em <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstrtpdec</code></em> :</span></p></td> @@ -431,8 +467,11 @@ Notify of a new SSRC that entered <em class="parameter"><code>session</code></em <p> Notify of an SSRC that has timed out </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td> @@ -457,6 +496,6 @@ Notify of an SSRC that has timed out </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfmux.html b/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfmux.html new file mode 100644 index 0000000000000000000000000000000000000000..1dfdfb1496e05c5c6d5492422c5537b3d98511b7 --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfmux.html @@ -0,0 +1,195 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpdtmfmux</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpbin.html" title="rtpbin"> +<link rel="next" href="gst-plugins-good-plugins-rtpdtmfsrc.html" title="rtpdtmfsrc"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpbin.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpdtmfsrc.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpdtmfmux.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpdtmfmux.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-rtpdtmfmux.object-hierarchy" class="shortcut">Object Hierarchy</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpdtmfmux"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpdtmfmux.top_of_page"></a>rtpdtmfmux</span></h2> +<p>rtpdtmfmux — mixes RTP DTMF streams into other RTP streams</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpdtmfmux.synopsis"></a><h2>Synopsis</h2> +<a name="GstRTPDTMFMux"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpdtmfmux.html#GstRTPDTMFMux-struct" title="struct GstRTPDTMFMux">GstRTPDTMFMux</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpdtmfmux.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a class="link" href="gst-plugins-good-plugins-rtpmux.html#GstRTPMux">GstRTPMux</a> + +----GstRTPDTMFMux +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpdtmfmux.description"></a><h2>Description</h2> +<p> +The RTP "DTMF" Muxer muxes multiple RTP streams into a valid RTP +stream. It does exactly what its parent (<span class="type">rtpmux</span>) does, except +that it prevent buffers coming over a regular sink_%<code class="literal">u</code> pad from going through +for the duration of buffers that came in a priority_sink_%<code class="literal">u</code> pad. +</p> +<p> +This is especially useful if a discontinuous source like dtmfsrc or +rtpdtmfsrc are connected to the priority sink pads. This way, the generated +DTMF signal can replace the recorded audio while the tone is being sent. +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.125.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtpmanager.html#plugin-rtpmanager">rtpmanager</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Zeeshan Ali <first.last@nokia.com></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Muxer</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.125.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>priority_sink_%u</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>request</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink_%u</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>request</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpdtmfmux.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstRTPDTMFMux-struct"></a><h3>struct GstRTPDTMFMux</h3> +<pre class="programlisting">struct GstRTPDTMFMux;</pre> +<p> +The opaque <a class="link" href="gst-plugins-good-plugins-rtpdtmfmux.html#GstRTPDTMFMux"><span class="type">GstRTPDTMFMux</span></a> structure. +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpdtmfmux.see-also"></a><h2>See Also</h2> +rtpdtmfsrc, dtmfsrc, rtpmux +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfsrc.html b/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfsrc.html new file mode 100644 index 0000000000000000000000000000000000000000..41b67e157273845bbe6881261965053368ed6e95 --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfsrc.html @@ -0,0 +1,315 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpdtmfsrc</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpdtmfmux.html" title="rtpdtmfmux"> +<link rel="next" href="gst-plugins-good-plugins-rtpjitterbuffer.html" title="rtpjitterbuffer"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpdtmfmux.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpjitterbuffer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpdtmfsrc.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpdtmfsrc.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-rtpdtmfsrc.object-hierarchy" class="shortcut">Object Hierarchy</a> +  | + <a href="#gst-plugins-good-plugins-rtpdtmfsrc.properties" class="shortcut">Properties</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpdtmfsrc"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpdtmfsrc.top_of_page"></a>rtpdtmfsrc</span></h2> +<p>rtpdtmfsrc — Generates RTP DTMF packets</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpdtmfsrc.synopsis"></a><h2>Synopsis</h2> +<a name="GstRTPDTMFSrc"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc-struct" title="struct GstRTPDTMFSrc">GstRTPDTMFSrc</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpdtmfsrc.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseSrc.html">GstBaseSrc</a> + +----GstRTPDTMFSrc +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpdtmfsrc.properties"></a><h2>Properties</h2> +<pre class="synopsis"> + "<a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--clock-rate" title='The "clock-rate" property'>clock-rate</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--packet-redundancy" title='The "packet-redundancy" property'>packet-redundancy</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--pt" title='The "pt" property'>pt</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--seqnum" title='The "seqnum" property'>seqnum</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read + "<a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--seqnum-offset" title='The "seqnum-offset" property'>seqnum-offset</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--ssrc" title='The "ssrc" property'>ssrc</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--timestamp" title='The "timestamp" property'>timestamp</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read + "<a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--timestamp-offset" title='The "timestamp-offset" property'>timestamp-offset</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpdtmfsrc.description"></a><h2>Description</h2> +<p> +The RTPDTMFSrc element generates RTP DTMF (RFC 2833) event packets on request +from application. The application communicates the beginning and end of a +DTMF event using custom upstream gstreamer events. To report a DTMF event, an +application must send an event of type GST_EVENT_CUSTOM_UPSTREAM, having a +structure of name "dtmf-event" with fields set according to the following +table: +</p> +<p> +</p> +<div class="informaltable"><table border="1"> +<colgroup> +<col class="Name"> +<col class="Type"> +<col class="Possible values"> +<col class="Purpose"> +</colgroup> +<thead><tr> +<th>Name</th> +<th>GType</th> +<th>Possible values</th> +<th>Purpose</th> +</tr></thead> +<tbody> +<tr> +<td>type</td> +<td>G_TYPE_INT</td> +<td>0-1</td> +<td>The application uses this field to specify which of the two methods +specified in RFC 2833 to use. The value should be 0 for tones and 1 for +named events. Tones are specified by their frequencies and events are specied +by their number. This element can only take events as input. Do not confuse +with "method" which specified the output. +</td> +</tr> +<tr> +<td>number</td> +<td>G_TYPE_INT</td> +<td>0-15</td> +<td>The event number.</td> +</tr> +<tr> +<td>volume</td> +<td>G_TYPE_INT</td> +<td>0-36</td> +<td>This field describes the power level of the tone, expressed in dBm0 +after dropping the sign. Power levels range from 0 to -63 dBm0. The range of +valid DTMF is from 0 to -36 dBm0. Can be omitted if start is set to FALSE. +</td> +</tr> +<tr> +<td>start</td> +<td>G_TYPE_BOOLEAN</td> +<td>True or False</td> +<td>Whether the event is starting or ending.</td> +</tr> +<tr> +<td>method</td> +<td>G_TYPE_INT</td> +<td>1</td> +<td>The method used for sending event, this element will react if this +field is absent or 1. +</td> +</tr> +</tbody> +</table></div> +<p> +</p> +<p> +For example, the following code informs the pipeline (and in turn, the +RTPDTMFSrc element inside the pipeline) about the start of an RTP DTMF named +event '1' of volume -25 dBm0: +</p> +<p> +</p> +<pre class="programlisting"> +structure = gst_structure_new ("dtmf-event", + "type", G_TYPE_INT, 1, + "number", G_TYPE_INT, 1, + "volume", G_TYPE_INT, 25, + "start", G_TYPE_BOOLEAN, TRUE, NULL); + +event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, structure); +gst_element_send_event (pipeline, event); +</pre> +<p> +</p> +<p> +When a DTMF tone actually starts or stop, a "dtmf-event-processed" +element <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GstMessage"><span class="type">GstMessage</span></a> with the same fields as the "dtmf-event" +<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstEvent.html#GstEvent"><span class="type">GstEvent</span></a> that was used to request the event. Also, if any event +has not been processed when the element goes from the PAUSED to the +READY state, then a "dtmf-event-dropped" message is posted on the +<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html"><span class="type">GstBus</span></a> in the order that they were received. +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.126.6.7.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-dtmf.html#plugin-dtmf">dtmf</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Zeeshan Ali <zeeshan.ali@nokia.com></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Source/Network</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.126.6.7.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)[ 0, 2147483647 ], encoding-name=(string)TELEPHONE-EVENT</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpdtmfsrc.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstRTPDTMFSrc-struct"></a><h3>struct GstRTPDTMFSrc</h3> +<pre class="programlisting">struct GstRTPDTMFSrc;</pre> +<p> +The opaque <a class="link" href="gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc"><span class="type">GstRTPDTMFSrc</span></a> data structure. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody></tbody> +</table></div> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpdtmfsrc.property-details"></a><h2>Property Details</h2> +<div class="refsect2"> +<a name="GstRTPDTMFSrc--clock-rate"></a><h3>The <code class="literal">"clock-rate"</code> property</h3> +<pre class="programlisting"> "clock-rate" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> +<p>The clock-rate at which to generate the dtmf packets.</p> +<p>Default value: 8000</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTPDTMFSrc--packet-redundancy"></a><h3>The <code class="literal">"packet-redundancy"</code> property</h3> +<pre class="programlisting"> "packet-redundancy" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> +<p>Number of packets to send to indicate start and stop dtmf events.</p> +<p>Allowed values: [1,5]</p> +<p>Default value: 1</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTPDTMFSrc--pt"></a><h3>The <code class="literal">"pt"</code> property</h3> +<pre class="programlisting"> "pt" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> +<p>The payload type of the packets.</p> +<p>Allowed values: <= 128</p> +<p>Default value: 96</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTPDTMFSrc--seqnum"></a><h3>The <code class="literal">"seqnum"</code> property</h3> +<pre class="programlisting"> "seqnum" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read</pre> +<p>The RTP sequence number of the last processed packet.</p> +<p>Default value: 0</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTPDTMFSrc--seqnum-offset"></a><h3>The <code class="literal">"seqnum-offset"</code> property</h3> +<pre class="programlisting"> "seqnum-offset" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> +<p>Offset to add to all outgoing seqnum (-1 = random).</p> +<p>Allowed values: >= G_MAXULONG</p> +<p>Default value: -1</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTPDTMFSrc--ssrc"></a><h3>The <code class="literal">"ssrc"</code> property</h3> +<pre class="programlisting"> "ssrc" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> +<p>The SSRC of the packets (-1 == random).</p> +<p>Default value: 4294967295</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTPDTMFSrc--timestamp"></a><h3>The <code class="literal">"timestamp"</code> property</h3> +<pre class="programlisting"> "timestamp" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read</pre> +<p>The RTP timestamp of the last processed packet.</p> +<p>Default value: 0</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTPDTMFSrc--timestamp-offset"></a><h3>The <code class="literal">"timestamp-offset"</code> property</h3> +<pre class="programlisting"> "timestamp-offset" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> +<p>Offset to add to all outgoing timestamps (-1 = random).</p> +<p>Allowed values: >= G_MAXULONG</p> +<p>Default value: -1</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpdtmfsrc.see-also"></a><h2>See Also</h2> +dtmfsrc, rtpdtmfdepay, rtpdtmfmux +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpj2kpay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpj2kpay.html index 48d288e8ff478af7bc6f8ff003109849fe74559d..1945651d4e233a8e4d8d54cfe243b8f3ebb0dc68 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpj2kpay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpj2kpay.html @@ -3,18 +3,18 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtpj2kpay</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> -<link rel="prev" href="gst-plugins-good-plugins-rtpdec.html" title="rtpdec"> +<link rel="prev" href="gst-plugins-good-plugins-rtpL16pay.html" title="rtpL16pay"> <link rel="next" href="gst-plugins-good-plugins-rtpjpegpay.html" title="rtpjpegpay"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> <tr valign="middle"> -<td><a accesskey="p" href="gst-plugins-good-plugins-rtpdec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpL16pay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> @@ -75,9 +75,12 @@ codestream. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp13520112"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.120.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -98,9 +101,12 @@ codestream. </div> <hr> <div class="refsect2"> -<a name="idp14822528"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.120.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -120,8 +126,11 @@ codestream. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -167,6 +176,6 @@ codestream. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html b/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html index 87b65d508d0f5ffcc8de8352d09e620817553b1a..1de7d0d7a1684ebe4c5ea920ed5c7d6e6ce21a17 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html @@ -3,22 +3,22 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtpjitterbuffer</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> -<link rel="prev" href="gst-plugins-good-plugins-rtpbin.html" title="rtpbin"> -<link rel="next" href="gst-plugins-good-plugins-rtpptdemux.html" title="rtpptdemux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<link rel="prev" href="gst-plugins-good-plugins-rtpdtmfsrc.html" title="rtpdtmfsrc"> +<link rel="next" href="gst-plugins-good-plugins-rtpmux.html" title="rtpmux"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> <tr valign="middle"> -<td><a accesskey="p" href="gst-plugins-good-plugins-rtpbin.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpdtmfsrc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> -<td><a accesskey="n" href="gst-plugins-good-plugins-rtpptdemux.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpmux.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr> <tr><td colspan="5" class="shortcuts"> <a href="#gst-plugins-good-plugins-rtpjitterbuffer.synopsis" class="shortcut">Top</a> @@ -65,6 +65,11 @@ "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--ts-offset" title='The "ts-offset" property'>ts-offset</a>" <span class="type">gint64</span> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--mode" title='The "mode" property'>mode</a>" <span class="type">RTPJitterBufferMode</span> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--percent" title='The "percent" property'>percent</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read + "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-retransmission" title='The "do-retransmission" property'>do-retransmission</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay" title='The "rtx-delay" property'>rtx-delay</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read + "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay-reorder" title='The "rtx-delay-reorder" property'>rtx-delay-reorder</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read + "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-period" title='The "rtx-retry-period" property'>rtx-retry-period</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read + "<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout" title='The "rtx-retry-timeout" property'>rtx-retry-timeout</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read </pre> </div> <div class="refsect1"> @@ -82,9 +87,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15832480"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.127.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -105,9 +113,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp20808448"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.127.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -127,8 +138,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -148,8 +162,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -228,6 +245,45 @@ Opaque jitterbuffer structure. <p>Allowed values: [0,100]</p> <p>Default value: 0</p> </div> +<hr> +<div class="refsect2"> +<a name="GstRtpJitterBuffer--do-retransmission"></a><h3>The <code class="literal">"do-retransmission"</code> property</h3> +<pre class="programlisting"> "do-retransmission" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<p>Send retransmission events upstream when a packet is late.</p> +<p>Default value: FALSE</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRtpJitterBuffer--rtx-delay"></a><h3>The <code class="literal">"rtx-delay"</code> property</h3> +<pre class="programlisting"> "rtx-delay" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read</pre> +<p>Extra time in ms to wait before sending retransmission event (-1 automatic).</p> +<p>Allowed values: >= G_MAXULONG</p> +<p>Default value: 20</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRtpJitterBuffer--rtx-delay-reorder"></a><h3>The <code class="literal">"rtx-delay-reorder"</code> property</h3> +<pre class="programlisting"> "rtx-delay-reorder" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read</pre> +<p>Sending retransmission event when this much reordering (-1 automatic).</p> +<p>Allowed values: >= G_MAXULONG</p> +<p>Default value: 3</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRtpJitterBuffer--rtx-retry-period"></a><h3>The <code class="literal">"rtx-retry-period"</code> property</h3> +<pre class="programlisting"> "rtx-retry-period" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read</pre> +<p>Try to get a retransmission for this many ms (-1 automatic).</p> +<p>Allowed values: >= G_MAXULONG</p> +<p>Default value: 160</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRtpJitterBuffer--rtx-retry-timeout"></a><h3>The <code class="literal">"rtx-retry-timeout"</code> property</h3> +<pre class="programlisting"> "rtx-retry-timeout" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read</pre> +<p>Retry sending a transmission event after this timeout in ms (-1 automatic).</p> +<p>Allowed values: >= G_MAXULONG</p> +<p>Default value: 40</p> +</div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpjitterbuffer.signal-details"></a><h2>Signal Details</h2> @@ -239,8 +295,11 @@ Opaque jitterbuffer structure. Invalidate the clock-rate as obtained with the <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-request-pt-map" title='The "request-pt-map" signal'><span class="type">"request-pt-map"</span></a> signal. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td> @@ -262,8 +321,11 @@ Invalidate the clock-rate as obtained with the <p> Be notified of new sync values. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td> @@ -289,8 +351,11 @@ Be notified of new sync values. Signal that the jitterbufer has pushed the RTP packet that corresponds to the npt-stop position. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td> @@ -312,8 +377,11 @@ the npt-stop position. <p> Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> for <em class="parameter"><code>pt</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td> @@ -341,8 +409,11 @@ Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/g Start pushing out packets with the given base time. This signal is only useful in buffering mode. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>buffer</code></em> :</span></p></td> @@ -364,6 +435,6 @@ useful in buffering mode. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpjpegpay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpjpegpay.html index d90beeb50791bdbdda264e89e1b8c348103c98dc..66a74a6a3f4207b7739ea86b41d6ab1f38d7b7cd 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpjpegpay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpjpegpay.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtpjpegpay</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-rtpj2kpay.html" title="rtpj2kpay"> -<link rel="next" href="gst-plugins-good-plugins-rtspsrc.html" title="rtspsrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<link rel="next" href="gst-plugins-good-plugins-rtpsbcpay.html" title="rtpsbcpay"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -18,7 +18,7 @@ <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> -<td><a accesskey="n" href="gst-plugins-good-plugins-rtspsrc.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpsbcpay.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr> <tr><td colspan="5" class="shortcuts"> <a href="#gst-plugins-good-plugins-rtpjpegpay.synopsis" class="shortcut">Top</a> @@ -80,9 +80,12 @@ The payloader assumes that correct width and height is found in the caps. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp13519024"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.121.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -103,9 +106,12 @@ The payloader assumes that correct width and height is found in the caps. </div> <hr> <div class="refsect2"> -<a name="idp14802800"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.121.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -129,8 +135,11 @@ The payloader assumes that correct width and height is found in the caps. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -146,7 +155,7 @@ The payloader assumes that correct width and height is found in the caps. </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>application/x-rtp, media=(string)video, payload=(int)26, clock-rate=(int)90000, encoding-name=(string)JPEG</td> +<td>application/x-rtp, media=(string)video, payload=(int)26, clock-rate=(int)90000, encoding-name=(string)JPEG, width=(int)[ 1, 65536 ], height=(int)[ 1, 65536 ]</td> </tr> </tbody> </table></div> @@ -192,6 +201,6 @@ The payloader assumes that correct width and height is found in the caps. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpmux.html b/docs/plugins/html/gst-plugins-good-plugins-rtpmux.html new file mode 100644 index 0000000000000000000000000000000000000000..b9ffccc5b064eec30017e735ea4cd19573a7c142 --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpmux.html @@ -0,0 +1,241 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpmux</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpjitterbuffer.html" title="rtpjitterbuffer"> +<link rel="next" href="gst-plugins-good-plugins-rtpptdemux.html" title="rtpptdemux"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpjitterbuffer.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtpptdemux.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpmux.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpmux.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-rtpmux.object-hierarchy" class="shortcut">Object Hierarchy</a> +  | + <a href="#gst-plugins-good-plugins-rtpmux.properties" class="shortcut">Properties</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpmux"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpmux.top_of_page"></a>rtpmux</span></h2> +<p>rtpmux — multiplex N rtp streams into one</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpmux.synopsis"></a><h2>Synopsis</h2> +<a name="GstRTPMux"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpmux.html#GstRTPMux-struct" title="struct GstRTPMux">GstRTPMux</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpmux.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----GstRTPMux + +----<a class="link" href="gst-plugins-good-plugins-rtpdtmfmux.html#GstRTPDTMFMux">GstRTPDTMFMux</a> +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpmux.properties"></a><h2>Properties</h2> +<pre class="synopsis"> + "<a class="link" href="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--seqnum" title='The "seqnum" property'>seqnum</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read + "<a class="link" href="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--seqnum-offset" title='The "seqnum-offset" property'>seqnum-offset</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--ssrc" title='The "ssrc" property'>ssrc</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtpmux.html#GstRTPMux--timestamp-offset" title='The "timestamp-offset" property'>timestamp-offset</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpmux.description"></a><h2>Description</h2> +<p> +The rtp muxer takes multiple RTP streams having the same clock-rate and +muxes into a single stream with a single SSRC. +</p> +<p> +</p> +<div class="refsect2"> +<a name="id-1.2.128.6.3.1"></a><h3>Example pipelines</h3> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1 +2 +3 +4 +5 +6</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch rtpmux name<span class="gtkdoc opt">=</span>mux <span class="gtkdoc opt">!</span> udpsink host<span class="gtkdoc opt">=</span><span class="number">127.0.0.1</span> port<span class="gtkdoc opt">=</span><span class="number">8888</span> \ + alsasrc <span class="gtkdoc opt">!</span> alawenc <span class="gtkdoc opt">!</span> rtppcmapay <span class="gtkdoc opt">!</span> \ + application<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>rtp<span class="gtkdoc opt">,</span> payload<span class="gtkdoc opt">=</span><span class="number">8</span><span class="gtkdoc opt">,</span> rate<span class="gtkdoc opt">=</span><span class="number">8000</span> <span class="gtkdoc opt">!</span> mux<span class="gtkdoc opt">.</span>sink_0 \ + audiotestsrc is<span class="gtkdoc opt">-</span>live<span class="gtkdoc opt">=</span><span class="number">1</span> <span class="gtkdoc opt">!</span> \ + mulawenc <span class="gtkdoc opt">!</span> rtppcmupay <span class="gtkdoc opt">!</span> \ + application<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>rtp<span class="gtkdoc opt">,</span> payload<span class="gtkdoc opt">=</span><span class="number">0</span><span class="gtkdoc opt">,</span> rate<span class="gtkdoc opt">=</span><span class="number">8000</span> <span class="gtkdoc opt">!</span> mux<span class="gtkdoc opt">.</span>sink_1</pre></td> + </tr> + </tbody> + </table> +</div> + +In this example, an audio stream is captured from ALSA and another is +generated, both are encoded into different payload types and muxed together +so they can be sent on the same port. +</div> +<p> +</p> +<p> +Last reviewed on 2010-09-30 (0.10.21) +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.128.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtpmanager.html#plugin-rtpmanager">rtpmanager</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Zeeshan Ali <first.last@nokia.com></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Muxer</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.128.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink_%u</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>request</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpmux.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstRTPMux-struct"></a><h3>struct GstRTPMux</h3> +<pre class="programlisting">struct GstRTPMux;</pre> +<p> +The opaque <a class="link" href="gst-plugins-good-plugins-rtpmux.html#GstRTPMux"><span class="type">GstRTPMux</span></a> structure. +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpmux.property-details"></a><h2>Property Details</h2> +<div class="refsect2"> +<a name="GstRTPMux--seqnum"></a><h3>The <code class="literal">"seqnum"</code> property</h3> +<pre class="programlisting"> "seqnum" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read</pre> +<p>The RTP sequence number of the last processed packet.</p> +<p>Default value: 0</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTPMux--seqnum-offset"></a><h3>The <code class="literal">"seqnum-offset"</code> property</h3> +<pre class="programlisting"> "seqnum-offset" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> +<p>Offset to add to all outgoing seqnum (-1 = random).</p> +<p>Allowed values: >= G_MAXULONG</p> +<p>Default value: -1</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTPMux--ssrc"></a><h3>The <code class="literal">"ssrc"</code> property</h3> +<pre class="programlisting"> "ssrc" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> +<p>The SSRC of the packets (-1 == random).</p> +<p>Default value: 4294967295</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTPMux--timestamp-offset"></a><h3>The <code class="literal">"timestamp-offset"</code> property</h3> +<pre class="programlisting"> "timestamp-offset" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> +<p>Offset to add to all outgoing timestamps (-1 = random).</p> +<p>Allowed values: >= G_MAXULONG</p> +<p>Default value: -1</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpmux.see-also"></a><h2>See Also</h2> +rtpdtmfmux +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html b/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html index f60fab6c37293371112923a8c752c5c3f40ce26c..8095f53c0337d8276d628f36ca5aaaee50928d26 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html @@ -3,18 +3,18 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtpptdemux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> -<link rel="prev" href="gst-plugins-good-plugins-rtpjitterbuffer.html" title="rtpjitterbuffer"> +<link rel="prev" href="gst-plugins-good-plugins-rtpmux.html" title="rtpmux"> <link rel="next" href="gst-plugins-good-plugins-rtpsession.html" title="rtpsession"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> <tr valign="middle"> -<td><a accesskey="p" href="gst-plugins-good-plugins-rtpjitterbuffer.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpmux.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> @@ -68,9 +68,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp19637328"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.129.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -91,9 +94,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp18182624"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.129.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -113,8 +119,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -158,8 +167,11 @@ The application can call this signal to instruct the element to discard the currently cached payload type map. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>demux</code></em> :</span></p></td> @@ -182,8 +194,11 @@ currently cached payload type map. <p> Emited when a new payload type pad has been created in <em class="parameter"><code>demux</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>demux</code></em> :</span></p></td> @@ -213,8 +228,11 @@ Emited when a new payload type pad has been created in <em class="parameter"><co <p> Emited when the payload type changed. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>demux</code></em> :</span></p></td> @@ -240,8 +258,11 @@ Emited when the payload type changed. <p> Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> for <em class="parameter"><code>pt</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>demux</code></em> :</span></p></td> @@ -262,6 +283,6 @@ Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/g </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpsbcpay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpsbcpay.html new file mode 100644 index 0000000000000000000000000000000000000000..13460815afda3e4bc08e93dd567cc02ba8d1557a --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpsbcpay.html @@ -0,0 +1,173 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>rtpsbcpay</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpjpegpay.html" title="rtpjpegpay"> +<link rel="next" href="gst-plugins-good-plugins-rtspsrc.html" title="rtspsrc"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpjpegpay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-rtspsrc.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-rtpsbcpay.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-rtpsbcpay.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-rtpsbcpay.object-hierarchy" class="shortcut">Object Hierarchy</a> +  | + <a href="#gst-plugins-good-plugins-rtpsbcpay.properties" class="shortcut">Properties</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-rtpsbcpay"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpsbcpay.top_of_page"></a>rtpsbcpay</span></h2> +<p>rtpsbcpay — Payload SBC audio as RTP packets</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-rtpsbcpay.synopsis"></a><h2>Synopsis</h2> +<a name="GstRtpSBCPay"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rtpsbcpay.html#GstRtpSBCPay-struct" title="struct GstRtpSBCPay">GstRtpSBCPay</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpsbcpay.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtpbasepayload.html#GstRTPBasePayload">GstRTPBasePayload</a> + +----GstRtpSBCPay +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpsbcpay.properties"></a><h2>Properties</h2> +<pre class="synopsis"> + "<a class="link" href="gst-plugins-good-plugins-rtpsbcpay.html#GstRtpSBCPay--min-frames" title='The "min-frames" property'>min-frames</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpsbcpay.description"></a><h2>Description</h2> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.122.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-rtp.html#plugin-rtp">rtp</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Thiago Sousa Santos <thiagoss@lcc.ufcg.edu.br></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Payloader/Network</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.122.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/x-sbc, rate=(int){ 16000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ], channel-mode=(string){ mono, dual, stereo, joint }, blocks=(int){ 4, 8, 12, 16 }, subbands=(int){ 4, 8 }, allocation-method=(string){ snr, loudness }, bitpool=(int)[ 2, 64 ]</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int){ 16000, 32000, 44100, 48000 }, encoding-name=(string)SBC</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpsbcpay.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstRtpSBCPay-struct"></a><h3>struct GstRtpSBCPay</h3> +<pre class="programlisting">struct GstRtpSBCPay;</pre> +<p> +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtpsbcpay.property-details"></a><h2>Property Details</h2> +<div class="refsect2"> +<a name="GstRtpSBCPay--min-frames"></a><h3>The <code class="literal">"min-frames"</code> property</h3> +<pre class="programlisting"> "min-frames" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> +<p>Minimum quantity of frames to send in one packet (-1 for maximum allowed by the mtu).</p> +<p>Allowed values: >= G_MAXULONG</p> +<p>Default value: 0</p> +</div> +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html b/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html index 5302e2e5cfca65f0f782697daa6cd7ac45d01655..e092a69ec7fefe052d3bf2d11ce59b5f1b18d336 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtpsession</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-rtpptdemux.html" title="rtpptdemux"> <link rel="next" href="gst-plugins-good-plugins-rtpssrcdemux.html" title="rtpssrcdemux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -94,9 +94,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20765456"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.130.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -117,9 +120,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp16014576"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.130.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -139,8 +145,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -160,8 +169,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -181,8 +193,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -202,8 +217,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -223,8 +241,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -244,8 +265,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -376,8 +400,11 @@ <p> Clear the cached pt-maps requested with <a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-request-pt-map" title='The "request-pt-map" signal'><span class="type">"request-pt-map"</span></a>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>sess</code></em> :</span></p></td> @@ -399,8 +426,11 @@ Clear the cached pt-maps requested with <a class="link" href="gst-plugins-good-p <p> Notify of an SSRC that became inactive because of a BYE packet. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>sess</code></em> :</span></p></td> @@ -426,8 +456,11 @@ Notify of an SSRC that became inactive because of a BYE packet. <p> Notify of an SSRC that has timed out because of BYE </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>sess</code></em> :</span></p></td> @@ -453,8 +486,11 @@ Notify of an SSRC that has timed out because of BYE <p> Notify of a new SSRC that entered <em class="parameter"><code>session</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>sess</code></em> :</span></p></td> @@ -480,8 +516,11 @@ Notify of a new SSRC that entered <em class="parameter"><code>session</code></em <p> Notify of a sender SSRC that has timed out and became a receiver </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>sess</code></em> :</span></p></td> @@ -506,8 +545,11 @@ Notify of a sender SSRC that has timed out and became a receiver <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstrtpsession</code></em> :</span></p></td> @@ -528,8 +570,11 @@ Notify of a sender SSRC that has timed out and became a receiver <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstrtpsession</code></em> :</span></p></td> @@ -551,8 +596,11 @@ Notify of a sender SSRC that has timed out and became a receiver <p> Notify that a new SDES was received for SSRC. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>session</code></em> :</span></p></td> @@ -577,8 +625,11 @@ Notify that a new SDES was received for SSRC. <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstrtpsession</code></em> :</span></p></td> @@ -600,8 +651,11 @@ Notify that a new SDES was received for SSRC. <p> Notify of an SSRC that has timed out </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>sess</code></em> :</span></p></td> @@ -627,8 +681,11 @@ Notify of an SSRC that has timed out <p> Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> for <em class="parameter"><code>pt</code></em>. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>sess</code></em> :</span></p></td> @@ -649,6 +706,6 @@ Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/g </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html b/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html index fe822e28845ea20da5d2e8f1e32d9370376413f3..116e3bb1b4050ea2f051656baa8d076daf759e35 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtpssrcdemux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-rtpsession.html" title="rtpsession"> -<link rel="next" href="gst-plugins-good-plugins-shagadelictv.html" title="shagadelictv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<link rel="next" href="gst-plugins-good-plugins-sbcparse.html" title="sbcparse"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -18,7 +18,7 @@ <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> -<td><a accesskey="n" href="gst-plugins-good-plugins-shagadelictv.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="gst-plugins-good-plugins-sbcparse.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr> <tr><td colspan="5" class="shortcuts"> <a href="#gst-plugins-good-plugins-rtpssrcdemux.synopsis" class="shortcut">Top</a> @@ -67,9 +67,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20154320"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.131.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -90,9 +93,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp14495680"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.131.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -112,8 +118,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -133,8 +142,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -154,8 +166,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -199,8 +214,11 @@ <p> Action signal to remove the pad for SSRC. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>demux</code></em> :</span></p></td> @@ -227,8 +245,11 @@ Action signal to remove the pad for SSRC. <p> Emited when a new SSRC pad has been created. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>demux</code></em> :</span></p></td> @@ -259,8 +280,11 @@ Emited when a new SSRC pad has been created. <p> Emited when a SSRC pad has been removed. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>demux</code></em> :</span></p></td> @@ -285,6 +309,6 @@ Emited when a SSRC pad has been removed. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html b/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html index f93ea5490ed49b97a6d87212bb45cd04bcab4026..53003f3db937491e72366be8d1a1bfaf85cf2719 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html @@ -3,18 +3,18 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>rtspsrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> -<link rel="prev" href="gst-plugins-good-plugins-rtpjpegpay.html" title="rtpjpegpay"> +<link rel="prev" href="gst-plugins-good-plugins-rtpsbcpay.html" title="rtpsbcpay"> <link rel="next" href="gst-plugins-good-plugins-rtpbin.html" title="rtpbin"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> <tr valign="middle"> -<td><a accesskey="p" href="gst-plugins-good-plugins-rtpjpegpay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpsbcpay.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> @@ -30,6 +30,8 @@ <a href="#gst-plugins-good-plugins-rtspsrc.implemented-interfaces" class="shortcut">Implemented Interfaces</a>  | <a href="#gst-plugins-good-plugins-rtspsrc.properties" class="shortcut">Properties</a> +  | + <a href="#gst-plugins-good-plugins-rtspsrc.signals" class="shortcut">Signals</a> </td></tr> </table> <div class="refentry"> @@ -87,6 +89,21 @@ GstRTSPSrc implements "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--do-rtsp-keep-alive" title='The "do-rtsp-keep-alive" property'>do-rtsp-keep-alive</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--drop-on-latency" title='The "drop-on-latency" property'>drop-on-latency</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--probation" title='The "probation" property'>probation</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--udp-reconnect" title='The "udp-reconnect" property'>udp-reconnect</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--proxy-id" title='The "proxy-id" property'>proxy-id</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--proxy-pw" title='The "proxy-pw" property'>proxy-pw</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--multicast-iface" title='The "multicast-iface" property'>multicast-iface</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--ntp-sync" title='The "ntp-sync" property'>ntp-sync</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--use-pipeline-clock" title='The "use-pipeline-clock" property'>use-pipeline-clock</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--sdes" title='The "sdes" property'>sdes</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a>* : Read / Write +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtspsrc.signals"></a><h2>Signals</h2> +<pre class="synopsis"> + "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-handle-request" title='The "handle-request" signal'>handle-request</a>" + "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-on-sdp" title='The "on-sdp" signal'>on-sdp</a>" + "<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-select-stream" title='The "select-stream" signal'>select-stream</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS"><code class="literal">Run First</code></a> </pre> </div> <div class="refsect1"> @@ -122,7 +139,7 @@ PLAYING state. <p> </p> <div class="refsect2"> -<a name="idp19568768"></a><h3>Example launch line</h3> +<a name="id-1.2.123.8.7.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -144,9 +161,12 @@ Last reviewed on 2006-08-18 (0.10.5) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp16724304"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.123.8.9.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -167,9 +187,12 @@ Last reviewed on 2006-08-18 (0.10.5) </div> <hr> <div class="refsect2"> -<a name="idp19490848"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.123.8.9.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -359,10 +382,191 @@ Last reviewed on 2006-08-18 (0.10.5) <p>Consecutive packet sequence numbers to accept the source.</p> <p>Default value: 2</p> </div> +<hr> +<div class="refsect2"> +<a name="GstRTSPSrc--udp-reconnect"></a><h3>The <code class="literal">"udp-reconnect"</code> property</h3> +<pre class="programlisting"> "udp-reconnect" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<p>Reconnect to the server if RTSP connection is closed when doing UDP.</p> +<p>Default value: TRUE</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTSPSrc--proxy-id"></a><h3>The <code class="literal">"proxy-id"</code> property</h3> +<pre class="programlisting"> "proxy-id" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre> +<p>HTTP proxy URI user id for authentication.</p> +<p>Default value: ""</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTSPSrc--proxy-pw"></a><h3>The <code class="literal">"proxy-pw"</code> property</h3> +<pre class="programlisting"> "proxy-pw" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre> +<p>HTTP proxy URI user password for authentication.</p> +<p>Default value: ""</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTSPSrc--multicast-iface"></a><h3>The <code class="literal">"multicast-iface"</code> property</h3> +<pre class="programlisting"> "multicast-iface" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre> +<p>The network interface on which to join the multicast group.</p> +<p>Default value: NULL</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTSPSrc--ntp-sync"></a><h3>The <code class="literal">"ntp-sync"</code> property</h3> +<pre class="programlisting"> "ntp-sync" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<p>Synchronize received streams to the NTP clock.</p> +<p>Default value: FALSE</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTSPSrc--use-pipeline-clock"></a><h3>The <code class="literal">"use-pipeline-clock"</code> property</h3> +<pre class="programlisting"> "use-pipeline-clock" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<p>Use the pipeline running-time to set the NTP time in the RTCP SR messages.</p> +<p>Default value: FALSE</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTSPSrc--sdes"></a><h3>The <code class="literal">"sdes"</code> property</h3> +<pre class="programlisting"> "sdes" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a>* : Read / Write</pre> +<p>The SDES items of this session.</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-rtspsrc.signal-details"></a><h2>Signal Details</h2> +<div class="refsect2"> +<a name="GstRTSPSrc-handle-request"></a><h3>The <code class="literal">"handle-request"</code> signal</h3> +<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc"><span class="type">GstRTSPSrc</span></a> *rtspsrc, + <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> request, + <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> response, + <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> +<p> +Handle a server request in <em class="parameter"><code>request</code></em> and prepare <em class="parameter"><code>response</code></em>. +</p> +<p> +This signal is called from the streaming thread, you should therefore not +do any state changes on <em class="parameter"><code>rtspsrc</code></em> because this might deadlock. If you want +to modify the state as a result of this signal, post a +<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GST-MESSAGE-REQUEST-STATE:CAPS"><span class="type">GST_MESSAGE_REQUEST_STATE</span></a> message on the bus or signal the main thread +in some other way. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>rtspsrc</code></em> :</span></p></td> +<td>a <a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc"><span class="type">GstRTSPSrc</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>request</code></em> :</span></p></td> +<td>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtspmessage.html#GstRTSPMessage"><span class="type">GstRTSPMessage</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>response</code></em> :</span></p></td> +<td>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtspmessage.html#GstRTSPMessage"><span class="type">GstRTSPMessage</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> +<td>user data set when the signal handler was connected.</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.2</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTSPSrc-on-sdp"></a><h3>The <code class="literal">"on-sdp"</code> signal</h3> +<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc"><span class="type">GstRTSPSrc</span></a> *rtspsrc, + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstsdpmessage.html#GstSDPMessage"><span class="type">GstSDPMessage</span></a> *sdp, + <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> +<p> +Emited when the client has retrieved the SDP and before it configures the +streams in the SDP. <em class="parameter"><code>sdp</code></em> can be inspected and modified. +</p> +<p> +This signal is called from the streaming thread, you should therefore not +do any state changes on <em class="parameter"><code>rtspsrc</code></em> because this might deadlock. If you want +to modify the state as a result of this signal, post a +<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GST-MESSAGE-REQUEST-STATE:CAPS"><span class="type">GST_MESSAGE_REQUEST_STATE</span></a> message on the bus or signal the main thread +in some other way. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>rtspsrc</code></em> :</span></p></td> +<td>a <a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc"><span class="type">GstRTSPSrc</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>sdp</code></em> :</span></p></td> +<td>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstsdpmessage.html#GstSDPMessage"><span class="type">GstSDPMessage</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> +<td>user data set when the signal handler was connected.</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.2</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRTSPSrc-select-stream"></a><h3>The <code class="literal">"select-stream"</code> signal</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> user_function (<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc"><span class="type">GstRTSPSrc</span></a> *rtspsrc, + <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> num, + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *caps, + <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS"><code class="literal">Run First</code></a></pre> +<p> +Emited before the client decides to configure the stream <em class="parameter"><code>num</code></em> with +<em class="parameter"><code>caps</code></em>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>rtspsrc</code></em> :</span></p></td> +<td>a <a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc"><span class="type">GstRTSPSrc</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>num</code></em> :</span></p></td> +<td>the stream number</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>caps</code></em> :</span></p></td> +<td>the stream caps</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> +<td>user data set when the signal handler was connected.</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> +<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when the stream should be selected, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when the stream +is to be ignored.</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.2</p> +</div> </div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html b/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html new file mode 100644 index 0000000000000000000000000000000000000000..d8d9a2270367eb3fe1441abec124ed5e793d74fe --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html @@ -0,0 +1,163 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>sbcparse</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-rtpssrcdemux.html" title="rtpssrcdemux"> +<link rel="next" href="gst-plugins-good-plugins-scaletempo.html" title="scaletempo"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-rtpssrcdemux.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-scaletempo.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-sbcparse.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-sbcparse.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-sbcparse.object-hierarchy" class="shortcut">Object Hierarchy</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-sbcparse"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-sbcparse.top_of_page"></a>sbcparse</span></h2> +<p>sbcparse — Parses an SBC bluetooth audio stream</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-sbcparse.synopsis"></a><h2>Synopsis</h2> +<a name="GstSbcParse"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-sbcparse.html#GstSbcParse-struct" title="struct GstSbcParse">GstSbcParse</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-sbcparse.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/gstreamer-libs-GstBaseParse.html#GstBaseParse">GstBaseParse</a> + +----GstSbcParse +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-sbcparse.description"></a><h2>Description</h2> +<p> +The sbcparse element will parse a bluetooth SBC audio stream into +frames and timestamp them properly. +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.132.5.3.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + audioparsers + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Tim-Philipp Müller <tim.muller@collabora.co.uk></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Codec/Parser/Audio</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.132.5.3.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/x-sbc</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/x-sbc, parsed=(boolean)true, channels=(int)[ 1, 2 ], rate=(int){ 16000, 32000, 44100, 48000 }</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-sbcparse.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstSbcParse-struct"></a><h3>struct GstSbcParse</h3> +<pre class="programlisting">struct GstSbcParse;</pre> +<p> +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-sbcparse.see-also"></a><h2>See Also</h2> +sbcdec, sbcenc +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-scaletempo.html b/docs/plugins/html/gst-plugins-good-plugins-scaletempo.html new file mode 100644 index 0000000000000000000000000000000000000000..5aaaf0482d8ed780059b07915998d63000aa264c --- /dev/null +++ b/docs/plugins/html/gst-plugins-good-plugins-scaletempo.html @@ -0,0 +1,274 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>scaletempo</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> +<link rel="up" href="ch01.html" title="gst-plugins-good Elements"> +<link rel="prev" href="gst-plugins-good-plugins-sbcparse.html" title="sbcparse"> +<link rel="next" href="gst-plugins-good-plugins-shagadelictv.html" title="shagadelictv"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="gst-plugins-good-plugins-sbcparse.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> +<td><a accesskey="n" href="gst-plugins-good-plugins-shagadelictv.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#gst-plugins-good-plugins-scaletempo.synopsis" class="shortcut">Top</a> +  | + <a href="#gst-plugins-good-plugins-scaletempo.description" class="shortcut">Description</a> +  | + <a href="#gst-plugins-good-plugins-scaletempo.object-hierarchy" class="shortcut">Object Hierarchy</a> +  | + <a href="#gst-plugins-good-plugins-scaletempo.properties" class="shortcut">Properties</a> +</td></tr> +</table> +<div class="refentry"> +<a name="gst-plugins-good-plugins-scaletempo"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-scaletempo.top_of_page"></a>scaletempo</span></h2> +<p>scaletempo — Sync audio tempo with playback rate</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="gst-plugins-good-plugins-scaletempo.synopsis"></a><h2>Synopsis</h2> +<a name="GstScaletempo"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-scaletempo.html#GstScaletempo-struct" title="struct GstScaletempo">GstScaletempo</a>; +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-scaletempo.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> + +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseTransform.html">GstBaseTransform</a> + +----GstScaletempo +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-scaletempo.properties"></a><h2>Properties</h2> +<pre class="synopsis"> + "<a class="link" href="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--overlap" title='The "overlap" property'>overlap</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--rate" title='The "rate" property'>rate</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read + "<a class="link" href="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--search" title='The "search" property'>search</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--stride" title='The "stride" property'>stride</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write +</pre> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-scaletempo.description"></a><h2>Description</h2> +<p> +Scale tempo while maintaining pitch +(WSOLA-like technique with cross correlation) +Inspired by SoundTouch library by Olli Parviainen +</p> +<p> +Use Sceletempo to apply playback rates without the chipmunk effect. +</p> +<p> +</p> +<div class="refsect2"> +<a name="id-1.2.133.6.4.1"></a><h3>Example pipelines</h3> +<p> +</p> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1 +2 +3</pre></td> + <td class="listing_code"><pre class="programlisting">filesrc location<span class="gtkdoc opt">=</span>media<span class="gtkdoc opt">.</span>ext <span class="gtkdoc opt">!</span> decodebin name<span class="gtkdoc opt">=</span>d \ + d<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> scaletempo <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink \ + d<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td> + </tr> + </tbody> + </table> +</div> + +<p> +OR +</p> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1</pre></td> + <td class="listing_code"><pre class="programlisting">playbin uri<span class="gtkdoc opt">=...</span> audio_sink<span class="gtkdoc opt">=</span><span class="string">"scaletempo ! audioconvert ! audioresample ! autoaudiosink"</span></pre></td> + </tr> + </tbody> + </table> +</div> + +<p> +When an application sends a seek event with rate != 1.0, Scaletempo applies +the rate change by scaling the tempo without scaling the pitch. +</p> +<p> +Scaletempo works by producing audio in constant sized chunks +(<a class="link" href="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--stride" title='The "stride" property'><span class="type">"stride"</span></a>) but consuming chunks proportional to the playback +rate. +</p> +<p> +Scaletempo then smooths the output by blending the end of one stride with +the next (<a class="link" href="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--overlap" title='The "overlap" property'><span class="type">"overlap"</span></a>). +</p> +<p> +Scaletempo smooths the overlap further by searching within the input buffer +for the best overlap position. Scaletempo uses a statistical cross +correlation (roughly a dot-product). Scaletempo consumes most of its CPU +cycles here. One can use the <a class="link" href="gst-plugins-good-plugins-scaletempo.html#GstScaletempo--search" title='The "search" property'><span class="type">"search"</span></a> propery to tune how far +the algoritm looks. +</p> +</div> +<p> +</p> +<div class="refsynopsisdiv"> +<h2>Synopsis</h2> +<div class="refsect2"> +<a name="id-1.2.133.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">plugin</span></p></td> +<td> + <a class="link" href="gst-plugins-good-plugins-plugin-audiofx.html#plugin-audiofx">audiofx</a> + </td> +</tr> +<tr> +<td><p><span class="term">author</span></p></td> +<td>Rov Juvano <rovjuvano@users.sourceforge.net></td> +</tr> +<tr> +<td><p><span class="term">class</span></p></td> +<td>Filter/Effect/Rate</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="id-1.2.133.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>sink</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/x-raw, format=(string)F32LE, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> audio/x-raw, format=(string)S16LE, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td> +</tr> +</tbody> +</table></div> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term">name</span></p></td> +<td>src</td> +</tr> +<tr> +<td><p><span class="term">direction</span></p></td> +<td>source</td> +</tr> +<tr> +<td><p><span class="term">presence</span></p></td> +<td>always</td> +</tr> +<tr> +<td><p><span class="term">details</span></p></td> +<td>audio/x-raw, format=(string)F32LE, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> audio/x-raw, format=(string)S16LE, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<p> +</p> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-scaletempo.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="GstScaletempo-struct"></a><h3>struct GstScaletempo</h3> +<pre class="programlisting">struct GstScaletempo;</pre> +<p> +</p> +</div> +</div> +<div class="refsect1"> +<a name="gst-plugins-good-plugins-scaletempo.property-details"></a><h2>Property Details</h2> +<div class="refsect2"> +<a name="GstScaletempo--overlap"></a><h3>The <code class="literal">"overlap"</code> property</h3> +<pre class="programlisting"> "overlap" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write</pre> +<p>Percentage of stride to overlap.</p> +<p>Allowed values: [0,1]</p> +<p>Default value: 0.2</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstScaletempo--rate"></a><h3>The <code class="literal">"rate"</code> property</h3> +<pre class="programlisting"> "rate" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read</pre> +<p>Current playback rate.</p> +<p>Allowed values: [-2.14748e+09,2.14748e+09]</p> +<p>Default value: 1</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstScaletempo--search"></a><h3>The <code class="literal">"search"</code> property</h3> +<pre class="programlisting"> "search" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> +<p>Length in milliseconds to search for best overlap position.</p> +<p>Allowed values: <= 500</p> +<p>Default value: 14</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstScaletempo--stride"></a><h3>The <code class="literal">"stride"</code> property</h3> +<pre class="programlisting"> "stride" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write</pre> +<p>Length in milliseconds to output each stride.</p> +<p>Allowed values: [1,5000]</p> +<p>Default value: 30</p> +</div> +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-shagadelictv.html b/docs/plugins/html/gst-plugins-good-plugins-shagadelictv.html index 5a948dda1bdf3e00aec8f645b0eed9b73771ea1a..c9af1a0cf058cd77fc875acb433baab8f750affd 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-shagadelictv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-shagadelictv.html @@ -3,18 +3,18 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>shagadelictv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> -<link rel="prev" href="gst-plugins-good-plugins-rtpssrcdemux.html" title="rtpssrcdemux"> +<link rel="prev" href="gst-plugins-good-plugins-scaletempo.html" title="scaletempo"> <link rel="next" href="gst-plugins-good-plugins-shapewipe.html" title="shapewipe"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> <tr valign="middle"> -<td><a accesskey="p" href="gst-plugins-good-plugins-rtpssrcdemux.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="gst-plugins-good-plugins-scaletempo.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> @@ -62,7 +62,7 @@ Oh behave, ShagedelicTV makes images shagadelic! <p> </p> <div class="refsect2"> -<a name="idp17582672"></a><h3>Example launch line</h3> +<a name="id-1.2.134.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -80,9 +80,12 @@ Oh behave, ShagedelicTV makes images shagadelic! <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20764928"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.134.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -103,9 +106,12 @@ Oh behave, ShagedelicTV makes images shagadelic! </div> <hr> <div class="refsect2"> -<a name="idp19509600"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.134.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -125,8 +131,11 @@ Oh behave, ShagedelicTV makes images shagadelic! </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -163,6 +172,6 @@ Oh behave, ShagedelicTV makes images shagadelic! </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-shapewipe.html b/docs/plugins/html/gst-plugins-good-plugins-shapewipe.html index 40614202deac5c67ab972dd91df2b0f91325fa72..524f5b7bd92c32446a8fa5e18e9fdd54d2b18deb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-shapewipe.html +++ b/docs/plugins/html/gst-plugins-good-plugins-shapewipe.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>shapewipe</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-shagadelictv.html" title="shagadelictv"> <link rel="next" href="gst-plugins-good-plugins-smpte.html" title="smpte"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -77,13 +77,13 @@ page. <p> </p> <div class="refsect2"> -<a name="idp17257968"></a><h3>Example launch line</h3> +<a name="id-1.2.135.6.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td class="listing_lines" align="right"><pre>1</pre></td> - <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=(</span>string<span class="gtkdoc opt">)</span>AYUV<span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">480</span> <span class="gtkdoc opt">!</span> shapewipe position<span class="gtkdoc opt">=</span><span class="number">0.5</span> name<span class="gtkdoc opt">=</span>shape <span class="gtkdoc opt">!</span> videomixer name<span class="gtkdoc opt">=</span>mixer <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink filesrc location<span class="gtkdoc opt">=</span>mask<span class="gtkdoc opt">.</span>png <span class="gtkdoc opt">!</span> typefind <span class="gtkdoc opt">!</span> decodebin2 <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> videoscale <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> shape<span class="gtkdoc opt">.</span>mask_sink videotestsrc pattern<span class="gtkdoc opt">=</span>snow <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=(</span>string<span class="gtkdoc opt">)</span>AYUV<span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">480</span> <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> mixer<span class="gtkdoc opt">.</span></pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=</span>AYUV<span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">480</span> <span class="gtkdoc opt">!</span> shapewipe position<span class="gtkdoc opt">=</span><span class="number">0.5</span> name<span class="gtkdoc opt">=</span>shape <span class="gtkdoc opt">!</span> videomixer name<span class="gtkdoc opt">=</span>mixer <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink filesrc location<span class="gtkdoc opt">=</span>mask<span class="gtkdoc opt">.</span>png <span class="gtkdoc opt">!</span> typefind <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> videoscale <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> shape<span class="gtkdoc opt">.</span>mask_sink videotestsrc pattern<span class="gtkdoc opt">=</span>snow <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=</span>AYUV<span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">480</span> <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> mixer<span class="gtkdoc opt">.</span></pre></td> </tr> </tbody> </table> @@ -95,9 +95,12 @@ page. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp19798816"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.135.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -118,9 +121,12 @@ page. </div> <hr> <div class="refsect2"> -<a name="idp20204112"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.135.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -144,8 +150,11 @@ page. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -165,8 +174,11 @@ page. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -221,6 +233,6 @@ page. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-smpte.html b/docs/plugins/html/gst-plugins-good-plugins-smpte.html index 1365c4d839e05514f7ab4f9b1d3e72b0fee96dfd..969c6ef580586a4289b04fb301561653a8c6f5a8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-smpte.html +++ b/docs/plugins/html/gst-plugins-good-plugins-smpte.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>smpte</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-shapewipe.html" title="shapewipe"> <link rel="next" href="gst-plugins-good-plugins-smptealpha.html" title="smptealpha"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -80,7 +80,7 @@ banding. <p> </p> <div class="refsect2"> -<a name="idp6897584"></a><h3>Sample pipelines</h3> +<a name="id-1.2.136.6.4.1"></a><h3>Sample pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -101,9 +101,12 @@ edges of the transition are smoothed with a 20000 big border. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18137328"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.136.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -124,9 +127,12 @@ edges of the transition are smoothed with a 20000 big border. </div> <hr> <div class="refsect2"> -<a name="idp17055536"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.136.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -146,8 +152,11 @@ edges of the transition are smoothed with a 20000 big border. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -167,8 +176,11 @@ edges of the transition are smoothed with a 20000 big border. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -252,6 +264,6 @@ edges of the transition are smoothed with a 20000 big border. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-smptealpha.html b/docs/plugins/html/gst-plugins-good-plugins-smptealpha.html index ca10a9140f9401e5f82f988f097e9372121a3a44..510b46defe17712f4810d90b70738b0df2a70403 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-smptealpha.html +++ b/docs/plugins/html/gst-plugins-good-plugins-smptealpha.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>smptealpha</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-smpte.html" title="smpte"> <link rel="next" href="gst-plugins-good-plugins-souphttpsrc.html" title="souphttpsrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -87,7 +87,7 @@ avoid banding. <p> </p> <div class="refsect2"> -<a name="idp18055712"></a><h3>Sample pipelines</h3> +<a name="id-1.2.137.6.5.1"></a><h3>Sample pipelines</h3> <p> Here is a pipeline to demonstrate the smpte transition : </p> @@ -106,9 +106,12 @@ transparent image. The edges of the transition are smoothed with a <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18824528"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.137.6.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -129,9 +132,12 @@ transparent image. The edges of the transition are smoothed with a </div> <hr> <div class="refsect2"> -<a name="idp17258608"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.137.6.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -175,8 +181,11 @@ transparent image. The edges of the transition are smoothed with a </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -272,6 +281,6 @@ Set to TRUE to invert the transition mask (ie. flip it horizontally). </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-souphttpsrc.html b/docs/plugins/html/gst-plugins-good-plugins-souphttpsrc.html index df96caa9dbea8a9671d956ae9865f54d27ac0f6d..e156a61054f1c5a58c13dc52bed87521bdc12485 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-souphttpsrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-souphttpsrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>souphttpsrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-smptealpha.html" title="smptealpha"> <link rel="next" href="gst-plugins-good-plugins-spectrum.html" title="spectrum"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -91,9 +91,12 @@ GstSoupHTTPSrc implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20833264"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.138.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -114,9 +117,12 @@ GstSoupHTTPSrc implements </div> <hr> <div class="refsect2"> -<a name="idp20485936"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.138.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -273,6 +279,6 @@ GstSoupHTTPSrc implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-spectrum.html b/docs/plugins/html/gst-plugins-good-plugins-spectrum.html index f31a806113a4bc3d285c2aca6f2b9d91b5a37dbe..ac00d3b16a6153203662985f7c2b41c06c6b8888 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-spectrum.html +++ b/docs/plugins/html/gst-plugins-good-plugins-spectrum.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>spectrum</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-souphttpsrc.html" title="souphttpsrc"> <link rel="next" href="gst-plugins-good-plugins-speexenc.html" title="speexenc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -81,7 +81,7 @@ by the <a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum- <p> The message's structure contains some combination of these fields: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"><p> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> <code class="classname">"timestamp"</code>: @@ -126,13 +126,13 @@ The message's structure contains some combination of these fields: </p> <p> If <a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--multi-channel" title='The "multi-channel" property'><span class="type">"multi-channel"</span></a> property is set to true. magnitude and phase -fields will be each a nested <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html#GstValueArray"><span class="type">GstValueArray</span></a>. The first dimension are the +fields will be each a nested <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstControlSource.html#GstValueArray"><span class="type">GstValueArray</span></a>. The first dimension are the channels and the second dimension are the values. </p> <p> </p> <div class="refsect2"> -<a name="idp20074400"></a><h3>Example application</h3> +<a name="id-1.2.139.6.5.1"></a><h3>Example application</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -277,8 +277,8 @@ channels and the second dimension are the values. <span class="comment"> *</span> <span class="comment"> * You should have received a copy of the GNU Library General Public</span> <span class="comment"> * License along with this library; if not, write to the</span> -<span class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330,</span> -<span class="comment"> * Boston, MA 02111-1307, USA.</span> +<span class="comment"> * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span> +<span class="comment"> * Boston, MA 02110-1301, USA.</span> <span class="comment"> */</span> <span class="gtkdoc ppc">#include <stdio.h></span> @@ -399,9 +399,12 @@ Last reviewed on 2011-03-10 (0.10.29) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20735232"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.139.6.7.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -422,9 +425,12 @@ Last reviewed on 2011-03-10 (0.10.29) </div> <hr> <div class="refsect2"> -<a name="idp21979648"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.139.6.7.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -444,8 +450,11 @@ Last reviewed on 2011-03-10 (0.10.29) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -528,26 +537,20 @@ Last reviewed on 2011-03-10 (0.10.29) <div class="refsect2"> <a name="GstSpectrum--post-messages"></a><h3>The <code class="literal">"post-messages"</code> property</h3> <pre class="programlisting"> "post-messages" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> -<p> -Post messages on the bus with spectrum information. -</p> +<p>Whether to post a 'spectrum' element message on the bus for each passed interval.</p> <p>Default value: TRUE</p> -<p class="since">Since 0.10.17</p> </div> <hr> <div class="refsect2"> <a name="GstSpectrum--multi-channel"></a><h3>The <code class="literal">"multi-channel"</code> property</h3> <pre class="programlisting"> "multi-channel" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> -<p> -Send separate results for each channel -</p> +<p>Send separate results for each channel.</p> <p>Default value: FALSE</p> -<p class="since">Since 0.10.29</p> </div> </div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-speexdec.html b/docs/plugins/html/gst-plugins-good-plugins-speexdec.html index b439fc215d0824ee847535326f725a0308a10cb0..f963b2b5d5da2ff3c5120acda11e23c0962e5782 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-speexdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-speexdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>speexdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-speexenc.html" title="speexenc"> <link rel="next" href="gst-plugins-good-plugins-splitfilesrc.html" title="splitfilesrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -66,9 +66,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20094080"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.141.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -89,9 +92,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp21962464"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.141.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -111,8 +117,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -158,6 +167,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-speexenc.html b/docs/plugins/html/gst-plugins-good-plugins-speexenc.html index 07f33cdd0a743cfa7b6c68a50926c5fa7a343580..6704265dac9ab4c993a05f79f826402a97ec4f4e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-speexenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-speexenc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>speexenc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-spectrum.html" title="spectrum"> <link rel="next" href="gst-plugins-good-plugins-speexdec.html" title="speexdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -83,9 +83,12 @@ GstSpeexEnc implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20671936"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.140.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -106,9 +109,12 @@ GstSpeexEnc implements </div> <hr> <div class="refsect2"> -<a name="idp19006304"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.140.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -132,8 +138,11 @@ GstSpeexEnc implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -247,6 +256,6 @@ GstSpeexEnc implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-splitfilesrc.html b/docs/plugins/html/gst-plugins-good-plugins-splitfilesrc.html index e91e42fa9f290f4f6648491e98ce6ae92747fe6e..68cdce8d1bc9c44107544797ba587fd1748e1eef 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-splitfilesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-splitfilesrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>splitfilesrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-speexdec.html" title="speexdec"> <link rel="next" href="gst-plugins-good-plugins-streaktv.html" title="streaktv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -85,7 +85,7 @@ directories). The results will be sorted. <p> </p> <div class="refsect2"> -<a name="idp16940736"></a><h3>Example launch lines</h3> +<a name="id-1.2.142.7.4.1"></a><h3>Example launch lines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -114,9 +114,12 @@ directories). The results will be sorted. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18820224"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.142.7.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -137,9 +140,12 @@ directories). The results will be sorted. </div> <hr> <div class="refsect2"> -<a name="idp20641456"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.142.7.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -189,6 +195,6 @@ directories). The results will be sorted. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-streaktv.html b/docs/plugins/html/gst-plugins-good-plugins-streaktv.html index dc20378cb46e0adacc44110ee5f8d09037de2f88..890eb5fa36b8aaa62598ee8140358845bb487618 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-streaktv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-streaktv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>streaktv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-splitfilesrc.html" title="splitfilesrc"> <link rel="next" href="gst-plugins-good-plugins-taginject.html" title="taginject"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -70,7 +70,7 @@ StreakTV makes after images of moving objects. <p> </p> <div class="refsect2"> -<a name="idp20074816"></a><h3>Example launch line</h3> +<a name="id-1.2.143.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -88,9 +88,12 @@ StreakTV makes after images of moving objects. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18201120"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.143.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -111,9 +114,12 @@ StreakTV makes after images of moving objects. </div> <hr> <div class="refsect2"> -<a name="idp15220960"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.143.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -133,8 +139,11 @@ StreakTV makes after images of moving objects. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -180,6 +189,6 @@ StreakTV makes after images of moving objects. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-taginject.html b/docs/plugins/html/gst-plugins-good-plugins-taginject.html index fe9411a0c581bf6037cf207298bfd665fbb87548..aed0a926bdc6556e9c8710c26d650de93e9b8245 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-taginject.html +++ b/docs/plugins/html/gst-plugins-good-plugins-taginject.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>taginject</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-streaktv.html" title="streaktv"> <link rel="next" href="gst-plugins-good-plugins-udpsrc.html" title="udpsrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -70,7 +70,7 @@ unmodified. <p> </p> <div class="refsect2"> -<a name="idp10734928"></a><h3>Example launch lines</h3> +<a name="id-1.2.144.6.3.1"></a><h3>Example launch lines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -99,9 +99,12 @@ unmodified. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20644976"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.144.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -122,9 +125,12 @@ unmodified. </div> <hr> <div class="refsect2"> -<a name="idp12698416"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.144.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -144,8 +150,11 @@ unmodified. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -192,6 +201,6 @@ Opaque <a class="link" href="gst-plugins-good-plugins-taginject.html#GstTagInjec </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-udpsink.html b/docs/plugins/html/gst-plugins-good-plugins-udpsink.html index 5822d2c0a9c2cfca2be4790b0302ea8695c141ac..d6b6de23f6ff299c92df47383650448ccb0b1ac5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-udpsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-udpsink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>udpsink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-udpsrc.html" title="udpsrc"> <link rel="next" href="gst-plugins-good-plugins-v4l2src.html" title="v4l2src"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -80,7 +80,7 @@ It can be combined with RTP payloaders to implement RTP streaming. <p> </p> <div class="refsect2"> -<a name="idp20458256"></a><h3>Examples</h3> +<a name="id-1.2.146.7.3.1"></a><h3>Examples</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -98,9 +98,12 @@ It can be combined with RTP payloaders to implement RTP streaming. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp22059472"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.146.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -121,9 +124,12 @@ It can be combined with RTP payloaders to implement RTP streaming. </div> <hr> <div class="refsect2"> -<a name="idp19496288"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.146.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -181,6 +187,6 @@ udpsrc, multifdsink </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-udpsrc.html b/docs/plugins/html/gst-plugins-good-plugins-udpsrc.html index e4e26c3e72bfcba2b3ab338197dd2350f5d5411c..38a7fccfdbacee5dcee3bb86dbea80f8c0f25d31 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-udpsrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-udpsrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>udpsrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-taginject.html" title="taginject"> <link rel="next" href="gst-plugins-good-plugins-udpsink.html" title="udpsink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -83,6 +83,8 @@ GstUDPSrc implements "<a class="link" href="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--close-socket" title='The "close-socket" property'>close-socket</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--socket" title='The "socket" property'>socket</a>" <a href="http://library.gnome.org/devel/gio/unstable/GSocket.html"><span class="type">GSocket</span></a>* : Read / Write "<a class="link" href="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--used-socket" title='The "used-socket" property'>used-socket</a>" <a href="http://library.gnome.org/devel/gio/unstable/GSocket.html"><span class="type">GSocket</span></a>* : Read + "<a class="link" href="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--bind-address" title='The "bind-address" property'>bind-address</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--address" title='The "address" property'>address</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write </pre> </div> <div class="refsect1"> @@ -141,7 +143,7 @@ will generate an element message named if no data was recieved in the given timeout. The message's structure contains one field: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> <span class="type">guint64</span> <code class="classname">"timeout"</code>: the timeout in microseconds that expired when waiting for data. @@ -160,7 +162,7 @@ is responsible for closing the file descriptor. <p> </p> <div class="refsect2"> -<a name="idp19650112"></a><h3>Examples</h3> +<a name="id-1.2.145.7.13.1"></a><h3>Examples</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -206,9 +208,12 @@ Last reviewed on 2007-09-20 (0.10.7) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20160688"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.145.7.15.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -229,9 +234,12 @@ Last reviewed on 2007-09-20 (0.10.7) </div> <hr> <div class="refsect2"> -<a name="idp22844880"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.145.7.15.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -276,7 +284,7 @@ Last reviewed on 2007-09-20 (0.10.7) <div class="refsect2"> <a name="GstUDPSrc--multicast-group"></a><h3>The <code class="literal">"multicast-group"</code> property</h3> <pre class="programlisting"> "multicast-group" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre> -<p>The Address of multicast group to join.</p> +<p>The Address of multicast group to join. DEPRECATED: Use address property instead.</p> <p>Default value: "0.0.0.0"</p> </div> <hr> @@ -380,6 +388,20 @@ Last reviewed on 2007-09-20 (0.10.7) <pre class="programlisting"> "used-socket" <a href="http://library.gnome.org/devel/gio/unstable/GSocket.html"><span class="type">GSocket</span></a>* : Read</pre> <p>Socket currently in use for UDP reception. (NULL = no socket).</p> </div> +<hr> +<div class="refsect2"> +<a name="GstUDPSrc--bind-address"></a><h3>The <code class="literal">"bind-address"</code> property</h3> +<pre class="programlisting"> "bind-address" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre> +<p>Address to bind the socket to. This is equivalent to the multicast-group property.</p> +<p>Default value: "0.0.0.0"</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstUDPSrc--address"></a><h3>The <code class="literal">"address"</code> property</h3> +<pre class="programlisting"> "address" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre> +<p>Address to receive packets for. This is equivalent to the multicast-group property for now.</p> +<p>Default value: "0.0.0.0"</p> +</div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-udpsrc.see-also"></a><h2>See Also</h2> @@ -388,6 +410,6 @@ udpsink, multifdsink </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-v4l2radio.html b/docs/plugins/html/gst-plugins-good-plugins-v4l2radio.html index d6181163d35d933a0bf47dace34f90cfab993efd..d449fbffcfe906291fa575a8eec4103af072347c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-v4l2radio.html +++ b/docs/plugins/html/gst-plugins-good-plugins-v4l2radio.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>v4l2radio</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-v4l2sink.html" title="v4l2sink"> <link rel="next" href="gst-plugins-good-plugins-vertigotv.html" title="vertigotv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -60,7 +60,7 @@ <a name="gst-plugins-good-plugins-v4l2radio.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstV4l2Radio implements - <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUriHandler.html#GstURIHandler">GstURIHandler</a> and GstTuner.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUriHandler.html#GstURIHandler">GstURIHandler</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gsttuner.html#GstTuner">GstTuner</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-v4l2radio.properties"></a><h2>Properties</h2> @@ -74,9 +74,12 @@ GstV4l2Radio implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp19590288"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.149.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -97,7 +100,7 @@ GstV4l2Radio implements </div> <hr> <div class="refsect2"> -<a name="idp21885312"></a><h3>Element Pads</h3> +<a name="id-1.2.149.7.2.2"></a><h3>Element Pads</h3> </div> </div> <p> @@ -132,6 +135,6 @@ GstV4l2Radio implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-v4l2sink.html b/docs/plugins/html/gst-plugins-good-plugins-v4l2sink.html index f5ca8f2b783d0cef5d50aa9d9dc5584bcdd11d30..d1f2d8c43f13599d6b4abedde1082922e7b300a5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-v4l2sink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-v4l2sink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>v4l2sink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-v4l2src.html" title="v4l2src"> <link rel="next" href="gst-plugins-good-plugins-v4l2radio.html" title="v4l2radio"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -62,7 +62,7 @@ <a name="gst-plugins-good-plugins-v4l2sink.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstV4l2Sink implements - GstTuner, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideooverlay.html#GstVideoOverlay">GstVideoOverlay</a>, GstNavigation, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance">GstColorBalance</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideoorientation.html#GstVideoOrientation">GstVideoOrientation</a>.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gsttuner.html#GstTuner">GstTuner</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideooverlay.html#GstVideoOverlay">GstVideoOverlay</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstnavigation.html#GstNavigation">GstNavigation</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance">GstColorBalance</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideoorientation.html#GstVideoOrientation">GstVideoOrientation</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-v4l2sink.properties"></a><h2>Properties</h2> @@ -87,6 +87,9 @@ GstV4l2Sink implements "<a class="link" href="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--min-queued-bufs" title='The "min-queued-bufs" property'>min-queued-bufs</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--io-mode" title='The "io-mode" property'>io-mode</a>" <span class="type">GstV4l2IOMode</span> : Read / Write "<a class="link" href="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--norm" title='The "norm" property'>norm</a>" <span class="type">V4L2_TV_norms</span> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--extra-controls" title='The "extra-controls" property'>extra-controls</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--force-aspect-ratio" title='The "force-aspect-ratio" property'>force-aspect-ratio</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--pixel-aspect-ratio" title='The "pixel-aspect-ratio" property'>pixel-aspect-ratio</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write </pre> </div> <div class="refsect1"> @@ -94,9 +97,12 @@ GstV4l2Sink implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp17423808"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.148.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -117,9 +123,12 @@ GstV4l2Sink implements </div> <hr> <div class="refsect2"> -<a name="idp22115328"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.148.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -227,6 +236,14 @@ GstV4l2Sink implements </tr> <tr> <td><p><span class="term"></span></p></td> +<td> video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> video/x-h263, variant=(string)itu, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> <td> video/x-h264, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]</td> </tr> <tr> @@ -404,10 +421,30 @@ GstV4l2Sink implements <p>video standard.</p> <p>Default value: none</p> </div> +<hr> +<div class="refsect2"> +<a name="GstV4l2Sink--extra-controls"></a><h3>The <code class="literal">"extra-controls"</code> property</h3> +<pre class="programlisting"> "extra-controls" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a>* : Read / Write</pre> +<p>Extra v4l2 controls (CIDs) for the device.</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstV4l2Sink--force-aspect-ratio"></a><h3>The <code class="literal">"force-aspect-ratio"</code> property</h3> +<pre class="programlisting"> "force-aspect-ratio" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<p>When enabled, the pixel aspect ratio will be enforced.</p> +<p>Default value: TRUE</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstV4l2Sink--pixel-aspect-ratio"></a><h3>The <code class="literal">"pixel-aspect-ratio"</code> property</h3> +<pre class="programlisting"> "pixel-aspect-ratio" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre> +<p>Overwrite the pixel aspect ratio of the device.</p> +<p>Default value: "1/1"</p> +</div> </div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-v4l2src.html b/docs/plugins/html/gst-plugins-good-plugins-v4l2src.html index 601ca0e4b81f2bd6b0517d7a8574c0435eafd21a..a9ce9472eaa6c03f587d670cc8e7b3b95d3b3429 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-v4l2src.html +++ b/docs/plugins/html/gst-plugins-good-plugins-v4l2src.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>v4l2src</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-udpsink.html" title="udpsink"> <link rel="next" href="gst-plugins-good-plugins-v4l2sink.html" title="v4l2sink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -64,7 +64,7 @@ <a name="gst-plugins-good-plugins-v4l2src.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstV4l2Src implements - <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUriHandler.html#GstURIHandler">GstURIHandler</a>, GstTuner, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance">GstColorBalance</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideoorientation.html#GstVideoOrientation">GstVideoOrientation</a>.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUriHandler.html#GstURIHandler">GstURIHandler</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gsttuner.html#GstTuner">GstTuner</a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance">GstColorBalance</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideoorientation.html#GstVideoOrientation">GstVideoOrientation</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-v4l2src.properties"></a><h2>Properties</h2> @@ -82,6 +82,9 @@ GstV4l2Src implements "<a class="link" href="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--saturation" title='The "saturation" property'>saturation</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--norm" title='The "norm" property'>norm</a>" <span class="type">V4L2_TV_norms</span> : Read / Write "<a class="link" href="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--io-mode" title='The "io-mode" property'>io-mode</a>" <span class="type">GstV4l2IOMode</span> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--extra-controls" title='The "extra-controls" property'>extra-controls</a>" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a>* : Read / Write + "<a class="link" href="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--force-aspect-ratio" title='The "force-aspect-ratio" property'>force-aspect-ratio</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--pixel-aspect-ratio" title='The "pixel-aspect-ratio" property'>pixel-aspect-ratio</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write </pre> </div> <div class="refsect1"> @@ -95,9 +98,12 @@ GstV4l2Src implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp21959872"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.147.8.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -118,9 +124,12 @@ GstV4l2Src implements </div> <hr> <div class="refsect2"> -<a name="idp22902864"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.147.8.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -228,6 +237,14 @@ GstV4l2Src implements </tr> <tr> <td><p><span class="term"></span></p></td> +<td> video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> video/x-h263, variant=(string)itu, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> <td> video/x-h264, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]</td> </tr> <tr> @@ -356,6 +373,26 @@ GstV4l2Src implements <p>I/O mode.</p> <p>Default value: GST_V4L2_IO_AUTO</p> </div> +<hr> +<div class="refsect2"> +<a name="GstV4l2Src--extra-controls"></a><h3>The <code class="literal">"extra-controls"</code> property</h3> +<pre class="programlisting"> "extra-controls" <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStructure.html#GstStructure"><span class="type">GstStructure</span></a>* : Read / Write</pre> +<p>Extra v4l2 controls (CIDs) for the device.</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstV4l2Src--force-aspect-ratio"></a><h3>The <code class="literal">"force-aspect-ratio"</code> property</h3> +<pre class="programlisting"> "force-aspect-ratio" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> +<p>When enabled, the pixel aspect ratio will be enforced.</p> +<p>Default value: TRUE</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstV4l2Src--pixel-aspect-ratio"></a><h3>The <code class="literal">"pixel-aspect-ratio"</code> property</h3> +<pre class="programlisting"> "pixel-aspect-ratio" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write</pre> +<p>Overwrite the pixel aspect ratio of the device.</p> +<p>Default value: "1/1"</p> +</div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-v4l2src.signal-details"></a><h2>Signal Details</h2> @@ -363,14 +400,15 @@ GstV4l2Src implements <a name="GstV4l2Src-prepare-format"></a><h3>The <code class="literal">"prepare-format"</code> signal</h3> <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src"><span class="type">GstV4l2Src</span></a> *gstv4l2src, <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> arg1, - <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg2, - <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg3, - <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg4, + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *arg2, <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstv4l2src</code></em> :</span></p></td> @@ -387,6 +425,6 @@ GstV4l2Src implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-vertigotv.html b/docs/plugins/html/gst-plugins-good-plugins-vertigotv.html index 83dee60012687e9fe20440074fe7147a8a186b1c..5793613c1de2132630fd288e01a39b5da784bd2c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-vertigotv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-vertigotv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>vertigotv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-v4l2radio.html" title="v4l2radio"> <link rel="next" href="gst-plugins-good-plugins-videobalance.html" title="videobalance"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -79,7 +79,7 @@ VertigoTV is a loopback alpha blending effector with rotating and scaling. <p> </p> <div class="refsect2"> -<a name="idp22056704"></a><h3>Example launch line</h3> +<a name="id-1.2.150.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -97,9 +97,12 @@ VertigoTV is a loopback alpha blending effector with rotating and scaling. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp13658720"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.150.7.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -120,9 +123,12 @@ VertigoTV is a loopback alpha blending effector with rotating and scaling. </div> <hr> <div class="refsect2"> -<a name="idp23287488"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.150.7.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -142,8 +148,11 @@ VertigoTV is a loopback alpha blending effector with rotating and scaling. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -203,8 +212,11 @@ VertigoTV is a loopback alpha blending effector with rotating and scaling. <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS"><code class="literal">Action</code></a></pre> <p> </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>gstvertigotv</code></em> :</span></p></td> @@ -221,6 +233,6 @@ VertigoTV is a loopback alpha blending effector with rotating and scaling. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-videobalance.html b/docs/plugins/html/gst-plugins-good-plugins-videobalance.html index d827fc434f3fbeb141d610718f05eed340147321..f14e7bfe3eae4e4eecdba66d9f7ac88229564509 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videobalance.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videobalance.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>videobalance</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-vertigotv.html" title="vertigotv"> <link rel="next" href="gst-plugins-good-plugins-videobox.html" title="videobox"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -62,7 +62,7 @@ <a name="gst-plugins-good-plugins-videobalance.implemented-interfaces"></a><h2>Implemented Interfaces</h2> <p> GstVideoBalance implements - GstImplementsInterface and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance">GstColorBalance</a>.</p> + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstImplementsInterface.html">GstImplementsInterface</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance">GstColorBalance</a>.</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-videobalance.properties"></a><h2>Properties</h2> @@ -81,7 +81,7 @@ Adjusts brightness, contrast, hue, saturation on a video stream. <p> </p> <div class="refsect2"> -<a name="idp23100816"></a><h3>Example launch line</h3> +<a name="id-1.2.151.7.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -103,9 +103,12 @@ Last reviewed on 2010-04-18 (0.10.22) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp23953536"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.151.7.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -126,9 +129,12 @@ Last reviewed on 2010-04-18 (0.10.22) </div> <hr> <div class="refsect2"> -<a name="idp18413248"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.151.7.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -148,8 +154,11 @@ Last reviewed on 2010-04-18 (0.10.22) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -221,6 +230,6 @@ Opaque data structure. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-videobox.html b/docs/plugins/html/gst-plugins-good-plugins-videobox.html index acfc774c175a40fb96b34b0a8e64a9c95a0fdbb8..273bb7b367cf4f48223cd684c3df1db271da6019 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videobox.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videobox.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>videobox</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-videobalance.html" title="videobalance"> <link rel="next" href="gst-plugins-good-plugins-videocrop.html" title="videocrop"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -122,9 +122,12 @@ Sample pipeline: <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp12182448"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.152.6.8.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -145,9 +148,12 @@ Sample pipeline: </div> <hr> <div class="refsect2"> -<a name="idp12467184"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.152.6.8.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -167,8 +173,11 @@ Sample pipeline: </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -273,6 +282,6 @@ video to be centered in the output. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-videocrop.html b/docs/plugins/html/gst-plugins-good-plugins-videocrop.html index 35f0ec7c17c82b29661a27a5c7b0596a8a861b25..19b97c638fbf1df04f28ef851043bf057a2941ec 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videocrop.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videocrop.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>videocrop</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-videobox.html" title="videobox"> <link rel="next" href="gst-plugins-good-plugins-videoflip.html" title="videoflip"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -92,7 +92,7 @@ most use cases, but it might matter for yours. <p> </p> <div class="refsect2"> -<a name="idp15223760"></a><h3>Example launch line</h3> +<a name="id-1.2.153.6.6.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -110,9 +110,12 @@ most use cases, but it might matter for yours. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp19874896"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.153.6.7.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -133,9 +136,12 @@ most use cases, but it might matter for yours. </div> <hr> <div class="refsect2"> -<a name="idp21469104"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.153.6.7.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -151,12 +157,15 @@ most use cases, but it might matter for yours. </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, RGB16, RGB15, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, YV12, RGB16, RGB15, GRAY8, NV12, NV21, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -172,7 +181,7 @@ most use cases, but it might matter for yours. </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, RGB16, RGB15, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, YV12, RGB16, RGB15, GRAY8, NV12, NV21, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> </tr> </tbody> </table></div> @@ -195,32 +204,32 @@ most use cases, but it might matter for yours. <div class="refsect2"> <a name="GstVideoCrop--bottom"></a><h3>The <code class="literal">"bottom"</code> property</h3> <pre class="programlisting"> "bottom" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> -<p>Pixels to crop at bottom.</p> -<p>Allowed values: >= 0</p> +<p>Pixels to crop at bottom (-1 to auto-crop).</p> +<p>Allowed values: >= G_MAXULONG</p> <p>Default value: 0</p> </div> <hr> <div class="refsect2"> <a name="GstVideoCrop--left"></a><h3>The <code class="literal">"left"</code> property</h3> <pre class="programlisting"> "left" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> -<p>Pixels to crop at left.</p> -<p>Allowed values: >= 0</p> +<p>Pixels to crop at left (-1 to auto-crop).</p> +<p>Allowed values: >= G_MAXULONG</p> <p>Default value: 0</p> </div> <hr> <div class="refsect2"> <a name="GstVideoCrop--right"></a><h3>The <code class="literal">"right"</code> property</h3> <pre class="programlisting"> "right" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> -<p>Pixels to crop at right.</p> -<p>Allowed values: >= 0</p> +<p>Pixels to crop at right (-1 to auto-crop).</p> +<p>Allowed values: >= G_MAXULONG</p> <p>Default value: 0</p> </div> <hr> <div class="refsect2"> <a name="GstVideoCrop--top"></a><h3>The <code class="literal">"top"</code> property</h3> <pre class="programlisting"> "top" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write</pre> -<p>Pixels to crop at top.</p> -<p>Allowed values: >= 0</p> +<p>Pixels to crop at top (-1 to auto-crop).</p> +<p>Allowed values: >= G_MAXULONG</p> <p>Default value: 0</p> </div> </div> @@ -231,6 +240,6 @@ most use cases, but it might matter for yours. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-videoflip.html b/docs/plugins/html/gst-plugins-good-plugins-videoflip.html index 284998d3d5efd15c5990fbec4def4136fed77587..67eb534d16ea65e822b11852b92a457e9bc0e8ce 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videoflip.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videoflip.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>videoflip</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-videocrop.html" title="videocrop"> <link rel="next" href="gst-plugins-good-plugins-videomixer.html" title="videomixer"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -71,7 +71,7 @@ Flips and rotates video. <p> </p> <div class="refsect2"> -<a name="idp22239616"></a><h3>Example launch line</h3> +<a name="id-1.2.154.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -92,9 +92,12 @@ Last reviewed on 2010-04-18 (0.10.22) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18926704"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.154.6.5.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -115,9 +118,12 @@ Last reviewed on 2010-04-18 (0.10.22) </div> <hr> <div class="refsect2"> -<a name="idp21940848"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.154.6.5.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -133,12 +139,15 @@ Last reviewed on 2010-04-18 (0.10.22) </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>video/x-raw, format=(string){ AYUV, ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx, xBGR, BGRx, RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td>video/x-raw, format=(string){ AYUV, ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx, xBGR, BGRx, RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU, NV12, NV21, GRAY8, GRAY16_BE, GRAY16_LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -154,7 +163,7 @@ Last reviewed on 2010-04-18 (0.10.22) </tr> <tr> <td><p><span class="term">details</span></p></td> -<td>video/x-raw, format=(string){ AYUV, ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx, xBGR, BGRx, RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +<td>video/x-raw, format=(string){ AYUV, ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx, xBGR, BGRx, RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU, NV12, NV21, GRAY8, GRAY16_BE, GRAY16_LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> </tr> </tbody> </table></div> @@ -189,8 +198,11 @@ Opaque datastructure. <p> The different flip methods. </p> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><a name="GST-VIDEO-FLIP-METHOD-IDENTITY:CAPS"></a><span class="term"><code class="literal">GST_VIDEO_FLIP_METHOD_IDENTITY</code></span></p></td> @@ -248,6 +260,6 @@ The different flip methods. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-videomixer.html b/docs/plugins/html/gst-plugins-good-plugins-videomixer.html index 43477d5d0307e46ee29fad63961d3e95e79ba739..0cdd8844265daedba847eeb4a056652624363638 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videomixer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videomixer.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>videomixer</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-videoflip.html" title="videoflip"> <link rel="next" href="gst-plugins-good-plugins-vp8dec.html" title="vp8dec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -48,18 +48,16 @@ output parameters. Indeed output video frames will have the geometry of the biggest incoming video stream and the framerate of the fastest incoming one. </p> <p> -All sink pads must be either AYUV, ARGB or BGRA, but a mixture of them is not -supported. The src pad will have the same colorspace as the sinks. -No colorspace conversion is done. +Videomixer will do colorspace conversion. </p> <p> Individual parameters for each input stream can be configured on the -<span class="type">GstVideoMixer2Pad</span>. +<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good/html/GstVideoMixer2Pad.html"><span class="type">GstVideoMixer2Pad</span></a>. </p> <p> </p> <div class="refsect2"> -<a name="idp20595360"></a><h3>Sample pipelines</h3> +<a name="id-1.2.155.4.5.1"></a><h3>Sample pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -160,9 +158,12 @@ framerate of the output video is 10 frames per second. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp20724272"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.155.4.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -183,9 +184,12 @@ framerate of the output video is 10 frames per second. </div> <hr> <div class="refsect2"> -<a name="idp23957520"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.155.4.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -205,8 +209,11 @@ framerate of the output video is 10 frames per second. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -237,6 +244,6 @@ framerate of the output video is 10 frames per second. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-vp8dec.html b/docs/plugins/html/gst-plugins-good-plugins-vp8dec.html index c7fa6cd39e2bbce2997c807c3269d85c9e8ce347..4934f24be99c74071ddccb788828f577d327914e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-vp8dec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-vp8dec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>vp8dec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-videomixer.html" title="videomixer"> <link rel="next" href="gst-plugins-good-plugins-vp8enc.html" title="vp8enc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -70,9 +70,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp8443904"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.156.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -93,9 +96,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp22696576"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.156.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -115,8 +121,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -193,6 +202,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-vp8enc.html b/docs/plugins/html/gst-plugins-good-plugins-vp8enc.html index 2e9871db12a03d14c37aed1620fe3d03fa2d5660..f5087b3dc8e9dad60c3c4636020a4d3da7e56475 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-vp8enc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-vp8enc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>vp8enc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-vp8dec.html" title="vp8dec"> <link rel="next" href="gst-plugins-good-plugins-warptv.html" title="warptv"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -124,6 +124,7 @@ GstVP8Enc implements "<a class="link" href="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--twopass-vbr-minsection" title='The "twopass-vbr-minsection" property'>twopass-vbr-minsection</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--undershoot" title='The "undershoot" property'>undershoot</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> : Read / Write "<a class="link" href="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--vertical-scaling-mode" title='The "vertical-scaling-mode" property'>vertical-scaling-mode</a>" <span class="type">GstVP8EncScalingMode</span> : Read / Write + "<a class="link" href="gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--timebase" title='The "timebase" property'>timebase</a>" <span class="type">GstFraction</span> : Read / Write </pre> </div> <div class="refsect1"> @@ -131,9 +132,12 @@ GstVP8Enc implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp24654896"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.157.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -154,9 +158,12 @@ GstVP8Enc implements </div> <hr> <div class="refsect2"> -<a name="idp24662304"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.157.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -176,8 +183,11 @@ GstVP8Enc implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -649,10 +659,16 @@ GstVP8Enc implements <p>Vertical scaling mode.</p> <p>Default value: Normal</p> </div> +<hr> +<div class="refsect2"> +<a name="GstVP8Enc--timebase"></a><h3>The <code class="literal">"timebase"</code> property</h3> +<pre class="programlisting"> "timebase" <span class="type">GstFraction</span> : Read / Write</pre> +<p>Fraction of one second that is the shortest interframe time - normally left as zero which will default to the framerate.</p> +</div> </div> </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-warptv.html b/docs/plugins/html/gst-plugins-good-plugins-warptv.html index 1c625888f2ed5d8893acda7b278cf7bd4a8d3fd4..94176cab4cdd4b0b084489577bfc3397c601d745 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-warptv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-warptv.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>warptv</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-vp8enc.html" title="vp8enc"> <link rel="next" href="gst-plugins-good-plugins-wavenc.html" title="wavenc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -62,7 +62,7 @@ WarpTV does realtime goo'ing of the video input. <p> </p> <div class="refsect2"> -<a name="idp18254976"></a><h3>Example launch line</h3> +<a name="id-1.2.158.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -80,9 +80,12 @@ WarpTV does realtime goo'ing of the video input. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp12090048"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.158.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -103,9 +106,12 @@ WarpTV does realtime goo'ing of the video input. </div> <hr> <div class="refsect2"> -<a name="idp23178496"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.158.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -125,8 +131,11 @@ WarpTV does realtime goo'ing of the video input. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -163,6 +172,6 @@ WarpTV does realtime goo'ing of the video input. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-waveformsink.html b/docs/plugins/html/gst-plugins-good-plugins-waveformsink.html index 720c0de1af9f2cd5cf52ba51e5a1992f2045f2eb..a9b12cfa93ddd7f3c1a29572247fd2555d271317 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-waveformsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-waveformsink.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>waveformsink</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-wavenc.html" title="wavenc"> <link rel="next" href="gst-plugins-good-plugins-wavpackdec.html" title="wavpackdec"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -45,9 +45,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp21469392"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.160.4.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -68,7 +71,7 @@ </div> <hr> <div class="refsect2"> -<a name="idp23266352"></a><h3>Element Pads</h3> +<a name="id-1.2.160.4.2.2"></a><h3>Element Pads</h3> </div> </div> <p> @@ -123,6 +126,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavenc.html b/docs/plugins/html/gst-plugins-good-plugins-wavenc.html index dda93755e2ea9569fa999dc1c0dc017c6e25f1df..66c928e639b1bf724823a9098854e0a259750cb2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-wavenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-wavenc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>wavenc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-warptv.html" title="warptv"> <link rel="next" href="gst-plugins-good-plugins-waveformsink.html" title="waveformsink"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -26,6 +26,8 @@ <a href="#gst-plugins-good-plugins-wavenc.description" class="shortcut">Description</a>  | <a href="#gst-plugins-good-plugins-wavenc.object-hierarchy" class="shortcut">Object Hierarchy</a> +  | + <a href="#gst-plugins-good-plugins-wavenc.implemented-interfaces" class="shortcut">Implemented Interfaces</a> </td></tr> </table> <div class="refentry"> @@ -53,16 +55,54 @@ </pre> </div> <div class="refsect1"> +<a name="gst-plugins-good-plugins-wavenc.implemented-interfaces"></a><h2>Implemented Interfaces</h2> +<p> +GstWavEnc implements + <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstTagSetter.html">GstTagSetter</a> and <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTocSetter.html#GstTocSetter">GstTocSetter</a>.</p> +</div> +<div class="refsect1"> <a name="gst-plugins-good-plugins-wavenc.description"></a><h2>Description</h2> <p> -Format a audio stream into the wav format. +Format an audio stream into the wav format. +</p> +<p> +</p> +<div class="refsect2"> +<a name="id-1.2.159.6.3.1"></a><h3>Example launch line</h3> +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> cdparanoiasrc mode<span class="gtkdoc opt">=</span>continuous <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> wavenc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>cd<span class="gtkdoc opt">.</span>wav</pre></td> + </tr> + </tbody> + </table> +</div> + Rip a whole audio CD into a single wav file, with the track table written into a CUE sheet inside the file +<div class="informalexample"> + <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> + <tbody> + <tr> + <td class="listing_lines" align="right"><pre>1</pre></td> + <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> cdparanoiasrc track<span class="gtkdoc opt">=</span><span class="number">5</span> <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> wavenc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>track5<span class="gtkdoc opt">.</span>wav</pre></td> + </tr> + </tbody> + </table> +</div> + Rip track 5 of an audio CD into a single wav file containing unencoded raw audio samples. +</div> +<p> </p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp22127056"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.159.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -83,9 +123,12 @@ Format a audio stream into the wav format. </div> <hr> <div class="refsect2"> -<a name="idp22268976"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.159.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -117,8 +160,11 @@ Format a audio stream into the wav format. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -155,6 +201,6 @@ Format a audio stream into the wav format. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavpackdec.html b/docs/plugins/html/gst-plugins-good-plugins-wavpackdec.html index 4a3273c9595b89ccf8dc47ad86c2a85bce9295aa..8f4f18d82f479d2be7ebd46f6bffd4b245e6ff25 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-wavpackdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-wavpackdec.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>wavpackdec</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-waveformsink.html" title="waveformsink"> <link rel="next" href="gst-plugins-good-plugins-wavpackenc.html" title="wavpackenc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -58,9 +58,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp22602800"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.161.5.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -81,9 +84,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp20644112"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.161.5.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -103,8 +109,11 @@ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -149,6 +158,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavpackenc.html b/docs/plugins/html/gst-plugins-good-plugins-wavpackenc.html index 8104a6f414f6b03348a5dc4e4db05e1960fa17c1..6ca4756bf52acb9c59a79b81f8fb36a244125dcc 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-wavpackenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-wavpackenc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>wavpackenc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-wavpackdec.html" title="wavpackdec"> <link rel="next" href="gst-plugins-good-plugins-wavpackparse.html" title="wavpackparse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -80,9 +80,12 @@ GstWavpackEnc implements <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18268144"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.162.7.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -103,9 +106,12 @@ GstWavpackEnc implements </div> <hr> <div class="refsect2"> -<a name="idp24332144"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.162.7.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -125,8 +131,11 @@ GstWavpackEnc implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -146,8 +155,11 @@ GstWavpackEnc implements </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -238,6 +250,6 @@ GstWavpackEnc implements </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html b/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html index fce62b1d763de40e436c56920a94b178728afa1f..df752aeb43c8b3e214d709ee9ad270d8ad8da64e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>wavpackparse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-wavpackenc.html" title="wavpackenc"> <link rel="next" href="gst-plugins-good-plugins-wavparse.html" title="wavparse"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -61,7 +61,7 @@ This is an Wavpack parser. <p> </p> <div class="refsect2"> -<a name="idp24282400"></a><h3>Example launch line</h3> +<a name="id-1.2.163.5.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -79,9 +79,12 @@ This is an Wavpack parser. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp24314800"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.163.5.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -102,9 +105,12 @@ This is an Wavpack parser. </div> <hr> <div class="refsect2"> -<a name="idp24524960"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.163.5.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -124,8 +130,11 @@ This is an Wavpack parser. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -171,6 +180,6 @@ The opaque GstWavpackParse object </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavparse.html b/docs/plugins/html/gst-plugins-good-plugins-wavparse.html index 7e0f5297a15f19c1bcc70dc758643641c20b0958..c0b20040a0c1b9857ae935bcc787ed391e340719 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-wavparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-wavparse.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>wavparse</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-wavpackparse.html" title="wavpackparse"> <link rel="next" href="gst-plugins-good-plugins-webmmux.html" title="webmmux"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -72,7 +72,7 @@ stream from a network source. <p> </p> <div class="refsect2"> -<a name="idp25680160"></a><h3>Example launch line</h3> +<a name="id-1.2.164.6.4.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -105,9 +105,12 @@ Last reviewed on 2007-02-14 (0.10.6) <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp18877136"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.164.6.6.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -128,9 +131,12 @@ Last reviewed on 2007-02-14 (0.10.6) </div> <hr> <div class="refsect2"> -<a name="idp23199856"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.164.6.6.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -150,8 +156,11 @@ Last reviewed on 2007-02-14 (0.10.6) </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -309,6 +318,6 @@ in there and hopes it doesn't break too much. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-webmmux.html b/docs/plugins/html/gst-plugins-good-plugins-webmmux.html index df2ef8c603b4086ebd187132676f987d8c2c518d..db2fbe61024da4caa7f249e1efbce0e43ea914e5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-webmmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-webmmux.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>webmmux</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-wavparse.html" title="wavparse"> <link rel="next" href="gst-plugins-good-plugins-ximagesrc.html" title="ximagesrc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -69,7 +69,7 @@ webmmux muxes VP8 video and Vorbis audio streams into a WebM file. <p> </p> <div class="refsect2"> -<a name="idp25024608"></a><h3>Example launch line</h3> +<a name="id-1.2.165.6.3.1"></a><h3>Example launch line</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -108,9 +108,12 @@ webmmux muxes VP8 video and Vorbis audio streams into a WebM file. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp22790368"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.165.6.4.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -131,9 +134,12 @@ webmmux muxes VP8 video and Vorbis audio streams into a WebM file. </div> <hr> <div class="refsect2"> -<a name="idp21959376"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.165.6.4.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -153,8 +159,11 @@ webmmux muxes VP8 video and Vorbis audio streams into a WebM file. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -198,8 +207,11 @@ webmmux muxes VP8 video and Vorbis audio streams into a WebM file. </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -217,10 +229,17 @@ webmmux muxes VP8 video and Vorbis audio streams into a WebM file. <td><p><span class="term">details</span></p></td> <td>video/x-vp8, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> </tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> video/x-vp9, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td> +</tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -261,6 +280,6 @@ webmmux muxes VP8 video and Vorbis audio streams into a WebM file. </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-ximagesrc.html b/docs/plugins/html/gst-plugins-good-plugins-ximagesrc.html index dbb92703b6c52c82bea339dc626604c22583042e..e31b31221fa58f2273d428e55eed3cb1b8f67c3a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-ximagesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-ximagesrc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ximagesrc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-webmmux.html" title="webmmux"> <link rel="next" href="gst-plugins-good-plugins-y4menc.html" title="y4menc"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -77,9 +77,12 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp23721472"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.166.6.2.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -100,9 +103,12 @@ </div> <hr> <div class="refsect2"> -<a name="idp22841648"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.166.6.2.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -223,6 +229,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/gst-plugins-good-plugins-y4menc.html b/docs/plugins/html/gst-plugins-good-plugins-y4menc.html index fd9dbc9c031e20491d663d1802f207b921e2096c..c0c1e1fc1ca7c91a1d7e0fe4b3834ca83782114b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-y4menc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-y4menc.html @@ -3,12 +3,12 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>y4menc</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> <link rel="prev" href="gst-plugins-good-plugins-ximagesrc.html" title="ximagesrc"> <link rel="next" href="ch02.html" title="gst-plugins-good Plugins"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -57,7 +57,7 @@ <p> </p> <div class="refsect2"> -<a name="idp25229888"></a><h3>Example launch line</h3> +<a name="id-1.2.167.5.2.1"></a><h3>Example launch line</h3> <p> Creates a YU4MPEG2 raw video stream as defined by the mjpegtools project. </p> @@ -77,9 +77,12 @@ gst-launch-0.10 videotestsrc num-buffers=250 \ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="idp15954944"></a><h3>Element Information</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.167.5.3.1"></a><h3>Element Information</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">plugin</span></p></td> @@ -100,9 +103,12 @@ gst-launch-0.10 videotestsrc num-buffers=250 \ </div> <hr> <div class="refsect2"> -<a name="idp20742976"></a><h3>Element Pads</h3> -<div class="variablelist"><table border="0"> +<a name="id-1.2.167.5.3.2"></a><h3>Element Pads</h3> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -122,8 +128,11 @@ gst-launch-0.10 videotestsrc num-buffers=250 \ </tr> </tbody> </table></div> -<div class="variablelist"><table border="0"> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> <col align="left" valign="top"> +<col> +</colgroup> <tbody> <tr> <td><p><span class="term">name</span></p></td> @@ -160,6 +169,6 @@ gst-launch-0.10 videotestsrc num-buffers=250 \ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html index fa0985422ff852862fa6ccd3636864fd69cb4f55..bc8c133fc4743ad2628dadafb148232acbc07126 100644 --- a/docs/plugins/html/index.html +++ b/docs/plugins/html/index.html @@ -3,10 +3,10 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>GStreamer Good Plugins 1.0 Plugins Reference Manual</title> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> <link rel="next" href="ch01.html" title="gst-plugins-good Elements"> -<meta name="generator" content="GTK-Doc V1.18 (XML mode)"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -15,14 +15,14 @@ <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Good Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div> <div><p class="releaseinfo"> - for GStreamer Good Plugins 1.0 (1.0.10) + for GStreamer Good Plugins 1.0 (1.1.90) The latest version of this documentation can be found on-line at <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good/html/</a>. </p></div> </div> <hr> </div> -<div class="toc"><dl> +<div class="toc"><dl class="toc"> <dt><span class="chapter"><a href="ch01.html">gst-plugins-good Elements</a></span></dt> <dd><dl> <dt> @@ -152,6 +152,9 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-directsoundsink.html">directsoundsink</a></span><span class="refpurpose"> — DirectSound audio sink</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dtmfsrc.html">dtmfsrc</a></span><span class="refpurpose"> — Generates DTMF tones</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-dv1394src.html">dv1394src</a></span><span class="refpurpose"> — Source for DV video data from firewire port</span> </dt> <dt> @@ -197,9 +200,6 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-gamma.html">gamma</a></span><span class="refpurpose"> — Adjusts gamma on a video stream</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-gdkpixbufoverlay.html">gdkpixbufoverlay</a></span><span class="refpurpose"> — Overlay an image onto a video stream</span> -</dt> -<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-gdkpixbufsink.html">gdkpixbufsink</a></span><span class="refpurpose"> — Output images as GdkPixbuf objects in bus messages</span> </dt> <dt> @@ -356,21 +356,57 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdec.html">rtpdec</a></span><span class="refpurpose"> — Accepts raw RTP and RTCP packets and sends them forward</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpac3depay.html">rtpac3depay</a></span><span class="refpurpose"> — Extracts AC3 audio from RTP packets (RFC 4184)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpac3pay.html">rtpac3pay</a></span><span class="refpurpose"> — Payload AC3 audio as RTP packets (RFC 4184)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpamrdepay.html">rtpamrdepay</a></span><span class="refpurpose"> — Extracts AMR or AMR-WB audio from RTP packets (RFC 3267)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpamrpay.html">rtpamrpay</a></span><span class="refpurpose"> — Payload-encode AMR or AMR-WB audio into RTP packets (RFC 3267)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbvdepay.html">rtpbvdepay</a></span><span class="refpurpose"> — Extracts BroadcomVoice audio from RTP packets (RFC 4298)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbvpay.html">rtpbvpay</a></span><span class="refpurpose"> — Packetize BroadcomVoice audio streams into RTP packets (RFC 4298)</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpL16depay.html">rtpL16depay</a></span><span class="refpurpose"> — Extracts raw audio from RTP packets</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpL16pay.html">rtpL16pay</a></span><span class="refpurpose"> — Payload-encode Raw audio into RTP packets (RFC 3551)</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpj2kpay.html">rtpj2kpay</a></span><span class="refpurpose"> — Payload-encodes JPEG 2000 pictures into RTP packets (RFC 5371)</span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpjpegpay.html">rtpjpegpay</a></span><span class="refpurpose"> — Payload-encodes JPEG pictures into RTP packets (RFC 2435)</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpsbcpay.html">rtpsbcpay</a></span><span class="refpurpose"> — Payload SBC audio as RTP packets</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtspsrc.html">rtspsrc</a></span><span class="refpurpose"> — Receive data over the network via RTSP (RFC 2326)</span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbin.html">rtpbin</a></span><span class="refpurpose"> — Real-Time Transport Protocol bin</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdtmfmux.html">rtpdtmfmux</a></span><span class="refpurpose"> — mixes RTP DTMF streams into other RTP streams</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdtmfsrc.html">rtpdtmfsrc</a></span><span class="refpurpose"> — Generates RTP DTMF packets</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpjitterbuffer.html">rtpjitterbuffer</a></span><span class="refpurpose"> — A buffer that deals with network jitter and other transmission faults</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpmux.html">rtpmux</a></span><span class="refpurpose"> — multiplex N rtp streams into one</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpptdemux.html">rtpptdemux</a></span><span class="refpurpose"> — Parses codec streams transmitted in the same RTP session</span> </dt> <dt> @@ -380,6 +416,12 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpssrcdemux.html">rtpssrcdemux</a></span><span class="refpurpose"> — Splits RTP streams based on the SSRC</span> </dt> <dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-sbcparse.html">sbcparse</a></span><span class="refpurpose"> — Parses an SBC bluetooth audio stream</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-scaletempo.html">scaletempo</a></span><span class="refpurpose"> — Sync audio tempo with playback rate</span> +</dt> +<dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-shagadelictv.html">shagadelictv</a></span><span class="refpurpose"> — Oh behave, ShagedelicTV makes images shagadelic!</span> </dt> <dt> @@ -485,211 +527,214 @@ <dt><span class="chapter"><a href="ch02.html">gst-plugins-good Plugins</a></span></dt> <dd><dl> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-1394.html">1394</a></span><span class="refpurpose"> — <a name="plugin-1394"></a>Source for video data via IEEE1394 interface</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-1394.html">1394</a></span><span class="refpurpose">Source for video data via IEEE1394 interface</span> +</dt> +<dt> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-aasink.html">aasink</a></span><span class="refpurpose">ASCII Art video sink</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-aasink.html">aasink</a></span><span class="refpurpose"> — <a name="plugin-aasink"></a>ASCII Art video sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alaw.html">alaw</a></span><span class="refpurpose">ALaw audio conversion routines</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alaw.html">alaw</a></span><span class="refpurpose"> — <a name="plugin-alaw"></a>ALaw audio conversion routines</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alpha.html">alpha</a></span><span class="refpurpose">adds an alpha channel to video - constant or via chroma-keying</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alpha.html">alpha</a></span><span class="refpurpose"> — <a name="plugin-alpha"></a>adds an alpha channel to video - constant or via chroma-keying</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alphacolor.html">alphacolor</a></span><span class="refpurpose">RGBA from/to AYUV colorspace conversion preserving the alpha channel</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-alphacolor.html">alphacolor</a></span><span class="refpurpose"> — <a name="plugin-alphacolor"></a>RGBA from/to AYUV colorspace conversion preserving the alpha channel</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-apetag.html">apetag</a></span><span class="refpurpose">APEv1/2 tag reader</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-apetag.html">apetag</a></span><span class="refpurpose"> — <a name="plugin-apetag"></a>APEv1/2 tag reader</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-audiofx.html">audiofx</a></span><span class="refpurpose">Audio effects plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-audiofx.html">audiofx</a></span><span class="refpurpose"> — <a name="plugin-audiofx"></a>Audio effects plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-auparse.html">auparse</a></span><span class="refpurpose">parses au streams</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-auparse.html">auparse</a></span><span class="refpurpose"> — <a name="plugin-auparse"></a>parses au streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-autodetect.html">autodetect</a></span><span class="refpurpose">Plugin contains auto-detection plugins for video/audio in- and outputs</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-autodetect.html">autodetect</a></span><span class="refpurpose"> — <a name="plugin-autodetect"></a>Plugin contains auto-detection plugins for video/audio in- and outputs</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-avi.html">avi</a></span><span class="refpurpose">AVI stream handling</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-avi.html">avi</a></span><span class="refpurpose"> — <a name="plugin-avi"></a>AVI stream handling</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cacasink.html">cacasink</a></span><span class="refpurpose">Colored ASCII Art video sink</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cacasink.html">cacasink</a></span><span class="refpurpose"> — <a name="plugin-cacasink"></a>Colored ASCII Art video sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cairo.html">cairo</a></span><span class="refpurpose">Cairo-based elements</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cairo.html">cairo</a></span><span class="refpurpose"> — <a name="plugin-cairo"></a>Cairo-based elements</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cutter.html">cutter</a></span><span class="refpurpose">Audio Cutter to split audio into non-silent bits</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-cutter.html">cutter</a></span><span class="refpurpose"> — <a name="plugin-cutter"></a>Audio Cutter to split audio into non-silent bits</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-debug.html">debug</a></span><span class="refpurpose">elements for testing and debugging</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-debug.html">debug</a></span><span class="refpurpose"> — <a name="plugin-debug"></a>elements for testing and debugging</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-deinterlace.html">deinterlace</a></span><span class="refpurpose">Deinterlacer</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-deinterlace.html">deinterlace</a></span><span class="refpurpose"> — <a name="plugin-deinterlace"></a>Deinterlacer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-directsound.html">directsound</a></span><span class="refpurpose">DirectSound plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-directsound.html">directsound</a></span><span class="refpurpose"> — <a name="plugin-directsound"></a>DirectSound plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-dtmf.html">dtmf</a></span><span class="refpurpose">DTMF plugins</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-dv.html">dv</a></span><span class="refpurpose"> — <a name="plugin-dv"></a>DV demuxer and decoder based on libdv (libdv.sf.net)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-dv.html">dv</a></span><span class="refpurpose">DV demuxer and decoder based on libdv (libdv.sf.net)</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-equalizer.html">equalizer</a></span><span class="refpurpose"> — <a name="plugin-equalizer"></a>GStreamer audio equalizers</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-equalizer.html">equalizer</a></span><span class="refpurpose">GStreamer audio equalizers</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-effectv.html">effectv</a></span><span class="refpurpose"> — <a name="plugin-effectv"></a>effect plugins from the effectv project</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-effectv.html">effectv</a></span><span class="refpurpose">effect plugins from the effectv project</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flac.html">flac</a></span><span class="refpurpose"> — <a name="plugin-flac"></a>The FLAC Lossless compressor Codec</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flac.html">flac</a></span><span class="refpurpose">The FLAC Lossless compressor Codec</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flv.html">flv</a></span><span class="refpurpose"> — <a name="plugin-flv"></a>FLV muxing and demuxing plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flv.html">flv</a></span><span class="refpurpose">FLV muxing and demuxing plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flxdec.html">flxdec</a></span><span class="refpurpose"> — <a name="plugin-flxdec"></a>FLC/FLI/FLX video decoder</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-flxdec.html">flxdec</a></span><span class="refpurpose">FLC/FLI/FLX video decoder</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-gdkpixbuf.html">gdkpixbuf</a></span><span class="refpurpose"> — <a name="plugin-gdkpixbuf"></a>GdkPixbuf-based image decoder, overlay and sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-gdkpixbuf.html">gdkpixbuf</a></span><span class="refpurpose">GdkPixbuf-based image decoder, overlay and sink</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-goom.html">goom</a></span><span class="refpurpose"> — <a name="plugin-goom"></a>GOOM visualization filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-goom.html">goom</a></span><span class="refpurpose">GOOM visualization filter</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-goom2k1.html">goom2k1</a></span><span class="refpurpose"> — <a name="plugin-goom2k1"></a>GOOM 2k1 visualization filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-goom2k1.html">goom2k1</a></span><span class="refpurpose">GOOM 2k1 visualization filter</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-icydemux.html">icydemux</a></span><span class="refpurpose"> — <a name="plugin-icydemux"></a>Demux ICY tags from a stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-icydemux.html">icydemux</a></span><span class="refpurpose">Demux ICY tags from a stream</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-id3demux.html">id3demux</a></span><span class="refpurpose"> — <a name="plugin-id3demux"></a>Demux ID3v1 and ID3v2 tags from a file</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-id3demux.html">id3demux</a></span><span class="refpurpose">Demux ID3v1 and ID3v2 tags from a file</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-imagefreeze.html">imagefreeze</a></span><span class="refpurpose"> — <a name="plugin-imagefreeze"></a>Still frame stream generator</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-imagefreeze.html">imagefreeze</a></span><span class="refpurpose">Still frame stream generator</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-interleave.html">interleave</a></span><span class="refpurpose"> — <a name="plugin-interleave"></a>Audio interleaver/deinterleaver</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-interleave.html">interleave</a></span><span class="refpurpose">Audio interleaver/deinterleaver</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-isomp4.html">isomp4</a></span><span class="refpurpose"> — <a name="plugin-isomp4"></a>ISO base media file format support (mp4, 3gpp, qt, mj2)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-isomp4.html">isomp4</a></span><span class="refpurpose">ISO base media file format support (mp4, 3gpp, qt, mj2)</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-jack.html">jack</a></span><span class="refpurpose"> — <a name="plugin-jack"></a>JACK audio elements</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-jack.html">jack</a></span><span class="refpurpose">JACK audio elements</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-jpeg.html">jpeg</a></span><span class="refpurpose"> — <a name="plugin-jpeg"></a>JPeg plugin library</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-jpeg.html">jpeg</a></span><span class="refpurpose">JPeg plugin library</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-level.html">level</a></span><span class="refpurpose"> — <a name="plugin-level"></a>Audio level plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-level.html">level</a></span><span class="refpurpose">Audio level plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-matroska.html">matroska</a></span><span class="refpurpose"> — <a name="plugin-matroska"></a>Matroska and WebM stream handling</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-matroska.html">matroska</a></span><span class="refpurpose">Matroska and WebM stream handling</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-monoscope.html">monoscope</a></span><span class="refpurpose"> — <a name="plugin-monoscope"></a>Monoscope visualization</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-monoscope.html">monoscope</a></span><span class="refpurpose">Monoscope visualization</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-mulaw.html">mulaw</a></span><span class="refpurpose"> — <a name="plugin-mulaw"></a>MuLaw audio conversion routines</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-mulaw.html">mulaw</a></span><span class="refpurpose">MuLaw audio conversion routines</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-multifile.html">multifile</a></span><span class="refpurpose"> — <a name="plugin-multifile"></a>Reads/Writes buffers from/to sequentially named files</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-multifile.html">multifile</a></span><span class="refpurpose">Reads/Writes buffers from/to sequentially named files</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-multipart.html">multipart</a></span><span class="refpurpose"> — <a name="plugin-multipart"></a>multipart stream manipulation</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-multipart.html">multipart</a></span><span class="refpurpose">multipart stream manipulation</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-navigationtest.html">navigationtest</a></span><span class="refpurpose"> — <a name="plugin-navigationtest"></a>Template for a video filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-navigationtest.html">navigationtest</a></span><span class="refpurpose">Template for a video filter</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-oss4.html">oss4</a></span><span class="refpurpose"> — <a name="plugin-oss4"></a>Open Sound System (OSS) version 4 support for GStreamer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-oss4.html">oss4</a></span><span class="refpurpose">Open Sound System (OSS) version 4 support for GStreamer</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-ossaudio.html">ossaudio</a></span><span class="refpurpose"> — <a name="plugin-ossaudio"></a>OSS (Open Sound System) support for GStreamer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-ossaudio.html">ossaudio</a></span><span class="refpurpose">OSS (Open Sound System) support for GStreamer</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-osxaudio.html">osxaudio</a></span><span class="refpurpose"> — <a name="plugin-osxaudio"></a>OSX (Mac OS X) audio support for GStreamer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-osxaudio.html">osxaudio</a></span><span class="refpurpose">OSX (Mac OS X) audio support for GStreamer</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-osxvideo.html">osxvideo</a></span><span class="refpurpose"> — <a name="plugin-osxvideo"></a>OSX native video output plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-osxvideo.html">osxvideo</a></span><span class="refpurpose">OSX native video output plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-png.html">png</a></span><span class="refpurpose"> — <a name="plugin-png"></a>PNG plugin library</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-png.html">png</a></span><span class="refpurpose">PNG plugin library</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-pulseaudio.html">pulseaudio</a></span><span class="refpurpose"> — <a name="plugin-pulseaudio"></a>PulseAudio plugin library</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-pulseaudio.html">pulseaudio</a></span><span class="refpurpose">PulseAudio plugin library</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-replaygain.html">replaygain</a></span><span class="refpurpose"> — <a name="plugin-replaygain"></a>ReplayGain volume normalization</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-replaygain.html">replaygain</a></span><span class="refpurpose">ReplayGain volume normalization</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtp.html">rtp</a></span><span class="refpurpose"> — <a name="plugin-rtp"></a>Real-time protocol plugins</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtp.html">rtp</a></span><span class="refpurpose">Real-time protocol plugins</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtpmanager.html">rtpmanager</a></span><span class="refpurpose"> — <a name="plugin-rtpmanager"></a>RTP session management plugin library</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtpmanager.html">rtpmanager</a></span><span class="refpurpose">RTP session management plugin library</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtsp.html">rtsp</a></span><span class="refpurpose"> — <a name="plugin-rtsp"></a>transfer data via RTSP</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-rtsp.html">rtsp</a></span><span class="refpurpose">transfer data via RTSP</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-shapewipe.html">shapewipe</a></span><span class="refpurpose"> — <a name="plugin-shapewipe"></a>Shape Wipe transition filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-shapewipe.html">shapewipe</a></span><span class="refpurpose">Shape Wipe transition filter</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-shout2send.html">shout2send</a></span><span class="refpurpose"> — <a name="plugin-shout2send"></a>Sends data to an icecast server using libshout2</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-shout2send.html">shout2send</a></span><span class="refpurpose">Sends data to an icecast server using libshout2</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-smpte.html">smpte</a></span><span class="refpurpose"> — <a name="plugin-smpte"></a>Apply the standard SMPTE transitions on video images</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-smpte.html">smpte</a></span><span class="refpurpose">Apply the standard SMPTE transitions on video images</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-soup.html">soup</a></span><span class="refpurpose"> — <a name="plugin-soup"></a>libsoup HTTP client src/sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-soup.html">soup</a></span><span class="refpurpose">libsoup HTTP client src/sink</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-spectrum.html">spectrum</a></span><span class="refpurpose"> — <a name="plugin-spectrum"></a>Run an FFT on the audio signal, output spectrum data</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-spectrum.html">spectrum</a></span><span class="refpurpose">Run an FFT on the audio signal, output spectrum data</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-speex.html">speex</a></span><span class="refpurpose"> — <a name="plugin-speex"></a>Speex plugin library</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-speex.html">speex</a></span><span class="refpurpose">Speex plugin library</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-taglib.html">taglib</a></span><span class="refpurpose"> — <a name="plugin-taglib"></a>Tag writing plug-in based on taglib</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-taglib.html">taglib</a></span><span class="refpurpose">Tag writing plug-in based on taglib</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-udp.html">udp</a></span><span class="refpurpose"> — <a name="plugin-udp"></a>transfer data via UDP</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-udp.html">udp</a></span><span class="refpurpose">transfer data via UDP</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-video4linux2.html">video4linux2</a></span><span class="refpurpose"> — <a name="plugin-video4linux2"></a>elements for Video 4 Linux</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-video4linux2.html">video4linux2</a></span><span class="refpurpose">elements for Video 4 Linux</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videobox.html">videobox</a></span><span class="refpurpose"> — <a name="plugin-videobox"></a>resizes a video by adding borders or cropping</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videobox.html">videobox</a></span><span class="refpurpose">resizes a video by adding borders or cropping</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videocrop.html">videocrop</a></span><span class="refpurpose"> — <a name="plugin-videocrop"></a>Crops video into a user-defined region</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videocrop.html">videocrop</a></span><span class="refpurpose">Crops video into a user-defined region</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videofilter.html">videofilter</a></span><span class="refpurpose"> — <a name="plugin-videofilter"></a>Video filters plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videofilter.html">videofilter</a></span><span class="refpurpose">Video filters plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videomixer.html">videomixer</a></span><span class="refpurpose"> — <a name="plugin-videomixer"></a>Video mixer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-videomixer.html">videomixer</a></span><span class="refpurpose">Video mixer</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-vpx.html">vpx</a></span><span class="refpurpose"> — <a name="plugin-vpx"></a>VP8 plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-vpx.html">vpx</a></span><span class="refpurpose">VP8 plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-waveform.html">waveform</a></span><span class="refpurpose"> — <a name="plugin-waveform"></a>WaveForm API based plugin</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-waveform.html">waveform</a></span><span class="refpurpose">WaveForm API based plugin</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavenc.html">wavenc</a></span><span class="refpurpose"> — <a name="plugin-wavenc"></a>Encode raw audio into WAV</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavenc.html">wavenc</a></span><span class="refpurpose">Encode raw audio into WAV</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavpack.html">wavpack</a></span><span class="refpurpose"> — <a name="plugin-wavpack"></a>Wavpack lossless/lossy audio format handling</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavpack.html">wavpack</a></span><span class="refpurpose">Wavpack lossless/lossy audio format handling</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavparse.html">wavparse</a></span><span class="refpurpose"> — <a name="plugin-wavparse"></a>Parse a .wav file into raw audio</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-wavparse.html">wavparse</a></span><span class="refpurpose">Parse a .wav file into raw audio</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-ximagesrc.html">ximagesrc</a></span><span class="refpurpose"> — <a name="plugin-ximagesrc"></a>X11 video input plugin using standard Xlib calls</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-ximagesrc.html">ximagesrc</a></span><span class="refpurpose">X11 video input plugin using standard Xlib calls</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-y4menc.html">y4menc</a></span><span class="refpurpose"> — <a name="plugin-y4menc"></a>Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-plugin-y4menc.html">y4menc</a></span><span class="refpurpose">Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</span> </dt> </dl></dd> <dt><span class="chapter"><a href="ch03.html">gst-plugins-good Base Classes</a></span></dt> @@ -705,6 +750,6 @@ </div> <div class="footer"> <hr> - Generated by GTK-Doc V1.18</div> + Generated by GTK-Doc V1.19</div> </body> </html> \ No newline at end of file diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml index 4c77d302ce0d7b9daee9b4ef0671b72a3e039834..cad6a72b762ae866d3eb990f11cd9c3b111591bd 100644 --- a/docs/plugins/html/index.sgml +++ b/docs/plugins/html/index.sgml @@ -311,6 +311,7 @@ <ANCHOR id="gst-plugins-good-plugins-autoaudiosink.property-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autoaudiosink.html#gst-plugins-good-plugins-autoaudiosink.property-details"> <ANCHOR id="GstAutoAudioSink--filter-caps" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autoaudiosink.html#GstAutoAudioSink--filter-caps"> <ANCHOR id="GstAutoAudioSink--ts-offset" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autoaudiosink.html#GstAutoAudioSink--ts-offset"> +<ANCHOR id="GstAutoAudioSink--sync" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autoaudiosink.html#GstAutoAudioSink--sync"> <ANCHOR id="gst-plugins-good-plugins-autoaudiosink.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autoaudiosink.html#gst-plugins-good-plugins-autoaudiosink.see-also"> <ANCHOR id="gst-plugins-good-plugins-autoaudiosrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autoaudiosrc.html"> <ANCHOR id="gst-plugins-good-plugins-autoaudiosrc.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autoaudiosrc.html#gst-plugins-good-plugins-autoaudiosrc.synopsis"> @@ -336,6 +337,7 @@ <ANCHOR id="gst-plugins-good-plugins-autovideosink.property-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autovideosink.html#gst-plugins-good-plugins-autovideosink.property-details"> <ANCHOR id="GstAutoVideoSink--filter-caps" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autovideosink.html#GstAutoVideoSink--filter-caps"> <ANCHOR id="GstAutoVideoSink--ts-offset" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autovideosink.html#GstAutoVideoSink--ts-offset"> +<ANCHOR id="GstAutoVideoSink--sync" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autovideosink.html#GstAutoVideoSink--sync"> <ANCHOR id="gst-plugins-good-plugins-autovideosink.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autovideosink.html#gst-plugins-good-plugins-autovideosink.see-also"> <ANCHOR id="gst-plugins-good-plugins-autovideosrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autovideosrc.html"> <ANCHOR id="gst-plugins-good-plugins-autovideosrc.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-autovideosrc.html#gst-plugins-good-plugins-autovideosrc.synopsis"> @@ -478,6 +480,17 @@ <ANCHOR id="gst-plugins-good-plugins-directsoundsink.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-directsoundsink.html#gst-plugins-good-plugins-directsoundsink.description"> <ANCHOR id="gst-plugins-good-plugins-directsoundsink.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-directsoundsink.html#gst-plugins-good-plugins-directsoundsink.details"> <ANCHOR id="GstDirectSoundSink" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-directsoundsink.html#GstDirectSoundSink"> +<ANCHOR id="gst-plugins-good-plugins-dtmfsrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html"> +<ANCHOR id="gst-plugins-good-plugins-dtmfsrc.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html#gst-plugins-good-plugins-dtmfsrc.synopsis"> +<ANCHOR id="GstDTMFSrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html#GstDTMFSrc"> +<ANCHOR id="gst-plugins-good-plugins-dtmfsrc.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html#gst-plugins-good-plugins-dtmfsrc.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-dtmfsrc.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html#gst-plugins-good-plugins-dtmfsrc.properties"> +<ANCHOR id="gst-plugins-good-plugins-dtmfsrc.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html#gst-plugins-good-plugins-dtmfsrc.description"> +<ANCHOR id="gst-plugins-good-plugins-dtmfsrc.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html#gst-plugins-good-plugins-dtmfsrc.details"> +<ANCHOR id="GstDTMFSrc-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html#GstDTMFSrc-struct"> +<ANCHOR id="gst-plugins-good-plugins-dtmfsrc.property-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html#gst-plugins-good-plugins-dtmfsrc.property-details"> +<ANCHOR id="GstDTMFSrc--interval" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html#GstDTMFSrc--interval"> +<ANCHOR id="gst-plugins-good-plugins-dtmfsrc.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dtmfsrc.html#gst-plugins-good-plugins-dtmfsrc.see-also"> <ANCHOR id="gst-plugins-good-plugins-dv1394src" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dv1394src.html"> <ANCHOR id="gst-plugins-good-plugins-dv1394src.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dv1394src.html#gst-plugins-good-plugins-dv1394src.synopsis"> <ANCHOR id="GstDV1394Src" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-dv1394src.html#GstDV1394Src"> @@ -657,23 +670,6 @@ <ANCHOR id="GstGamma-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gamma.html#GstGamma-struct"> <ANCHOR id="gst-plugins-good-plugins-gamma.property-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gamma.html#gst-plugins-good-plugins-gamma.property-details"> <ANCHOR id="GstGamma--gamma" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gamma.html#GstGamma--gamma"> -<ANCHOR id="gst-plugins-good-plugins-gdkpixbufoverlay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html"> -<ANCHOR id="gst-plugins-good-plugins-gdkpixbufoverlay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#gst-plugins-good-plugins-gdkpixbufoverlay.synopsis"> -<ANCHOR id="GstGdkPixbufOverlay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay"> -<ANCHOR id="gst-plugins-good-plugins-gdkpixbufoverlay.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#gst-plugins-good-plugins-gdkpixbufoverlay.object-hierarchy"> -<ANCHOR id="gst-plugins-good-plugins-gdkpixbufoverlay.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#gst-plugins-good-plugins-gdkpixbufoverlay.properties"> -<ANCHOR id="gst-plugins-good-plugins-gdkpixbufoverlay.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#gst-plugins-good-plugins-gdkpixbufoverlay.description"> -<ANCHOR id="gst-plugins-good-plugins-gdkpixbufoverlay.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#gst-plugins-good-plugins-gdkpixbufoverlay.details"> -<ANCHOR id="GstGdkPixbufOverlay-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay-struct"> -<ANCHOR id="gst-plugins-good-plugins-gdkpixbufoverlay.property-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#gst-plugins-good-plugins-gdkpixbufoverlay.property-details"> -<ANCHOR id="GstGdkPixbufOverlay--location" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--location"> -<ANCHOR id="GstGdkPixbufOverlay--offset-x" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--offset-x"> -<ANCHOR id="GstGdkPixbufOverlay--offset-y" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--offset-y"> -<ANCHOR id="GstGdkPixbufOverlay--overlay-height" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--overlay-height"> -<ANCHOR id="GstGdkPixbufOverlay--overlay-width" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--overlay-width"> -<ANCHOR id="GstGdkPixbufOverlay--relative-x" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--relative-x"> -<ANCHOR id="GstGdkPixbufOverlay--relative-y" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--relative-y"> -<ANCHOR id="GstGdkPixbufOverlay--alpha" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufoverlay.html#GstGdkPixbufOverlay--alpha"> <ANCHOR id="gst-plugins-good-plugins-gdkpixbufsink" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufsink.html"> <ANCHOR id="gst-plugins-good-plugins-gdkpixbufsink.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufsink.html#gst-plugins-good-plugins-gdkpixbufsink.synopsis"> <ANCHOR id="GstGdkPixbufSink" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-gdkpixbufsink.html#GstGdkPixbufSink"> @@ -832,6 +828,7 @@ <ANCHOR id="GstLevel--message" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-level.html#GstLevel--message"> <ANCHOR id="GstLevel--peak-falloff" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-level.html#GstLevel--peak-falloff"> <ANCHOR id="GstLevel--peak-ttl" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-level.html#GstLevel--peak-ttl"> +<ANCHOR id="GstLevel--post-messages" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-level.html#GstLevel--post-messages"> <ANCHOR id="gst-plugins-good-plugins-matroskamux" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-matroskamux.html"> <ANCHOR id="gst-plugins-good-plugins-matroskamux.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-matroskamux.html#gst-plugins-good-plugins-matroskamux.synopsis"> <ANCHOR id="GstMatroskaMux" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-matroskamux.html#GstMatroskaMux"> @@ -877,9 +874,11 @@ <ANCHOR id="GstMJ2Mux--trak-timescale" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--trak-timescale"> <ANCHOR id="gst-plugins-good-plugins-monoscope" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html"> <ANCHOR id="gst-plugins-good-plugins-monoscope.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.synopsis"> +<ANCHOR id="GstMonoscope" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#GstMonoscope"> +<ANCHOR id="gst-plugins-good-plugins-monoscope.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.object-hierarchy"> <ANCHOR id="gst-plugins-good-plugins-monoscope.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.description"> <ANCHOR id="gst-plugins-good-plugins-monoscope.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.details"> -<ANCHOR id="GstMonoscope" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#GstMonoscope"> +<ANCHOR id="GstMonoscope-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#GstMonoscope-struct"> <ANCHOR id="gst-plugins-good-plugins-monoscope.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.see-also"> <ANCHOR id="gst-plugins-good-plugins-mpegaudioparse" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mpegaudioparse.html"> <ANCHOR id="gst-plugins-good-plugins-mpegaudioparse.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mpegaudioparse.html#gst-plugins-good-plugins-mpegaudioparse.synopsis"> @@ -1011,6 +1010,10 @@ <ANCHOR id="GstMultiUDPSink--used-socket" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--used-socket"> <ANCHOR id="GstMultiUDPSink--force-ipv4" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--force-ipv4"> <ANCHOR id="GstMultiUDPSink--multicast-iface" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--multicast-iface"> +<ANCHOR id="GstMultiUDPSink--bind-address" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--bind-address"> +<ANCHOR id="GstMultiUDPSink--bind-port" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--bind-port"> +<ANCHOR id="GstMultiUDPSink--socket-v6" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--socket-v6"> +<ANCHOR id="GstMultiUDPSink--used-socket-v6" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink--used-socket-v6"> <ANCHOR id="gst-plugins-good-plugins-multiudpsink.signal-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-multiudpsink.html#gst-plugins-good-plugins-multiudpsink.signal-details"> <ANCHOR id="GstMultiUDPSink-add" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-add"> <ANCHOR id="GstMultiUDPSink-clear" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-clear"> @@ -1154,6 +1157,7 @@ <ANCHOR id="GstPulseSink--client" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesink.html#GstPulseSink--client"> <ANCHOR id="GstPulseSink--stream-properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesink.html#GstPulseSink--stream-properties"> <ANCHOR id="GstPulseSink--client-name" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesink.html#GstPulseSink--client-name"> +<ANCHOR id="GstPulseSink--current-device" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesink.html#GstPulseSink--current-device"> <ANCHOR id="gst-plugins-good-plugins-pulsesrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesrc.html"> <ANCHOR id="gst-plugins-good-plugins-pulsesrc.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesrc.html#gst-plugins-good-plugins-pulsesrc.synopsis"> <ANCHOR id="GstPulseSrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc"> @@ -1173,6 +1177,7 @@ <ANCHOR id="GstPulseSrc--source-output-index" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--source-output-index"> <ANCHOR id="GstPulseSrc--volume" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--volume"> <ANCHOR id="GstPulseSrc--client-name" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--client-name"> +<ANCHOR id="GstPulseSrc--current-device" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-pulsesrc.html#GstPulseSrc--current-device"> <ANCHOR id="gst-plugins-good-plugins-quarktv" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-quarktv.html"> <ANCHOR id="gst-plugins-good-plugins-quarktv.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-quarktv.html#gst-plugins-good-plugins-quarktv.synopsis"> <ANCHOR id="GstQuarkTV" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-quarktv.html#GstQuarkTV"> @@ -1328,6 +1333,64 @@ <ANCHOR id="GstRTPDec-on-ssrc-collision" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-ssrc-collision"> <ANCHOR id="GstRTPDec-on-ssrc-validated" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-ssrc-validated"> <ANCHOR id="GstRTPDec-on-timeout" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-timeout"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3depay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3depay.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3depay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3depay.html#gst-plugins-good-plugins-rtpac3depay.synopsis"> +<ANCHOR id="GstRtpAC3Depay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3depay.html#GstRtpAC3Depay"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3depay.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3depay.html#gst-plugins-good-plugins-rtpac3depay.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3depay.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3depay.html#gst-plugins-good-plugins-rtpac3depay.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3depay.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3depay.html#gst-plugins-good-plugins-rtpac3depay.details"> +<ANCHOR id="GstRtpAC3Depay-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3depay.html#GstRtpAC3Depay-struct"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3depay.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3depay.html#gst-plugins-good-plugins-rtpac3depay.see-also"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3pay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3pay.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3pay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3pay.html#gst-plugins-good-plugins-rtpac3pay.synopsis"> +<ANCHOR id="GstRtpAC3Pay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3pay.html#GstRtpAC3Pay"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3pay.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3pay.html#gst-plugins-good-plugins-rtpac3pay.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3pay.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3pay.html#gst-plugins-good-plugins-rtpac3pay.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3pay.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3pay.html#gst-plugins-good-plugins-rtpac3pay.details"> +<ANCHOR id="GstRtpAC3Pay-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3pay.html#GstRtpAC3Pay-struct"> +<ANCHOR id="gst-plugins-good-plugins-rtpac3pay.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpac3pay.html#gst-plugins-good-plugins-rtpac3pay.see-also"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrdepay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrdepay.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrdepay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrdepay.html#gst-plugins-good-plugins-rtpamrdepay.synopsis"> +<ANCHOR id="GstRtpAMRDepay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrdepay.html#GstRtpAMRDepay"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrdepay.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrdepay.html#gst-plugins-good-plugins-rtpamrdepay.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrdepay.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrdepay.html#gst-plugins-good-plugins-rtpamrdepay.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrdepay.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrdepay.html#gst-plugins-good-plugins-rtpamrdepay.details"> +<ANCHOR id="GstRtpAMRDepay-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrdepay.html#GstRtpAMRDepay-struct"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrdepay.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrdepay.html#gst-plugins-good-plugins-rtpamrdepay.see-also"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrpay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrpay.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrpay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrpay.html#gst-plugins-good-plugins-rtpamrpay.synopsis"> +<ANCHOR id="GstRtpAMRPay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrpay.html#GstRtpAMRPay"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrpay.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrpay.html#gst-plugins-good-plugins-rtpamrpay.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrpay.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrpay.html#gst-plugins-good-plugins-rtpamrpay.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrpay.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrpay.html#gst-plugins-good-plugins-rtpamrpay.details"> +<ANCHOR id="GstRtpAMRPay-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrpay.html#GstRtpAMRPay-struct"> +<ANCHOR id="gst-plugins-good-plugins-rtpamrpay.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpamrpay.html#gst-plugins-good-plugins-rtpamrpay.see-also"> +<ANCHOR id="gst-plugins-good-plugins-rtpbvdepay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbvdepay.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpbvdepay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbvdepay.html#gst-plugins-good-plugins-rtpbvdepay.synopsis"> +<ANCHOR id="gst-plugins-good-plugins-rtpbvdepay.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbvdepay.html#gst-plugins-good-plugins-rtpbvdepay.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpbvdepay.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbvdepay.html#gst-plugins-good-plugins-rtpbvdepay.details"> +<ANCHOR id="gst-plugins-good-plugins-rtpbvdepay.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbvdepay.html#gst-plugins-good-plugins-rtpbvdepay.see-also"> +<ANCHOR id="gst-plugins-good-plugins-rtpbvpay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbvpay.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpbvpay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbvpay.html#gst-plugins-good-plugins-rtpbvpay.synopsis"> +<ANCHOR id="gst-plugins-good-plugins-rtpbvpay.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbvpay.html#gst-plugins-good-plugins-rtpbvpay.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpbvpay.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbvpay.html#gst-plugins-good-plugins-rtpbvpay.details"> +<ANCHOR id="gst-plugins-good-plugins-rtpbvpay.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbvpay.html#gst-plugins-good-plugins-rtpbvpay.see-also"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16depay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16depay.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16depay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16depay.html#gst-plugins-good-plugins-rtpL16depay.synopsis"> +<ANCHOR id="GstRtpL16Depay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16depay.html#GstRtpL16Depay"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16depay.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16depay.html#gst-plugins-good-plugins-rtpL16depay.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16depay.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16depay.html#gst-plugins-good-plugins-rtpL16depay.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16depay.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16depay.html#gst-plugins-good-plugins-rtpL16depay.details"> +<ANCHOR id="GstRtpL16Depay-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16depay.html#GstRtpL16Depay-struct"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16depay.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16depay.html#gst-plugins-good-plugins-rtpL16depay.see-also"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16pay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16pay.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16pay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16pay.html#gst-plugins-good-plugins-rtpL16pay.synopsis"> +<ANCHOR id="GstRtpL16Pay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16pay.html#GstRtpL16Pay"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16pay.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16pay.html#gst-plugins-good-plugins-rtpL16pay.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16pay.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16pay.html#gst-plugins-good-plugins-rtpL16pay.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16pay.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16pay.html#gst-plugins-good-plugins-rtpL16pay.details"> +<ANCHOR id="GstRtpL16Pay-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16pay.html#GstRtpL16Pay-struct"> +<ANCHOR id="gst-plugins-good-plugins-rtpL16pay.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpL16pay.html#gst-plugins-good-plugins-rtpL16pay.see-also"> <ANCHOR id="gst-plugins-good-plugins-rtpj2kpay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpj2kpay.html"> <ANCHOR id="gst-plugins-good-plugins-rtpj2kpay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpj2kpay.html#gst-plugins-good-plugins-rtpj2kpay.synopsis"> <ANCHOR id="GstRtpJ2KPay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpj2kpay.html#GstRtpJ2KPay"> @@ -1350,12 +1413,23 @@ <ANCHOR id="GstRtpJPEGPay--quality" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjpegpay.html#GstRtpJPEGPay--quality"> <ANCHOR id="GstRtpJPEGPay--type" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjpegpay.html#GstRtpJPEGPay--type"> <ANCHOR id="GstRtpJPEGPay--buffer-list" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjpegpay.html#GstRtpJPEGPay--buffer-list"> +<ANCHOR id="gst-plugins-good-plugins-rtpsbcpay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsbcpay.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpsbcpay.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsbcpay.html#gst-plugins-good-plugins-rtpsbcpay.synopsis"> +<ANCHOR id="GstRtpSBCPay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsbcpay.html#GstRtpSBCPay"> +<ANCHOR id="gst-plugins-good-plugins-rtpsbcpay.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsbcpay.html#gst-plugins-good-plugins-rtpsbcpay.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-rtpsbcpay.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsbcpay.html#gst-plugins-good-plugins-rtpsbcpay.properties"> +<ANCHOR id="gst-plugins-good-plugins-rtpsbcpay.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsbcpay.html#gst-plugins-good-plugins-rtpsbcpay.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpsbcpay.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsbcpay.html#gst-plugins-good-plugins-rtpsbcpay.details"> +<ANCHOR id="GstRtpSBCPay-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsbcpay.html#GstRtpSBCPay-struct"> +<ANCHOR id="gst-plugins-good-plugins-rtpsbcpay.property-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsbcpay.html#gst-plugins-good-plugins-rtpsbcpay.property-details"> +<ANCHOR id="GstRtpSBCPay--min-frames" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsbcpay.html#GstRtpSBCPay--min-frames"> <ANCHOR id="gst-plugins-good-plugins-rtspsrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html"> <ANCHOR id="gst-plugins-good-plugins-rtspsrc.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#gst-plugins-good-plugins-rtspsrc.synopsis"> <ANCHOR id="GstRTSPSrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc"> <ANCHOR id="gst-plugins-good-plugins-rtspsrc.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#gst-plugins-good-plugins-rtspsrc.object-hierarchy"> <ANCHOR id="gst-plugins-good-plugins-rtspsrc.implemented-interfaces" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#gst-plugins-good-plugins-rtspsrc.implemented-interfaces"> <ANCHOR id="gst-plugins-good-plugins-rtspsrc.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#gst-plugins-good-plugins-rtspsrc.properties"> +<ANCHOR id="gst-plugins-good-plugins-rtspsrc.signals" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#gst-plugins-good-plugins-rtspsrc.signals"> <ANCHOR id="gst-plugins-good-plugins-rtspsrc.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#gst-plugins-good-plugins-rtspsrc.description"> <ANCHOR id="gst-plugins-good-plugins-rtspsrc.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#gst-plugins-good-plugins-rtspsrc.details"> <ANCHOR id="GstRTSPSrc-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-struct"> @@ -1381,6 +1455,17 @@ <ANCHOR id="GstRTSPSrc--do-rtsp-keep-alive" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--do-rtsp-keep-alive"> <ANCHOR id="GstRTSPSrc--drop-on-latency" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--drop-on-latency"> <ANCHOR id="GstRTSPSrc--probation" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--probation"> +<ANCHOR id="GstRTSPSrc--udp-reconnect" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--udp-reconnect"> +<ANCHOR id="GstRTSPSrc--proxy-id" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--proxy-id"> +<ANCHOR id="GstRTSPSrc--proxy-pw" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--proxy-pw"> +<ANCHOR id="GstRTSPSrc--multicast-iface" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--multicast-iface"> +<ANCHOR id="GstRTSPSrc--ntp-sync" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--ntp-sync"> +<ANCHOR id="GstRTSPSrc--use-pipeline-clock" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--use-pipeline-clock"> +<ANCHOR id="GstRTSPSrc--sdes" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--sdes"> +<ANCHOR id="gst-plugins-good-plugins-rtspsrc.signal-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#gst-plugins-good-plugins-rtspsrc.signal-details"> +<ANCHOR id="GstRTSPSrc-handle-request" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-handle-request"> +<ANCHOR id="GstRTSPSrc-on-sdp" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-on-sdp"> +<ANCHOR id="GstRTSPSrc-select-stream" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-select-stream"> <ANCHOR id="gst-plugins-good-plugins-rtpbin" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html"> <ANCHOR id="gst-plugins-good-plugins-rtpbin.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#gst-plugins-good-plugins-rtpbin.synopsis"> <ANCHOR id="GstRtpBin" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin"> @@ -1403,6 +1488,8 @@ <ANCHOR id="GstRtpBin--rtcp-sync" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin--rtcp-sync"> <ANCHOR id="GstRtpBin--rtcp-sync-interval" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin--rtcp-sync-interval"> <ANCHOR id="GstRtpBin--drop-on-latency" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin--drop-on-latency"> +<ANCHOR id="GstRtpBin--do-sync-event" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin--do-sync-event"> +<ANCHOR id="GstRtpBin--do-retransmission" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin--do-retransmission"> <ANCHOR id="gst-plugins-good-plugins-rtpbin.signal-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#gst-plugins-good-plugins-rtpbin.signal-details"> <ANCHOR id="GstRtpBin-clear-pt-map" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin-clear-pt-map"> <ANCHOR id="GstRtpBin-get-internal-session" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin-get-internal-session"> @@ -1419,6 +1506,33 @@ <ANCHOR id="GstRtpBin-request-pt-map" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-pt-map"> <ANCHOR id="GstRtpBin-reset-sync" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin-reset-sync"> <ANCHOR id="GstRtpBin-payload-type-change" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin-payload-type-change"> +<ANCHOR id="gst-plugins-good-plugins-rtpbin.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#gst-plugins-good-plugins-rtpbin.see-also"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfmux" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfmux.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfmux.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfmux.html#gst-plugins-good-plugins-rtpdtmfmux.synopsis"> +<ANCHOR id="GstRTPDTMFMux" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfmux.html#GstRTPDTMFMux"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfmux.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfmux.html#gst-plugins-good-plugins-rtpdtmfmux.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfmux.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfmux.html#gst-plugins-good-plugins-rtpdtmfmux.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfmux.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfmux.html#gst-plugins-good-plugins-rtpdtmfmux.details"> +<ANCHOR id="GstRTPDTMFMux-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfmux.html#GstRTPDTMFMux-struct"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfmux.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfmux.html#gst-plugins-good-plugins-rtpdtmfmux.see-also"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfsrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfsrc.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#gst-plugins-good-plugins-rtpdtmfsrc.synopsis"> +<ANCHOR id="GstRTPDTMFSrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfsrc.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#gst-plugins-good-plugins-rtpdtmfsrc.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfsrc.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#gst-plugins-good-plugins-rtpdtmfsrc.properties"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfsrc.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#gst-plugins-good-plugins-rtpdtmfsrc.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfsrc.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#gst-plugins-good-plugins-rtpdtmfsrc.details"> +<ANCHOR id="GstRTPDTMFSrc-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc-struct"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfsrc.property-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#gst-plugins-good-plugins-rtpdtmfsrc.property-details"> +<ANCHOR id="GstRTPDTMFSrc--clock-rate" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--clock-rate"> +<ANCHOR id="GstRTPDTMFSrc--packet-redundancy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--packet-redundancy"> +<ANCHOR id="GstRTPDTMFSrc--pt" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--pt"> +<ANCHOR id="GstRTPDTMFSrc--seqnum" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--seqnum"> +<ANCHOR id="GstRTPDTMFSrc--seqnum-offset" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--seqnum-offset"> +<ANCHOR id="GstRTPDTMFSrc--ssrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--ssrc"> +<ANCHOR id="GstRTPDTMFSrc--timestamp" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--timestamp"> +<ANCHOR id="GstRTPDTMFSrc--timestamp-offset" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#GstRTPDTMFSrc--timestamp-offset"> +<ANCHOR id="gst-plugins-good-plugins-rtpdtmfsrc.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpdtmfsrc.html#gst-plugins-good-plugins-rtpdtmfsrc.see-also"> <ANCHOR id="gst-plugins-good-plugins-rtpjitterbuffer" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html"> <ANCHOR id="gst-plugins-good-plugins-rtpjitterbuffer.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#gst-plugins-good-plugins-rtpjitterbuffer.synopsis"> <ANCHOR id="GstRtpJitterBuffer" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer"> @@ -1435,12 +1549,31 @@ <ANCHOR id="GstRtpJitterBuffer--ts-offset" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--ts-offset"> <ANCHOR id="GstRtpJitterBuffer--mode" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--mode"> <ANCHOR id="GstRtpJitterBuffer--percent" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--percent"> +<ANCHOR id="GstRtpJitterBuffer--do-retransmission" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--do-retransmission"> +<ANCHOR id="GstRtpJitterBuffer--rtx-delay" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay"> +<ANCHOR id="GstRtpJitterBuffer--rtx-delay-reorder" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-delay-reorder"> +<ANCHOR id="GstRtpJitterBuffer--rtx-retry-period" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-period"> +<ANCHOR id="GstRtpJitterBuffer--rtx-retry-timeout" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer--rtx-retry-timeout"> <ANCHOR id="gst-plugins-good-plugins-rtpjitterbuffer.signal-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#gst-plugins-good-plugins-rtpjitterbuffer.signal-details"> <ANCHOR id="GstRtpJitterBuffer-clear-pt-map" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-clear-pt-map"> <ANCHOR id="GstRtpJitterBuffer-handle-sync" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-handle-sync"> <ANCHOR id="GstRtpJitterBuffer-on-npt-stop" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-on-npt-stop"> <ANCHOR id="GstRtpJitterBuffer-request-pt-map" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-request-pt-map"> <ANCHOR id="GstRtpJitterBuffer-set-active" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-set-active"> +<ANCHOR id="gst-plugins-good-plugins-rtpmux" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html"> +<ANCHOR id="gst-plugins-good-plugins-rtpmux.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#gst-plugins-good-plugins-rtpmux.synopsis"> +<ANCHOR id="GstRTPMux" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#GstRTPMux"> +<ANCHOR id="gst-plugins-good-plugins-rtpmux.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#gst-plugins-good-plugins-rtpmux.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-rtpmux.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#gst-plugins-good-plugins-rtpmux.properties"> +<ANCHOR id="gst-plugins-good-plugins-rtpmux.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#gst-plugins-good-plugins-rtpmux.description"> +<ANCHOR id="gst-plugins-good-plugins-rtpmux.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#gst-plugins-good-plugins-rtpmux.details"> +<ANCHOR id="GstRTPMux-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#GstRTPMux-struct"> +<ANCHOR id="gst-plugins-good-plugins-rtpmux.property-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#gst-plugins-good-plugins-rtpmux.property-details"> +<ANCHOR id="GstRTPMux--seqnum" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#GstRTPMux--seqnum"> +<ANCHOR id="GstRTPMux--seqnum-offset" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#GstRTPMux--seqnum-offset"> +<ANCHOR id="GstRTPMux--ssrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#GstRTPMux--ssrc"> +<ANCHOR id="GstRTPMux--timestamp-offset" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#GstRTPMux--timestamp-offset"> +<ANCHOR id="gst-plugins-good-plugins-rtpmux.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpmux.html#gst-plugins-good-plugins-rtpmux.see-also"> <ANCHOR id="gst-plugins-good-plugins-rtpptdemux" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpptdemux.html"> <ANCHOR id="gst-plugins-good-plugins-rtpptdemux.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpptdemux.html#gst-plugins-good-plugins-rtpptdemux.synopsis"> <ANCHOR id="GstRtpPtDemux" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux"> @@ -1500,6 +1633,27 @@ <ANCHOR id="GstRtpSsrcDemux-clear-ssrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-clear-ssrc"> <ANCHOR id="GstRtpSsrcDemux-new-ssrc-pad" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-new-ssrc-pad"> <ANCHOR id="GstRtpSsrcDemux-removed-ssrc-pad" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-removed-ssrc-pad"> +<ANCHOR id="gst-plugins-good-plugins-sbcparse" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-sbcparse.html"> +<ANCHOR id="gst-plugins-good-plugins-sbcparse.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-sbcparse.html#gst-plugins-good-plugins-sbcparse.synopsis"> +<ANCHOR id="GstSbcParse" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-sbcparse.html#GstSbcParse"> +<ANCHOR id="gst-plugins-good-plugins-sbcparse.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-sbcparse.html#gst-plugins-good-plugins-sbcparse.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-sbcparse.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-sbcparse.html#gst-plugins-good-plugins-sbcparse.description"> +<ANCHOR id="gst-plugins-good-plugins-sbcparse.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-sbcparse.html#gst-plugins-good-plugins-sbcparse.details"> +<ANCHOR id="GstSbcParse-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-sbcparse.html#GstSbcParse-struct"> +<ANCHOR id="gst-plugins-good-plugins-sbcparse.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-sbcparse.html#gst-plugins-good-plugins-sbcparse.see-also"> +<ANCHOR id="gst-plugins-good-plugins-scaletempo" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html"> +<ANCHOR id="gst-plugins-good-plugins-scaletempo.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#gst-plugins-good-plugins-scaletempo.synopsis"> +<ANCHOR id="GstScaletempo" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#GstScaletempo"> +<ANCHOR id="gst-plugins-good-plugins-scaletempo.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#gst-plugins-good-plugins-scaletempo.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-scaletempo.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#gst-plugins-good-plugins-scaletempo.properties"> +<ANCHOR id="gst-plugins-good-plugins-scaletempo.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#gst-plugins-good-plugins-scaletempo.description"> +<ANCHOR id="gst-plugins-good-plugins-scaletempo.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#gst-plugins-good-plugins-scaletempo.details"> +<ANCHOR id="GstScaletempo-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#GstScaletempo-struct"> +<ANCHOR id="gst-plugins-good-plugins-scaletempo.property-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#gst-plugins-good-plugins-scaletempo.property-details"> +<ANCHOR id="GstScaletempo--overlap" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#GstScaletempo--overlap"> +<ANCHOR id="GstScaletempo--rate" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#GstScaletempo--rate"> +<ANCHOR id="GstScaletempo--search" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#GstScaletempo--search"> +<ANCHOR id="GstScaletempo--stride" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-scaletempo.html#GstScaletempo--stride"> <ANCHOR id="gst-plugins-good-plugins-shagadelictv" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-shagadelictv.html"> <ANCHOR id="gst-plugins-good-plugins-shagadelictv.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-shagadelictv.html#gst-plugins-good-plugins-shagadelictv.synopsis"> <ANCHOR id="GstShagadelicTV" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-shagadelictv.html#GstShagadelicTV"> @@ -1679,6 +1833,8 @@ <ANCHOR id="GstUDPSrc--close-socket" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--close-socket"> <ANCHOR id="GstUDPSrc--socket" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--socket"> <ANCHOR id="GstUDPSrc--used-socket" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--used-socket"> +<ANCHOR id="GstUDPSrc--bind-address" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--bind-address"> +<ANCHOR id="GstUDPSrc--address" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-udpsrc.html#GstUDPSrc--address"> <ANCHOR id="gst-plugins-good-plugins-udpsrc.see-also" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-udpsrc.html#gst-plugins-good-plugins-udpsrc.see-also"> <ANCHOR id="gst-plugins-good-plugins-udpsink" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-udpsink.html"> <ANCHOR id="gst-plugins-good-plugins-udpsink.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-udpsink.html#gst-plugins-good-plugins-udpsink.synopsis"> @@ -1717,6 +1873,9 @@ <ANCHOR id="GstV4l2Src--saturation" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--saturation"> <ANCHOR id="GstV4l2Src--norm" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--norm"> <ANCHOR id="GstV4l2Src--io-mode" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--io-mode"> +<ANCHOR id="GstV4l2Src--extra-controls" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--extra-controls"> +<ANCHOR id="GstV4l2Src--force-aspect-ratio" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--force-aspect-ratio"> +<ANCHOR id="GstV4l2Src--pixel-aspect-ratio" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2src.html#GstV4l2Src--pixel-aspect-ratio"> <ANCHOR id="gst-plugins-good-plugins-v4l2src.signal-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2src.html#gst-plugins-good-plugins-v4l2src.signal-details"> <ANCHOR id="GstV4l2Src-prepare-format" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2src.html#GstV4l2Src-prepare-format"> <ANCHOR id="gst-plugins-good-plugins-v4l2sink" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2sink.html"> @@ -1749,6 +1908,9 @@ <ANCHOR id="GstV4l2Sink--min-queued-bufs" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--min-queued-bufs"> <ANCHOR id="GstV4l2Sink--io-mode" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--io-mode"> <ANCHOR id="GstV4l2Sink--norm" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--norm"> +<ANCHOR id="GstV4l2Sink--extra-controls" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--extra-controls"> +<ANCHOR id="GstV4l2Sink--force-aspect-ratio" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--force-aspect-ratio"> +<ANCHOR id="GstV4l2Sink--pixel-aspect-ratio" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2sink.html#GstV4l2Sink--pixel-aspect-ratio"> <ANCHOR id="gst-plugins-good-plugins-v4l2radio" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2radio.html"> <ANCHOR id="gst-plugins-good-plugins-v4l2radio.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2radio.html#gst-plugins-good-plugins-v4l2radio.synopsis"> <ANCHOR id="GstV4l2Radio" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-v4l2radio.html#GstV4l2Radio"> @@ -1926,6 +2088,7 @@ <ANCHOR id="GstVP8Enc--twopass-vbr-minsection" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--twopass-vbr-minsection"> <ANCHOR id="GstVP8Enc--undershoot" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--undershoot"> <ANCHOR id="GstVP8Enc--vertical-scaling-mode" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--vertical-scaling-mode"> +<ANCHOR id="GstVP8Enc--timebase" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-vp8enc.html#GstVP8Enc--timebase"> <ANCHOR id="gst-plugins-good-plugins-warptv" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-warptv.html"> <ANCHOR id="gst-plugins-good-plugins-warptv.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-warptv.html#gst-plugins-good-plugins-warptv.synopsis"> <ANCHOR id="GstWarpTV" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-warptv.html#GstWarpTV"> @@ -1937,6 +2100,7 @@ <ANCHOR id="gst-plugins-good-plugins-wavenc.synopsis" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-wavenc.html#gst-plugins-good-plugins-wavenc.synopsis"> <ANCHOR id="GstWavEnc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-wavenc.html#GstWavEnc"> <ANCHOR id="gst-plugins-good-plugins-wavenc.object-hierarchy" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-wavenc.html#gst-plugins-good-plugins-wavenc.object-hierarchy"> +<ANCHOR id="gst-plugins-good-plugins-wavenc.implemented-interfaces" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-wavenc.html#gst-plugins-good-plugins-wavenc.implemented-interfaces"> <ANCHOR id="gst-plugins-good-plugins-wavenc.description" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-wavenc.html#gst-plugins-good-plugins-wavenc.description"> <ANCHOR id="gst-plugins-good-plugins-wavenc.details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-wavenc.html#gst-plugins-good-plugins-wavenc.details"> <ANCHOR id="GstWavEnc-struct" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-wavenc.html#GstWavEnc-struct"> @@ -2054,6 +2218,8 @@ <ANCHOR id="plugin-deinterlace" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-plugin-deinterlace.html#plugin-deinterlace"> <ANCHOR id="gst-plugins-good-plugins-plugin-directsound" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-plugin-directsound.html"> <ANCHOR id="plugin-directsound" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-plugin-directsound.html#plugin-directsound"> +<ANCHOR id="gst-plugins-good-plugins-plugin-dtmf" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-plugin-dtmf.html"> +<ANCHOR id="plugin-dtmf" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-plugin-dtmf.html#plugin-dtmf"> <ANCHOR id="gst-plugins-good-plugins-plugin-dv" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-plugin-dv.html"> <ANCHOR id="plugin-dv" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-plugin-dv.html#plugin-dv"> <ANCHOR id="gst-plugins-good-plugins-plugin-equalizer" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-plugin-equalizer.html"> diff --git a/docs/plugins/inspect/plugin-1394.xml b/docs/plugins/inspect/plugin-1394.xml index 6d64a510483b3c71dcaa4d8a657f2e6163e49c23..18fc864d2aed8ce2b29bf267063a60cb88524904 100644 --- a/docs/plugins/inspect/plugin-1394.xml +++ b/docs/plugins/inspect/plugin-1394.xml @@ -3,7 +3,7 @@ <description>Source for video data via IEEE1394 interface</description> <filename>../../ext/raw1394/.libs/libgst1394.so</filename> <basename>libgst1394.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-aasink.xml b/docs/plugins/inspect/plugin-aasink.xml index 3bcb813008ea3aaacea1b8f088d65ef4d9eb26a6..865bead83aa2af58b419290963c474124af59348 100644 --- a/docs/plugins/inspect/plugin-aasink.xml +++ b/docs/plugins/inspect/plugin-aasink.xml @@ -3,7 +3,7 @@ <description>ASCII Art video sink</description> <filename>../../ext/aalib/.libs/libgstaasink.so</filename> <basename>libgstaasink.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-alaw.xml b/docs/plugins/inspect/plugin-alaw.xml index 30996fee4c288f21d9b19e6714f30d42e78c7b51..122dd301a437d4bb478e005471d8f5448ec4fda8 100644 --- a/docs/plugins/inspect/plugin-alaw.xml +++ b/docs/plugins/inspect/plugin-alaw.xml @@ -3,7 +3,7 @@ <description>ALaw audio conversion routines</description> <filename>../../gst/law/.libs/libgstalaw.so</filename> <basename>libgstalaw.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-alpha.xml b/docs/plugins/inspect/plugin-alpha.xml index 1f3247af0343b331fff243421e0da19c14f81253..2df32913c5b3f39833e91394579530cd8e470b49 100644 --- a/docs/plugins/inspect/plugin-alpha.xml +++ b/docs/plugins/inspect/plugin-alpha.xml @@ -3,7 +3,7 @@ <description>adds an alpha channel to video - constant or via chroma-keying</description> <filename>../../gst/alpha/.libs/libgstalpha.so</filename> <basename>libgstalpha.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-alphacolor.xml b/docs/plugins/inspect/plugin-alphacolor.xml index c8251cec71d98c50931f9e42b1a36f31e06cc29c..660f76545f1f72f078577ff53cf71532b5c8756e 100644 --- a/docs/plugins/inspect/plugin-alphacolor.xml +++ b/docs/plugins/inspect/plugin-alphacolor.xml @@ -3,7 +3,7 @@ <description>RGBA from/to AYUV colorspace conversion preserving the alpha channel</description> <filename>../../gst/alpha/.libs/libgstalphacolor.so</filename> <basename>libgstalphacolor.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-apetag.xml b/docs/plugins/inspect/plugin-apetag.xml index 97413e052f69cb7c7d5731cbf35bbfdf64658c3b..361bb48204c41e1c1977a39a71b3da075b1dcd65 100644 --- a/docs/plugins/inspect/plugin-apetag.xml +++ b/docs/plugins/inspect/plugin-apetag.xml @@ -3,7 +3,7 @@ <description>APEv1/2 tag reader</description> <filename>../../gst/apetag/.libs/libgstapetag.so</filename> <basename>libgstapetag.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-audiofx.xml b/docs/plugins/inspect/plugin-audiofx.xml index 44d21cbfb4c1936d5757289fe730e2b2ea5aa1dc..818d45ec5bc909e73b11ea8137cde2560adf5207 100644 --- a/docs/plugins/inspect/plugin-audiofx.xml +++ b/docs/plugins/inspect/plugin-audiofx.xml @@ -3,7 +3,7 @@ <description>Audio effects plugin</description> <filename>../../gst/audiofx/.libs/libgstaudiofx.so</filename> <basename>libgstaudiofx.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -209,13 +209,13 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>audio/x-raw, format=(string){ F32LE, S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)1, layout=(string)interleaved; audio/x-raw, format=(string){ F32LE, S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003</details> + <details>audio/x-raw, format=(string){ F32LE, S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2 ], layout=(string)interleaved</details> </caps> <caps> <name>src</name> <direction>source</direction> <presence>always</presence> - <details>audio/x-raw, format=(string){ S32LE, S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)2, layout=(string)interleaved, channel-mask=(bitmask)0x0000000000000003</details> + <details>audio/x-raw, format=(string){ F32LE, S16LE }, rate=(int)[ 1, 2147483647 ], channels=(int)2, layout=(string)interleaved</details> </caps> </pads> </element> @@ -261,5 +261,26 @@ </caps> </pads> </element> + <element> + <name>scaletempo</name> + <longname>Scaletempo</longname> + <class>Filter/Effect/Rate</class> + <description>Sync audio tempo with playback rate</description> + <author>Rov Juvano <rovjuvano@users.sourceforge.net></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>audio/x-raw, format=(string)F32LE, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]; audio/x-raw, format=(string)S16LE, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>audio/x-raw, format=(string)F32LE, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]; audio/x-raw, format=(string)S16LE, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</details> + </caps> + </pads> + </element> </elements> </plugin> \ No newline at end of file diff --git a/docs/plugins/inspect/plugin-audioparsers.xml b/docs/plugins/inspect/plugin-audioparsers.xml index e9d60035673718ccabb0915ee2497570f6ad4d25..79027f9a7ec1c755359f9761f2b182c46bf85219 100644 --- a/docs/plugins/inspect/plugin-audioparsers.xml +++ b/docs/plugins/inspect/plugin-audioparsers.xml @@ -3,7 +3,7 @@ <description>Parsers for various audio formats</description> <filename>../../gst/audioparsers/.libs/libgstaudioparsers.so</filename> <basename>libgstaudioparsers.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -41,7 +41,7 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>audio/x-ac3; audio/x-eac3; audio/ac3</details> + <details>audio/x-ac3; audio/x-eac3; audio/ac3; audio/x-private1-ac3</details> </caps> <caps> <name>src</name> @@ -83,7 +83,7 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>audio/x-dts</details> + <details>audio/x-dts; audio/x-private1-dts</details> </caps> <caps> <name>src</name> @@ -135,6 +135,27 @@ </caps> </pads> </element> + <element> + <name>sbcparse</name> + <longname>SBC audio parser</longname> + <class>Codec/Parser/Audio</class> + <description>Parses an SBC bluetooth audio stream</description> + <author>Tim-Philipp Müller <tim.muller@collabora.co.uk></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>audio/x-sbc</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>audio/x-sbc, parsed=(boolean)true, channels=(int)[ 1, 2 ], rate=(int){ 16000, 32000, 44100, 48000 }</details> + </caps> + </pads> + </element> <element> <name>wavpackparse</name> <longname>Wavpack audio stream parser</longname> diff --git a/docs/plugins/inspect/plugin-auparse.xml b/docs/plugins/inspect/plugin-auparse.xml index fcc10b51eead0f460ec5e5a26651d5d9d4af5f93..9deb95b05aa6a5755add352a55a6dfcac4fed16a 100644 --- a/docs/plugins/inspect/plugin-auparse.xml +++ b/docs/plugins/inspect/plugin-auparse.xml @@ -3,7 +3,7 @@ <description>parses au streams</description> <filename>../../gst/auparse/.libs/libgstauparse.so</filename> <basename>libgstauparse.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-autodetect.xml b/docs/plugins/inspect/plugin-autodetect.xml index 8de594488e8f866d6e89258d754859e42d14126b..6d38314d3355f26ec3bc2ff082d3de7291172b1b 100644 --- a/docs/plugins/inspect/plugin-autodetect.xml +++ b/docs/plugins/inspect/plugin-autodetect.xml @@ -3,7 +3,7 @@ <description>Plugin contains auto-detection plugins for video/audio in- and outputs</description> <filename>../../gst/autodetect/.libs/libgstautodetect.so</filename> <basename>libgstautodetect.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-avi.xml b/docs/plugins/inspect/plugin-avi.xml index 7a1dea11da784a99c737725bb1901ed8a00a1c12..5631a7a9551f73ceca1a13ddebb159ab90698fa8 100644 --- a/docs/plugins/inspect/plugin-avi.xml +++ b/docs/plugins/inspect/plugin-avi.xml @@ -3,7 +3,7 @@ <description>AVI stream handling</description> <filename>../../gst/avi/.libs/libgstavi.so</filename> <basename>libgstavi.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -38,7 +38,7 @@ <name>video_%u</name> <direction>source</direction> <presence>sometimes</presence> - <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-asus, asusversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-asus, asusversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-cirrus-logic-accupak, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-camstudio, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-compressed-yuv, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string){ RGB8P, BGR, BGRx }, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-divx, divxversion=(int)3, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-divx, divxversion=(int)4, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-truemotion, trueversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-dv, systemstream=(boolean)false, dvversion=(int)25, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-dv, systemstream=(boolean)false, dvversion=(int)50, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-divx, divxversion=(int)5, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-flash-video, flvversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp6-flash, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)itu, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)lucent, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h264, variant=(string)itu, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-huffyuv, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-intel-h263, variant=(string)intel, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)I420, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-indeo, indeoversion=(int)3, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-indeo, indeoversion=(int)4, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-indeo, indeoversion=(int)5, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)lead, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h264, variant=(string)lead, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)microsoft, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; image/jpeg, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-msmpeg, msmpegversion=(int)42, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-msmpeg, msmpegversion=(int)43, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/mpeg, systemstream=(boolean)false, mpegversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/mpeg, systemstream=(boolean)false, mpegversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-msmpeg, msmpegversion=(int)41, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-mszh, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; image/png, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-rle, layout=(string)microsoft, depth=(int)[ 1, 64 ], framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-indeo, indeoversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/sp5x, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-truemotion, trueversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-camtasia, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-ultimotion, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)UYVY, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-ati-vcr, vcrversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-ati-vcr, vcrversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)vdolive, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)vivo, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vmnc, version=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp3, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h264, variant=(string)videosoft, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-wmv, wmvversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-wmv, wmvversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-wmv, wmvversion=(int)3, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-xan, wcversion=(int)4, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)YUY2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)YVU9, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-zlib, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-cinepak, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h264, variant=(string)itu, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-msvideocodec, msvideoversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)xirlink, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-dirac, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-ffv, ffvversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-kmvc, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp5, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp6, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp6-flash, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp7, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp8, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-mimic, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-apple-video, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-theora, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-fraps, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-aasc, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)YV12, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-loco, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-zmbv, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)v210, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)r210, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-dv, systemstream=(boolean)true; video/x-avi-unknown</details> + <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-asus, asusversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-asus, asusversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-cirrus-logic-accupak, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-camstudio, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-compressed-yuv, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string){ RGB8P, BGR, BGRx }, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-divx, divxversion=(int)3, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-divx, divxversion=(int)4, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-truemotion, trueversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-dv, systemstream=(boolean)false, dvversion=(int)25, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-dv, systemstream=(boolean)false, dvversion=(int)50, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-divx, divxversion=(int)5, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-flash-video, flvversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp6-flash, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)itu, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)lucent, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h264, variant=(string)itu, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-huffyuv, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-intel-h263, variant=(string)intel, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)I420, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-indeo, indeoversion=(int)3, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-indeo, indeoversion=(int)4, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-indeo, indeoversion=(int)5, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)lead, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h264, variant=(string)lead, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)microsoft, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; image/jpeg, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-msmpeg, msmpegversion=(int)42, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-msmpeg, msmpegversion=(int)43, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/mpeg, systemstream=(boolean)false, mpegversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/mpeg, systemstream=(boolean)false, mpegversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-msmpeg, msmpegversion=(int)41, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-mszh, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; image/png, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-rle, layout=(string)microsoft, depth=(int)[ 1, 64 ], framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-indeo, indeoversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/sp5x, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-truemotion, trueversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-camtasia, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-ultimotion, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)UYVY, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-ati-vcr, vcrversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-ati-vcr, vcrversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)vdolive, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)vivo, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vmnc, version=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp3, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h264, variant=(string)videosoft, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-wmv, wmvversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-wmv, wmvversion=(int)2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-wmv, wmvversion=(int)3, format=(string)WMV3, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-xan, wcversion=(int)4, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)YUY2, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)YVU9, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-zlib, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-cinepak, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h264, variant=(string)itu, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-msvideocodec, msvideoversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-h263, variant=(string)xirlink, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-dirac, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-ffv, ffvversion=(int)1, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-kmvc, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp5, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp6, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp6-flash, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp7, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-vp8, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-mimic, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-apple-video, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-theora, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-fraps, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-aasc, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)YV12, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-loco, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-zmbv, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)v210, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-raw, format=(string)r210, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]; video/x-dv, systemstream=(boolean)true; video/x-avi-unknown</details> </caps> </pads> </element> @@ -59,7 +59,7 @@ <name>video_%u</name> <direction>sink</direction> <presence>request</presence> - <details>video/x-raw, format=(string){ YUY2, I420 }, 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 ]</details> + <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 ]; 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 ]</details> </caps> <caps> <name>src</name> diff --git a/docs/plugins/inspect/plugin-cacasink.xml b/docs/plugins/inspect/plugin-cacasink.xml index eb1a0e1092bea01888b5889c2c7faa3ae6bb8be5..921291379c4aad5026e9607b5720b7353c4f6295 100644 --- a/docs/plugins/inspect/plugin-cacasink.xml +++ b/docs/plugins/inspect/plugin-cacasink.xml @@ -3,7 +3,7 @@ <description>Colored ASCII Art video sink</description> <filename>../../ext/libcaca/.libs/libgstcacasink.so</filename> <basename>libgstcacasink.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -20,7 +20,7 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>video/x-raw, format=(string){ RGB, RGBx, RGB16, RGB15 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> + <details>video/x-raw, format=(string){ RGB, BGR, RGBx, xRGB, BGRx, xBGR, RGB16, RGB15 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> </caps> </pads> </element> diff --git a/docs/plugins/inspect/plugin-cairo.xml b/docs/plugins/inspect/plugin-cairo.xml index a74c3e7d7cb8d2021a1e7f8a6689f707de71a84e..8324f44c2b03d9cab9ef33675ac8a0d6c4b6e422 100644 --- a/docs/plugins/inspect/plugin-cairo.xml +++ b/docs/plugins/inspect/plugin-cairo.xml @@ -3,7 +3,7 @@ <description>Cairo-based elements</description> <filename>../../ext/cairo/.libs/libgstcairo.so</filename> <basename>libgstcairo.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-cutter.xml b/docs/plugins/inspect/plugin-cutter.xml index 1c8a9afdab0f89c6df0cf44ce704ba2ea14f0eb9..650443f39393983aba82a8f568dca1821285c3e8 100644 --- a/docs/plugins/inspect/plugin-cutter.xml +++ b/docs/plugins/inspect/plugin-cutter.xml @@ -3,7 +3,7 @@ <description>Audio Cutter to split audio into non-silent bits</description> <filename>../../gst/cutter/.libs/libgstcutter.so</filename> <basename>libgstcutter.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-debug.xml b/docs/plugins/inspect/plugin-debug.xml index a4a72f8bb317aab91d59168f7d607c553fd82e5e..52787a1fe3e6bc579cac96bcaeb2454c181bb7ce 100644 --- a/docs/plugins/inspect/plugin-debug.xml +++ b/docs/plugins/inspect/plugin-debug.xml @@ -3,7 +3,7 @@ <description>elements for testing and debugging</description> <filename>../../gst/debugutils/.libs/libgstdebug.so</filename> <basename>libgstdebug.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-deinterlace.xml b/docs/plugins/inspect/plugin-deinterlace.xml index ebe6e358651655ae5c3e8b8f3c1d37167c502d49..f5e8f38961222940864ef20cc38e92470b26afa6 100644 --- a/docs/plugins/inspect/plugin-deinterlace.xml +++ b/docs/plugins/inspect/plugin-deinterlace.xml @@ -3,7 +3,7 @@ <description>Deinterlacer</description> <filename>../../gst/deinterlace/.libs/libgstdeinterlace.so</filename> <basename>libgstdeinterlace.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-dtmf.xml b/docs/plugins/inspect/plugin-dtmf.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ad65b0f9873fd793337b6fd449972b6f2273681 --- /dev/null +++ b/docs/plugins/inspect/plugin-dtmf.xml @@ -0,0 +1,64 @@ +<plugin> + <name>dtmf</name> + <description>DTMF plugins</description> + <filename>../../gst/dtmf/.libs/libgstdtmf.so</filename> + <basename>libgstdtmf.so</basename> + <version>1.1.90</version> + <license>LGPL</license> + <source>gst-plugins-good</source> + <package>GStreamer Good Plug-ins source release</package> + <origin>Unknown package origin</origin> + <elements> + <element> + <name>dtmfsrc</name> + <longname>DTMF tone generator</longname> + <class>Source/Audio</class> + <description>Generates DTMF tones</description> + <author>Youness Alaoui <youness.alaoui@collabora.co.uk></author> + <pads> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>audio/x-raw, format=(string)S16LE, rate=(int)[ 1, 2147483647 ], channels=(int)1</details> + </caps> + </pads> + </element> + <element> + <name>rtpdtmfdepay</name> + <longname>RTP DTMF packet depayloader</longname> + <class>Codec/Depayloader/Network</class> + <description>Generates DTMF Sound from telephone-event RTP packets</description> + <author>Youness Alaoui <youness.alaoui@collabora.co.uk></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)[ 0, 2147483647 ], encoding-name=(string)TELEPHONE-EVENT</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>audio/x-raw, format=(string)S16LE, rate=(int)[ 1, 2147483647 ], channels=(int)1</details> + </caps> + </pads> + </element> + <element> + <name>rtpdtmfsrc</name> + <longname>RTP DTMF packet generator</longname> + <class>Source/Network</class> + <description>Generates RTP DTMF packets</description> + <author>Zeeshan Ali <zeeshan.ali@nokia.com></author> + <pads> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)[ 0, 2147483647 ], encoding-name=(string)TELEPHONE-EVENT</details> + </caps> + </pads> + </element> + </elements> +</plugin> \ No newline at end of file diff --git a/docs/plugins/inspect/plugin-dv.xml b/docs/plugins/inspect/plugin-dv.xml index 217f5216bc37f56f766fa0e88e2a2ee40d18d86f..cdd9d7bc449e767c10067d9cd4467c61b264a333 100644 --- a/docs/plugins/inspect/plugin-dv.xml +++ b/docs/plugins/inspect/plugin-dv.xml @@ -3,7 +3,7 @@ <description>DV demuxer and decoder based on libdv (libdv.sf.net)</description> <filename>../../ext/dv/.libs/libgstdv.so</filename> <basename>libgstdv.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-effectv.xml b/docs/plugins/inspect/plugin-effectv.xml index 57610e36e8da1f3cdf8b80c7ea3ee04e65201a3f..f5763a7834e8d8979f67e6c65fdc2c69e36bbd1b 100644 --- a/docs/plugins/inspect/plugin-effectv.xml +++ b/docs/plugins/inspect/plugin-effectv.xml @@ -3,7 +3,7 @@ <description>effect plugins from the effectv project</description> <filename>../../gst/effectv/.libs/libgsteffectv.so</filename> <basename>libgsteffectv.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-equalizer.xml b/docs/plugins/inspect/plugin-equalizer.xml index c9ede422e67a67d54410faeec0d72135382e050d..1e7ade12b473e776824bc3ed17f25fe2ad3ddc54 100644 --- a/docs/plugins/inspect/plugin-equalizer.xml +++ b/docs/plugins/inspect/plugin-equalizer.xml @@ -3,7 +3,7 @@ <description>GStreamer audio equalizers</description> <filename>../../gst/equalizer/.libs/libgstequalizer.so</filename> <basename>libgstequalizer.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-flac.xml b/docs/plugins/inspect/plugin-flac.xml index 65583b9107dd3a614c5e35325412886806b919b4..c3afda2f4e1b720afc778cb686576e7e55d8d928 100644 --- a/docs/plugins/inspect/plugin-flac.xml +++ b/docs/plugins/inspect/plugin-flac.xml @@ -3,7 +3,7 @@ <description>The FLAC Lossless compressor Codec</description> <filename>../../ext/flac/.libs/libgstflac.so</filename> <basename>libgstflac.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-flv.xml b/docs/plugins/inspect/plugin-flv.xml index 35685a00f2bf73ec1febb1a566badd5ab309c512..4870014a2abea4e54e10cbca9311b82505ed1d46 100644 --- a/docs/plugins/inspect/plugin-flv.xml +++ b/docs/plugins/inspect/plugin-flv.xml @@ -3,7 +3,7 @@ <description>FLV muxing and demuxing plugin</description> <filename>../../gst/flv/.libs/libgstflv.so</filename> <basename>libgstflv.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-flxdec.xml b/docs/plugins/inspect/plugin-flxdec.xml index 16578f7597964e5c4e6dbe7fb025eb3d2f18cddb..6ed063f465aeb01209e82cc8b56f327d27fb1b4d 100644 --- a/docs/plugins/inspect/plugin-flxdec.xml +++ b/docs/plugins/inspect/plugin-flxdec.xml @@ -3,7 +3,7 @@ <description>FLC/FLI/FLX video decoder</description> <filename>../../gst/flx/.libs/libgstflxdec.so</filename> <basename>libgstflxdec.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-gdkpixbuf.xml b/docs/plugins/inspect/plugin-gdkpixbuf.xml index 40e1b8bdb91fd1098231746ccd22decb9621ea00..65e0939523b764704a37dfda417d7a478889abb5 100644 --- a/docs/plugins/inspect/plugin-gdkpixbuf.xml +++ b/docs/plugins/inspect/plugin-gdkpixbuf.xml @@ -3,7 +3,7 @@ <description>GdkPixbuf-based image decoder, overlay and sink</description> <filename>../../ext/gdk_pixbuf/.libs/libgstgdkpixbuf.so</filename> <basename>libgstgdkpixbuf.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-goom.xml b/docs/plugins/inspect/plugin-goom.xml index b04dd6f6bffa5ae35236770b022729b2c15e4bef..d8c9c922d40706590d9ef05a6e8a4abf718d9e29 100644 --- a/docs/plugins/inspect/plugin-goom.xml +++ b/docs/plugins/inspect/plugin-goom.xml @@ -3,7 +3,7 @@ <description>GOOM visualization filter</description> <filename>../../gst/goom/.libs/libgstgoom.so</filename> <basename>libgstgoom.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-goom2k1.xml b/docs/plugins/inspect/plugin-goom2k1.xml index 9edc80109dbbce313fd26b687111b47500d0b853..a7b103d3d87fa922eedd92598c4dbd6cd87fc36b 100644 --- a/docs/plugins/inspect/plugin-goom2k1.xml +++ b/docs/plugins/inspect/plugin-goom2k1.xml @@ -3,7 +3,7 @@ <description>GOOM 2k1 visualization filter</description> <filename>../../gst/goom2k1/.libs/libgstgoom2k1.so</filename> <basename>libgstgoom2k1.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-icydemux.xml b/docs/plugins/inspect/plugin-icydemux.xml index a6358495829142c3045c68e31d864e5351b9ea5d..9d6b636d0423fbd6b9b411e1d7a0e5ec8db36595 100644 --- a/docs/plugins/inspect/plugin-icydemux.xml +++ b/docs/plugins/inspect/plugin-icydemux.xml @@ -3,7 +3,7 @@ <description>Demux ICY tags from a stream</description> <filename>../../gst/icydemux/.libs/libgsticydemux.so</filename> <basename>libgsticydemux.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-id3demux.xml b/docs/plugins/inspect/plugin-id3demux.xml index 9a6aa4a2d2fe90451eb420305a4a13d9cff2ae4e..04b72bba23dbd8307957af7b65f77ad166f685c1 100644 --- a/docs/plugins/inspect/plugin-id3demux.xml +++ b/docs/plugins/inspect/plugin-id3demux.xml @@ -3,7 +3,7 @@ <description>Demux ID3v1 and ID3v2 tags from a file</description> <filename>../../gst/id3demux/.libs/libgstid3demux.so</filename> <basename>libgstid3demux.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-imagefreeze.xml b/docs/plugins/inspect/plugin-imagefreeze.xml index c45342abe44c80ea26f5081900cab9e34c79c10f..56695f93b52e45d918d17cee5e8f7be1b839f346 100644 --- a/docs/plugins/inspect/plugin-imagefreeze.xml +++ b/docs/plugins/inspect/plugin-imagefreeze.xml @@ -3,7 +3,7 @@ <description>Still frame stream generator</description> <filename>../../gst/imagefreeze/.libs/libgstimagefreeze.so</filename> <basename>libgstimagefreeze.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-interleave.xml b/docs/plugins/inspect/plugin-interleave.xml index fa7f60e73b179ad01a5dd8b6ce4e35965e1dadbf..c69bf5918406f00f60dbd76129118c51e43f1441 100644 --- a/docs/plugins/inspect/plugin-interleave.xml +++ b/docs/plugins/inspect/plugin-interleave.xml @@ -3,7 +3,7 @@ <description>Audio interleaver/deinterleaver</description> <filename>../../gst/interleave/.libs/libgstinterleave.so</filename> <basename>libgstinterleave.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-isomp4.xml b/docs/plugins/inspect/plugin-isomp4.xml index c3fa7d73520663dd3c9b182cdace52fae25f69d3..14fe3892b13d5a427c4461ed55499a379b9ee260 100644 --- a/docs/plugins/inspect/plugin-isomp4.xml +++ b/docs/plugins/inspect/plugin-isomp4.xml @@ -3,7 +3,7 @@ <description>ISO base media file format support (mp4, 3gpp, qt, mj2)</description> <filename>../../gst/isomp4/.libs/libgstisomp4.so</filename> <basename>libgstisomp4.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-jack.xml b/docs/plugins/inspect/plugin-jack.xml index 323f333f25070efc6564d8bca692b9aed7797e39..7a4159a405da5c7c7213ce2e7d96c12422deac32 100644 --- a/docs/plugins/inspect/plugin-jack.xml +++ b/docs/plugins/inspect/plugin-jack.xml @@ -3,7 +3,7 @@ <description>JACK audio elements</description> <filename>../../ext/jack/.libs/libgstjack.so</filename> <basename>libgstjack.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-jpeg.xml b/docs/plugins/inspect/plugin-jpeg.xml index ee7f468b37f1b1536ea1dbb0f5426ccdea05c327..6dabe5363543a5ea4f512dfb55bca0046852c1fe 100644 --- a/docs/plugins/inspect/plugin-jpeg.xml +++ b/docs/plugins/inspect/plugin-jpeg.xml @@ -3,7 +3,7 @@ <description>JPeg plugin library</description> <filename>../../ext/jpeg/.libs/libgstjpeg.so</filename> <basename>libgstjpeg.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-level.xml b/docs/plugins/inspect/plugin-level.xml index ec10ec594e9d0b414537ee34a8ccb423d467925e..67e96b6483519b7b6b0d1c38948bf3fded2965af 100644 --- a/docs/plugins/inspect/plugin-level.xml +++ b/docs/plugins/inspect/plugin-level.xml @@ -3,7 +3,7 @@ <description>Audio level plugin</description> <filename>../../gst/level/.libs/libgstlevel.so</filename> <basename>libgstlevel.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-matroska.xml b/docs/plugins/inspect/plugin-matroska.xml index 3548430a140963c2a37dc5e919f864e7b3e39bc5..e02f9f2d1f8e909584ff042fb2bfa11208939446 100644 --- a/docs/plugins/inspect/plugin-matroska.xml +++ b/docs/plugins/inspect/plugin-matroska.xml @@ -3,7 +3,7 @@ <description>Matroska and WebM stream handling</description> <filename>../../gst/matroska/.libs/libgstmatroska.so</filename> <basename>libgstmatroska.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -65,7 +65,7 @@ <name>video_%u</name> <direction>sink</direction> <presence>request</presence> - <details>video/mpeg, mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, stream-format=(string)avc, alignment=(string)au, 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 ]; video/x-huffyuv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-dv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h263, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-msmpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-theora; video/x-dirac, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-pn-realvideo, rmversion=(int)[ 1, 4 ], width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp8, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ YUY2, I420, YV12, UYVY, AYUV }, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-wmv, wmvversion=(int)[ 1, 3 ], width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> + <details>video/mpeg, mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-h264, stream-format=(string)avc, alignment=(string)au, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-divx, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-huffyuv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-dv, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-h263, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-msmpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; image/jpeg, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-theora; video/x-dirac, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-pn-realvideo, rmversion=(int)[ 1, 4 ], width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-vp8, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-raw, format=(string){ YUY2, I420, YV12, UYVY, AYUV }, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]; video/x-wmv, wmvversion=(int)[ 1, 3 ], width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ]</details> </caps> <caps> <name>src</name> @@ -119,7 +119,7 @@ <name>video_%u</name> <direction>sink</direction> <presence>request</presence> - <details>video/x-vp8, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> + <details>video/x-vp8, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp9, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> </caps> <caps> <name>src</name> diff --git a/docs/plugins/inspect/plugin-monoscope.xml b/docs/plugins/inspect/plugin-monoscope.xml index ac10183b89d077b417a3636030266764121acff4..5a116356b7bbcc234666d2ba297686bc8f7ca707 100644 --- a/docs/plugins/inspect/plugin-monoscope.xml +++ b/docs/plugins/inspect/plugin-monoscope.xml @@ -3,10 +3,10 @@ <description>Monoscope visualization</description> <filename>../../gst/monoscope/.libs/libgstmonoscope.so</filename> <basename>libgstmonoscope.so</basename> - <version>0.11.94.1</version> + <version>1.1.3</version> <license>LGPL</license> <source>gst-plugins-good</source> - <package>GStreamer Good Plug-ins git</package> + <package>GStreamer Good Plug-ins source release</package> <origin>Unknown package origin</origin> <elements> <element> diff --git a/docs/plugins/inspect/plugin-mulaw.xml b/docs/plugins/inspect/plugin-mulaw.xml index 233045fe6c3bd70470c03118b79c8732ed251fd5..fa26bbf96cde7feea4ae7a1aedf85caf79520777 100644 --- a/docs/plugins/inspect/plugin-mulaw.xml +++ b/docs/plugins/inspect/plugin-mulaw.xml @@ -3,7 +3,7 @@ <description>MuLaw audio conversion routines</description> <filename>../../gst/law/.libs/libgstmulaw.so</filename> <basename>libgstmulaw.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-multifile.xml b/docs/plugins/inspect/plugin-multifile.xml index 563e85c7a6c01cb250b8e43c389608ae36180d99..f2e6652a413d9e9bb2d0214339d4d28f9d8cb5f8 100644 --- a/docs/plugins/inspect/plugin-multifile.xml +++ b/docs/plugins/inspect/plugin-multifile.xml @@ -3,7 +3,7 @@ <description>Reads/Writes buffers from/to sequentially named files</description> <filename>../../gst/multifile/.libs/libgstmultifile.so</filename> <basename>libgstmultifile.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-multipart.xml b/docs/plugins/inspect/plugin-multipart.xml index b2ddcf4b432a27a0526179d68b5f6f36dc787182..0f690bf2167c3f908a2a171219e5b12322a8298e 100644 --- a/docs/plugins/inspect/plugin-multipart.xml +++ b/docs/plugins/inspect/plugin-multipart.xml @@ -3,7 +3,7 @@ <description>multipart stream manipulation</description> <filename>../../gst/multipart/.libs/libgstmultipart.so</filename> <basename>libgstmultipart.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-navigationtest.xml b/docs/plugins/inspect/plugin-navigationtest.xml index fd4fa30e74f72353dad62653dc6381f21684a6e2..a0c87863a28959383c881dc6c6e97bb3035cd3a1 100644 --- a/docs/plugins/inspect/plugin-navigationtest.xml +++ b/docs/plugins/inspect/plugin-navigationtest.xml @@ -3,7 +3,7 @@ <description>Template for a video filter</description> <filename>../../gst/debugutils/.libs/libgstnavigationtest.so</filename> <basename>libgstnavigationtest.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-oss4.xml b/docs/plugins/inspect/plugin-oss4.xml index 8dadd2aeb09fc6ba1a8fd083a2a52c82bddff5e0..721ae970844de7781799aad81ede2aa91faa5d2b 100644 --- a/docs/plugins/inspect/plugin-oss4.xml +++ b/docs/plugins/inspect/plugin-oss4.xml @@ -3,7 +3,7 @@ <description>Open Sound System (OSS) version 4 support for GStreamer</description> <filename>../../sys/oss4/.libs/libgstoss4audio.so</filename> <basename>libgstoss4audio.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-ossaudio.xml b/docs/plugins/inspect/plugin-ossaudio.xml index 5ca8df0486cd6ae51d8eb2983fce0392fde6854e..396154254de08d23030d4b302a3b89ca97ece28f 100644 --- a/docs/plugins/inspect/plugin-ossaudio.xml +++ b/docs/plugins/inspect/plugin-ossaudio.xml @@ -3,7 +3,7 @@ <description>OSS (Open Sound System) support for GStreamer</description> <filename>../../sys/oss/.libs/libgstossaudio.so</filename> <basename>libgstossaudio.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-png.xml b/docs/plugins/inspect/plugin-png.xml index 187a404d3b5f621b093c4634c337a4172c840fe5..5682fe86e48b35a5b584c9b0fa75505832a564e9 100644 --- a/docs/plugins/inspect/plugin-png.xml +++ b/docs/plugins/inspect/plugin-png.xml @@ -3,7 +3,7 @@ <description>PNG plugin library</description> <filename>../../ext/libpng/.libs/libgstpng.so</filename> <basename>libgstpng.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-pulseaudio.xml b/docs/plugins/inspect/plugin-pulseaudio.xml index 6de95c33806d3e6cc961ff5676e33b9587938429..39d71e0e216c6865c031229972c954c5a4638552 100644 --- a/docs/plugins/inspect/plugin-pulseaudio.xml +++ b/docs/plugins/inspect/plugin-pulseaudio.xml @@ -3,7 +3,7 @@ <description>PulseAudio plugin library</description> <filename>../../ext/pulse/.libs/libgstpulse.so</filename> <basename>libgstpulse.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -20,7 +20,7 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]; audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]; audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]; audio/x-ac3, framed=(boolean)true; audio/x-eac3, framed=(boolean)true; audio/x-dts, framed=(boolean)true, block-size=(int){ 512, 1024, 2048 }; audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)[ 1, 2 ], parsed=(boolean)true</details> + <details>audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]; audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]; audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]; audio/x-ac3, framed=(boolean)true; audio/x-eac3, framed=(boolean)true; audio/x-dts, framed=(boolean)true, block-size=(int){ 512, 1024, 2048 }; audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)[ 1, 2 ], parsed=(boolean)true; audio/mpeg, mpegversion=(int){ 2, 4 }, framed=(boolean)true, stream-format=(string)adts</details> </caps> </pads> </element> @@ -35,7 +35,7 @@ <name>src</name> <direction>source</direction> <presence>always</presence> - <details>audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]; audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]; audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]</details> + <details>audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]; audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]; audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ]</details> </caps> </pads> </element> diff --git a/docs/plugins/inspect/plugin-replaygain.xml b/docs/plugins/inspect/plugin-replaygain.xml index c4cdff948117447d3bd38b5b55bd1b74405738e2..8520fe5be8e742778f6d39633bbf61e8b9a8ab28 100644 --- a/docs/plugins/inspect/plugin-replaygain.xml +++ b/docs/plugins/inspect/plugin-replaygain.xml @@ -3,7 +3,7 @@ <description>ReplayGain volume normalization</description> <filename>../../gst/replaygain/.libs/libgstreplaygain.so</filename> <basename>libgstreplaygain.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-rtp.xml b/docs/plugins/inspect/plugin-rtp.xml index e15c1baf7b9eea163c7cfce009600895b13443aa..449b7c6ceec7ac93f6db9ba47afe9a57243441d8 100644 --- a/docs/plugins/inspect/plugin-rtp.xml +++ b/docs/plugins/inspect/plugin-rtp.xml @@ -3,7 +3,7 @@ <description>Real-time protocol plugins</description> <filename>../../gst/rtp/.libs/libgstrtp.so</filename> <basename>libgstrtp.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -72,6 +72,48 @@ </caps> </pads> </element> + <element> + <name>rtpL24depay</name> + <longname>RTP audio depayloader</longname> + <class>Codec/Depayloader/Network/RTP</class> + <description>Extracts raw 24-bit audio from RTP packets</description> + <author>Zeeshan Ali <zak147@yahoo.com>,Wim Taymans <wim.taymans@gmail.com>,David Holroyd <dave@badgers-in-foil.co.uk></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>application/x-rtp, media=(string)audio, clock-rate=(int)[ 1, 2147483647 ], encoding-name=(string)L24</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>audio/x-raw, format=(string)S24BE, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</details> + </caps> + </pads> + </element> + <element> + <name>rtpL24pay</name> + <longname>RTP audio payloader</longname> + <class>Codec/Payloader/Network/RTP</class> + <description>Payload-encode Raw 24-bit audio into RTP packets (RFC 3190)</description> + <author>Wim Taymans <wim.taymans@gmail.com>,David Holroyd <dave@badgers-in-foil.co.uk></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>audio/x-raw, format=(string)S24BE, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)[ 1, 2147483647 ], encoding-name=(string)L24, channels=(int)[ 1, 2147483647 ]</details> + </caps> + </pads> + </element> <element> <name>rtpac3depay</name> <longname>RTP AC3 depayloader</longname> @@ -782,7 +824,7 @@ <name>src</name> <direction>source</direction> <presence>always</presence> - <details>application/x-rtp, media=(string)video, payload=(int)26, clock-rate=(int)90000, encoding-name=(string)JPEG</details> + <details>application/x-rtp, media=(string)video, payload=(int)26, clock-rate=(int)90000, encoding-name=(string)JPEG, width=(int)[ 1, 65536 ], height=(int)[ 1, 65536 ]</details> </caps> </pads> </element> @@ -1206,6 +1248,48 @@ </caps> </pads> </element> + <element> + <name>rtpsbcdepay</name> + <longname>RTP SBC audio depayloader</longname> + <class>Codec/Depayloader/Network/RTP</class> + <description>Extracts SBC audio from RTP packets</description> + <author>Arun Raghavan <arun.raghavan@collabora.co.uk></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int){ 16000, 32000, 44100, 48000 }, encoding-name=(string)SBC</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>audio/x-sbc, rate=(int){ 16000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ], mode=(string){ mono, dual, stereo, joint }, blocks=(int){ 4, 8, 12, 16 }, subbands=(int){ 4, 8 }, allocation-method=(string){ snr, loudness }, bitpool=(int)[ 2, 64 ]</details> + </caps> + </pads> + </element> + <element> + <name>rtpsbcpay</name> + <longname>RTP packet payloader</longname> + <class>Codec/Payloader/Network</class> + <description>Payload SBC audio as RTP packets</description> + <author>Thiago Sousa Santos <thiagoss@lcc.ufcg.edu.br></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>audio/x-sbc, rate=(int){ 16000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ], channel-mode=(string){ mono, dual, stereo, joint }, blocks=(int){ 4, 8, 12, 16 }, subbands=(int){ 4, 8 }, allocation-method=(string){ snr, loudness }, bitpool=(int)[ 2, 64 ]</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int){ 16000, 32000, 44100, 48000 }, encoding-name=(string)SBC</details> + </caps> + </pads> + </element> <element> <name>rtpsirendepay</name> <longname>RTP Siren packet depayloader</longname> @@ -1395,6 +1479,48 @@ </caps> </pads> </element> + <element> + <name>rtpvp8depay</name> + <longname>RTP VP8 depayloader</longname> + <class>Codec/Depayloader/Network/RTP</class> + <description>Extracts VP8 video from RTP packets)</description> + <author>Sjoerd Simons <sjoerd@luon.net></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>application/x-rtp, clock-rate=(int)90000, media=(string)video, encoding-name=(string)VP8-DRAFT-IETF-01</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>video/x-vp8</details> + </caps> + </pads> + </element> + <element> + <name>rtpvp8pay</name> + <longname>RTP VP8 payloader</longname> + <class>Codec/Payloader/Network/RTP</class> + <description>Puts VP8 video in RTP packets)</description> + <author>Sjoerd Simons <sjoerd@luon.net></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>video/x-vp8</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>application/x-rtp, payload=(int)[ 96, 127 ], clock-rate=(int)90000, encoding-name=(string)VP8-DRAFT-IETF-01</details> + </caps> + </pads> + </element> <element> <name>rtpvrawdepay</name> <longname>RTP Raw Video depayloader</longname> @@ -1427,7 +1553,7 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>video/x-raw, format=(string){ RGB, RGBA, BGR, BGRA, AYUYV, UYVY, I420, Y41B, UYVP, I420, Y42B, Y444 }, width=(int)[ 1, 32767 ], height=(int)[ 1, 32767 ]</details> + <details>video/x-raw, format=(string){ RGB, RGBA, BGR, BGRA, AYUV, UYVY, I420, Y41B, UYVP }, width=(int)[ 1, 32767 ], height=(int)[ 1, 32767 ]</details> </caps> <caps> <name>src</name> diff --git a/docs/plugins/inspect/plugin-rtpmanager.xml b/docs/plugins/inspect/plugin-rtpmanager.xml index a61e9eed3aab520fc11ff459556a9baf0b06e9c6..e1887ed6ee0a23dc6e10dbfbc38c5f7fb330aee0 100644 --- a/docs/plugins/inspect/plugin-rtpmanager.xml +++ b/docs/plugins/inspect/plugin-rtpmanager.xml @@ -3,7 +3,7 @@ <description>RTP session management plugin library</description> <filename>../../gst/rtpmanager/.libs/libgstrtpmanager.so</filename> <basename>libgstrtpmanager.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -54,6 +54,33 @@ </caps> </pads> </element> + <element> + <name>rtpdtmfmux</name> + <longname>RTP muxer</longname> + <class>Codec/Muxer</class> + <description>mixes RTP DTMF streams into other RTP streams</description> + <author>Zeeshan Ali <first.last@nokia.com></author> + <pads> + <caps> + <name>priority_sink_%u</name> + <direction>sink</direction> + <presence>request</presence> + <details>application/x-rtp</details> + </caps> + <caps> + <name>sink_%u</name> + <direction>sink</direction> + <presence>request</presence> + <details>application/x-rtp</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>application/x-rtp</details> + </caps> + </pads> + </element> <element> <name>rtpjitterbuffer</name> <longname>RTP packet jitter-buffer</longname> @@ -81,6 +108,27 @@ </caps> </pads> </element> + <element> + <name>rtpmux</name> + <longname>RTP muxer</longname> + <class>Codec/Muxer</class> + <description>multiplex N rtp streams into one</description> + <author>Zeeshan Ali <first.last@nokia.com></author> + <pads> + <caps> + <name>sink_%u</name> + <direction>sink</direction> + <presence>request</presence> + <details>application/x-rtp</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>application/x-rtp</details> + </caps> + </pads> + </element> <element> <name>rtpptdemux</name> <longname>RTP Demux</longname> @@ -102,6 +150,27 @@ </caps> </pads> </element> + <element> + <name>rtprtxqueue</name> + <longname>RTP Retransmission Queue</longname> + <class>Codec</class> + <description>Keep RTP packets in a queue for retransmission</description> + <author>Wim Taymans <wim.taymans@gmail.com></author> + <pads> + <caps> + <name>sink</name> + <direction>sink</direction> + <presence>always</presence> + <details>application/x-rtp</details> + </caps> + <caps> + <name>src</name> + <direction>source</direction> + <presence>always</presence> + <details>application/x-rtp</details> + </caps> + </pads> + </element> <element> <name>rtpsession</name> <longname>RTP Session</longname> diff --git a/docs/plugins/inspect/plugin-rtsp.xml b/docs/plugins/inspect/plugin-rtsp.xml index 721241d3a8af664fb3ff3e953589bc374fed1f79..93a9d4a103ac8863f356e37fbeb11958a9a09926 100644 --- a/docs/plugins/inspect/plugin-rtsp.xml +++ b/docs/plugins/inspect/plugin-rtsp.xml @@ -3,7 +3,7 @@ <description>transfer data via RTSP</description> <filename>../../gst/rtsp/.libs/libgstrtsp.so</filename> <basename>libgstrtsp.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-shapewipe.xml b/docs/plugins/inspect/plugin-shapewipe.xml index c11994a269232c660b2cd0063530d5988f90a336..b0f08894174b3157c3e248a0c4fb2243fcc46718 100644 --- a/docs/plugins/inspect/plugin-shapewipe.xml +++ b/docs/plugins/inspect/plugin-shapewipe.xml @@ -3,7 +3,7 @@ <description>Shape Wipe transition filter</description> <filename>../../gst/shapewipe/.libs/libgstshapewipe.so</filename> <basename>libgstshapewipe.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-shout2send.xml b/docs/plugins/inspect/plugin-shout2send.xml index 2a219f1aa9759e0f4d2a7cd9f15ecc5af4971abd..1575849062bf4d5594219ddcd67d6007e3ba6435 100644 --- a/docs/plugins/inspect/plugin-shout2send.xml +++ b/docs/plugins/inspect/plugin-shout2send.xml @@ -3,7 +3,7 @@ <description>Sends data to an icecast server using libshout2</description> <filename>../../ext/shout2/.libs/libgstshout2.so</filename> <basename>libgstshout2.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>libshout2</package> @@ -20,7 +20,7 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>application/ogg; audio/ogg; video/ogg; audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ]</details> + <details>application/ogg; audio/ogg; video/ogg; audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ]; video/webm; audio/webm</details> </caps> </pads> </element> diff --git a/docs/plugins/inspect/plugin-smpte.xml b/docs/plugins/inspect/plugin-smpte.xml index 368ee7e3b5e9be3e4f3682158f5857f7486b9155..e33367d25b004ff8f8e389d51b82af2e383b6534 100644 --- a/docs/plugins/inspect/plugin-smpte.xml +++ b/docs/plugins/inspect/plugin-smpte.xml @@ -3,7 +3,7 @@ <description>Apply the standard SMPTE transitions on video images</description> <filename>../../gst/smpte/.libs/libgstsmpte.so</filename> <basename>libgstsmpte.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-soup.xml b/docs/plugins/inspect/plugin-soup.xml index 56940d4ec77042fc7f460f539d9d5bd384390184..e0aba161d53931750816bfb5d73a8176a0447d4c 100644 --- a/docs/plugins/inspect/plugin-soup.xml +++ b/docs/plugins/inspect/plugin-soup.xml @@ -3,7 +3,7 @@ <description>libsoup HTTP client src/sink</description> <filename>../../ext/soup/.libs/libgstsouphttpsrc.so</filename> <basename>libgstsouphttpsrc.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-spectrum.xml b/docs/plugins/inspect/plugin-spectrum.xml index 5ea95eedab53a82974b19437fff42a09609ced6d..6ba2f8559a7ff0a7e638e26222c2c1efe67f9d87 100644 --- a/docs/plugins/inspect/plugin-spectrum.xml +++ b/docs/plugins/inspect/plugin-spectrum.xml @@ -3,7 +3,7 @@ <description>Run an FFT on the audio signal, output spectrum data</description> <filename>../../gst/spectrum/.libs/libgstspectrum.so</filename> <basename>libgstspectrum.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-speex.xml b/docs/plugins/inspect/plugin-speex.xml index 52d5ff4711ae23f016491ec790cf528b059b9b0b..2fd898a7063104b3bfe38b72ab957059e9142f50 100644 --- a/docs/plugins/inspect/plugin-speex.xml +++ b/docs/plugins/inspect/plugin-speex.xml @@ -3,7 +3,7 @@ <description>Speex plugin library</description> <filename>../../ext/speex/.libs/libgstspeex.so</filename> <basename>libgstspeex.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-taglib.xml b/docs/plugins/inspect/plugin-taglib.xml index 18c63865863079a5b07c12fd1b3b2f35d3293114..9a006484afa0668baf88d88d94609c301d562880 100644 --- a/docs/plugins/inspect/plugin-taglib.xml +++ b/docs/plugins/inspect/plugin-taglib.xml @@ -3,7 +3,7 @@ <description>Tag writing plug-in based on taglib</description> <filename>../../ext/taglib/.libs/libgsttaglib.so</filename> <basename>libgsttaglib.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-udp.xml b/docs/plugins/inspect/plugin-udp.xml index 2dfc111b3abde837db5f57a4daa04e496f8ff7c8..027d41e0c556e9c7f3d3398125f4548414d8a152 100644 --- a/docs/plugins/inspect/plugin-udp.xml +++ b/docs/plugins/inspect/plugin-udp.xml @@ -3,7 +3,7 @@ <description>transfer data via UDP</description> <filename>../../gst/udp/.libs/libgstudp.so</filename> <basename>libgstudp.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-video4linux2.xml b/docs/plugins/inspect/plugin-video4linux2.xml index 560c8f12c0d7062e93857750948c506add3b9931..da99191c19b8c1a14f7e1acb02bf1e9253a6e006 100644 --- a/docs/plugins/inspect/plugin-video4linux2.xml +++ b/docs/plugins/inspect/plugin-video4linux2.xml @@ -3,7 +3,7 @@ <description>elements for Video 4 Linux</description> <filename>../../sys/v4l2/.libs/libgstvideo4linux2.so</filename> <basename>libgstvideo4linux2.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -29,7 +29,7 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>video/x-raw, format=(string)RGB15, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGB16, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)BGR, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGB, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)BGRx, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGBx, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YVU9, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YUY2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)UYVY, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)Y42B, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)Y41B, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)NV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)NV21, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YUV9, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)I420, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-bayer, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-dv, systemstream=(boolean)true, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/mpegts; video/x-h264, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-sonix, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-pwc1, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-pwc2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YVYU, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]</details> + <details>video/x-raw, format=(string)RGB15, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGB16, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)BGR, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGB, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)BGRx, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGBx, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YVU9, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YUY2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)UYVY, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)Y42B, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)Y41B, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)NV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)NV21, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YUV9, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)I420, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-bayer, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-dv, systemstream=(boolean)true, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/mpegts; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-h263, variant=(string)itu, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-h264, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-sonix, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-pwc1, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-pwc2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YVYU, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]</details> </caps> </pads> </element> @@ -44,7 +44,7 @@ <name>src</name> <direction>source</direction> <presence>always</presence> - <details>video/x-raw, format=(string)RGB15, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGB16, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)BGR, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGB, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)BGRx, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGBx, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YVU9, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YUY2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)UYVY, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)Y42B, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)Y41B, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)NV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)NV21, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YUV9, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)I420, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-bayer, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-dv, systemstream=(boolean)true, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/mpegts; video/x-h264, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-sonix, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-pwc1, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-pwc2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YVYU, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]</details> + <details>video/x-raw, format=(string)RGB15, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGB16, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)BGR, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGB, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)BGRx, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)RGBx, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YVU9, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YUY2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)UYVY, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)Y42B, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)Y41B, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)NV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)NV21, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YUV9, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)I420, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-bayer, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-dv, systemstream=(boolean)true, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/mpegts; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-h263, variant=(string)itu, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-h264, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-sonix, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-pwc1, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-pwc2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]; video/x-raw, format=(string)YVYU, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 100/1 ]</details> </caps> </pads> </element> diff --git a/docs/plugins/inspect/plugin-videobox.xml b/docs/plugins/inspect/plugin-videobox.xml index b70f0bd83591093837519797e5c6a09dcbd1c5fc..07be7d646bd255a51b804ef917af871055f7f740 100644 --- a/docs/plugins/inspect/plugin-videobox.xml +++ b/docs/plugins/inspect/plugin-videobox.xml @@ -3,7 +3,7 @@ <description>resizes a video by adding borders or cropping</description> <filename>../../gst/videobox/.libs/libgstvideobox.so</filename> <basename>libgstvideobox.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-videocrop.xml b/docs/plugins/inspect/plugin-videocrop.xml index 79b684dcf2e861801866723eaafdc3e074a87460..a900246e411fb97146d1180fcbc358758eca5987 100644 --- a/docs/plugins/inspect/plugin-videocrop.xml +++ b/docs/plugins/inspect/plugin-videocrop.xml @@ -3,7 +3,7 @@ <description>Crops video into a user-defined region</description> <filename>../../gst/videocrop/.libs/libgstvideocrop.so</filename> <basename>libgstvideocrop.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -20,13 +20,13 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, RGB16, RGB15, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> + <details>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, YV12, RGB16, RGB15, GRAY8, NV12, NV21, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> </caps> <caps> <name>src</name> <direction>source</direction> <presence>always</presence> - <details>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, RGB16, RGB15, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> + <details>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, YV12, RGB16, RGB15, GRAY8, NV12, NV21, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> </caps> </pads> </element> @@ -41,13 +41,13 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, RGB16, RGB15, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> + <details>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, YV12, RGB16, RGB15, GRAY8, NV12, NV21, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> </caps> <caps> <name>src</name> <direction>source</direction> <presence>always</presence> - <details>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, RGB16, RGB15, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> + <details>video/x-raw, format=(string){ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, YVYU, UYVY, I420, YV12, RGB16, RGB15, GRAY8, NV12, NV21, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> </caps> </pads> </element> diff --git a/docs/plugins/inspect/plugin-videofilter.xml b/docs/plugins/inspect/plugin-videofilter.xml index 9bad66a0404e4688a10d5cc38900bf8813173cb6..57a4101e153994926573a963c8287afeeb22789c 100644 --- a/docs/plugins/inspect/plugin-videofilter.xml +++ b/docs/plugins/inspect/plugin-videofilter.xml @@ -3,7 +3,7 @@ <description>Video filters plugin</description> <filename>../../gst/videofilter/.libs/libgstvideofilter.so</filename> <basename>libgstvideofilter.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -62,13 +62,13 @@ <name>sink</name> <direction>sink</direction> <presence>always</presence> - <details>video/x-raw, format=(string){ AYUV, ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx, xBGR, BGRx, RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> + <details>video/x-raw, format=(string){ AYUV, ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx, xBGR, BGRx, RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU, NV12, NV21, GRAY8, GRAY16_BE, GRAY16_LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> </caps> <caps> <name>src</name> <direction>source</direction> <presence>always</presence> - <details>video/x-raw, format=(string){ AYUV, ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx, xBGR, BGRx, RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> + <details>video/x-raw, format=(string){ AYUV, ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx, xBGR, BGRx, RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU, NV12, NV21, GRAY8, GRAY16_BE, GRAY16_LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details> </caps> </pads> </element> diff --git a/docs/plugins/inspect/plugin-videomixer.xml b/docs/plugins/inspect/plugin-videomixer.xml index ce16b1a77606bf3fcd043cd5f2b2f2240a5975cb..d132928f0aefb5cb6c097a706782c6a1963794ef 100644 --- a/docs/plugins/inspect/plugin-videomixer.xml +++ b/docs/plugins/inspect/plugin-videomixer.xml @@ -3,7 +3,7 @@ <description>Video mixer</description> <filename>../../gst/videomixer/.libs/libgstvideomixer.so</filename> <basename>libgstvideomixer.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-vpx.xml b/docs/plugins/inspect/plugin-vpx.xml index 8fde5861e67b4cedf0087e6cc8ff1ce0cee8aeca..10b49eea394e2e4295ce3ab782badf37c1f84779 100644 --- a/docs/plugins/inspect/plugin-vpx.xml +++ b/docs/plugins/inspect/plugin-vpx.xml @@ -3,7 +3,7 @@ <description>VP8 plugin</description> <filename>../../ext/vpx/.libs/libgstvpx.so</filename> <basename>libgstvpx.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-wavenc.xml b/docs/plugins/inspect/plugin-wavenc.xml index 32c9eece626fa6aa85e34b6c8d42b1f905e9e10b..08d9bfc4bfd5d2e0c083ab7cee6ad70721df70f3 100644 --- a/docs/plugins/inspect/plugin-wavenc.xml +++ b/docs/plugins/inspect/plugin-wavenc.xml @@ -3,7 +3,7 @@ <description>Encode raw audio into WAV</description> <filename>../../gst/wavenc/.libs/libgstwavenc.so</filename> <basename>libgstwavenc.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-wavpack.xml b/docs/plugins/inspect/plugin-wavpack.xml index 121f7df067208e1876777d19b5b0ba3150292c95..f866910b94569b55cac39eceb741b42045173c63 100644 --- a/docs/plugins/inspect/plugin-wavpack.xml +++ b/docs/plugins/inspect/plugin-wavpack.xml @@ -3,7 +3,7 @@ <description>Wavpack lossless/lossy audio format handling</description> <filename>../../ext/wavpack/.libs/libgstwavpack.so</filename> <basename>libgstwavpack.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-wavparse.xml b/docs/plugins/inspect/plugin-wavparse.xml index 6f0fba393ff58ee2c057ce6c81958031585932fb..45d5519a0371d9a9707ef082971ee75027f0f4e1 100644 --- a/docs/plugins/inspect/plugin-wavparse.xml +++ b/docs/plugins/inspect/plugin-wavparse.xml @@ -3,7 +3,7 @@ <description>Parse a .wav file into raw audio</description> <filename>../../gst/wavparse/.libs/libgstwavparse.so</filename> <basename>libgstwavparse.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-ximagesrc.xml b/docs/plugins/inspect/plugin-ximagesrc.xml index 090b0239e3c79e573429db629ab4014536207e92..b43ea0e4702b9dc3ed7bc48ede8735ee50a5a102 100644 --- a/docs/plugins/inspect/plugin-ximagesrc.xml +++ b/docs/plugins/inspect/plugin-ximagesrc.xml @@ -3,7 +3,7 @@ <description>X11 video input plugin using standard Xlib calls</description> <filename>../../sys/ximage/.libs/libgstximagesrc.so</filename> <basename>libgstximagesrc.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-y4menc.xml b/docs/plugins/inspect/plugin-y4menc.xml index bfa255c09cee9e0ae5e3f6ee1f4eb7ce9edc3abc..1f494c83a74560e32b7cff3cb2dd00f89570338f 100644 --- a/docs/plugins/inspect/plugin-y4menc.xml +++ b/docs/plugins/inspect/plugin-y4menc.xml @@ -3,7 +3,7 @@ <description>Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</description> <filename>../../gst/y4m/.libs/libgsty4menc.so</filename> <basename>libgsty4menc.so</basename> - <version>1.0.10</version> + <version>1.1.90</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/ext/Makefile.in b/ext/Makefile.in index c6f561dac52bba3e729f217533a76823b76a57a8..18c5abd8766b21cc27d372cf84ef13a4f89c738c 100644 --- a/ext/Makefile.in +++ b/ext/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -20,23 +19,51 @@ # descending into all subdirectories a second time, but only after the first # (parallel) run has finished, so it should go right through the second time. VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -56,8 +83,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/common/parallel-subdirs.mak +DIST_COMMON = $(top_srcdir)/common/parallel-subdirs.mak \ + $(srcdir)/Makefile.in $(srcdir)/Makefile.am subdir = ext ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -65,7 +92,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -101,21 +127,28 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -123,9 +156,29 @@ am__can_run_installinfo = \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -318,6 +371,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -600,22 +654,25 @@ clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -630,57 +687,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -696,12 +708,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -713,15 +720,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -730,6 +733,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -890,22 +908,20 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am .PHONY: independent-subdirs $(SUBDIRS) diff --git a/ext/aalib/Makefile.in b/ext/aalib/Makefile.in index e5a3c2d8e0b565afede43b4fa6f35c27fa32c371..9940f2b278eaa85b5713ddc10b37f6a8a5ea7516 100644 --- a/ext/aalib/Makefile.in +++ b/ext/aalib/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/aalib -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,10 +162,23 @@ libgstaasink_la_OBJECTS = $(am_libgstaasink_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstaasink_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstaasink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstaasink_la_CFLAGS) $(CFLAGS) \ $(libgstaasink_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -152,20 +191,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstaasink_la_SOURCES) DIST_SOURCES = $(libgstaasink_la_SOURCES) am__can_run_installinfo = \ @@ -174,6 +209,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -341,6 +393,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -542,6 +595,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -568,12 +622,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstaasink.la: $(libgstaasink_la_OBJECTS) $(libgstaasink_la_DEPENDENCIES) $(EXTRA_libgstaasink_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstaasink_la_LINK) -rpath $(plugindir) $(libgstaasink_la_OBJECTS) $(libgstaasink_la_LIBADD) $(LIBS) @@ -586,22 +643,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaasink_la-gstaasink.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -619,26 +679,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -650,15 +699,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -667,6 +712,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -811,19 +871,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/aalib/gstaasink.c b/ext/aalib/gstaasink.c index 8187287e28a51fbaefe225c2a7c63fab0dca5c71..6e2365ed74f24669b6d3415aacdd65288be54e2e 100644 --- a/ext/aalib/gstaasink.c +++ b/ext/aalib/gstaasink.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-aasink diff --git a/ext/aalib/gstaasink.h b/ext/aalib/gstaasink.h index 33229d816e1c469ca1e5d81bbaf23e0f20a92828..6386c25a02181aa933484a469eb09378f3556573 100644 --- a/ext/aalib/gstaasink.h +++ b/ext/aalib/gstaasink.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/cairo/Makefile.am b/ext/cairo/Makefile.am index ef68bce973b9f28c55e6c9a9da84f7a15334a343..0e0b57ba24a4407ba3432559b9482c105f1b51ce 100644 --- a/ext/cairo/Makefile.am +++ b/ext/cairo/Makefile.am @@ -1,13 +1,5 @@ plugin_LTLIBRARIES = libgstcairo.la -# we probably don't really want to port these -# gsttimeoverlay.h -# gsttextoverlay.h -# gstcairorender.h -# gsttimeoverlay.c -# gsttextoverlay.c -# gstcairorender.c - noinst_HEADERS = \ gstcairooverlay.h libgstcairo_la_SOURCES = \ diff --git a/ext/cairo/Makefile.in b/ext/cairo/Makefile.in index 6e3566904357294269a9647f1b692ae3a9fb2423..7c3ac325f6cb30a3fd4d9cc4b0738f3ccd883072 100644 --- a/ext/cairo/Makefile.in +++ b/ext/cairo/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/cairo -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,10 +163,23 @@ libgstcairo_la_OBJECTS = $(am_libgstcairo_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstcairo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstcairo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstcairo_la_CFLAGS) $(CFLAGS) \ $(libgstcairo_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +192,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstcairo_la_SOURCES) DIST_SOURCES = $(libgstcairo_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +210,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +394,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -503,14 +556,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ plugin_LTLIBRARIES = libgstcairo.la - -# we probably don't really want to port these -# gsttimeoverlay.h -# gsttextoverlay.h -# gstcairorender.h -# gsttimeoverlay.c -# gsttextoverlay.c -# gstcairorender.c noinst_HEADERS = \ gstcairooverlay.h @@ -563,6 +608,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -589,12 +635,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstcairo.la: $(libgstcairo_la_OBJECTS) $(libgstcairo_la_DEPENDENCIES) $(EXTRA_libgstcairo_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstcairo_la_LINK) -rpath $(plugindir) $(libgstcairo_la_OBJECTS) $(libgstcairo_la_LIBADD) $(LIBS) @@ -608,22 +657,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcairo_la-gstcairooverlay.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -648,26 +700,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -679,15 +720,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -696,6 +733,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -840,19 +892,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/cairo/gstcairo.c b/ext/cairo/gstcairo.c index ef044b21312ca28dba9af69629e7f8d9d0639785..5b943874084721c2fa5fd2db08f645ef19ffd3d1 100644 --- a/ext/cairo/gstcairo.c +++ b/ext/cairo/gstcairo.c @@ -14,20 +14,14 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif -#if 0 -#include <gsttimeoverlay.h> -#include <gsttextoverlay.h> -#include <gstcairorender.h> -#endif - #include <gstcairooverlay.h> #include <string.h> @@ -38,16 +32,6 @@ GST_DEBUG_CATEGORY (cairo_debug); static gboolean plugin_init (GstPlugin * plugin) { -#if 0 - /* we probably don't want to port these */ - gst_element_register (plugin, "cairotextoverlay", GST_RANK_NONE, - GST_TYPE_CAIRO_TEXT_OVERLAY); - gst_element_register (plugin, "cairotimeoverlay", GST_RANK_NONE, - GST_TYPE_CAIRO_TIME_OVERLAY); - gst_element_register (plugin, "cairorender", GST_RANK_SECONDARY, - GST_TYPE_CAIRO_RENDER); -#endif - gst_element_register (plugin, "cairooverlay", GST_RANK_NONE, GST_TYPE_CAIRO_OVERLAY); diff --git a/ext/cairo/gstcairooverlay.c b/ext/cairo/gstcairooverlay.c index 34bfe82cfd97b7d18144da8d8e0bbd96eec8176d..af32dfe0195fbe7561f45530cbce65261e4025a9 100644 --- a/ext/cairo/gstcairooverlay.c +++ b/ext/cairo/gstcairooverlay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/ext/cairo/gstcairooverlay.h b/ext/cairo/gstcairooverlay.h index 36801b1e95948b2490e27eefcabb7ac867e39e06..9c67a7b4fb107a1cecb6744f1817e0002adde101 100644 --- a/ext/cairo/gstcairooverlay.h +++ b/ext/cairo/gstcairooverlay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_CAIRO_OVERLAY_H__ diff --git a/ext/dv/Makefile.in b/ext/dv/Makefile.in index b5ab32e212894e2f911378c47d51844166e8329f..4773b9de2fab9b1bdc8d3236e0f975eb5dcfee8a 100644 --- a/ext/dv/Makefile.in +++ b/ext/dv/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -18,23 +17,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -56,15 +83,14 @@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = smpte_test$(EXEEXT) subdir = ext/dv -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -138,6 +164,7 @@ libgstdv_la_OBJECTS = $(am_libgstdv_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstdv_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstdv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstdv_la_CFLAGS) $(CFLAGS) $(libgstdv_la_LDFLAGS) \ @@ -150,6 +177,18 @@ smpte_test_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) smpte_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(smpte_test_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -162,20 +201,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstdv_la_SOURCES) $(smpte_test_SOURCES) DIST_SOURCES = $(libgstdv_la_SOURCES) $(smpte_test_SOURCES) am__can_run_installinfo = \ @@ -184,6 +219,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -351,6 +403,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -559,6 +612,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -585,12 +639,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstdv.la: $(libgstdv_la_OBJECTS) $(libgstdv_la_DEPENDENCIES) $(EXTRA_libgstdv_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstdv_la_LINK) -rpath $(plugindir) $(libgstdv_la_OBJECTS) $(libgstdv_la_LIBADD) $(LIBS) @@ -602,6 +659,7 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + smpte_test$(EXEEXT): $(smpte_test_OBJECTS) $(smpte_test_DEPENDENCIES) $(EXTRA_smpte_test_DEPENDENCIES) @rm -f smpte_test$(EXEEXT) $(AM_V_CCLD)$(smpte_test_LINK) $(smpte_test_OBJECTS) $(smpte_test_LDADD) $(LIBS) @@ -620,22 +678,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smpte_test-smpte_test.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -702,26 +763,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -733,15 +783,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -750,6 +796,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -894,20 +955,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS clean-pluginLTLIBRARIES \ - ctags distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-pluginLTLIBRARIES install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-pluginLTLIBRARIES + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-pluginLTLIBRARIES install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/dv/gstdv.c b/ext/dv/gstdv.c index 359df9eb3de7c7668474a7da7823b86f3cb86334..9861bf6f809d16efa5d18e712f9b7e39e2a6b32e 100644 --- a/ext/dv/gstdv.c +++ b/ext/dv/gstdv.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/ext/dv/gstdvdec.c b/ext/dv/gstdvdec.c index 3cbd4dd6ce25dd703759b97ebb4bee95dda0fbdb..370363e7e9e0d43c99bd2f5188df394125d233a1 100644 --- a/ext/dv/gstdvdec.c +++ b/ext/dv/gstdvdec.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/ext/dv/gstdvdec.h b/ext/dv/gstdvdec.h index 0e52de0f0a00ed98b4b25e102c5e125355e3197a..b37a90d403b3d372e91c6eb0b7da89d907eb6ff0 100644 --- a/ext/dv/gstdvdec.h +++ b/ext/dv/gstdvdec.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/dv/gstdvdemux.c b/ext/dv/gstdvdemux.c index 48778a677639d96509a8eef25393b5e82241e502..94649881e526012247394a6fdde9e0356f88b471 100644 --- a/ext/dv/gstdvdemux.c +++ b/ext/dv/gstdvdemux.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -273,6 +273,8 @@ gst_dvdemux_reset (GstDVDemux * dvdemux) dvdemux->wide = FALSE; gst_segment_init (&dvdemux->byte_segment, GST_FORMAT_BYTES); gst_segment_init (&dvdemux->time_segment, GST_FORMAT_TIME); + dvdemux->have_group_id = FALSE; + dvdemux->group_id = G_MAXUINT; } static GstPad * @@ -1124,6 +1126,26 @@ gst_dvdemux_handle_src_event (GstPad * pad, GstObject * parent, return res; } +static gboolean +have_group_id (GstDVDemux * demux) +{ + GstEvent *event; + + event = gst_pad_get_sticky_event (demux->sinkpad, GST_EVENT_STREAM_START, 0); + if (event) { + if (gst_event_parse_group_id (event, &demux->group_id)) + demux->have_group_id = TRUE; + else + demux->have_group_id = FALSE; + gst_event_unref (event); + } else if (!demux->have_group_id) { + demux->have_group_id = TRUE; + demux->group_id = gst_util_group_id_next (); + } + + return demux->have_group_id; +} + /* does not take ownership of buffer */ static GstFlowReturn gst_dvdemux_demux_audio (GstDVDemux * dvdemux, GstBuffer * buffer, @@ -1154,13 +1176,16 @@ gst_dvdemux_demux_audio (GstDVDemux * dvdemux, GstBuffer * buffer, || (channels != dvdemux->channels))) { GstCaps *caps; GstAudioInfo info; + GstEvent *event; gchar *stream_id; stream_id = gst_pad_create_stream_id (dvdemux->audiosrcpad, GST_ELEMENT_CAST (dvdemux), "audio"); - gst_pad_push_event (dvdemux->audiosrcpad, - gst_event_new_stream_start (stream_id)); + event = gst_event_new_stream_start (stream_id); + if (have_group_id (dvdemux)) + gst_event_set_group_id (event, dvdemux->group_id); + gst_pad_push_event (dvdemux->audiosrcpad, event); g_free (stream_id); dvdemux->frequency = frequency; @@ -1230,13 +1255,16 @@ gst_dvdemux_demux_video (GstDVDemux * dvdemux, GstBuffer * buffer, if (G_UNLIKELY ((dvdemux->height != height) || dvdemux->wide != wide)) { GstCaps *caps; gint par_x, par_y; + GstEvent *event; gchar *stream_id; stream_id = gst_pad_create_stream_id (dvdemux->videosrcpad, GST_ELEMENT_CAST (dvdemux), "video"); - gst_pad_push_event (dvdemux->videosrcpad, - gst_event_new_stream_start (stream_id)); + event = gst_event_new_stream_start (stream_id); + if (have_group_id (dvdemux)) + gst_event_set_group_id (event, dvdemux->group_id); + gst_pad_push_event (dvdemux->videosrcpad, event); g_free (stream_id); dvdemux->height = height; diff --git a/ext/dv/gstdvdemux.h b/ext/dv/gstdvdemux.h index 9303e4da2b26d2edadc6f0d9a9230a8b1a41cb61..98c127d0c6fc1188150a60c0ab4c0c2d54319bf3 100644 --- a/ext/dv/gstdvdemux.h +++ b/ext/dv/gstdvdemux.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ @@ -52,6 +52,9 @@ struct _GstDVDemux { GstPad *videosrcpad; GstPad *audiosrcpad; + gboolean have_group_id; + guint group_id; + dv_decoder_t *decoder; GstAdapter *adapter; diff --git a/ext/dv/gstsmptetimecode.c b/ext/dv/gstsmptetimecode.c index 40a36d3f39bd71e24ae25f3e8c8fd0a5b6886234..8b15a6b6311b3d8e33cf54e1b8ed391f29a6d64a 100644 --- a/ext/dv/gstsmptetimecode.c +++ b/ext/dv/gstsmptetimecode.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/ext/dv/gstsmptetimecode.h b/ext/dv/gstsmptetimecode.h index cdda03e6fff4e96f0f09754a8d20666feff79fa5..2042046a019479d245a25f4479cf0f98d58aae4d 100644 --- a/ext/dv/gstsmptetimecode.h +++ b/ext/dv/gstsmptetimecode.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GST_SMPTE_TIME_CODE_H_ diff --git a/ext/flac/Makefile.in b/ext/flac/Makefile.in index 1adfc9f5ca8c6c434c3831fd5eb8b71f35edef4a..c88dbdfc6a69b93f85d7846cee82b9fd72ea6caf 100644 --- a/ext/flac/Makefile.in +++ b/ext/flac/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/flac -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -138,10 +164,23 @@ libgstflac_la_OBJECTS = $(am_libgstflac_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstflac_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstflac_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstflac_la_CFLAGS) $(CFLAGS) \ $(libgstflac_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -154,20 +193,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstflac_la_SOURCES) DIST_SOURCES = $(libgstflac_la_SOURCES) am__can_run_installinfo = \ @@ -176,6 +211,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -343,6 +395,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -550,6 +603,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -576,12 +630,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstflac.la: $(libgstflac_la_OBJECTS) $(libgstflac_la_DEPENDENCIES) $(EXTRA_libgstflac_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstflac_la_LINK) -rpath $(plugindir) $(libgstflac_la_OBJECTS) $(libgstflac_la_LIBADD) $(LIBS) @@ -597,22 +654,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstflac_la-gstflactag.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -651,26 +711,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -682,15 +731,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -699,6 +744,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -843,19 +903,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/flac/gstflac.c b/ext/flac/gstflac.c index febf3d511a4c5d1395daab227ef56688cc322984..2b88b2a4ccfee373eccffc8159eee6f5fe890d96 100644 --- a/ext/flac/gstflac.c +++ b/ext/flac/gstflac.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c index e2387f207bb86fae0e858160779c0c30350393c7..153748543f3cc0cea85a13a9f81b27746383d05c 100644 --- a/ext/flac/gstflacdec.c +++ b/ext/flac/gstflacdec.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/ext/flac/gstflacdec.h b/ext/flac/gstflacdec.h index 12447f8e67f128a1f35aceaac771d2e77a4171e2..e8d073a5105942530df79afb6727a6c142a9b6e4 100644 --- a/ext/flac/gstflacdec.h +++ b/ext/flac/gstflacdec.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/flac/gstflacenc.c b/ext/flac/gstflacenc.c index 52525b7d5ff149235e4df17a06e0c02c2cfbac76..e71e5cd2aec547318b7d11e95d151dd0d00bfc8c 100644 --- a/ext/flac/gstflacenc.c +++ b/ext/flac/gstflacenc.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-flacenc @@ -22,13 +22,20 @@ * * flacenc encodes FLAC streams. * <ulink url="http://flac.sourceforge.net/">FLAC</ulink> - * is a Free Lossless Audio Codec. + * is a Free Lossless Audio Codec. FLAC audio can directly be written into + * a file, or embedded into containers such as oggmux or matroskamux. * * <refsect2> * <title>Example launch line</title> * |[ * gst-launch-1.0 audiotestsrc num-buffers=100 ! flacenc ! filesink location=beep.flac - * ]| + * ]| Encode a short sine wave into FLAC + * |[ + * gst-launch-1.0 cdparanoiasrc mode=continuous ! queue ! audioconvert ! flacenc ! filesink location=cd.flac + * ]| Rip a whole audio CD into a single FLAC file, with the track table saved as a CUE sheet inside the FLAC file + * |[ + * gst-launch-1.0 cdparanoiasrc track=5 ! queue ! audioconvert ! flacenc ! filesink location=track5.flac + * ]| Rip track 5 of an audio CD and encode it losslessly to a FLAC file * </refsect2> */ @@ -331,14 +338,6 @@ gst_flac_enc_class_init (GstFlacEncClass * klass) "parameters, use best", 0, FLAC__MAX_RICE_PARTITION_ORDER, flacenc_params[DEFAULT_QUALITY].rice_parameter_search_dist, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); - - /** - * GstFlacEnc:padding - * - * Write a PADDING block with this length in bytes - * - * Since: 0.10.16 - **/ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PADDING, g_param_spec_uint ("padding", @@ -346,15 +345,6 @@ gst_flac_enc_class_init (GstFlacEncClass * klass) "Write a PADDING block with this length in bytes", 0, G_MAXUINT, DEFAULT_PADDING, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); - - /** - * GstFlacEnc:seekpoints - * - * Write a SEEKTABLE block with a specific number of seekpoints - * or with a specific interval spacing. - * - * Since: 0.10.18 - **/ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEEKPOINTS, g_param_spec_int ("seekpoints", @@ -1118,23 +1108,7 @@ gst_flac_enc_process_stream_headers (GstFlacEnc * enc) push_headers: gst_audio_encoder_set_output_format (GST_AUDIO_ENCODER (enc), caps); - /* push header buffers; update caps, so when we push the first buffer the - * negotiated caps will change to caps that include the streamheader field */ - for (l = enc->headers; l != NULL; l = l->next) { - GstBuffer *buf; - - buf = GST_BUFFER (l->data); - GST_LOG_OBJECT (enc, - "Pushing header buffer, size %" G_GSIZE_FORMAT " bytes", - gst_buffer_get_size (buf)); -#if 0 - GST_MEMDUMP_OBJECT (enc, "header buffer", GST_BUFFER_DATA (buf), - GST_BUFFER_SIZE (buf)); -#endif - ret = gst_pad_push (GST_AUDIO_ENCODER_SRC_PAD (enc), buf); - l->data = NULL; - } - g_list_free (enc->headers); + gst_audio_encoder_set_headers (GST_AUDIO_ENCODER (enc), enc->headers); enc->headers = NULL; gst_caps_unref (caps); @@ -1185,8 +1159,7 @@ gst_flac_enc_write_callback (const FLAC__StreamEncoder * encoder, ret = gst_pad_push (GST_AUDIO_ENCODER_SRC_PAD (flacenc), outbuf); } else { /* regular frame data, pass to base class */ - GST_LOG ("Pushing buffer: ts=%" GST_TIME_FORMAT ", samples=%u, size=%u, " - "pos=%" G_GUINT64_FORMAT, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)), + GST_LOG ("Pushing buffer: samples=%u, size=%u, pos=%" G_GUINT64_FORMAT, samples, (guint) bytes, flacenc->offset); ret = gst_audio_encoder_finish_frame (GST_AUDIO_ENCODER (flacenc), outbuf, samples); @@ -1227,7 +1200,8 @@ gst_flac_enc_sink_event (GstAudioEncoder * enc, GstEvent * event) flacenc = GST_FLAC_ENC (enc); - GST_DEBUG ("Received %s event on sinkpad", GST_EVENT_TYPE_NAME (event)); + GST_DEBUG ("Received %s event on sinkpad, %" GST_PTR_FORMAT, + GST_EVENT_TYPE_NAME (event), event); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_EOS: @@ -1295,6 +1269,7 @@ gst_flac_enc_handle_frame (GstAudioEncoder * enc, GstBuffer * buffer) if (G_UNLIKELY (!buffer)) { if (flacenc->eos) { + GST_DEBUG_OBJECT (flacenc, "finish encoding"); FLAC__stream_encoder_finish (flacenc->encoder); } else { /* can't handle intermittent draining/resyncing */ @@ -1312,6 +1287,8 @@ gst_flac_enc_handle_frame (GstAudioEncoder * enc, GstBuffer * buffer) data = g_malloc (samples * sizeof (FLAC__int32)); samples /= channels; + GST_LOG_OBJECT (flacenc, "processing %d samples, %d channels", samples, + channels); if (width == 8) { gint8 *indata = (gint8 *) map.data; diff --git a/ext/flac/gstflacenc.h b/ext/flac/gstflacenc.h index 690b098e28640ba252685306dcd5326e7dcd92a4..c9caecd4a0266eec8923e04ff658e71e6640a0ba 100644 --- a/ext/flac/gstflacenc.h +++ b/ext/flac/gstflacenc.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/flac/gstflactag.c b/ext/flac/gstflactag.c index 69c4716c6a4c22e748caf4cd2639dfecb9affd56..5f524f1c279d18b6b05b883faeb451df6162b8fa 100644 --- a/ext/flac/gstflactag.c +++ b/ext/flac/gstflactag.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -74,18 +74,6 @@ GST_STATIC_PAD_TEMPLATE ("sink", GST_STATIC_CAPS ("audio/x-flac") ); -/* signals and args */ -enum -{ - /* FILL ME */ - LAST_SIGNAL -}; - -enum -{ - ARG_0 - /* FILL ME */ -}; static void gst_flac_tag_dispose (GObject * object); @@ -172,9 +160,21 @@ gst_flac_tag_init (GstFlacTag * tag) static gboolean gst_flac_tag_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { + GstFlacTag *tag; gboolean ret; + tag = GST_FLAC_TAG (parent); + + GST_DEBUG_OBJECT (pad, "Received %s event on sinkpad, %" GST_PTR_FORMAT, + GST_EVENT_TYPE_NAME (event), event); + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_CAPS: + /* FIXME: parse and store the caps. Once we parsed and built the headers, + * update the "streamheader" field in the caps and send a new caps event + */ + ret = gst_pad_push_event (tag->srcpad, event); + break; default: ret = gst_pad_event_default (pad, parent, event); break; @@ -199,6 +199,8 @@ gst_flac_tag_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) gst_adapter_push (tag->adapter, buffer); + GST_LOG_OBJECT (pad, "state: %d", tag->state); + /* Initial state, we don't even know if we are dealing with a flac file */ if (tag->state == GST_FLAC_TAG_STATE_INIT) { GstBuffer *id_buffer; @@ -428,7 +430,7 @@ gst_flac_tag_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) } cleanup: - + GST_LOG_OBJECT (pad, "state: %d, ret: %d", tag->state, ret); return ret; /* ERRORS */ diff --git a/ext/flac/gstflactag.h b/ext/flac/gstflactag.h index a6f90f5e230857da8b88f82608dd67ba9e1fb73f..106541a0510ed272468a01d071327124a6844387 100644 --- a/ext/flac/gstflactag.h +++ b/ext/flac/gstflactag.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef GST_FLAC_TAG_H diff --git a/ext/gdk_pixbuf/Makefile.in b/ext/gdk_pixbuf/Makefile.in index eb2bc9672ad495a205800832ef963fe30c545a6f..9299f541a996d281e479ae30486401cd56c59d76 100644 --- a/ext/gdk_pixbuf/Makefile.in +++ b/ext/gdk_pixbuf/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/gdk_pixbuf -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -139,10 +165,23 @@ libgstgdkpixbuf_la_OBJECTS = $(am_libgstgdkpixbuf_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstgdkpixbuf_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstgdkpixbuf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstgdkpixbuf_la_CFLAGS) $(CFLAGS) \ $(libgstgdkpixbuf_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -155,20 +194,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstgdkpixbuf_la_SOURCES) DIST_SOURCES = $(libgstgdkpixbuf_la_SOURCES) am__can_run_installinfo = \ @@ -177,6 +212,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -344,6 +396,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -569,6 +622,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -595,12 +649,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstgdkpixbuf.la: $(libgstgdkpixbuf_la_OBJECTS) $(libgstgdkpixbuf_la_DEPENDENCIES) $(EXTRA_libgstgdkpixbuf_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstgdkpixbuf_la_LINK) -rpath $(plugindir) $(libgstgdkpixbuf_la_OBJECTS) $(libgstgdkpixbuf_la_LIBADD) $(LIBS) @@ -616,22 +673,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgdkpixbuf_la-gstgdkpixbufsink.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -670,26 +730,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -701,15 +750,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -718,6 +763,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -862,19 +922,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/gdk_pixbuf/gstgdkpixbufdec.c b/ext/gdk_pixbuf/gstgdkpixbufdec.c index 820f1a2e979550c6af7a051602605ecd984e336d..fc42ed194480bdb15410516dd9ba4e33de2a7cb6 100644 --- a/ext/gdk_pixbuf/gstgdkpixbufdec.c +++ b/ext/gdk_pixbuf/gstgdkpixbufdec.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -295,6 +295,7 @@ gst_gdk_pixbuf_dec_flush (GstGdkPixbufDec * filter) if (GST_VIDEO_INFO_FORMAT (&filter->info) == GST_VIDEO_FORMAT_UNKNOWN) { GstVideoInfo info; GstVideoFormat fmt; + GList *l; GST_DEBUG ("Set size to %dx%d", width, height); @@ -323,6 +324,11 @@ gst_gdk_pixbuf_dec_flush (GstGdkPixbufDec * filter) gst_caps_unref (caps); gst_gdk_pixbuf_dec_setup_pool (filter, &info); + + for (l = filter->pending_events; l; l = l->next) + gst_pad_push_event (filter->srcpad, l->data); + g_list_free (filter->pending_events); + filter->pending_events = NULL; } ret = gst_buffer_pool_acquire_buffer (filter->pool, &outbuf, NULL); @@ -412,8 +418,12 @@ gst_gdk_pixbuf_dec_sink_event (GstPad * pad, GstObject * parent, } } break; - case GST_EVENT_SEGMENT: case GST_EVENT_FLUSH_STOP: + g_list_free_full (pixbuf->pending_events, + (GDestroyNotify) gst_event_unref); + pixbuf->pending_events = NULL; + /* Fall through */ + case GST_EVENT_SEGMENT: if (pixbuf->pixbuf_loader != NULL) { gdk_pixbuf_loader_close (pixbuf->pixbuf_loader, NULL); g_object_unref (G_OBJECT (pixbuf->pixbuf_loader)); @@ -424,7 +434,16 @@ gst_gdk_pixbuf_dec_sink_event (GstPad * pad, GstObject * parent, break; } if (forward) { - ret = gst_pad_event_default (pad, parent, event); + if (!gst_pad_has_current_caps (pixbuf->srcpad) && + GST_EVENT_IS_SERIALIZED (event) + && GST_EVENT_TYPE (event) > GST_EVENT_CAPS + && GST_EVENT_TYPE (event) != GST_EVENT_FLUSH_STOP + && GST_EVENT_TYPE (event) != GST_EVENT_EOS) { + ret = TRUE; + pixbuf->pending_events = g_list_prepend (pixbuf->pending_events, event); + } else { + ret = gst_pad_event_default (pad, parent, event); + } } else { gst_event_unref (event); } @@ -516,6 +535,8 @@ gst_gdk_pixbuf_dec_change_state (GstElement * element, gst_buffer_pool_set_active (dec->pool, FALSE); gst_object_replace ((GstObject **) & dec->pool, NULL); } + g_list_free_full (dec->pending_events, (GDestroyNotify) gst_event_unref); + dec->pending_events = NULL; break; default: break; diff --git a/ext/gdk_pixbuf/gstgdkpixbufdec.h b/ext/gdk_pixbuf/gstgdkpixbufdec.h index c47b8ccf002d32bbdddc4dd13bbcdf5bb6e38dfc..832a30b4107f7a67c3145c80ca705aaf89933d28 100644 --- a/ext/gdk_pixbuf/gstgdkpixbufdec.h +++ b/ext/gdk_pixbuf/gstgdkpixbufdec.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_GDK_PIXBUF_DEC_H__ @@ -54,6 +54,7 @@ struct _GstGdkPixbufDec GstVideoInfo info; GstBufferPool *pool; + GList *pending_events; }; struct _GstGdkPixbufDecClass diff --git a/ext/gdk_pixbuf/gstgdkpixbufoverlay.c b/ext/gdk_pixbuf/gstgdkpixbufoverlay.c index b011b850da9276336d892b261b577908e27dd895..5689bc037b6d247e48720c6d6f9ef9b82adb42e2 100644 --- a/ext/gdk_pixbuf/gstgdkpixbufoverlay.c +++ b/ext/gdk_pixbuf/gstgdkpixbufoverlay.c @@ -73,6 +73,9 @@ static void gst_gdk_pixbuf_overlay_before_transform (GstBaseTransform * trans, static gboolean gst_gdk_pixbuf_overlay_set_info (GstVideoFilter * filter, GstCaps * incaps, GstVideoInfo * in_info, GstCaps * outcaps, GstVideoInfo * out_info); +static gboolean +gst_gdk_pixbuf_overlay_load_image (GstGdkPixbufOverlay * overlay, + GError ** err); enum { @@ -134,18 +137,21 @@ gst_gdk_pixbuf_overlay_class_init (GstGdkPixbufOverlayClass * klass) g_object_class_install_property (gobject_class, PROP_LOCATION, g_param_spec_string ("location", "location", - "Location of image file to overlay", NULL, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + "Location of image file to overlay", NULL, GST_PARAM_CONTROLLABLE + | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE + | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OFFSET_X, g_param_spec_int ("offset-x", "X Offset", - "Horizontal offset of overlay image in pixels from top-left corner " - "of video image", G_MININT, G_MAXINT, 0, + "For positive value, horizontal offset of overlay image in pixels from" + " left of video image. For negative value, horizontal offset of overlay" + " image in pixels from right of video image", G_MININT, G_MAXINT, 0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OFFSET_Y, g_param_spec_int ("offset-y", "Y Offset", - "Vertical offset of overlay image in pixels from top-left corner " - "of video image", G_MININT, G_MAXINT, 0, + "For positive value, vertical offset of overlay image in pixels from" + " top of video image. For negative value, vertical offset of overlay" + " image in pixels from bottom of video image", G_MININT, G_MAXINT, 0, GST_PARAM_CONTROLLABLE | GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_RELATIVE_X, @@ -214,9 +220,16 @@ gst_gdk_pixbuf_overlay_set_property (GObject * object, guint property_id, GST_OBJECT_LOCK (overlay); switch (property_id) { - case PROP_LOCATION: + case PROP_LOCATION:{ + GError *err = NULL; g_free (overlay->location); overlay->location = g_value_dup_string (value); + if (!gst_gdk_pixbuf_overlay_load_image (overlay, &err)) { + GST_ERROR_OBJECT (overlay, "Could not load overlay image: %s", + err->message); + g_error_free (err); + } + } break; case PROP_OFFSET_X: overlay->offset_x = g_value_get_int (value); @@ -436,25 +449,29 @@ gst_gdk_pixbuf_overlay_update_composition (GstGdkPixbufOverlay * overlay) GstVideoOverlayRectangle *rect; GstVideoMeta *overlay_meta; gint x, y, width, height; + gint video_width = + GST_VIDEO_INFO_WIDTH (&GST_VIDEO_FILTER (overlay)->in_info); + gint video_height = + GST_VIDEO_INFO_HEIGHT (&GST_VIDEO_FILTER (overlay)->in_info); if (overlay->comp) { gst_video_overlay_composition_unref (overlay->comp); overlay->comp = NULL; } - if (overlay->alpha == 0.0) + if (overlay->alpha == 0.0 || overlay->pixels == NULL) return; overlay_meta = gst_buffer_get_video_meta (overlay->pixels); - x = overlay->offset_x + (overlay->relative_x * overlay_meta->width); - y = overlay->offset_y + (overlay->relative_y * overlay_meta->height); - - /* FIXME: this should work, but seems to crash */ - if (x < 0) - x = 0; - if (y < 0) - y = 0; + x = overlay->offset_x < 0 ? + video_width + overlay->offset_x - overlay_meta->width + + (overlay->relative_x * overlay_meta->width) : + overlay->offset_x + (overlay->relative_x * overlay_meta->width); + y = overlay->offset_y < 0 ? + video_height + overlay->offset_y - overlay_meta->height + + (overlay->relative_y * overlay_meta->height) : + overlay->offset_y + (overlay->relative_y * overlay_meta->height); width = overlay->overlay_width; if (width == 0) @@ -471,9 +488,7 @@ gst_gdk_pixbuf_overlay_update_composition (GstGdkPixbufOverlay * overlay) overlay->relative_x * 100.0, overlay->relative_y * 100.0, overlay->overlay_height, overlay->overlay_width); GST_DEBUG_OBJECT (overlay, "overlay rendered: %d x %d @ %d,%d (onto %d x %d)", - width, height, x, y, - GST_VIDEO_INFO_WIDTH (&GST_VIDEO_FILTER (overlay)->in_info), - GST_VIDEO_INFO_HEIGHT (&GST_VIDEO_FILTER (overlay)->in_info)); + width, height, x, y, video_width, video_height); rect = gst_video_overlay_rectangle_new_raw (overlay->pixels, x, y, width, height, GST_VIDEO_OVERLAY_FORMAT_FLAG_NONE); diff --git a/ext/gdk_pixbuf/gstgdkpixbufoverlay.h b/ext/gdk_pixbuf/gstgdkpixbufoverlay.h index 3d45e4fb1583914e0c17f5984c7c39030603a32a..0e863df4a29e462adc9ab47813318430b744853b 100644 --- a/ext/gdk_pixbuf/gstgdkpixbufoverlay.h +++ b/ext/gdk_pixbuf/gstgdkpixbufoverlay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GST_GDK_PIXBUF_OVERLAY_H_ diff --git a/ext/gdk_pixbuf/gstgdkpixbufplugin.c b/ext/gdk_pixbuf/gstgdkpixbufplugin.c index e589efa422187fe8742488f62af6acec4a3fc1bd..4f58b9d478613f144602d78bdfd5e1218972e472 100644 --- a/ext/gdk_pixbuf/gstgdkpixbufplugin.c +++ b/ext/gdk_pixbuf/gstgdkpixbufplugin.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/ext/gdk_pixbuf/gstgdkpixbufsink.c b/ext/gdk_pixbuf/gstgdkpixbufsink.c index 5cac8bc5c1a13bee42c90b2c970d12d8d506f55c..5a8305d7d4d366686417a8b42e00b6001bb086d7 100644 --- a/ext/gdk_pixbuf/gstgdkpixbufsink.c +++ b/ext/gdk_pixbuf/gstgdkpixbufsink.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -339,6 +339,16 @@ gst_gdk_pixbuf_sink_handle_buffer (GstBaseSink * basesink, GstBuffer * buf, if (do_post) { GstStructure *s; GstMessage *msg; + GstFormat format; + GstClockTime timestamp; + GstClockTime running_time, stream_time; + + GstSegment *segment = &basesink->segment; + format = segment->format; + + timestamp = GST_BUFFER_PTS (buf); + running_time = gst_segment_to_running_time (segment, format, timestamp); + stream_time = gst_segment_to_stream_time (segment, format, timestamp); /* it's okay to keep using pixbuf here, we can be sure no one is going to * unref or change sink->last_pixbuf before we return from this function. @@ -346,7 +356,9 @@ gst_gdk_pixbuf_sink_handle_buffer (GstBaseSink * basesink, GstBuffer * buf, s = gst_structure_new (msg_name, "pixbuf", GDK_TYPE_PIXBUF, pixbuf, "pixel-aspect-ratio", GST_TYPE_FRACTION, sink->par_n, sink->par_d, - NULL); + "timestamp", G_TYPE_UINT64, timestamp, + "stream-time", G_TYPE_UINT64, stream_time, + "running-time", G_TYPE_UINT64, running_time, NULL); msg = gst_message_new_element (GST_OBJECT_CAST (sink), s); gst_element_post_message (GST_ELEMENT_CAST (sink), msg); diff --git a/ext/gdk_pixbuf/gstgdkpixbufsink.h b/ext/gdk_pixbuf/gstgdkpixbufsink.h index f42436eaf9f65f38fe84635fc03368953c0fd0ec..964437aa1c79c80ec8579e668a4dadce4ea8b44c 100644 --- a/ext/gdk_pixbuf/gstgdkpixbufsink.h +++ b/ext/gdk_pixbuf/gstgdkpixbufsink.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef GST_GDK_PIXBUF_SINK_H diff --git a/ext/jack/Makefile.in b/ext/jack/Makefile.in index 93f90e7ff2724f86e6e214f9e5aedf0f5121077a..8ee04e201d9b6e3f1572bfe6ddd8b500e8f90fde 100644 --- a/ext/jack/Makefile.in +++ b/ext/jack/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/jack -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -138,10 +164,23 @@ libgstjack_la_OBJECTS = $(am_libgstjack_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstjack_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstjack_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstjack_la_CFLAGS) $(CFLAGS) \ $(libgstjack_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -154,20 +193,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstjack_la_SOURCES) DIST_SOURCES = $(libgstjack_la_SOURCES) am__can_run_installinfo = \ @@ -176,6 +211,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -343,6 +395,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -544,6 +597,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -570,12 +624,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstjack.la: $(libgstjack_la_OBJECTS) $(libgstjack_la_DEPENDENCIES) $(EXTRA_libgstjack_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstjack_la_LINK) -rpath $(plugindir) $(libgstjack_la_OBJECTS) $(libgstjack_la_LIBADD) $(LIBS) @@ -592,22 +649,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstjack_la-gstjackutil.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -653,26 +713,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -684,15 +733,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -701,6 +746,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -845,19 +905,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/jack/gstjack.c b/ext/jack/gstjack.c index 8cbed12000a4c699dc662521a097ddb477700b5e..ca98dc40592b4e8a977fa218d5bd05b641cef220 100644 --- a/ext/jack/gstjack.c +++ b/ext/jack/gstjack.c @@ -13,14 +13,15 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif +#include "gstjack.h" #include "gstjackaudiosrc.h" #include "gstjackaudiosink.h" diff --git a/ext/jack/gstjack.h b/ext/jack/gstjack.h index 1291bc7e73a879294b4dc97d9ad07cb7c4ec32c8..15b040e8ab56868f289ea18ef41c8ba6a79783ad 100644 --- a/ext/jack/gstjack.h +++ b/ext/jack/gstjack.h @@ -15,13 +15,15 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GST_JACK_H_ #define _GST_JACK_H_ +#include <jack/jack.h> +#include <gst/audio/audio.h> /** * GstJackConnect: diff --git a/ext/jack/gstjackaudioclient.c b/ext/jack/gstjackaudioclient.c index f7f6be6c144a749fea729552740cd88c8653bab2..525b1c5becdb92f0447961e89bdb14d97949588d 100644 --- a/ext/jack/gstjackaudioclient.c +++ b/ext/jack/gstjackaudioclient.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <string.h> diff --git a/ext/jack/gstjackaudioclient.h b/ext/jack/gstjackaudioclient.h index f2669c9f841a6bd341adb0e1151c41f4100004c3..5dcd70c31043739f95e0cf34076626b1fe72a11a 100644 --- a/ext/jack/gstjackaudioclient.h +++ b/ext/jack/gstjackaudioclient.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_JACK_AUDIO_CLIENT_H__ diff --git a/ext/jack/gstjackaudiosink.c b/ext/jack/gstjackaudiosink.c index 103db4ed4bdf7295651c4a3b08f642cd4a2d5781..e33ed181390ebd66bedc78449e8307fb11fc32cf 100644 --- a/ext/jack/gstjackaudiosink.c +++ b/ext/jack/gstjackaudiosink.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -62,6 +62,7 @@ #include <gst/gst-i18n-plugin.h> #include <stdlib.h> #include <string.h> +#include <gst/audio/audio.h> #include "gstjackaudiosink.h" #include "gstjackringbuffer.h" diff --git a/ext/jack/gstjackaudiosink.h b/ext/jack/gstjackaudiosink.h index e8b28903a311e06f4af830228ac197747f55bbd7..b2377c43f407804378f3db864f949445932c72ff 100644 --- a/ext/jack/gstjackaudiosink.h +++ b/ext/jack/gstjackaudiosink.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_JACK_AUDIO_SINK_H__ diff --git a/ext/jack/gstjackaudiosrc.c b/ext/jack/gstjackaudiosrc.c index d21bc048d8da20ba418cd9208f5801f1719827e5..eb5951a896663302a08046f59fcec4608aa3d1da 100644 --- a/ext/jack/gstjackaudiosrc.c +++ b/ext/jack/gstjackaudiosrc.c @@ -36,8 +36,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -82,6 +82,8 @@ #include <stdlib.h> #include <string.h> +#include <gst/audio/audio.h> + #include "gstjackaudiosrc.h" #include "gstjackringbuffer.h" #include "gstjackutil.h" diff --git a/ext/jack/gstjackaudiosrc.h b/ext/jack/gstjackaudiosrc.h index 20d78aeef7c1c4026ec43e6dbbeff276d38f82d5..97c2891453775e05e64bae1a46182505147cb07d 100644 --- a/ext/jack/gstjackaudiosrc.h +++ b/ext/jack/gstjackaudiosrc.h @@ -36,8 +36,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_JACK_AUDIO_SRC_H__ diff --git a/ext/jack/gstjackringbuffer.h b/ext/jack/gstjackringbuffer.h index 9705ef0592ca6bcae3b41b322cd9dcc67e610c90..94de4b8bb3e7aed835f15add29c7b197d8759ea2 100644 --- a/ext/jack/gstjackringbuffer.h +++ b/ext/jack/gstjackringbuffer.h @@ -38,8 +38,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_JACK_RING_BUFFER_H__ diff --git a/ext/jack/gstjackutil.c b/ext/jack/gstjackutil.c index e21d00415260c6c719872e4320ea195d21a6b6c5..490e14a2b9d8601397ddc83c04a37a4f59a621c8 100644 --- a/ext/jack/gstjackutil.c +++ b/ext/jack/gstjackutil.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "gstjackutil.h" diff --git a/ext/jack/gstjackutil.h b/ext/jack/gstjackutil.h index b3704cacb373bfe4d12cf7e1ec609118c4a24650..7a4bcc500d4494a846b4c70dd1f8d88f2a228922 100644 --- a/ext/jack/gstjackutil.h +++ b/ext/jack/gstjackutil.h @@ -15,15 +15,15 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GST_JACK_UTIL_H_ #define _GST_JACK_UTIL_H_ #include <gst/gst.h> -#include <gst/audio/gstaudioringbuffer.h> +#include <gst/audio/audio.h> void gst_jack_set_layout (GstAudioRingBuffer * buffer, GstAudioRingBufferSpec *spec); diff --git a/ext/jpeg/Makefile.in b/ext/jpeg/Makefile.in index ec88aef650653c95f4fbdba947b3828586dea13d..a6b486027847bc552ac92dcfd590757a5ab939c1 100644 --- a/ext/jpeg/Makefile.in +++ b/ext/jpeg/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/jpeg -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,10 +163,23 @@ libgstjpeg_la_OBJECTS = $(am_libgstjpeg_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstjpeg_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstjpeg_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstjpeg_la_CFLAGS) $(CFLAGS) \ $(libgstjpeg_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +192,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstjpeg_la_SOURCES) DIST_SOURCES = $(libgstjpeg_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +210,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +394,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -553,6 +606,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -579,12 +633,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstjpeg.la: $(libgstjpeg_la_OBJECTS) $(libgstjpeg_la_DEPENDENCIES) $(EXTRA_libgstjpeg_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstjpeg_la_LINK) -rpath $(plugindir) $(libgstjpeg_la_OBJECTS) $(libgstjpeg_la_LIBADD) $(LIBS) @@ -599,22 +656,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstjpeg_la-gstjpegenc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -646,26 +706,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -677,15 +726,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -694,6 +739,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -838,19 +898,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # deprecated gstsmokeenc.h gstsmokedec.h smokecodec.h smokeformat.h diff --git a/ext/jpeg/gstjpeg.c b/ext/jpeg/gstjpeg.c index 394c079f7e84c79582ac0dec92b0e83fe4d9406c..9ecdd5dc245b6049cee3130936c321ff202c1336 100644 --- a/ext/jpeg/gstjpeg.c +++ b/ext/jpeg/gstjpeg.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include <config.h> diff --git a/ext/jpeg/gstjpeg.h b/ext/jpeg/gstjpeg.h index 8b2019934d80235fbebc4822c6faef5723242026..afa30a2b5ef3b0f5961c1965e11e5a85afeb7875 100644 --- a/ext/jpeg/gstjpeg.h +++ b/ext/jpeg/gstjpeg.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/jpeg/gstjpegdec.c b/ext/jpeg/gstjpegdec.c index ea5f1e250857c5d396e34f10276ed11741e290b9..79a2da06868294da60f9a1ace68f37d0ae0a042c 100644 --- a/ext/jpeg/gstjpegdec.c +++ b/ext/jpeg/gstjpegdec.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -100,7 +100,7 @@ static gboolean gst_jpeg_dec_set_format (GstVideoDecoder * dec, GstVideoCodecState * state); static gboolean gst_jpeg_dec_start (GstVideoDecoder * bdec); static gboolean gst_jpeg_dec_stop (GstVideoDecoder * bdec); -static gboolean gst_jpeg_dec_reset (GstVideoDecoder * bdec, gboolean hard); +static gboolean gst_jpeg_dec_flush (GstVideoDecoder * bdec); static GstFlowReturn gst_jpeg_dec_parse (GstVideoDecoder * bdec, GstVideoCodecFrame * frame, GstAdapter * adapter, gboolean at_eos); static GstFlowReturn gst_jpeg_dec_handle_frame (GstVideoDecoder * bdec, @@ -171,7 +171,7 @@ gst_jpeg_dec_class_init (GstJpegDecClass * klass) vdec_class->start = gst_jpeg_dec_start; vdec_class->stop = gst_jpeg_dec_stop; - vdec_class->reset = gst_jpeg_dec_reset; + vdec_class->flush = gst_jpeg_dec_flush; vdec_class->parse = gst_jpeg_dec_parse; vdec_class->set_format = gst_jpeg_dec_set_format; vdec_class->handle_frame = gst_jpeg_dec_handle_frame; @@ -181,81 +181,6 @@ gst_jpeg_dec_class_init (GstJpegDecClass * klass) GST_DEBUG_CATEGORY_GET (GST_CAT_PERFORMANCE, "GST_PERFORMANCE"); } -static void -gst_jpeg_dec_clear_error (GstJpegDec * dec) -{ - g_free (dec->error_msg); - dec->error_msg = NULL; - dec->error_line = 0; - dec->error_func = NULL; -} - -static void -gst_jpeg_dec_set_error_va (GstJpegDec * dec, const gchar * func, gint line, - const gchar * debug_msg_format, va_list args) -{ -#ifndef GST_DISABLE_GST_DEBUG - gst_debug_log_valist (GST_CAT_DEFAULT, GST_LEVEL_WARNING, __FILE__, func, - line, (GObject *) dec, debug_msg_format, args); -#endif - - g_free (dec->error_msg); - if (debug_msg_format) - dec->error_msg = g_strdup_vprintf (debug_msg_format, args); - else - dec->error_msg = NULL; - - dec->error_line = line; - dec->error_func = func; -} - -static void -gst_jpeg_dec_set_error (GstJpegDec * dec, const gchar * func, gint line, - const gchar * debug_msg_format, ...) -{ - va_list va; - - va_start (va, debug_msg_format); - gst_jpeg_dec_set_error_va (dec, func, line, debug_msg_format, va); - va_end (va); -} - -static GstFlowReturn -gst_jpeg_dec_post_error_or_warning (GstJpegDec * dec) -{ - GstFlowReturn ret; - int max_errors; - - ++dec->error_count; - max_errors = g_atomic_int_get (&dec->max_errors); - - if (max_errors < 0) { - ret = GST_FLOW_OK; - } else if (max_errors == 0) { - /* FIXME: do something more clever in "automatic mode" */ - if (gst_video_decoder_get_packetized (GST_VIDEO_DECODER (dec))) { - ret = (dec->error_count < 3) ? GST_FLOW_OK : GST_FLOW_ERROR; - } else { - ret = GST_FLOW_ERROR; - } - } else { - ret = (dec->error_count < max_errors) ? GST_FLOW_OK : GST_FLOW_ERROR; - } - - GST_INFO_OBJECT (dec, "decoding error %d/%d (%s)", dec->error_count, - max_errors, (ret == GST_FLOW_OK) ? "ignoring error" : "erroring out"); - - gst_element_message_full (GST_ELEMENT (dec), - (ret == GST_FLOW_OK) ? GST_MESSAGE_WARNING : GST_MESSAGE_ERROR, - GST_STREAM_ERROR, GST_STREAM_ERROR_DECODE, - g_strdup (_("Failed to decode JPEG image")), dec->error_msg, - __FILE__, dec->error_func, dec->error_line); - - dec->error_msg = NULL; - gst_jpeg_dec_clear_error (dec); - return ret; -} - static boolean gst_jpeg_dec_fill_input_buffer (j_decompress_ptr cinfo) { @@ -993,10 +918,14 @@ gst_jpeg_dec_decode_direct (GstJpegDec * dec, GstVideoFrame * frame) format_not_supported: { - gst_jpeg_dec_set_error (dec, GST_FUNCTION, __LINE__, - "Unsupported subsampling schema: v_samp factors: %u %u %u", - v_samp[0], v_samp[1], v_samp[2]); - return GST_FLOW_ERROR; + gboolean ret = GST_FLOW_OK; + + GST_VIDEO_DECODER_ERROR (dec, 1, STREAM, DECODE, + (_("Failed to decode JPEG image")), + ("Unsupported subsampling schema: v_samp factors: %u %u %u", v_samp[0], + v_samp[1], v_samp[2]), ret); + + return ret; } } @@ -1213,9 +1142,6 @@ gst_jpeg_dec_handle_frame (GstVideoDecoder * bdec, GstVideoCodecFrame * frame) GST_LOG_OBJECT (dec, "decompressing finished"); jpeg_finish_decompress (&dec->cinfo); - /* reset error count on successful decode */ - dec->error_count = 0; - gst_buffer_unmap (frame->input_buffer, &dec->current_frame_map); ret = gst_video_decoder_finish_frame (bdec, frame); need_unmap = FALSE; @@ -1224,11 +1150,6 @@ done: exit: - if (G_UNLIKELY (ret == GST_FLOW_ERROR)) { - jpeg_abort_decompress (&dec->cinfo); - ret = gst_jpeg_dec_post_error_or_warning (dec); - } - if (need_unmap) gst_buffer_unmap (frame->input_buffer, &dec->current_frame_map); @@ -1247,8 +1168,9 @@ need_more_data: /* ERRORS */ wrong_size: { - gst_jpeg_dec_set_error (dec, GST_FUNCTION, __LINE__, - "Picture is too small or too big (%ux%u)", width, height); + GST_VIDEO_DECODER_ERROR (dec, 1, STREAM, DECODE, + (_("Failed to decode JPEG image")), + ("Picture is too small or too big (%ux%u)", width, height), ret); ret = GST_FLOW_ERROR; goto done; } @@ -1258,12 +1180,14 @@ decode_error: dec->jerr.pub.format_message ((j_common_ptr) (&dec->cinfo), err_msg); - gst_jpeg_dec_set_error (dec, GST_FUNCTION, __LINE__, - "Decode error #%u: %s", code, err_msg); + GST_VIDEO_DECODER_ERROR (dec, 1, STREAM, DECODE, + (_("Failed to decode JPEG image")), ("Decode error #%u: %s", code, + err_msg), ret); gst_buffer_unmap (frame->input_buffer, &dec->current_frame_map); gst_video_decoder_drop_frame (bdec, frame); need_unmap = FALSE; + jpeg_abort_decompress (&dec->cinfo); ret = GST_FLOW_ERROR; goto done; @@ -1285,31 +1209,36 @@ alloc_failed: jpeg_abort_decompress (&dec->cinfo); if (ret != GST_FLOW_EOS && ret != GST_FLOW_FLUSHING && ret != GST_FLOW_NOT_LINKED) { - gst_jpeg_dec_set_error (dec, GST_FUNCTION, __LINE__, - "Buffer allocation failed, reason: %s", reason); + GST_VIDEO_DECODER_ERROR (dec, 1, STREAM, DECODE, + (_("Failed to decode JPEG image")), + ("Buffer allocation failed, reason: %s", reason), ret); + jpeg_abort_decompress (&dec->cinfo); } goto exit; } components_not_supported: { - gst_jpeg_dec_set_error (dec, GST_FUNCTION, __LINE__, - "number of components not supported: %d (max 3)", - dec->cinfo.num_components); - ret = GST_FLOW_ERROR; + GST_VIDEO_DECODER_ERROR (dec, 1, STREAM, DECODE, + (_("Failed to decode JPEG image")), + ("number of components not supported: %d (max 3)", + dec->cinfo.num_components), ret); + jpeg_abort_decompress (&dec->cinfo); goto done; } unsupported_colorspace: { - gst_jpeg_dec_set_error (dec, GST_FUNCTION, __LINE__, - "Picture has unknown or unsupported colourspace"); - ret = GST_FLOW_ERROR; + GST_VIDEO_DECODER_ERROR (dec, 1, STREAM, DECODE, + (_("Failed to decode JPEG image")), + ("Picture has unknown or unsupported colourspace"), ret); + jpeg_abort_decompress (&dec->cinfo); goto done; } invalid_yuvrgbgrayscale: { - gst_jpeg_dec_set_error (dec, GST_FUNCTION, __LINE__, - "Picture is corrupt or unhandled YUV/RGB/grayscale layout"); - ret = GST_FLOW_ERROR; + GST_VIDEO_DECODER_ERROR (dec, 1, STREAM, DECODE, + (_("Failed to decode JPEG image")), + ("Picture is corrupt or unhandled YUV/RGB/grayscale layout"), ret); + jpeg_abort_decompress (&dec->cinfo); goto done; } } @@ -1341,7 +1270,21 @@ gst_jpeg_dec_decide_allocation (GstVideoDecoder * bdec, GstQuery * query) } static gboolean -gst_jpeg_dec_reset (GstVideoDecoder * bdec, gboolean hard) +gst_jpeg_dec_start (GstVideoDecoder * bdec) +{ + GstJpegDec *dec = (GstJpegDec *) bdec; + + dec->saw_header = FALSE; + dec->parse_entropy_len = 0; + dec->parse_resync = FALSE; + + gst_video_decoder_set_packetized (bdec, FALSE); + + return TRUE; +} + +static gboolean +gst_jpeg_dec_flush (GstVideoDecoder * bdec) { GstJpegDec *dec = (GstJpegDec *) bdec; @@ -1397,20 +1340,6 @@ gst_jpeg_dec_get_property (GObject * object, guint prop_id, GValue * value, } } -static gboolean -gst_jpeg_dec_start (GstVideoDecoder * bdec) -{ - GstJpegDec *dec = (GstJpegDec *) bdec; - - dec->error_count = 0; - dec->parse_entropy_len = 0; - dec->parse_resync = FALSE; - - gst_video_decoder_set_packetized (dec, FALSE); - - return TRUE; -} - static gboolean gst_jpeg_dec_stop (GstVideoDecoder * bdec) { diff --git a/ext/jpeg/gstjpegdec.h b/ext/jpeg/gstjpegdec.h index f9f33ae5bdd9758c7312f134834454256e63a09b..e8fa2fcbf99c4086c74c4ee421b2eb2e344a4cf4 100644 --- a/ext/jpeg/gstjpegdec.h +++ b/ext/jpeg/gstjpegdec.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ @@ -83,14 +83,6 @@ struct _GstJpegDec { gint idct_method; gint max_errors; /* ATOMIC */ - /* current error (the message is the debug message) */ - gchar *error_msg; - int error_line; - const gchar *error_func; - - /* number of errors since start or last successfully decoded image */ - guint error_count; - struct jpeg_decompress_struct cinfo; struct GstJpegDecErrorMgr jerr; struct GstJpegDecSourceMgr jsrc; diff --git a/ext/jpeg/gstjpegenc.c b/ext/jpeg/gstjpegenc.c index 9edfb5553f709224a1d5227a6d6a738006d170cb..97c53d6e3aa79e1e7fd81ac812bd0875f2721740 100644 --- a/ext/jpeg/gstjpegenc.c +++ b/ext/jpeg/gstjpegenc.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-jpegenc @@ -41,7 +41,7 @@ #include "gstjpeg.h" #include <gst/video/video.h> #include <gst/video/gstvideometa.h> -#include <gst/base/gstbytereader.h> +#include <gst/base/base.h> /* experimental */ /* setting smoothig seems to have no effect in libjepeg @@ -70,7 +70,6 @@ enum PROP_IDCT_METHOD }; -static void gst_jpegenc_reset (GstJpegEnc * enc); static void gst_jpegenc_finalize (GObject * object); static void gst_jpegenc_resync (GstJpegEnc * jpegenc); @@ -300,28 +299,6 @@ gst_jpegenc_init (GstJpegEnc * jpegenc) jpegenc->quality = JPEG_DEFAULT_QUALITY; jpegenc->smoothing = JPEG_DEFAULT_SMOOTHING; jpegenc->idct_method = JPEG_DEFAULT_IDCT_METHOD; - - gst_jpegenc_reset (jpegenc); -} - -static void -gst_jpegenc_reset (GstJpegEnc * enc) -{ - gint i, j; - - g_free (enc->line[0]); - g_free (enc->line[1]); - g_free (enc->line[2]); - enc->line[0] = NULL; - enc->line[1] = NULL; - enc->line[2] = NULL; - for (i = 0; i < 3; i++) { - for (j = 0; j < 4 * DCTSIZE; j++) { - g_free (enc->row[i][j]); - enc->row[i][j] = NULL; - } - } - enc->sof_marker = -1; } static void @@ -547,8 +524,7 @@ gst_jpegenc_handle_frame (GstVideoEncoder * encoder, GstVideoCodecFrame * frame) invalid_frame: { GST_WARNING_OBJECT (jpegenc, "invalid frame received"); - gst_video_encoder_finish_frame (encoder, frame); - return GST_FLOW_OK; + return gst_video_encoder_finish_frame (encoder, frame); } } @@ -625,6 +601,7 @@ gst_jpegenc_start (GstVideoEncoder * benc) enc->line[0] = NULL; enc->line[1] = NULL; enc->line[2] = NULL; + enc->sof_marker = -1; return TRUE; } @@ -633,8 +610,20 @@ static gboolean gst_jpegenc_stop (GstVideoEncoder * benc) { GstJpegEnc *enc = (GstJpegEnc *) benc; + gint i, j; - gst_jpegenc_reset (enc); + g_free (enc->line[0]); + g_free (enc->line[1]); + g_free (enc->line[2]); + enc->line[0] = NULL; + enc->line[1] = NULL; + enc->line[2] = NULL; + for (i = 0; i < 3; i++) { + for (j = 0; j < 4 * DCTSIZE; j++) { + g_free (enc->row[i][j]); + enc->row[i][j] = NULL; + } + } return TRUE; } diff --git a/ext/jpeg/gstjpegenc.h b/ext/jpeg/gstjpegenc.h index b8f2ca812406bbe574799876a7fac6b600c561a6..7c636d358d399dd8ad09f85eb5f5031e73446133 100644 --- a/ext/jpeg/gstjpegenc.h +++ b/ext/jpeg/gstjpegenc.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/libcaca/Makefile.in b/ext/libcaca/Makefile.in index b6b3bb5f9f339ec9e41b78f88e38ccc59242091f..b3dbc7e5be7fd9e3b3098aed07383a90a832e989 100644 --- a/ext/libcaca/Makefile.in +++ b/ext/libcaca/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/libcaca -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,10 +162,23 @@ libgstcacasink_la_OBJECTS = $(am_libgstcacasink_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstcacasink_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstcacasink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstcacasink_la_CFLAGS) $(CFLAGS) \ $(libgstcacasink_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -152,20 +191,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstcacasink_la_SOURCES) DIST_SOURCES = $(libgstcacasink_la_SOURCES) am__can_run_installinfo = \ @@ -174,6 +209,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -341,6 +393,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -553,6 +606,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -579,12 +633,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstcacasink.la: $(libgstcacasink_la_OBJECTS) $(libgstcacasink_la_DEPENDENCIES) $(EXTRA_libgstcacasink_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstcacasink_la_LINK) -rpath $(plugindir) $(libgstcacasink_la_OBJECTS) $(libgstcacasink_la_LIBADD) $(LIBS) @@ -597,22 +654,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcacasink_la-gstcacasink.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -630,26 +690,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -661,15 +710,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -678,6 +723,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -822,19 +882,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/libcaca/gstcacasink.c b/ext/libcaca/gstcacasink.c index e7a8e0273eeeb4606d328d15a1a610ab9a177ea4..0f46280e1a6996f5c14f26b0950a15d26da23b94 100644 --- a/ext/libcaca/gstcacasink.c +++ b/ext/libcaca/gstcacasink.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-cacasink @@ -71,7 +71,8 @@ enum static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ RGB, RGBx, RGB16, RGB15 }")) + GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE + ("{ RGB, BGR, RGBx, xRGB, BGRx, xBGR, RGB16, RGB15 }")) ); static gboolean gst_cacasink_setcaps (GstBaseSink * pad, GstCaps * caps); @@ -180,19 +181,17 @@ gst_cacasink_setcaps (GstBaseSink * basesink, GstCaps * caps) if (!gst_video_info_from_caps (&info, caps)) goto caps_error; - switch (GST_VIDEO_INFO_FORMAT (&info)) { case GST_VIDEO_FORMAT_RGB: - bpp = 24; - red_mask = 0xff0000; - green_mask = 0x00ff00; - blue_mask = 0x0000ff; - break; + case GST_VIDEO_FORMAT_BGR: case GST_VIDEO_FORMAT_RGBx: - bpp = 32; - red_mask = 0xff000000; - green_mask = 0x00ff0000; - blue_mask = 0x0000ff00; + case GST_VIDEO_FORMAT_xRGB: + case GST_VIDEO_FORMAT_BGRx: + case GST_VIDEO_FORMAT_xBGR: + bpp = 8 * info.finfo->pixel_stride[0]; + red_mask = 0xff << (8 * info.finfo->poffset[GST_VIDEO_COMP_R]); + green_mask = 0xff << (8 * info.finfo->poffset[GST_VIDEO_COMP_G]); + blue_mask = 0xff << (8 * info.finfo->poffset[GST_VIDEO_COMP_B]); break; case GST_VIDEO_FORMAT_RGB16: bpp = 16; diff --git a/ext/libcaca/gstcacasink.h b/ext/libcaca/gstcacasink.h index db041d9be215d8969426fd6c0d326aaaab57e6d2..327a6a8a009677d9387e1a525e28dcaa16314cd9 100644 --- a/ext/libcaca/gstcacasink.h +++ b/ext/libcaca/gstcacasink.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/libpng/Makefile.in b/ext/libpng/Makefile.in index 58d1297b44f7546648751b60ec1b611f2218687d..41a2a62b3a8ea6fc6a4003f6448e8ca20b048a6d 100644 --- a/ext/libpng/Makefile.in +++ b/ext/libpng/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/libpng -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,10 +163,23 @@ libgstpng_la_OBJECTS = $(am_libgstpng_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstpng_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstpng_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstpng_la_CFLAGS) $(CFLAGS) \ $(libgstpng_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +192,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstpng_la_SOURCES) DIST_SOURCES = $(libgstpng_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +210,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +394,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -545,6 +598,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -571,12 +625,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstpng.la: $(libgstpng_la_OBJECTS) $(libgstpng_la_DEPENDENCIES) $(EXTRA_libgstpng_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstpng_la_LINK) -rpath $(plugindir) $(libgstpng_la_OBJECTS) $(libgstpng_la_LIBADD) $(LIBS) @@ -591,22 +648,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstpng_la-gstpngenc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -638,26 +698,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -669,15 +718,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -686,6 +731,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -830,19 +890,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/libpng/gstpng.c b/ext/libpng/gstpng.c index de063ef871e6a4a5d9d48fb4d2ef8dc57e01c6ea..92ff4798f9cb644542f4c9490c8c8a80a8d27257 100644 --- a/ext/libpng/gstpng.c +++ b/ext/libpng/gstpng.c @@ -11,8 +11,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/ext/libpng/gstpngdec.c b/ext/libpng/gstpngdec.c index 3d16a945865fc8332b8e229f9a958a2aab2d1036..f51c91af990ca7a3b77fdde76825a5410b72aef5 100644 --- a/ext/libpng/gstpngdec.c +++ b/ext/libpng/gstpngdec.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ /** @@ -42,12 +42,12 @@ GST_DEBUG_CATEGORY_STATIC (pngdec_debug); #define GST_CAT_DEFAULT pngdec_debug static gboolean gst_pngdec_libpng_init (GstPngDec * pngdec); -static gboolean gst_pngdec_reset (GstVideoDecoder * decoder, gboolean hard); static GstFlowReturn gst_pngdec_caps_create_and_set (GstPngDec * pngdec); static gboolean gst_pngdec_start (GstVideoDecoder * decoder); static gboolean gst_pngdec_stop (GstVideoDecoder * decoder); +static gboolean gst_pngdec_flush (GstVideoDecoder * decoder); static gboolean gst_pngdec_set_format (GstVideoDecoder * Decoder, GstVideoCodecState * state); static GstFlowReturn gst_pngdec_parse (GstVideoDecoder * decoder, @@ -92,7 +92,7 @@ gst_pngdec_class_init (GstPngDecClass * klass) vdec_class->start = gst_pngdec_start; vdec_class->stop = gst_pngdec_stop; - vdec_class->reset = gst_pngdec_reset; + vdec_class->flush = gst_pngdec_flush; vdec_class->set_format = gst_pngdec_set_format; vdec_class->parse = gst_pngdec_parse; vdec_class->handle_frame = gst_pngdec_handle_frame; @@ -382,16 +382,11 @@ gst_pngdec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame) pngdec->current_frame_map.data, pngdec->current_frame_map.size); if (pngdec->image_ready) { - if (1) { - /* Reset ourselves for the next frame */ - gst_pngdec_reset (decoder, TRUE); - GST_LOG_OBJECT (pngdec, "setting up callbacks for next frame"); - png_set_progressive_read_fn (pngdec->png, pngdec, - user_info_callback, user_endrow_callback, user_end_callback); - } else { - GST_LOG_OBJECT (pngdec, "sending EOS"); - pngdec->ret = GST_FLOW_EOS; - } + /* Reset ourselves for the next frame */ + gst_pngdec_flush (decoder); + GST_LOG_OBJECT (pngdec, "setting up callbacks for next frame"); + png_set_progressive_read_fn (pngdec->png, pngdec, + user_info_callback, user_endrow_callback, user_end_callback); pngdec->image_ready = FALSE; } else { /* An error happened and we have to unmap */ @@ -629,7 +624,7 @@ gst_pngdec_stop (GstVideoDecoder * decoder) /* Clean up the libpng structures */ static gboolean -gst_pngdec_reset (GstVideoDecoder * decoder, gboolean hard) +gst_pngdec_flush (GstVideoDecoder * decoder) { gst_pngdec_libpng_clear ((GstPngDec *) decoder); gst_pngdec_libpng_init ((GstPngDec *) decoder); diff --git a/ext/libpng/gstpngdec.h b/ext/libpng/gstpngdec.h index 69a4ff67ce416dd3ffec9db88dc468692b7d9974..d89323aecc9acce1130d32d7ba6a9be4293940bd 100644 --- a/ext/libpng/gstpngdec.h +++ b/ext/libpng/gstpngdec.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/libpng/gstpngenc.c b/ext/libpng/gstpngenc.c index 326f4336d2de26f9b0caaf0d39166f9e59deb90e..d3ebc49c956444f41b2843f85973905a3233142e 100644 --- a/ext/libpng/gstpngenc.c +++ b/ext/libpng/gstpngenc.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ /** @@ -29,11 +29,12 @@ #endif #include <string.h> #include <gst/gst.h> -#include "gstpngenc.h" #include <gst/video/video.h> #include <gst/video/gstvideometa.h> #include <zlib.h> +#include "gstpngenc.h" + GST_DEBUG_CATEGORY_STATIC (pngenc_debug); #define GST_CAT_DEFAULT pngenc_debug diff --git a/ext/libpng/gstpngenc.h b/ext/libpng/gstpngenc.h index 87bee9281edff95d0afb885d9b146514be138ad3..e71d97c54a8eb69ba007f63e6aac91bff56cc816 100644 --- a/ext/libpng/gstpngenc.h +++ b/ext/libpng/gstpngenc.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/pulse/Makefile.am b/ext/pulse/Makefile.am index 04de95139e530b9e09295947cfaa391b652ec988..a7dc7a3e63c5882f134aac2ca32bd99aa7f6e8fb 100644 --- a/ext/pulse/Makefile.am +++ b/ext/pulse/Makefile.am @@ -2,7 +2,6 @@ plugin_LTLIBRARIES = libgstpulse.la libgstpulse_la_SOURCES = \ plugin.c \ - pulseprobe.c \ pulsesink.c \ pulsesrc.c \ pulseutil.c @@ -15,7 +14,6 @@ libgstpulse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstpulse_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ - pulseprobe.h \ pulsesink.h \ pulsesrc.h \ pulseutil.h diff --git a/ext/pulse/Makefile.in b/ext/pulse/Makefile.in index 94b6fa338ae2c869ded1c76e4f58bba7519882c3..449ebe4c5b2cd3e31c7c71d57f9029b8a2420046 100644 --- a/ext/pulse/Makefile.in +++ b/ext/pulse/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/pulse -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -132,16 +158,29 @@ libgstpulse_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_libgstpulse_la_OBJECTS = libgstpulse_la-plugin.lo \ - libgstpulse_la-pulseprobe.lo libgstpulse_la-pulsesink.lo \ - libgstpulse_la-pulsesrc.lo libgstpulse_la-pulseutil.lo + libgstpulse_la-pulsesink.lo libgstpulse_la-pulsesrc.lo \ + libgstpulse_la-pulseutil.lo libgstpulse_la_OBJECTS = $(am_libgstpulse_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstpulse_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstpulse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstpulse_la_CFLAGS) $(CFLAGS) \ $(libgstpulse_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -154,20 +193,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstpulse_la_SOURCES) DIST_SOURCES = $(libgstpulse_la_SOURCES) am__can_run_installinfo = \ @@ -176,6 +211,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -343,6 +395,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -506,7 +559,6 @@ top_srcdir = @top_srcdir@ plugin_LTLIBRARIES = libgstpulse.la libgstpulse_la_SOURCES = \ plugin.c \ - pulseprobe.c \ pulsesink.c \ pulsesrc.c \ pulseutil.c @@ -519,7 +571,6 @@ libgstpulse_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \ libgstpulse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstpulse_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ - pulseprobe.h \ pulsesink.h \ pulsesrc.h \ pulseutil.h @@ -558,6 +609,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -584,12 +636,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstpulse.la: $(libgstpulse_la_OBJECTS) $(libgstpulse_la_DEPENDENCIES) $(EXTRA_libgstpulse_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstpulse_la_LINK) -rpath $(plugindir) $(libgstpulse_la_OBJECTS) $(libgstpulse_la_LIBADD) $(LIBS) @@ -600,28 +655,30 @@ 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-pulseprobe.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@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -633,13 +690,6 @@ libgstpulse_la-plugin.lo: plugin.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-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c -libgstpulse_la-pulseprobe.lo: pulseprobe.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-pulseprobe.lo -MD -MP -MF $(DEPDIR)/libgstpulse_la-pulseprobe.Tpo -c -o libgstpulse_la-pulseprobe.lo `test -f 'pulseprobe.c' || echo '$(srcdir)/'`pulseprobe.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstpulse_la-pulseprobe.Tpo $(DEPDIR)/libgstpulse_la-pulseprobe.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pulseprobe.c' object='libgstpulse_la-pulseprobe.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-pulseprobe.lo `test -f 'pulseprobe.c' || echo '$(srcdir)/'`pulseprobe.c - libgstpulse_la-pulsesink.lo: pulsesink.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-pulsesink.lo -MD -MP -MF $(DEPDIR)/libgstpulse_la-pulsesink.Tpo -c -o libgstpulse_la-pulsesink.lo `test -f 'pulsesink.c' || echo '$(srcdir)/'`pulsesink.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstpulse_la-pulsesink.Tpo $(DEPDIR)/libgstpulse_la-pulsesink.Plo @@ -667,26 +717,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -698,15 +737,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -715,6 +750,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -859,19 +909,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/pulse/plugin.c b/ext/pulse/plugin.c index 5903a5ebeae10f9d0ae0da3d956a34accbe578dc..505743b24d52c92892dbc9a4aa5192590106cf38 100644 --- a/ext/pulse/plugin.c +++ b/ext/pulse/plugin.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with gst-pulse; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA. */ diff --git a/ext/pulse/pulseprobe.c b/ext/pulse/pulseprobe.c deleted file mode 100644 index 06e09862227f288e2d809891f389736701ebfd74..0000000000000000000000000000000000000000 --- a/ext/pulse/pulseprobe.c +++ /dev/null @@ -1,422 +0,0 @@ -/*-*- Mode: C; c-basic-offset: 2 -*-*/ - -/* - * GStreamer pulseaudio plugin - * - * Copyright (c) 2004-2008 Lennart Poettering - * - * gst-pulse is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of the - * License, or (at your option) any later version. - * - * gst-pulse 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with gst-pulse; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA. - */ - -/* FIXME 0.11: suppress warnings for deprecated API such as GValueArray - * with newer GLib versions (>= 2.31.0) */ -#define GLIB_DISABLE_DEPRECATION_WARNINGS - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "pulseprobe.h" -#include "pulseutil.h" - -GST_DEBUG_CATEGORY_EXTERN (pulse_debug); -#define GST_CAT_DEFAULT pulse_debug - -static void -gst_pulseprobe_context_state_cb (pa_context * context, void *userdata) -{ - GstPulseProbe *c = (GstPulseProbe *) userdata; - - /* Called from the background thread! */ - - switch (pa_context_get_state (context)) { - case PA_CONTEXT_READY: - case PA_CONTEXT_TERMINATED: - case PA_CONTEXT_FAILED: - pa_threaded_mainloop_signal (c->mainloop, 0); - break; - - case PA_CONTEXT_UNCONNECTED: - case PA_CONTEXT_CONNECTING: - case PA_CONTEXT_AUTHORIZING: - case PA_CONTEXT_SETTING_NAME: - break; - } -} - -static void -gst_pulseprobe_sink_info_cb (pa_context * context, const pa_sink_info * i, - int eol, void *userdata) -{ - GstPulseProbe *c = (GstPulseProbe *) userdata; - - /* Called from the background thread! */ - - if (eol || !i) { - c->operation_success = eol > 0; - pa_threaded_mainloop_signal (c->mainloop, 0); - } - - if (i) - c->devices = g_list_append (c->devices, g_strdup (i->name)); - -} - -static void -gst_pulseprobe_source_info_cb (pa_context * context, const pa_source_info * i, - int eol, void *userdata) -{ - GstPulseProbe *c = (GstPulseProbe *) userdata; - - /* Called from the background thread! */ - - if (eol || !i) { - c->operation_success = eol > 0; - pa_threaded_mainloop_signal (c->mainloop, 0); - } - - if (i) - c->devices = g_list_append (c->devices, g_strdup (i->name)); -} - -static void -gst_pulseprobe_invalidate (GstPulseProbe * c) -{ - g_list_foreach (c->devices, (GFunc) g_free, NULL); - g_list_free (c->devices); - c->devices = NULL; - c->devices_valid = FALSE; -} - -static gboolean -gst_pulseprobe_open (GstPulseProbe * c) -{ - int e; - gchar *name; - - g_assert (c); - - GST_DEBUG_OBJECT (c->object, "probe open"); - - c->mainloop = pa_threaded_mainloop_new (); - if (!c->mainloop) - return FALSE; - - e = pa_threaded_mainloop_start (c->mainloop); - if (e < 0) - return FALSE; - - name = gst_pulse_client_name (); - - pa_threaded_mainloop_lock (c->mainloop); - - if (!(c->context = - pa_context_new (pa_threaded_mainloop_get_api (c->mainloop), name))) { - GST_WARNING_OBJECT (c->object, "Failed to create context"); - goto unlock_and_fail; - } - - pa_context_set_state_callback (c->context, gst_pulseprobe_context_state_cb, - c); - - if (pa_context_connect (c->context, c->server, 0, NULL) < 0) { - GST_WARNING_OBJECT (c->object, "Failed to connect context: %s", - pa_strerror (pa_context_errno (c->context))); - goto unlock_and_fail; - } - - for (;;) { - pa_context_state_t state; - - state = pa_context_get_state (c->context); - - if (!PA_CONTEXT_IS_GOOD (state)) { - GST_WARNING_OBJECT (c->object, "Failed to connect context: %s", - pa_strerror (pa_context_errno (c->context))); - goto unlock_and_fail; - } - - if (state == PA_CONTEXT_READY) - break; - - /* Wait until the context is ready */ - pa_threaded_mainloop_wait (c->mainloop); - } - - pa_threaded_mainloop_unlock (c->mainloop); - g_free (name); - - gst_pulseprobe_invalidate (c); - - return TRUE; - -unlock_and_fail: - - if (c->mainloop) - pa_threaded_mainloop_unlock (c->mainloop); - - g_free (name); - - return FALSE; -} - -static gboolean -gst_pulseprobe_is_dead (GstPulseProbe * pulseprobe) -{ - - if (!pulseprobe->context || - !PA_CONTEXT_IS_GOOD (pa_context_get_state (pulseprobe->context))) { - const gchar *err_str = - pulseprobe->context ? - pa_strerror (pa_context_errno (pulseprobe->context)) : NULL; - - GST_ELEMENT_ERROR ((pulseprobe), RESOURCE, FAILED, - ("Disconnected: %s", err_str), (NULL)); - return TRUE; - } - - return FALSE; -} - -static gboolean -gst_pulseprobe_enumerate (GstPulseProbe * c) -{ - pa_operation *o = NULL; - - GST_DEBUG_OBJECT (c->object, "probe enumerate"); - - pa_threaded_mainloop_lock (c->mainloop); - - if (c->enumerate_sinks) { - /* Get sink info */ - - if (!(o = - pa_context_get_sink_info_list (c->context, - gst_pulseprobe_sink_info_cb, c))) { - GST_WARNING_OBJECT (c->object, "Failed to get sink info: %s", - pa_strerror (pa_context_errno (c->context))); - goto unlock_and_fail; - } - - c->operation_success = FALSE; - - while (pa_operation_get_state (o) == PA_OPERATION_RUNNING) { - - if (gst_pulseprobe_is_dead (c)) - goto unlock_and_fail; - - pa_threaded_mainloop_wait (c->mainloop); - } - - if (!c->operation_success) { - GST_WARNING_OBJECT (c->object, "Failed to get sink info: %s", - pa_strerror (pa_context_errno (c->context))); - goto unlock_and_fail; - } - - pa_operation_unref (o); - o = NULL; - } - - if (c->enumerate_sources) { - /* Get source info */ - - if (!(o = - pa_context_get_source_info_list (c->context, - gst_pulseprobe_source_info_cb, c))) { - GST_WARNING_OBJECT (c->object, "Failed to get source info: %s", - pa_strerror (pa_context_errno (c->context))); - goto unlock_and_fail; - } - - c->operation_success = FALSE; - while (pa_operation_get_state (o) == PA_OPERATION_RUNNING) { - - if (gst_pulseprobe_is_dead (c)) - goto unlock_and_fail; - - pa_threaded_mainloop_wait (c->mainloop); - } - - if (!c->operation_success) { - GST_WARNING_OBJECT (c->object, "Failed to get sink info: %s", - pa_strerror (pa_context_errno (c->context))); - goto unlock_and_fail; - } - - pa_operation_unref (o); - o = NULL; - } - - c->devices_valid = TRUE; - - pa_threaded_mainloop_unlock (c->mainloop); - - return TRUE; - -unlock_and_fail: - - if (o) - pa_operation_unref (o); - - pa_threaded_mainloop_unlock (c->mainloop); - - return FALSE; -} - -static void -gst_pulseprobe_close (GstPulseProbe * c) -{ - g_assert (c); - - GST_DEBUG_OBJECT (c->object, "probe close"); - - if (c->mainloop) - pa_threaded_mainloop_stop (c->mainloop); - - if (c->context) { - pa_context_disconnect (c->context); - pa_context_set_state_callback (c->context, NULL, NULL); - pa_context_unref (c->context); - c->context = NULL; - } - - if (c->mainloop) { - pa_threaded_mainloop_free (c->mainloop); - c->mainloop = NULL; - } -} - -GstPulseProbe * -gst_pulseprobe_new (GObject * object, GObjectClass * klass, - guint prop_id, const gchar * server, gboolean sinks, gboolean sources) -{ - GstPulseProbe *c = NULL; - - c = g_new (GstPulseProbe, 1); - c->object = object; /* We don't inc the ref counter here to avoid a ref loop */ - c->server = g_strdup (server); - c->enumerate_sinks = sinks; - c->enumerate_sources = sources; - - c->mainloop = NULL; - c->context = NULL; - - c->prop_id = prop_id; - c->properties = - g_list_append (NULL, g_object_class_find_property (klass, "device")); - - c->devices = NULL; - c->devices_valid = FALSE; - - c->operation_success = FALSE; - - return c; -} - -void -gst_pulseprobe_free (GstPulseProbe * c) -{ - g_assert (c); - - gst_pulseprobe_close (c); - - g_list_free (c->properties); - g_free (c->server); - - g_list_foreach (c->devices, (GFunc) g_free, NULL); - g_list_free (c->devices); - - g_free (c); -} - -const GList * -gst_pulseprobe_get_properties (GstPulseProbe * c) -{ - return c->properties; -} - -gboolean -gst_pulseprobe_needs_probe (GstPulseProbe * c, guint prop_id, - const GParamSpec * pspec) -{ - - if (prop_id == c->prop_id) - return !c->devices_valid; - - G_OBJECT_WARN_INVALID_PROPERTY_ID (c->object, prop_id, pspec); - return FALSE; -} - -void -gst_pulseprobe_probe_property (GstPulseProbe * c, guint prop_id, - const GParamSpec * pspec) -{ - - if (prop_id != c->prop_id) { - G_OBJECT_WARN_INVALID_PROPERTY_ID (c->object, prop_id, pspec); - return; - } - - if (gst_pulseprobe_open (c)) { - gst_pulseprobe_enumerate (c); - gst_pulseprobe_close (c); - } -} - -#if 0 -GValueArray * -gst_pulseprobe_get_values (GstPulseProbe * c, guint prop_id, - const GParamSpec * pspec) -{ - GValueArray *array; - GValue value = { - 0 - }; - GList *item; - - if (prop_id != c->prop_id) { - G_OBJECT_WARN_INVALID_PROPERTY_ID (c->object, prop_id, pspec); - return NULL; - } - - if (!c->devices_valid) - return NULL; - - array = g_value_array_new (g_list_length (c->devices)); - g_value_init (&value, G_TYPE_STRING); - for (item = c->devices; item != NULL; item = item->next) { - GST_WARNING_OBJECT (c->object, "device found: %s", - (const gchar *) item->data); - g_value_set_string (&value, (const gchar *) item->data); - g_value_array_append (array, &value); - } - g_value_unset (&value); - - return array; -} -#endif - -void -gst_pulseprobe_set_server (GstPulseProbe * c, const gchar * server) -{ - g_assert (c); - - gst_pulseprobe_invalidate (c); - - g_free (c->server); - c->server = g_strdup (server); -} diff --git a/ext/pulse/pulseprobe.h b/ext/pulse/pulseprobe.h deleted file mode 100644 index 716f5edec52860c520a9d45f478610ef53f2bd8c..0000000000000000000000000000000000000000 --- a/ext/pulse/pulseprobe.h +++ /dev/null @@ -1,128 +0,0 @@ -/*-*- Mode: C; c-basic-offset: 2 -*-*/ - -/* - * GStreamer pulseaudio plugin - * - * Copyright (c) 2004-2008 Lennart Poettering - * - * gst-pulse is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of the - * License, or (at your option) any later version. - * - * gst-pulse 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with gst-pulse; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA. - */ - -#ifndef __GST_PULSEPROBE_H__ -#define __GST_PULSEPROBE_H__ - -#include <gst/gst.h> - -G_BEGIN_DECLS - -#include <pulse/pulseaudio.h> -#include <pulse/thread-mainloop.h> - -typedef struct _GstPulseProbe GstPulseProbe; - -struct _GstPulseProbe -{ - GObject *object; - gchar *server; - - GList *devices; - gboolean devices_valid:1; - - gboolean operation_success:1; - - gboolean enumerate_sinks:1; - gboolean enumerate_sources:1; - - pa_threaded_mainloop *mainloop; - pa_context *context; - - GList *properties; - guint prop_id; -}; - -GstPulseProbe *gst_pulseprobe_new (GObject *object, GObjectClass * klass, - guint prop_id, const gchar * server, gboolean sinks, gboolean sources); -void gst_pulseprobe_free (GstPulseProbe * probe); - -const GList *gst_pulseprobe_get_properties (GstPulseProbe * probe); - -gboolean gst_pulseprobe_needs_probe (GstPulseProbe * probe, guint prop_id, - const GParamSpec * pspec); -void gst_pulseprobe_probe_property (GstPulseProbe * probe, guint prop_id, - const GParamSpec * pspec); -#if 0 -GValueArray *gst_pulseprobe_get_values (GstPulseProbe * probe, guint prop_id, - const GParamSpec * pspec); -#endif - -void gst_pulseprobe_set_server (GstPulseProbe * c, const gchar * server); - -#define GST_IMPLEMENT_PULSEPROBE_METHODS(Type, interface_as_function) \ -static const GList* \ -interface_as_function ## _get_properties(GstPropertyProbe * probe) \ -{ \ - Type *this = (Type*) probe; \ - \ - g_return_val_if_fail(this != NULL, NULL); \ - g_return_val_if_fail(this->probe != NULL, NULL); \ - \ - return gst_pulseprobe_get_properties(this->probe); \ -} \ -static gboolean \ -interface_as_function ## _needs_probe(GstPropertyProbe *probe, guint prop_id, \ - const GParamSpec *pspec) \ -{ \ - Type *this = (Type*) probe; \ - \ - g_return_val_if_fail(this != NULL, FALSE); \ - g_return_val_if_fail(this->probe != NULL, FALSE); \ - \ - return gst_pulseprobe_needs_probe(this->probe, prop_id, pspec); \ -} \ -static void \ -interface_as_function ## _probe_property(GstPropertyProbe *probe, \ - guint prop_id, const GParamSpec *pspec) \ -{ \ - Type *this = (Type*) probe; \ - \ - g_return_if_fail(this != NULL); \ - g_return_if_fail(this->probe != NULL); \ - \ - gst_pulseprobe_probe_property(this->probe, prop_id, pspec); \ -} \ -static GValueArray* \ -interface_as_function ## _get_values(GstPropertyProbe *probe, guint prop_id, \ - const GParamSpec *pspec) \ -{ \ - Type *this = (Type*) probe; \ - \ - g_return_val_if_fail(this != NULL, NULL); \ - g_return_val_if_fail(this->probe != NULL, NULL); \ - \ - return gst_pulseprobe_get_values(this->probe, prop_id, pspec); \ -} \ -static void \ -interface_as_function ## _property_probe_interface_init(GstPropertyProbeInterface *iface)\ -{ \ - iface->get_properties = interface_as_function ## _get_properties; \ - iface->needs_probe = interface_as_function ## _needs_probe; \ - iface->probe_property = interface_as_function ## _probe_property; \ - iface->get_values = interface_as_function ## _get_values; \ -} - -G_END_DECLS - -#endif diff --git a/ext/pulse/pulsesink.c b/ext/pulse/pulsesink.c index 4a027104eb9125b208de4a93f59bc4d93cfe29dc..9967c8d5f13ba26ddcd2001d4f6af2ce50be4b1d 100644 --- a/ext/pulse/pulsesink.c +++ b/ext/pulse/pulsesink.c @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with gst-pulse; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA. */ @@ -52,9 +52,8 @@ #include <gst/base/gstbasesink.h> #include <gst/gsttaglist.h> -#include <gst/audio/streamvolume.h> +#include <gst/audio/audio.h> #include <gst/gst-i18n-plugin.h> -#include <gst/audio/gstaudioiec61937.h> #include <gst/pbutils/pbutils.h> /* only used for GST_PLUGINS_BASE_VERSION_* */ @@ -68,6 +67,7 @@ GST_DEBUG_CATEGORY_EXTERN (pulse_debug); #define DEFAULT_SERVER NULL #define DEFAULT_DEVICE NULL +#define DEFAULT_CURRENT_DEVICE NULL #define DEFAULT_DEVICE_NAME NULL #define DEFAULT_VOLUME 1.0 #define DEFAULT_MUTE FALSE @@ -78,6 +78,7 @@ enum PROP_0, PROP_SERVER, PROP_DEVICE, + PROP_CURRENT_DEVICE, PROP_DEVICE_NAME, PROP_VOLUME, PROP_MUTE, @@ -140,6 +141,7 @@ struct _GstPulseRingBuffer pa_context *context; pa_stream *stream; + pa_stream *probe_stream; pa_format_info *format; guint channels; @@ -226,6 +228,7 @@ gst_pulseringbuffer_init (GstPulseRingBuffer * pbuf) pbuf->stream_name = NULL; pbuf->context = NULL; pbuf->stream = NULL; + pbuf->probe_stream = NULL; pbuf->format = NULL; pbuf->channels = 0; @@ -242,9 +245,32 @@ gst_pulseringbuffer_init (GstPulseRingBuffer * pbuf) pbuf->paused = FALSE; } +/* Call with mainloop lock held if wait == TRUE) */ +static void +gst_pulse_destroy_stream (pa_stream * stream, gboolean wait) +{ + /* Make sure we don't get any further callbacks */ + pa_stream_set_write_callback (stream, NULL, NULL); + pa_stream_set_underflow_callback (stream, NULL, NULL); + pa_stream_set_overflow_callback (stream, NULL, NULL); + + pa_stream_disconnect (stream); + + if (wait) + pa_threaded_mainloop_wait (mainloop); + + pa_stream_set_state_callback (stream, NULL, NULL); + pa_stream_unref (stream); +} + static void gst_pulsering_destroy_stream (GstPulseRingBuffer * pbuf) { + if (pbuf->probe_stream) { + gst_pulse_destroy_stream (pbuf->probe_stream, FALSE); + pbuf->probe_stream = NULL; + } + if (pbuf->stream) { if (pbuf->m_data) { @@ -532,6 +558,11 @@ gst_pulseringbuffer_open_device (GstAudioRingBuffer * buf) pa_threaded_mainloop_wait (mainloop); } + if (pa_context_get_server_protocol_version (pbuf->context) < 22) { + /* We need PulseAudio >= 1.0 on the server side for the extended API */ + goto bad_server_version; + } + GST_LOG_OBJECT (psink, "opened the device"); pa_threaded_mainloop_unlock (mainloop); @@ -560,6 +591,12 @@ connect_failed: pa_strerror (pa_context_errno (pctx->context))), (NULL)); goto unlock_and_fail; } +bad_server_version: + { + GST_ELEMENT_ERROR (psink, RESOURCE, FAILED, ("PulseAudio server version " + "is too old."), (NULL)); + goto unlock_and_fail; + } } /* close the device */ @@ -658,6 +695,7 @@ gst_pulsering_stream_latency_cb (pa_stream * s, void *userdata) { GstPulseSink *psink; GstPulseRingBuffer *pbuf; + GstAudioRingBuffer *ringbuf; const pa_timing_info *info; pa_usec_t sink_usec; @@ -665,11 +703,26 @@ gst_pulsering_stream_latency_cb (pa_stream * s, void *userdata) pbuf = GST_PULSERING_BUFFER_CAST (userdata); psink = GST_PULSESINK_CAST (GST_OBJECT_PARENT (pbuf)); + ringbuf = GST_AUDIO_RING_BUFFER (pbuf); if (!info) { GST_LOG_OBJECT (psink, "latency update (information unknown)"); return; } + + if (!info->read_index_corrupt) { + /* Update segdone based on the read index. segdone is of segment + * granularity, while the read index is at byte granularity. We take the + * ceiling while converting the latter to the former since it is more + * conservative to report that we've read more than we have than to report + * less. One concern here is that latency updates happen every 100ms, which + * means segdone is not updated very often, but increasing the update + * frequency would mean more communication overhead. */ + g_atomic_int_set (&ringbuf->segdone, + (int) gst_util_uint64_scale_ceil (info->read_index, 1, + ringbuf->spec.segsize)); + } + sink_usec = info->configured_sink_usec; GST_LOG_OBJECT (psink, @@ -831,6 +884,13 @@ gst_pulseringbuffer_acquire (GstAudioRingBuffer * buf, g_assert (pbuf->context); g_assert (!pbuf->stream); + /* if we have a probe, disconnect it first so that if we're creating a + * compressed stream, it doesn't get blocked by a PCM stream */ + if (pbuf->probe_stream) { + gst_pulse_destroy_stream (pbuf->probe_stream, TRUE); + pbuf->probe_stream = NULL; + } + /* enable event notifications */ GST_LOG_OBJECT (psink, "subscribing to context events"); if (!(o = pa_context_subscribe (pbuf->context, @@ -1109,13 +1169,13 @@ mainloop_enter_defer_cb (pa_mainloop_api * api, void *userdata) GstMessage *message; GValue val = { 0 }; - g_value_init (&val, G_TYPE_POINTER); - g_value_set_pointer (&val, g_thread_self ()); - GST_DEBUG_OBJECT (pulsesink, "posting ENTER stream status"); message = gst_message_new_stream_status (GST_OBJECT (pulsesink), GST_STREAM_STATUS_TYPE_ENTER, GST_ELEMENT (pulsesink)); + g_value_init (&val, GST_TYPE_G_THREAD); + g_value_set_boxed (&val, g_thread_self ()); gst_message_set_stream_status_object (message, &val); + g_value_unset (&val); gst_element_post_message (GST_ELEMENT (pulsesink), message); @@ -1188,13 +1248,14 @@ mainloop_leave_defer_cb (pa_mainloop_api * api, void *userdata) GstMessage *message; GValue val = { 0 }; - g_value_init (&val, G_TYPE_POINTER); - g_value_set_pointer (&val, g_thread_self ()); - GST_DEBUG_OBJECT (pulsesink, "posting LEAVE stream status"); message = gst_message_new_stream_status (GST_OBJECT (pulsesink), GST_STREAM_STATUS_TYPE_LEAVE, GST_ELEMENT (pulsesink)); + g_value_init (&val, GST_TYPE_G_THREAD); + g_value_set_boxed (&val, g_thread_self ()); gst_message_set_stream_status_object (message, &val); + g_value_unset (&val); + gst_element_post_message (GST_ELEMENT (pulsesink), message); g_return_if_fail (pulsesink->defer_pending); @@ -1359,6 +1420,7 @@ gst_pulseringbuffer_commit (GstAudioRingBuffer * buf, guint64 * sample, if (g_atomic_int_compare_and_exchange (&psink->notify, 1, 0)) { g_object_notify (G_OBJECT (psink), "volume"); g_object_notify (G_OBJECT (psink), "mute"); + g_object_notify (G_OBJECT (psink), "current-device"); } /* make sure the ringbuffer is started */ @@ -1737,6 +1799,8 @@ gst_pulsesink_payload (GstAudioBaseSink * sink, GstBuffer * buf) case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3: case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS: case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG: + case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC: + case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC: { /* FIXME: alloc memory from PA if possible */ gint framesize = gst_audio_iec61937_frame_size (&sink->ringbuffer->spec); @@ -1812,6 +1876,11 @@ gst_pulsesink_class_init (GstPulseSinkClass * klass) "The PulseAudio sink device to connect to", DEFAULT_DEVICE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_CURRENT_DEVICE, + g_param_spec_string ("current-device", "Current Device", + "The current PulseAudio sink device", DEFAULT_CURRENT_DEVICE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_DEVICE_NAME, g_param_spec_string ("device-name", "Device name", @@ -1873,7 +1942,22 @@ gst_pulsesink_class_init (GstPulseSinkClass * klass) gst_static_pad_template_get (&pad_template)); } -/* returns the current time of the sink ringbuffer */ +static void +free_device_info (GstPulseDeviceInfo * device_info) +{ + GList *l; + + g_free (device_info->description); + + for (l = g_list_first (device_info->formats); l; l = g_list_next (l)) + pa_format_info_free ((pa_format_info *) l->data); + + g_list_free (device_info->formats); +} + +/* Returns the current time of the sink ringbuffer. The timing_info is updated + * on every data write/flush and every 100ms (PA_STREAM_AUTO_TIMING_UPDATE). + */ static GstClockTime gst_pulsesink_get_time (GstClock * clock, GstAudioBaseSink * sink) { @@ -1925,56 +2009,299 @@ static void gst_pulsesink_sink_info_cb (pa_context * c, const pa_sink_info * i, int eol, void *userdata) { - GstPulseRingBuffer *pbuf; - GstPulseSink *psink; - GList *l; + GstPulseDeviceInfo *device_info = (GstPulseDeviceInfo *) userdata; guint8 j; - pbuf = GST_PULSERING_BUFFER_CAST (userdata); - psink = GST_PULSESINK_CAST (GST_OBJECT_PARENT (pbuf)); - if (!i) goto done; - g_free (psink->device_description); - psink->device_description = g_strdup (i->description); - - g_mutex_lock (&psink->sink_formats_lock); - - for (l = g_list_first (psink->sink_formats); l; l = g_list_next (l)) - pa_format_info_free ((pa_format_info *) l->data); - - g_list_free (psink->sink_formats); - psink->sink_formats = NULL; + device_info->description = g_strdup (i->description); + device_info->formats = NULL; for (j = 0; j < i->n_formats; j++) - psink->sink_formats = g_list_prepend (psink->sink_formats, + device_info->formats = g_list_prepend (device_info->formats, pa_format_info_copy (i->formats[j])); - g_mutex_unlock (&psink->sink_formats_lock); - done: pa_threaded_mainloop_signal (mainloop, 0); } +static gboolean +gst_pulse_format_info_int_prop_to_value (pa_format_info * format, + const char *key, GValue * value) +{ + GValue v = { 0, }; + int i; + int *a, n; + int min, max; + + if (pa_format_info_get_prop_int (format, key, &i) == 0) { + g_value_init (value, G_TYPE_INT); + g_value_set_int (value, i); + + } else if (pa_format_info_get_prop_int_array (format, key, &a, &n) == 0) { + g_value_init (value, GST_TYPE_LIST); + g_value_init (&v, G_TYPE_INT); + + for (i = 0; i < n; i++) { + g_value_set_int (&v, a[i]); + gst_value_list_append_value (value, &v); + } + + pa_xfree (a); + + } else if (pa_format_info_get_prop_int_range (format, key, &min, &max) == 0) { + g_value_init (value, GST_TYPE_INT_RANGE); + gst_value_set_int_range (value, min, max); + + } else { + /* Property not available or is not an int type */ + return FALSE; + } + + return TRUE; +} + +static GstCaps * +gst_pulse_format_info_to_caps (pa_format_info * format) +{ + GstCaps *ret = NULL; + GValue v = { 0, }; + pa_sample_spec ss; + + switch (format->encoding) { + case PA_ENCODING_PCM:{ + char *tmp = NULL; + + pa_format_info_to_sample_spec (format, &ss, NULL); + + if (pa_format_info_get_prop_string (format, + PA_PROP_FORMAT_SAMPLE_FORMAT, &tmp)) { + /* No specific sample format means any sample format */ + ret = gst_caps_from_string (_PULSE_CAPS_PCM); + goto out; + + } else if (ss.format == PA_SAMPLE_ALAW) { + ret = gst_caps_from_string (_PULSE_CAPS_ALAW); + + } else if (ss.format == PA_SAMPLE_ULAW) { + ret = gst_caps_from_string (_PULSE_CAPS_MP3); + + } else { + /* Linear PCM format */ + const char *sformat = + gst_pulse_sample_format_to_caps_format (ss.format); + + ret = gst_caps_from_string (_PULSE_CAPS_LINEAR); + + if (sformat) + gst_caps_set_simple (ret, "format", G_TYPE_STRING, NULL); + } + + pa_xfree (tmp); + break; + } + + case PA_ENCODING_AC3_IEC61937: + ret = gst_caps_from_string (_PULSE_CAPS_AC3); + break; + + case PA_ENCODING_EAC3_IEC61937: + ret = gst_caps_from_string (_PULSE_CAPS_EAC3); + break; + + case PA_ENCODING_DTS_IEC61937: + ret = gst_caps_from_string (_PULSE_CAPS_DTS); + break; + + case PA_ENCODING_MPEG_IEC61937: + ret = gst_caps_from_string (_PULSE_CAPS_MP3); + break; + + default: + GST_WARNING ("Found a PA format that we don't support yet"); + goto out; + } + + if (gst_pulse_format_info_int_prop_to_value (format, PA_PROP_FORMAT_RATE, &v)) + gst_caps_set_value (ret, "rate", &v); + + g_value_unset (&v); + + if (gst_pulse_format_info_int_prop_to_value (format, PA_PROP_FORMAT_CHANNELS, + &v)) + gst_caps_set_value (ret, "channels", &v); + +out: + return ret; +} + +/* Call with mainloop lock held */ +static pa_stream * +gst_pulsesink_create_probe_stream (GstPulseSink * psink, + GstPulseRingBuffer * pbuf, pa_format_info * format) +{ + pa_format_info *formats[1] = { format }; + pa_stream *stream; + pa_stream_flags_t flags; + + GST_LOG_OBJECT (psink, "Creating probe stream"); + + if (!(stream = pa_stream_new_extended (pbuf->context, "pulsesink probe", + formats, 1, psink->proplist))) + goto error; + + /* construct the flags */ + flags = PA_STREAM_INTERPOLATE_TIMING | PA_STREAM_AUTO_TIMING_UPDATE | + PA_STREAM_ADJUST_LATENCY | PA_STREAM_START_CORKED; + + pa_stream_set_state_callback (stream, gst_pulsering_stream_state_cb, pbuf); + + if (pa_stream_connect_playback (stream, psink->device, NULL, flags, NULL, + NULL) < 0) + goto error; + + if (!gst_pulsering_wait_for_stream_ready (psink, stream)) + goto error; + + return stream; + +error: + if (stream) + pa_stream_unref (stream); + return NULL; +} + +static GstCaps * +gst_pulsesink_query_getcaps (GstPulseSink * psink, GstCaps * filter) +{ + GstPulseRingBuffer *pbuf = NULL; + GstPulseDeviceInfo device_info = { NULL, NULL }; + GstCaps *ret = NULL; + GList *i; + pa_operation *o = NULL; + pa_stream *stream; + + GST_OBJECT_LOCK (psink); + pbuf = GST_PULSERING_BUFFER_CAST (GST_AUDIO_BASE_SINK (psink)->ringbuffer); + if (pbuf != NULL) + gst_object_ref (pbuf); + GST_OBJECT_UNLOCK (psink); + + if (!pbuf) { + ret = gst_pad_get_pad_template_caps (GST_AUDIO_BASE_SINK_PAD (psink)); + goto out; + } + + GST_OBJECT_LOCK (pbuf); + pa_threaded_mainloop_lock (mainloop); + + if (!pbuf->context) { + ret = gst_pad_get_pad_template_caps (GST_AUDIO_BASE_SINK_PAD (psink)); + goto unlock; + } + + if (pbuf->stream) { + /* We're in PAUSED or higher */ + stream = pbuf->stream; + + } else if (pbuf->probe_stream) { + /* We're not paused, but have a cached probe stream */ + stream = pbuf->probe_stream; + + } else { + /* We're not yet in PAUSED and still need to create a probe stream. + * + * FIXME: PA doesn't accept "any" format. We fix something reasonable since + * this is merely a probe. This should eventually be fixed in PA and + * hard-coding the format should be dropped. */ + pa_format_info *format = pa_format_info_new (); + format->encoding = PA_ENCODING_PCM; + pa_format_info_set_sample_format (format, PA_SAMPLE_S16LE); + pa_format_info_set_rate (format, GST_AUDIO_DEF_RATE); + pa_format_info_set_channels (format, GST_AUDIO_DEF_CHANNELS); + + pbuf->probe_stream = gst_pulsesink_create_probe_stream (psink, pbuf, + format); + if (!pbuf->probe_stream) { + GST_WARNING_OBJECT (psink, "Could not create probe stream"); + goto unlock; + } + + pa_format_info_free (format); + + stream = pbuf->probe_stream; + } + + ret = gst_caps_new_empty (); + + if (!(o = pa_context_get_sink_info_by_name (pbuf->context, + pa_stream_get_device_name (stream), gst_pulsesink_sink_info_cb, + &device_info))) + goto info_failed; + + while (pa_operation_get_state (o) == PA_OPERATION_RUNNING) { + pa_threaded_mainloop_wait (mainloop); + if (gst_pulsering_is_dead (psink, pbuf, FALSE)) + goto unlock; + } + + for (i = g_list_first (device_info.formats); i; i = g_list_next (i)) { + gst_caps_append (ret, + gst_pulse_format_info_to_caps ((pa_format_info *) i->data)); + } + + if (filter) { + GstCaps *tmp = gst_caps_intersect_full (filter, ret, + GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (ret); + ret = tmp; + } + +unlock: + pa_threaded_mainloop_unlock (mainloop); + /* FIXME: this could be freed after device_name is got */ + GST_OBJECT_UNLOCK (pbuf); + +out: + free_device_info (&device_info); + + if (o) + pa_operation_unref (o); + + if (pbuf) + gst_object_unref (pbuf); + + GST_DEBUG_OBJECT (psink, "caps %" GST_PTR_FORMAT, ret); + + return ret; + +info_failed: + { + GST_ELEMENT_ERROR (psink, RESOURCE, FAILED, + ("pa_context_get_sink_input_info() failed: %s", + pa_strerror (pa_context_errno (pbuf->context))), (NULL)); + goto unlock; + } +} + static gboolean gst_pulsesink_query_acceptcaps (GstPulseSink * psink, GstCaps * caps) { GstPulseRingBuffer *pbuf = NULL; + GstPulseDeviceInfo device_info = { NULL, NULL }; GstCaps *pad_caps; GstStructure *st; gboolean ret = FALSE; GstAudioRingBufferSpec spec = { 0 }; - pa_stream *stream = NULL; pa_operation *o = NULL; pa_channel_map channel_map; - pa_stream_flags_t flags; - pa_format_info *format = NULL, *formats[1]; + pa_format_info *format = NULL; guint channels; - pad_caps = gst_pad_query_caps (GST_BASE_SINK_PAD (psink), caps); - ret = pad_caps != NULL; + pad_caps = gst_pad_get_pad_template_caps (GST_BASE_SINK_PAD (psink)); + ret = gst_caps_is_subset (caps, pad_caps); gst_caps_unref (pad_caps); GST_DEBUG_OBJECT (psink, "caps %" GST_PTR_FORMAT, caps); @@ -1998,6 +2325,7 @@ gst_pulsesink_query_acceptcaps (GstPulseSink * psink, GstCaps * caps) if (pbuf == NULL) goto done; + GST_OBJECT_LOCK (pbuf); pa_threaded_mainloop_lock (mainloop); if (pbuf->context == NULL) @@ -2028,49 +2356,36 @@ gst_pulsesink_query_acceptcaps (GstPulseSink * psink, GstCaps * caps) gst_pulse_gst_to_channel_map (&channel_map, &spec)) pa_format_info_set_channel_map (format, &channel_map); - if (pbuf->stream) { + if (pbuf->stream || pbuf->probe_stream) { /* We're already in PAUSED or above, so just reuse this stream to query * sink formats and use those. */ GList *i; + const char *device_name = pa_stream_get_device_name (pbuf->stream ? + pbuf->stream : pbuf->probe_stream); - if (!(o = pa_context_get_sink_info_by_name (pbuf->context, psink->device, - gst_pulsesink_sink_info_cb, pbuf))) + if (!(o = pa_context_get_sink_info_by_name (pbuf->context, device_name, + gst_pulsesink_sink_info_cb, &device_info))) goto info_failed; while (pa_operation_get_state (o) == PA_OPERATION_RUNNING) { pa_threaded_mainloop_wait (mainloop); - if (gst_pulsering_is_dead (psink, pbuf, TRUE)) + if (gst_pulsering_is_dead (psink, pbuf, FALSE)) goto out; } - g_mutex_lock (&psink->sink_formats_lock); - for (i = g_list_first (psink->sink_formats); i; i = g_list_next (i)) { + for (i = g_list_first (device_info.formats); i; i = g_list_next (i)) { if (pa_format_info_is_compatible ((pa_format_info *) i->data, format)) { ret = TRUE; break; } } - g_mutex_unlock (&psink->sink_formats_lock); } else { /* We're in READY, let's connect a stream to see if the format is - * accpeted by whatever sink we're routed to */ - formats[0] = format; - - if (!(stream = pa_stream_new_extended (pbuf->context, "pulsesink probe", - formats, 1, psink->proplist))) - goto out; - - /* construct the flags */ - flags = PA_STREAM_INTERPOLATE_TIMING | PA_STREAM_AUTO_TIMING_UPDATE | - PA_STREAM_ADJUST_LATENCY | PA_STREAM_START_CORKED; - - pa_stream_set_state_callback (stream, gst_pulsering_stream_state_cb, pbuf); - - if (pa_stream_connect_playback (stream, psink->device, NULL, flags, NULL, - NULL) < 0) - goto out; - - ret = gst_pulsering_wait_for_stream_ready (psink, stream); + * accepted by whatever sink we're routed to */ + pbuf->probe_stream = gst_pulsesink_create_probe_stream (psink, pbuf, + format); + if (pbuf->probe_stream) + ret = TRUE; } out: @@ -2080,13 +2395,8 @@ out: if (o) pa_operation_unref (o); - if (stream) { - pa_stream_set_state_callback (stream, NULL, NULL); - pa_stream_disconnect (stream); - pa_stream_unref (stream); - } - pa_threaded_mainloop_unlock (mainloop); + GST_OBJECT_UNLOCK (pbuf); gst_caps_replace (&spec.caps, NULL); gst_object_unref (pbuf); @@ -2109,11 +2419,10 @@ gst_pulsesink_init (GstPulseSink * pulsesink) { pulsesink->server = NULL; pulsesink->device = NULL; - pulsesink->device_description = NULL; + pulsesink->device_info.description = NULL; pulsesink->client_name = gst_pulse_client_name (); - g_mutex_init (&pulsesink->sink_formats_lock); - pulsesink->sink_formats = NULL; + pulsesink->device_info.formats = NULL; pulsesink->volume = DEFAULT_VOLUME; pulsesink->volume_set = FALSE; @@ -2136,40 +2445,25 @@ gst_pulsesink_init (GstPulseSink * pulsesink) GST_AUDIO_BASE_SINK (pulsesink)->provided_clock = gst_audio_clock_new ("GstPulseSinkClock", (GstAudioClockGetTimeFunc) gst_pulsesink_get_time, pulsesink, NULL); - - /* TRUE for sinks, FALSE for sources */ - pulsesink->probe = gst_pulseprobe_new (G_OBJECT (pulsesink), - G_OBJECT_GET_CLASS (pulsesink), PROP_DEVICE, pulsesink->device, - TRUE, FALSE); } static void gst_pulsesink_finalize (GObject * object) { GstPulseSink *pulsesink = GST_PULSESINK_CAST (object); - GList *i; g_free (pulsesink->server); g_free (pulsesink->device); - g_free (pulsesink->device_description); g_free (pulsesink->client_name); + g_free (pulsesink->current_sink_name); - for (i = g_list_first (pulsesink->sink_formats); i; i = g_list_next (i)) - pa_format_info_free ((pa_format_info *) i->data); - - g_list_free (pulsesink->sink_formats); - g_mutex_clear (&pulsesink->sink_formats_lock); + free_device_info (&pulsesink->device_info); if (pulsesink->properties) gst_structure_free (pulsesink->properties); if (pulsesink->proplist) pa_proplist_free (pulsesink->proplist); - if (pulsesink->probe) { - gst_pulseprobe_free (pulsesink->probe); - pulsesink->probe = NULL; - } - G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -2335,18 +2629,25 @@ gst_pulsesink_sink_input_info_cb (pa_context * c, const pa_sink_input_info * i, if (i->index == pa_stream_get_index (pbuf->stream)) { psink->volume = pa_sw_volume_to_linear (pa_cvolume_max (&i->volume)); psink->mute = i->mute; + psink->current_sink_idx = i->sink; + + if (psink->volume > MAX_VOLUME) { + GST_WARNING_OBJECT (psink, "Clipped volume from %f to %f", psink->volume, + MAX_VOLUME); + psink->volume = MAX_VOLUME; + } } done: pa_threaded_mainloop_signal (mainloop, 0); } -static gdouble -gst_pulsesink_get_volume (GstPulseSink * psink) +static void +gst_pulsesink_get_sink_input_info (GstPulseSink * psink, gdouble * volume, + gboolean * mute) { GstPulseRingBuffer *pbuf; pa_operation *o = NULL; - gdouble v = DEFAULT_VOLUME; uint32_t idx; if (!mainloop) @@ -2372,26 +2673,28 @@ gst_pulsesink_get_volume (GstPulseSink * psink) } unlock: - v = psink->volume; + if (volume) + *volume = psink->volume; + if (mute) + *mute = psink->mute; if (o) pa_operation_unref (o); pa_threaded_mainloop_unlock (mainloop); - if (v > MAX_VOLUME) { - GST_WARNING_OBJECT (psink, "Clipped volume from %f to %f", v, MAX_VOLUME); - v = MAX_VOLUME; - } - - return v; + return; /* ERRORS */ no_mainloop: { - v = psink->volume; + if (volume) + *volume = psink->volume; + if (mute) + *mute = psink->mute; + GST_DEBUG_OBJECT (psink, "we have no mainloop"); - return v; + return; } no_buffer: { @@ -2412,65 +2715,84 @@ info_failed: } } -static gboolean -gst_pulsesink_get_mute (GstPulseSink * psink) +static void +gst_pulsesink_current_sink_info_cb (pa_context * c, const pa_sink_info * i, + int eol, void *userdata) +{ + GstPulseSink *psink; + + psink = GST_PULSESINK_CAST (userdata); + + if (!i) + goto done; + + /* If the index doesn't match our current stream, + * it implies we just recreated the stream (caps change) + */ + if (i->index == psink->current_sink_idx) { + g_free (psink->current_sink_name); + psink->current_sink_name = g_strdup (i->name); + } + +done: + pa_threaded_mainloop_signal (mainloop, 0); +} + +static gchar * +gst_pulsesink_get_current_device (GstPulseSink * pulsesink) { - GstPulseRingBuffer *pbuf; pa_operation *o = NULL; - uint32_t idx; - gboolean mute = FALSE; + GstPulseRingBuffer *pbuf; + gchar *current_sink; if (!mainloop) goto no_mainloop; - pa_threaded_mainloop_lock (mainloop); - mute = psink->mute; - - pbuf = GST_PULSERING_BUFFER_CAST (GST_AUDIO_BASE_SINK (psink)->ringbuffer); + pbuf = + GST_PULSERING_BUFFER_CAST (GST_AUDIO_BASE_SINK (pulsesink)->ringbuffer); if (pbuf == NULL || pbuf->stream == NULL) goto no_buffer; - if ((idx = pa_stream_get_index (pbuf->stream)) == PA_INVALID_INDEX) - goto no_index; + gst_pulsesink_get_sink_input_info (pulsesink, NULL, NULL); - if (!(o = pa_context_get_sink_input_info (pbuf->context, idx, - gst_pulsesink_sink_input_info_cb, pbuf))) + pa_threaded_mainloop_lock (mainloop); + + if (!(o = pa_context_get_sink_info_by_index (pbuf->context, + pulsesink->current_sink_idx, gst_pulsesink_current_sink_info_cb, + pulsesink))) goto info_failed; while (pa_operation_get_state (o) == PA_OPERATION_RUNNING) { pa_threaded_mainloop_wait (mainloop); - if (gst_pulsering_is_dead (psink, pbuf, TRUE)) + if (gst_pulsering_is_dead (pulsesink, pbuf, TRUE)) goto unlock; } unlock: + + current_sink = g_strdup (pulsesink->current_sink_name); + if (o) pa_operation_unref (o); pa_threaded_mainloop_unlock (mainloop); - return mute; + return current_sink; /* ERRORS */ no_mainloop: { - mute = psink->mute; - GST_DEBUG_OBJECT (psink, "we have no mainloop"); - return mute; + GST_DEBUG_OBJECT (pulsesink, "we have no mainloop"); + return NULL; } no_buffer: { - GST_DEBUG_OBJECT (psink, "we have no ringbuffer"); - goto unlock; - } -no_index: - { - GST_DEBUG_OBJECT (psink, "we don't have a stream index"); + GST_DEBUG_OBJECT (pulsesink, "we have no ringbuffer"); goto unlock; } info_failed: { - GST_ELEMENT_ERROR (psink, RESOURCE, FAILED, + GST_ELEMENT_ERROR (pulsesink, RESOURCE, FAILED, ("pa_context_get_sink_input_info() failed: %s", pa_strerror (pa_context_errno (pbuf->context))), (NULL)); goto unlock; @@ -2492,8 +2814,9 @@ gst_pulsesink_device_description (GstPulseSink * psink) if (pbuf == NULL) goto no_buffer; + free_device_info (&psink->device_info); if (!(o = pa_context_get_sink_info_by_name (pbuf->context, - psink->device, gst_pulsesink_sink_info_cb, pbuf))) + psink->device, gst_pulsesink_sink_info_cb, &psink->device_info))) goto info_failed; while (pa_operation_get_state (o) == PA_OPERATION_RUNNING) { @@ -2506,7 +2829,7 @@ unlock: if (o) pa_operation_unref (o); - t = g_strdup (psink->device_description); + t = g_strdup (psink->device_info.description); pa_threaded_mainloop_unlock (mainloop); return t; @@ -2531,6 +2854,67 @@ info_failed: } } +static void +gst_pulsesink_set_stream_device (GstPulseSink * psink, const gchar * device) +{ + pa_operation *o = NULL; + GstPulseRingBuffer *pbuf; + uint32_t idx; + + if (!mainloop) + goto no_mainloop; + + pa_threaded_mainloop_lock (mainloop); + + pbuf = GST_PULSERING_BUFFER_CAST (GST_AUDIO_BASE_SINK (psink)->ringbuffer); + if (pbuf == NULL || pbuf->stream == NULL) + goto no_buffer; + + if ((idx = pa_stream_get_index (pbuf->stream)) == PA_INVALID_INDEX) + goto no_index; + + + GST_DEBUG_OBJECT (psink, "setting stream device to %s", device); + + if (!(o = pa_context_move_sink_input_by_name (pbuf->context, idx, device, + NULL, NULL))) + goto move_failed; + +unlock: + + if (o) + pa_operation_unref (o); + + pa_threaded_mainloop_unlock (mainloop); + + return; + + /* ERRORS */ +no_mainloop: + { + GST_DEBUG_OBJECT (psink, "we have no mainloop"); + return; + } +no_buffer: + { + GST_DEBUG_OBJECT (psink, "we have no ringbuffer"); + goto unlock; + } +no_index: + { + GST_DEBUG_OBJECT (psink, "we don't have a stream index"); + return; + } +move_failed: + { + GST_ELEMENT_ERROR (psink, RESOURCE, FAILED, + ("pa_context_move_sink_input_by_name(%s) failed: %s", device, + pa_strerror (pa_context_errno (pbuf->context))), (NULL)); + goto unlock; + } +} + + static void gst_pulsesink_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) @@ -2541,12 +2925,11 @@ gst_pulsesink_set_property (GObject * object, case PROP_SERVER: g_free (pulsesink->server); pulsesink->server = g_value_dup_string (value); - if (pulsesink->probe) - gst_pulseprobe_set_server (pulsesink->probe, pulsesink->server); break; case PROP_DEVICE: g_free (pulsesink->device); pulsesink->device = g_value_dup_string (value); + gst_pulsesink_set_stream_device (pulsesink, pulsesink->device); break; case PROP_VOLUME: gst_pulsesink_set_volume (pulsesink, g_value_get_double (value)); @@ -2592,15 +2975,34 @@ gst_pulsesink_get_property (GObject * object, case PROP_DEVICE: g_value_set_string (value, pulsesink->device); break; + case PROP_CURRENT_DEVICE: + { + gchar *current_device = gst_pulsesink_get_current_device (pulsesink); + if (current_device) + g_value_take_string (value, current_device); + else + g_value_set_string (value, ""); + break; + } case PROP_DEVICE_NAME: g_value_take_string (value, gst_pulsesink_device_description (pulsesink)); break; case PROP_VOLUME: - g_value_set_double (value, gst_pulsesink_get_volume (pulsesink)); + { + gdouble volume; + + gst_pulsesink_get_sink_input_info (pulsesink, &volume, NULL); + g_value_set_double (value, volume); break; + } case PROP_MUTE: - g_value_set_boolean (value, gst_pulsesink_get_mute (pulsesink)); + { + gboolean mute; + + gst_pulsesink_get_sink_input_info (pulsesink, NULL, &mute); + g_value_set_boolean (value, mute); break; + } case PROP_CLIENT_NAME: g_value_set_string (value, pulsesink->client_name); break; @@ -2831,6 +3233,21 @@ gst_pulsesink_query (GstBaseSink * sink, GstQuery * query) gboolean ret; switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_CAPS: + { + GstCaps *caps, *filter; + + gst_query_parse_caps (query, &filter); + caps = gst_pulsesink_query_getcaps (pulsesink, filter); + + if (caps) { + gst_query_set_caps_result (query, caps); + gst_caps_unref (caps); + return TRUE; + } else { + return FALSE; + } + } case GST_QUERY_ACCEPT_CAPS: { GstCaps *caps; diff --git a/ext/pulse/pulsesink.h b/ext/pulse/pulsesink.h index a7a715f5a23419ae830d99cc022f6ea59a299b2a..de3b93281538b1bd9a23b4920ce02a0bac48868e 100644 --- a/ext/pulse/pulsesink.h +++ b/ext/pulse/pulsesink.h @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with gst-pulse; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA. */ @@ -29,12 +29,13 @@ #endif #include <gst/gst.h> +#include <gst/audio/audio.h> #include <gst/audio/gstaudiosink.h> #include <pulse/pulseaudio.h> #include <pulse/thread-mainloop.h> -#include "pulseprobe.h" +#include "pulseutil.h" G_BEGIN_DECLS @@ -54,19 +55,24 @@ G_BEGIN_DECLS typedef struct _GstPulseSink GstPulseSink; typedef struct _GstPulseSinkClass GstPulseSinkClass; +typedef struct _GstPulseDeviceInfo { + gchar *description; + GList *formats; +} GstPulseDeviceInfo; + struct _GstPulseSink { GstAudioBaseSink sink; gchar *server, *device, *stream_name, *client_name; - gchar *device_description; - - GstPulseProbe *probe; + GstPulseDeviceInfo device_info; gdouble volume; gboolean volume_set:1; gboolean mute:1; gboolean mute_set:1; + guint32 current_sink_idx; + gchar *current_sink_name; guint defer_pending; @@ -77,8 +83,6 @@ struct _GstPulseSink GstStructure *properties; pa_proplist *proplist; - GMutex sink_formats_lock; - GList *sink_formats; volatile gint format_lost; GstClockTime format_lost_time; }; @@ -90,38 +94,13 @@ struct _GstPulseSinkClass GType gst_pulsesink_get_type (void); -#if (G_BYTE_ORDER == G_LITTLE_ENDIAN) -# define FORMATS "{ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, " \ - "S24LE, S24BE, S24_32LE, S24_32BE, U8 }" -#else -# define FORMATS "{ S16BE, S16LE, F32BE, F32LE, S32BE, S32LE, " \ - "S24BE, S24LE, S24_32BE, S24_32LE, U8 }" -#endif - -#define _PULSE_SINK_CAPS_COMMON \ - "audio/x-raw, " \ - "format = (string) " FORMATS ", " \ - "layout = (string) interleaved, " \ - "rate = (int) [ 1, MAX ], " \ - "channels = (int) [ 1, 32 ];" \ - "audio/x-alaw, " \ - "rate = (int) [ 1, MAX], " \ - "channels = (int) [ 1, 32 ];" \ - "audio/x-mulaw, " \ - "rate = (int) [ 1, MAX], " \ - "channels = (int) [ 1, 32 ];" - -#define _PULSE_SINK_CAPS_1_0 \ - "audio/x-ac3, framed = (boolean) true;" \ - "audio/x-eac3, framed = (boolean) true; " \ - "audio/x-dts, framed = (boolean) true, " \ - "block-size = (int) { 512, 1024, 2048 }; " \ - "audio/mpeg, mpegversion = (int) 1, " \ - "mpegaudioversion = (int) [ 1, 2 ], parsed = (boolean) true;" - #define PULSE_SINK_TEMPLATE_CAPS \ - _PULSE_SINK_CAPS_COMMON \ - _PULSE_SINK_CAPS_1_0 + _PULSE_CAPS_PCM \ + _PULSE_CAPS_AC3 \ + _PULSE_CAPS_EAC3 \ + _PULSE_CAPS_DTS \ + _PULSE_CAPS_MP3 \ + _PULSE_CAPS_AAC G_END_DECLS diff --git a/ext/pulse/pulsesrc.c b/ext/pulse/pulsesrc.c index 12f847dfdf75171720813c45cd16f1bdf5afcd7b..2786794641edaa1a9a1f0dfaffdfe272b3171586 100644 --- a/ext/pulse/pulsesrc.c +++ b/ext/pulse/pulsesrc.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with gst-pulse; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA. */ @@ -43,7 +43,7 @@ #include <gst/base/gstbasesrc.h> #include <gst/gsttaglist.h> -#include <gst/audio/streamvolume.h> +#include <gst/audio/audio.h> #include "pulsesrc.h" #include "pulseutil.h" @@ -53,6 +53,7 @@ GST_DEBUG_CATEGORY_EXTERN (pulse_debug); #define DEFAULT_SERVER NULL #define DEFAULT_DEVICE NULL +#define DEFAULT_CURRENT_DEVICE NULL #define DEFAULT_DEVICE_NAME NULL #define DEFAULT_VOLUME 1.0 @@ -65,6 +66,7 @@ enum PROP_SERVER, PROP_DEVICE, PROP_DEVICE_NAME, + PROP_CURRENT_DEVICE, PROP_CLIENT_NAME, PROP_STREAM_PROPERTIES, PROP_SOURCE_OUTPUT_INDEX, @@ -107,28 +109,12 @@ static GstStateChangeReturn gst_pulsesrc_change_state (GstElement * static GstClockTime gst_pulsesrc_get_time (GstClock * clock, GstPulseSrc * src); -#if (G_BYTE_ORDER == G_LITTLE_ENDIAN) -# define FORMATS "{ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, U8 }" -#else -# define FORMATS "{ S16BE, S16LE, F32BE, F32LE, S32BE, S32LE, U8 }" -#endif - static GstStaticPadTemplate pad_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-raw, " - "format = (string) " FORMATS ", " - "layout = (string) interleaved, " - "rate = (int) [ 1, MAX ], " - "channels = (int) [ 1, 32 ];" - "audio/x-alaw, " - "rate = (int) [ 1, MAX], " - "channels = (int) [ 1, 32 ];" - "audio/x-mulaw, " - "rate = (int) [ 1, MAX], " "channels = (int) [ 1, 32 ]") + GST_STATIC_CAPS (_PULSE_CAPS_PCM) ); - #define gst_pulsesrc_parent_class parent_class G_DEFINE_TYPE_WITH_CODE (GstPulseSrc, gst_pulsesrc, GST_TYPE_AUDIO_SRC, G_IMPLEMENT_INTERFACE (GST_TYPE_STREAM_VOLUME, NULL)); @@ -172,6 +158,11 @@ gst_pulsesrc_class_init (GstPulseSrcClass * klass) "The PulseAudio source device to connect to", DEFAULT_DEVICE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_CURRENT_DEVICE, + g_param_spec_string ("current-device", "Current Device", + "The current PulseAudio source device", DEFAULT_CURRENT_DEVICE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_DEVICE_NAME, g_param_spec_string ("device-name", "Device name", @@ -290,8 +281,6 @@ gst_pulsesrc_init (GstPulseSrc * pulsesrc) pulsesrc->properties = NULL; pulsesrc->proplist = NULL; - pulsesrc->probe = gst_pulseprobe_new (G_OBJECT (pulsesrc), G_OBJECT_GET_CLASS (pulsesrc), PROP_DEVICE, pulsesrc->server, FALSE, TRUE); /* FALSE for sinks, TRUE for sources */ - /* this should be the default but it isn't yet */ gst_audio_base_src_set_slave_method (GST_AUDIO_BASE_SRC (pulsesrc), GST_AUDIO_BASE_SRC_SLAVE_SKEW); @@ -348,17 +337,13 @@ gst_pulsesrc_finalize (GObject * object) g_free (pulsesrc->server); g_free (pulsesrc->device); g_free (pulsesrc->client_name); + g_free (pulsesrc->current_source_name); if (pulsesrc->properties) gst_structure_free (pulsesrc->properties); if (pulsesrc->proplist) pa_proplist_free (pulsesrc->proplist); - if (pulsesrc->probe) { - gst_pulseprobe_free (pulsesrc->probe); - pulsesrc->probe = NULL; - } - G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -468,17 +453,24 @@ gst_pulsesrc_source_output_info_cb (pa_context * c, if (i->index == psrc->source_output_idx) { psrc->volume = pa_sw_volume_to_linear (pa_cvolume_max (&i->volume)); psrc->mute = i->mute; + psrc->current_source_idx = i->source; + + if (G_UNLIKELY (psrc->volume > MAX_VOLUME)) { + GST_WARNING_OBJECT (psrc, "Clipped volume from %f to %f", + psrc->volume, MAX_VOLUME); + psrc->volume = MAX_VOLUME; + } } done: pa_threaded_mainloop_signal (psrc->mainloop, 0); } -static gdouble -gst_pulsesrc_get_stream_volume (GstPulseSrc * pulsesrc) +static void +gst_pulsesrc_get_source_output_info (GstPulseSrc * pulsesrc, gdouble * volume, + gboolean * mute) { pa_operation *o = NULL; - gdouble v; if (!pulsesrc->mainloop) goto no_mainloop; @@ -500,33 +492,37 @@ gst_pulsesrc_get_stream_volume (GstPulseSrc * pulsesrc) } unlock: - v = pulsesrc->volume; + + if (volume) + *volume = pulsesrc->volume; + if (mute) + *mute = pulsesrc->mute; if (o) pa_operation_unref (o); pa_threaded_mainloop_unlock (pulsesrc->mainloop); - if (v > MAX_VOLUME) { - GST_WARNING_OBJECT (pulsesrc, "Clipped volume from %f to %f", v, - MAX_VOLUME); - v = MAX_VOLUME; - } - - return v; + return; /* ERRORS */ no_mainloop: { - v = pulsesrc->volume; GST_DEBUG_OBJECT (pulsesrc, "we have no mainloop"); - return v; + if (volume) + *volume = pulsesrc->volume; + if (mute) + *mute = pulsesrc->mute; + return; } no_index: { - v = pulsesrc->volume; GST_DEBUG_OBJECT (pulsesrc, "we don't have a stream index"); - return v; + if (volume) + *volume = pulsesrc->volume; + if (mute) + *mute = pulsesrc->mute; + return; } info_failed: { @@ -537,11 +533,34 @@ info_failed: } } -static gboolean -gst_pulsesrc_get_stream_mute (GstPulseSrc * pulsesrc) +static void +gst_pulsesrc_current_source_info_cb (pa_context * c, const pa_source_info * i, + int eol, void *userdata) +{ + GstPulseSrc *psrc; + + psrc = GST_PULSESRC_CAST (userdata); + + if (!i) + goto done; + + /* If the index doesn't match our current stream, + * it implies we just recreated the stream (caps change) + */ + if (i->index == psrc->current_source_idx) { + g_free (psrc->current_source_name); + psrc->current_source_name = g_strdup (i->name); + } + +done: + pa_threaded_mainloop_signal (psrc->mainloop, 0); +} + +static gchar * +gst_pulsesrc_get_current_device (GstPulseSrc * pulsesrc) { pa_operation *o = NULL; - gboolean mute; + gchar *current_src; if (!pulsesrc->mainloop) goto no_mainloop; @@ -549,10 +568,13 @@ gst_pulsesrc_get_stream_mute (GstPulseSrc * pulsesrc) if (pulsesrc->source_output_idx == PA_INVALID_INDEX) goto no_index; + gst_pulsesrc_get_source_output_info (pulsesrc, NULL, NULL); + pa_threaded_mainloop_lock (pulsesrc->mainloop); - if (!(o = pa_context_get_source_output_info (pulsesrc->context, - pulsesrc->source_output_idx, gst_pulsesrc_source_output_info_cb, + + if (!(o = pa_context_get_source_info_by_index (pulsesrc->context, + pulsesrc->current_source_idx, gst_pulsesrc_current_source_info_cb, pulsesrc))) goto info_failed; @@ -563,27 +585,26 @@ gst_pulsesrc_get_stream_mute (GstPulseSrc * pulsesrc) } unlock: - mute = pulsesrc->mute; + + current_src = g_strdup (pulsesrc->current_source_name); if (o) pa_operation_unref (o); pa_threaded_mainloop_unlock (pulsesrc->mainloop); - return mute; + return current_src; /* ERRORS */ no_mainloop: { - mute = pulsesrc->mute; GST_DEBUG_OBJECT (pulsesrc, "we have no mainloop"); - return mute; + return NULL; } no_index: { - mute = pulsesrc->mute; GST_DEBUG_OBJECT (pulsesrc, "we don't have a stream index"); - return mute; + return NULL; } info_failed: { @@ -703,6 +724,55 @@ mute_failed: } } +static void +gst_pulsesrc_set_stream_device (GstPulseSrc * pulsesrc, const gchar * device) +{ + pa_operation *o = NULL; + + if (!pulsesrc->mainloop) + goto no_mainloop; + + if (!pulsesrc->source_output_idx) + goto no_index; + + pa_threaded_mainloop_lock (pulsesrc->mainloop); + + GST_DEBUG_OBJECT (pulsesrc, "setting stream device to %s", device); + + if (!(o = pa_context_move_source_output_by_name (pulsesrc->context, + pulsesrc->source_output_idx, device, NULL, NULL))) + goto move_failed; + +unlock: + + if (o) + pa_operation_unref (o); + + pa_threaded_mainloop_unlock (pulsesrc->mainloop); + + return; + + /* ERRORS */ +no_mainloop: + { + GST_DEBUG_OBJECT (pulsesrc, "we have no mainloop"); + return; + } +no_index: + { + GST_DEBUG_OBJECT (pulsesrc, "we don't have a stream index"); + return; + } +move_failed: + { + GST_ELEMENT_ERROR (pulsesrc, RESOURCE, FAILED, + ("pa_context_move_source_output_by_name(%s) failed: %s", + device, pa_strerror (pa_context_errno (pulsesrc->context))), + (NULL)); + goto unlock; + } +} + static void gst_pulsesrc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) @@ -714,12 +784,11 @@ gst_pulsesrc_set_property (GObject * object, case PROP_SERVER: g_free (pulsesrc->server); pulsesrc->server = g_value_dup_string (value); - if (pulsesrc->probe) - gst_pulseprobe_set_server (pulsesrc->probe, pulsesrc->server); break; case PROP_DEVICE: g_free (pulsesrc->device); pulsesrc->device = g_value_dup_string (value); + gst_pulsesrc_set_stream_device (pulsesrc, pulsesrc->device); break; case PROP_CLIENT_NAME: g_free (pulsesrc->client_name); @@ -765,6 +834,15 @@ gst_pulsesrc_get_property (GObject * object, case PROP_DEVICE: g_value_set_string (value, pulsesrc->device); break; + case PROP_CURRENT_DEVICE: + { + gchar *current_device = gst_pulsesrc_get_current_device (pulsesrc); + if (current_device) + g_value_take_string (value, current_device); + else + g_value_set_string (value, ""); + break; + } case PROP_DEVICE_NAME: g_value_take_string (value, gst_pulsesrc_device_description (pulsesrc)); break; @@ -778,11 +856,19 @@ gst_pulsesrc_get_property (GObject * object, g_value_set_uint (value, pulsesrc->source_output_idx); break; case PROP_VOLUME: - g_value_set_double (value, gst_pulsesrc_get_stream_volume (pulsesrc)); + { + gdouble volume; + gst_pulsesrc_get_source_output_info (pulsesrc, &volume, NULL); + g_value_set_double (value, volume); break; + } case PROP_MUTE: - g_value_set_boolean (value, gst_pulsesrc_get_stream_mute (pulsesrc)); + { + gboolean mute; + gst_pulsesrc_get_source_output_info (pulsesrc, NULL, &mute); + g_value_set_boolean (value, mute); break; + } default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1004,6 +1090,7 @@ gst_pulsesrc_read (GstAudioSrc * asrc, gpointer data, guint length, if (g_atomic_int_compare_and_exchange (&pulsesrc->notify, 1, 0)) { g_object_notify (G_OBJECT (pulsesrc), "volume"); g_object_notify (G_OBJECT (pulsesrc), "mute"); + g_object_notify (G_OBJECT (pulsesrc), "current-device"); } pa_threaded_mainloop_lock (pulsesrc->mainloop); diff --git a/ext/pulse/pulsesrc.h b/ext/pulse/pulsesrc.h index 18ba1522cf2b9e9ed3c0bbfeaf008742d8808389..efa7d97edc9e91467783be83f1ba359aa71d636b 100644 --- a/ext/pulse/pulsesrc.h +++ b/ext/pulse/pulsesrc.h @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with gst-pulse; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA. */ @@ -30,8 +30,6 @@ #include <pulse/pulseaudio.h> #include <pulse/thread-mainloop.h> -#include "pulseprobe.h" - G_BEGIN_DECLS #define GST_TYPE_PULSESRC \ @@ -68,12 +66,13 @@ struct _GstPulseSrc size_t read_buffer_length; gchar *device_description; - GstPulseProbe *probe; gdouble volume; gboolean volume_set:1; gboolean mute:1; gboolean mute_set:1; + guint32 current_source_idx; + gchar *current_source_name; gint notify; /* atomic */ diff --git a/ext/pulse/pulseutil.c b/ext/pulse/pulseutil.c index 2066c8e1553091372317818f3f49d11e1be78109..89ed1068f31d191197d4263e00db954b5d3acab4 100644 --- a/ext/pulse/pulseutil.c +++ b/ext/pulse/pulseutil.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with gst-pulse; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA. */ @@ -23,6 +23,8 @@ #include "config.h" #endif +#include <gst/audio/audio.h> + #include "pulseutil.h" #ifdef HAVE_UNISTD_H @@ -162,6 +164,13 @@ gst_pulse_fill_format_info (GstAudioRingBufferSpec * spec, pa_format_info ** f, format->encoding = PA_ENCODING_DTS_IEC61937; } else if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG) { format->encoding = PA_ENCODING_MPEG_IEC61937; +#if PA_CHECK_VERSION(3,99,0) + } else if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG2_AAC) { + format->encoding = PA_ENCODING_MPEG2_AAC_IEC61937; + } else if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG4_AAC) { + /* HACK. treat MPEG4 AAC as MPEG2 AAC for the moment */ + format->encoding = PA_ENCODING_MPEG2_AAC_IEC61937; +#endif } else { goto fail; } @@ -187,6 +196,48 @@ fail: return FALSE; } +const char * +gst_pulse_sample_format_to_caps_format (pa_sample_format_t sf) +{ + switch (sf) { + case PA_SAMPLE_U8: + return "U8"; + + case PA_SAMPLE_S16LE: + return "S16LE"; + + case PA_SAMPLE_S16BE: + return "S16BE"; + + case PA_SAMPLE_FLOAT32LE: + return "F32LE"; + + case PA_SAMPLE_FLOAT32BE: + return "F32BE"; + + case PA_SAMPLE_S32LE: + return "S32LE"; + + case PA_SAMPLE_S32BE: + return "S32BE"; + + case PA_SAMPLE_S24LE: + return "S24LE"; + + case PA_SAMPLE_S24BE: + return "S24BE"; + + case PA_SAMPLE_S24_32LE: + return "S24_32LE"; + + case PA_SAMPLE_S24_32BE: + return "S24_32BE"; + + default: + return NULL; + } +} + /* PATH_MAX is not defined everywhere, e.g. on GNU Hurd */ #ifndef PATH_MAX #define PATH_MAX 4096 diff --git a/ext/pulse/pulseutil.h b/ext/pulse/pulseutil.h index 8b50fa58a1927d2aca3a2755ed449e07539eb47e..d558afac20626f7eafcaf16a91c349fe3178202e 100644 --- a/ext/pulse/pulseutil.h +++ b/ext/pulse/pulseutil.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with gst-pulse; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA. */ @@ -31,10 +31,50 @@ #include <gst/audio/gstaudioringbuffer.h> #include <gst/audio/gstaudiosink.h> + +#if (G_BYTE_ORDER == G_LITTLE_ENDIAN) +# define _PULSE_FORMATS "{ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, " \ + "S24LE, S24BE, S24_32LE, S24_32BE, U8 }" +#else +# define _PULSE_FORMATS "{ S16BE, S16LE, F32BE, F32LE, S32BE, S32LE, " \ + "S24BE, S24LE, S24_32BE, S24_32LE, U8 }" +#endif + +#define _PULSE_CAPS_LINEAR \ + "audio/x-raw, " \ + "format = (string) " _PULSE_FORMATS ", " \ + "layout = (string) interleaved, " \ + "rate = (int) [ 1, MAX ], " \ + "channels = (int) [ 1, 32 ]; " +#define _PULSE_CAPS_ALAW \ + "audio/x-alaw, " \ + "rate = (int) [ 1, MAX], " \ + "channels = (int) [ 1, 32 ]; " +#define _PULSE_CAPS_MULAW \ + "audio/x-mulaw, " \ + "rate = (int) [ 1, MAX], " \ + "channels = (int) [ 1, 32 ]; " + +#define _PULSE_CAPS_AC3 "audio/x-ac3, framed = (boolean) true; " +#define _PULSE_CAPS_EAC3 "audio/x-eac3, framed = (boolean) true; " +#define _PULSE_CAPS_DTS "audio/x-dts, framed = (boolean) true, " \ + "block-size = (int) { 512, 1024, 2048 }; " +#define _PULSE_CAPS_MP3 "audio/mpeg, mpegversion = (int) 1, " \ + "mpegaudioversion = (int) [ 1, 2 ], parsed = (boolean) true;" +#define _PULSE_CAPS_AAC "audio/mpeg, mpegversion = (int) { 2, 4 }, " \ + "framed = (boolean) true, stream-format = (string) adts;" + +#define _PULSE_CAPS_PCM \ + _PULSE_CAPS_LINEAR \ + _PULSE_CAPS_ALAW \ + _PULSE_CAPS_MULAW + + gboolean gst_pulse_fill_sample_spec (GstAudioRingBufferSpec * spec, pa_sample_spec * ss); gboolean gst_pulse_fill_format_info (GstAudioRingBufferSpec * spec, pa_format_info ** f, guint * channels); +const char * gst_pulse_sample_format_to_caps_format (pa_sample_format_t sf); gchar *gst_pulse_client_name (void); diff --git a/ext/raw1394/Makefile.in b/ext/raw1394/Makefile.in index a9a25a420f0570c98fa15b13119b293522f67627..41e3ae00099c5d25a5915b45081796bdb31e46cf 100644 --- a/ext/raw1394/Makefile.in +++ b/ext/raw1394/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/raw1394 -DIST_COMMON = $(am__noinst_HEADERS_DIST) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(am__noinst_HEADERS_DIST) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -141,10 +167,23 @@ libgst1394_la_OBJECTS = $(am_libgst1394_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgst1394_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgst1394_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgst1394_la_CFLAGS) $(CFLAGS) \ $(libgst1394_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -157,20 +196,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgst1394_la_SOURCES) DIST_SOURCES = $(am__libgst1394_la_SOURCES_DIST) am__can_run_installinfo = \ @@ -181,6 +216,23 @@ am__can_run_installinfo = \ am__noinst_HEADERS_DIST = gstdv1394src.h gst1394probe.h \ gsthdv1394src.h gst1394clock.h HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -348,6 +400,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -568,6 +621,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -594,12 +648,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgst1394.la: $(libgst1394_la_OBJECTS) $(libgst1394_la_DEPENDENCIES) $(EXTRA_libgst1394_la_DEPENDENCIES) $(AM_V_CCLD)$(libgst1394_la_LINK) -rpath $(plugindir) $(libgst1394_la_OBJECTS) $(libgst1394_la_LIBADD) $(LIBS) @@ -616,22 +673,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgst1394_la-gsthdv1394src.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -677,26 +737,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -708,15 +757,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -725,6 +770,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -869,19 +929,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/raw1394/gst1394.c b/ext/raw1394/gst1394.c index b74c644072cfd01b5a26805ba231f76c22d5ddf5..77a9e93935379fb9b5bcba3659df5085e4448a8f 100644 --- a/ext/raw1394/gst1394.c +++ b/ext/raw1394/gst1394.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/raw1394/gst1394clock.c b/ext/raw1394/gst1394clock.c index 0505c8cb1c7921b2d66cab5f04cd018d8e22a93a..977ba00b3a73b7bda0ea1ee261ea253e8632a265 100644 --- a/ext/raw1394/gst1394clock.c +++ b/ext/raw1394/gst1394clock.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -97,7 +97,8 @@ Gst1394Clock * gst_1394_clock_new (const gchar * name) { Gst1394Clock *_1394clock = - GST_1394_CLOCK (g_object_new (GST_TYPE_1394_CLOCK, "name", name, NULL)); + GST_1394_CLOCK (g_object_new (GST_TYPE_1394_CLOCK, "name", name, + "clock-type", GST_CLOCK_TYPE_OTHER, NULL)); return _1394clock; } diff --git a/ext/raw1394/gst1394clock.h b/ext/raw1394/gst1394clock.h index ab7594d071542bb1fc14c586ce7f41c01c85fa34..411251e2d689fd1433baa78523eff2460a98bfa6 100644 --- a/ext/raw1394/gst1394clock.h +++ b/ext/raw1394/gst1394clock.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_1394_CLOCK_H__ diff --git a/ext/raw1394/gst1394probe.c b/ext/raw1394/gst1394probe.c index 1118aad547ae1b1c79ae59b002697f737af79baf..2d11a01c10fa475a95912d30a6883d421679dac0 100644 --- a/ext/raw1394/gst1394probe.c +++ b/ext/raw1394/gst1394probe.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <libavc1394/avc1394.h> diff --git a/ext/raw1394/gst1394probe.h b/ext/raw1394/gst1394probe.h index 85af8d306ce8b96234d86ac7da32f65b915990c0..54a323266c1ea5b367bc9a9a8382d19e7589ccc8 100644 --- a/ext/raw1394/gst1394probe.h +++ b/ext/raw1394/gst1394probe.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef GST_1394_PROBE_H diff --git a/ext/raw1394/gstdv1394src.c b/ext/raw1394/gstdv1394src.c index af2c15326a44b619cab04ca2bae5cc12ccb88cff..b9e3232d87810115ce344341c63a75ae0559d647 100644 --- a/ext/raw1394/gstdv1394src.c +++ b/ext/raw1394/gstdv1394src.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-dv1394src diff --git a/ext/raw1394/gstdv1394src.h b/ext/raw1394/gstdv1394src.h index bf9a3e07128a41cdbf571281c3878d73d4311621..e2f330817daa014e82cbc008e7d27080e64ad020 100644 --- a/ext/raw1394/gstdv1394src.h +++ b/ext/raw1394/gstdv1394src.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/raw1394/gsthdv1394src.c b/ext/raw1394/gsthdv1394src.c index 7106a89fcabe4858b2f4d84d2694142e8d8d024c..0bfa485c55357a7153335ebf7086167678280339 100644 --- a/ext/raw1394/gsthdv1394src.c +++ b/ext/raw1394/gsthdv1394src.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-hdv1394src diff --git a/ext/raw1394/gsthdv1394src.h b/ext/raw1394/gsthdv1394src.h index a6014a478be1ea8c439ba6f1a179a0e5f32635d3..6ae863c899b97c9cc6b491dc6c70e1e9c89881be 100644 --- a/ext/raw1394/gsthdv1394src.h +++ b/ext/raw1394/gsthdv1394src.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/shout2/Makefile.in b/ext/shout2/Makefile.in index 9a5878bc70be034deb3b948b2d7c5e743806ae15..d812986644110587dee64ff81d549f5419a9c711 100644 --- a/ext/shout2/Makefile.in +++ b/ext/shout2/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/shout2 -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -135,10 +161,23 @@ libgstshout2_la_OBJECTS = $(am_libgstshout2_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstshout2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstshout2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstshout2_la_CFLAGS) $(CFLAGS) \ $(libgstshout2_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -151,20 +190,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstshout2_la_SOURCES) DIST_SOURCES = $(libgstshout2_la_SOURCES) am__can_run_installinfo = \ @@ -173,6 +208,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -340,6 +392,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -541,6 +594,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -567,12 +621,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstshout2.la: $(libgstshout2_la_OBJECTS) $(libgstshout2_la_DEPENDENCIES) $(EXTRA_libgstshout2_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstshout2_la_LINK) -rpath $(plugindir) $(libgstshout2_la_OBJECTS) $(libgstshout2_la_LIBADD) $(LIBS) @@ -585,22 +642,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstshout2_la-gstshout2.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -618,26 +678,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -649,15 +698,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -666,6 +711,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -810,19 +870,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/shout2/gstshout2.c b/ext/shout2/gstshout2.c index 72541b04cda726a3378d6c567443c48cba9ae0a9..cc58453ac27a46fb4e0c679518d38089493f11a6 100644 --- a/ext/shout2/gstshout2.c +++ b/ext/shout2/gstshout2.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -799,7 +799,6 @@ static gboolean plugin_init (GstPlugin * plugin) { #ifdef ENABLE_NLS - setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif /* ENABLE_NLS */ diff --git a/ext/shout2/gstshout2.h b/ext/shout2/gstshout2.h index 1e3cd5bd1b675b08ae1c79fa733e3fbfcc0748b1..eb7b2d933564c33c37d5850ff2f6d075cb63a6ca 100644 --- a/ext/shout2/gstshout2.h +++ b/ext/shout2/gstshout2.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/soup/Makefile.am b/ext/soup/Makefile.am index a1c9985a4ac412b8e25fb00dc1854b4430bc3f6f..e34fe87866067f645e63827a9a9726686d014407 100644 --- a/ext/soup/Makefile.am +++ b/ext/soup/Makefile.am @@ -2,7 +2,10 @@ plugin_LTLIBRARIES = libgstsouphttpsrc.la libgstsouphttpsrc_la_SOURCES = gstsouphttpsrc.c gstsouphttpclientsink.c gstsoup.c -libgstsouphttpsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(SOUP_CFLAGS) +libgstsouphttpsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) \ + $(GST_CFLAGS) $(SOUP_CFLAGS) \ + -DSOUP_VERSION_MIN_REQUIRED=SOUP_VERSION_2_26 \ + -DSOUP_VERSION_MAX_ALLOWED=SOUP_DEPRECATED_IN_2_26 libgstsouphttpsrc_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgsttag-@GST_API_VERSION@ $(GST_BASE_LIBS) $(SOUP_LIBS) libgstsouphttpsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstsouphttpsrc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) diff --git a/ext/soup/Makefile.in b/ext/soup/Makefile.in index b83259bd9aee98d2b692c3a046cd2ba44fe475cc..091b908ea344794f8796dcde1bd7a432bede7dc6 100644 --- a/ext/soup/Makefile.in +++ b/ext/soup/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/soup -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -138,10 +164,23 @@ libgstsouphttpsrc_la_OBJECTS = $(am_libgstsouphttpsrc_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstsouphttpsrc_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstsouphttpsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstsouphttpsrc_la_CFLAGS) $(CFLAGS) \ $(libgstsouphttpsrc_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -154,20 +193,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstsouphttpsrc_la_SOURCES) DIST_SOURCES = $(libgstsouphttpsrc_la_SOURCES) am__can_run_installinfo = \ @@ -176,6 +211,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -343,6 +395,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -505,7 +558,11 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ plugin_LTLIBRARIES = libgstsouphttpsrc.la libgstsouphttpsrc_la_SOURCES = gstsouphttpsrc.c gstsouphttpclientsink.c gstsoup.c -libgstsouphttpsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(SOUP_CFLAGS) +libgstsouphttpsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) \ + $(GST_CFLAGS) $(SOUP_CFLAGS) \ + -DSOUP_VERSION_MIN_REQUIRED=SOUP_VERSION_2_26 \ + -DSOUP_VERSION_MAX_ALLOWED=SOUP_DEPRECATED_IN_2_26 + libgstsouphttpsrc_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgsttag-@GST_API_VERSION@ $(GST_BASE_LIBS) $(SOUP_LIBS) libgstsouphttpsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstsouphttpsrc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) @@ -544,6 +601,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -570,12 +628,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstsouphttpsrc.la: $(libgstsouphttpsrc_la_OBJECTS) $(libgstsouphttpsrc_la_DEPENDENCIES) $(EXTRA_libgstsouphttpsrc_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstsouphttpsrc_la_LINK) -rpath $(plugindir) $(libgstsouphttpsrc_la_OBJECTS) $(libgstsouphttpsrc_la_LIBADD) $(LIBS) @@ -590,22 +651,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsouphttpsrc_la-gstsouphttpsrc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -637,26 +701,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -668,15 +721,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -685,6 +734,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -829,19 +893,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/soup/gstsouphttpclientsink.h b/ext/soup/gstsouphttpclientsink.h index d8ed3da85a1a9bf2cf6277827335f50c19bc9056..5c7dda62faabb67c24344f39ba1bc5b6ab3367cf 100644 --- a/ext/soup/gstsouphttpclientsink.h +++ b/ext/soup/gstsouphttpclientsink.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GST_SOUP_HTTP_CLIENT_SINK_H_ diff --git a/ext/soup/gstsouphttpsrc.c b/ext/soup/gstsouphttpsrc.c index f547cab52991dbd6e67a5b18240b15c37766005c..aa2d0ad3fc909d249751c38cb709305030244801 100644 --- a/ext/soup/gstsouphttpsrc.c +++ b/ext/soup/gstsouphttpsrc.c @@ -77,11 +77,7 @@ #endif #include <gst/gstelement.h> #include <gst/gst-i18n-plugin.h> -#ifdef HAVE_LIBSOUP_GNOME -#include <libsoup/soup-gnome.h> -#else #include <libsoup/soup.h> -#endif #include "gstsouphttpsrc.h" #include <gst/tag/tag.h> @@ -140,13 +136,15 @@ static gboolean gst_soup_http_src_set_location (GstSoupHTTPSrc * src, static gboolean gst_soup_http_src_set_proxy (GstSoupHTTPSrc * src, const gchar * uri); static char *gst_soup_http_src_unicodify (const char *str); -static gboolean gst_soup_http_src_build_message (GstSoupHTTPSrc * src); +static gboolean gst_soup_http_src_build_message (GstSoupHTTPSrc * src, + const gchar * method); static void gst_soup_http_src_cancel_message (GstSoupHTTPSrc * src); static void gst_soup_http_src_queue_message (GstSoupHTTPSrc * src); static gboolean gst_soup_http_src_add_range_header (GstSoupHTTPSrc * src, - guint64 offset); + guint64 offset, guint64 stop_offset); static void gst_soup_http_src_session_unpause_message (GstSoupHTTPSrc * src); static void gst_soup_http_src_session_pause_message (GstSoupHTTPSrc * src); +static gboolean gst_soup_http_src_session_open (GstSoupHTTPSrc * src); static void gst_soup_http_src_session_close (GstSoupHTTPSrc * src); static void gst_soup_http_src_parse_status (SoupMessage * msg, GstSoupHTTPSrc * src); @@ -277,9 +275,11 @@ gst_soup_http_src_reset (GstSoupHTTPSrc * src) src->interrupted = FALSE; src->retry = FALSE; src->have_size = FALSE; + src->got_headers = FALSE; src->seekable = FALSE; src->read_position = 0; src->request_position = 0; + src->stop_position = -1; src->content_size = 0; gst_caps_replace (&src->src_caps, NULL); @@ -296,7 +296,10 @@ gst_soup_http_src_init (GstSoupHTTPSrc * src) { const gchar *proxy; + g_mutex_init (&src->mutex); + g_cond_init (&src->request_finished_cond); src->location = NULL; + src->redirection_uri = NULL; src->automatic_redirect = TRUE; src->user_agent = g_strdup (DEFAULT_USER_AGENT); src->user_id = NULL; @@ -326,7 +329,12 @@ gst_soup_http_src_finalize (GObject * gobject) GST_DEBUG_OBJECT (src, "finalize"); + g_mutex_clear (&src->mutex); + g_cond_clear (&src->request_finished_cond); g_free (src->location); + if (src->redirection_uri) { + g_free (src->redirection_uri); + } g_free (src->user_agent); if (src->proxy != NULL) { soup_uri_free (src->proxy); @@ -526,15 +534,22 @@ gst_soup_http_src_queue_message (GstSoupHTTPSrc * src) } static gboolean -gst_soup_http_src_add_range_header (GstSoupHTTPSrc * src, guint64 offset) +gst_soup_http_src_add_range_header (GstSoupHTTPSrc * src, guint64 offset, + guint64 stop_offset) { gchar buf[64]; gint rc; soup_message_headers_remove (src->msg->request_headers, "Range"); - if (offset) { - rc = g_snprintf (buf, sizeof (buf), "bytes=%" G_GUINT64_FORMAT "-", offset); + if (offset || stop_offset != -1) { + if (stop_offset != -1) { + rc = g_snprintf (buf, sizeof (buf), "bytes=%" G_GUINT64_FORMAT "-%" + G_GUINT64_FORMAT, offset, stop_offset); + } else { + rc = g_snprintf (buf, sizeof (buf), "bytes=%" G_GUINT64_FORMAT "-", + offset); + } if (rc > sizeof (buf) || rc < 0) return FALSE; soup_message_headers_append (src->msg->request_headers, "Range", buf); @@ -631,6 +646,57 @@ gst_soup_http_src_session_pause_message (GstSoupHTTPSrc * src) soup_session_pause_message (src->session, src->msg); } +static gboolean +gst_soup_http_src_session_open (GstSoupHTTPSrc * src) +{ + if (src->session) { + GST_DEBUG_OBJECT (src, "Session is already open"); + return TRUE; + } + + if (!src->location) { + GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (_("No URL set.")), + ("Missing location property")); + return FALSE; + } + + src->context = g_main_context_new (); + + src->loop = g_main_loop_new (src->context, TRUE); + if (!src->loop) { + GST_ELEMENT_ERROR (src, LIBRARY, INIT, + (NULL), ("Failed to start GMainLoop")); + g_main_context_unref (src->context); + return FALSE; + } + + GST_DEBUG_OBJECT (src, "Creating session"); + if (src->proxy == NULL) { + src->session = + soup_session_async_new_with_options (SOUP_SESSION_ASYNC_CONTEXT, + src->context, SOUP_SESSION_USER_AGENT, src->user_agent, + SOUP_SESSION_TIMEOUT, src->timeout, + SOUP_SESSION_ADD_FEATURE_BY_TYPE, SOUP_TYPE_PROXY_RESOLVER_DEFAULT, + NULL); + } else { + src->session = + soup_session_async_new_with_options (SOUP_SESSION_ASYNC_CONTEXT, + src->context, SOUP_SESSION_PROXY_URI, src->proxy, + SOUP_SESSION_TIMEOUT, src->timeout, + SOUP_SESSION_USER_AGENT, src->user_agent, NULL); + } + + if (!src->session) { + GST_ELEMENT_ERROR (src, LIBRARY, INIT, + (NULL), ("Failed to create async session")); + return FALSE; + } + + g_signal_connect (src->session, "authenticate", + G_CALLBACK (gst_soup_http_src_authenticate_cb), src); + return TRUE; +} + static void gst_soup_http_src_session_close (GstSoupHTTPSrc * src) { @@ -682,8 +748,10 @@ gst_soup_http_src_got_headers_cb (SoupMessage * msg, GstSoupHTTPSrc * src) return; if (src->automatic_redirect && SOUP_STATUS_IS_REDIRECTION (msg->status_code)) { + src->redirection_uri = g_strdup (soup_message_headers_get_one + (msg->response_headers, "Location")); GST_DEBUG_OBJECT (src, "%u redirect to \"%s\"", msg->status_code, - soup_message_headers_get_one (msg->response_headers, "Location")); + src->redirection_uri); return; } @@ -691,6 +759,7 @@ gst_soup_http_src_got_headers_cb (SoupMessage * msg, GstSoupHTTPSrc * src) return; src->session_io_status = GST_SOUP_HTTP_SRC_SESSION_IO_STATUS_RUNNING; + src->got_headers = TRUE; /* Parse Content-Length. */ if (soup_message_headers_get_encoding (msg->response_headers) == @@ -829,6 +898,7 @@ gst_soup_http_src_got_headers_cb (SoupMessage * msg, GstSoupHTTPSrc * src) if (src->loop) g_main_loop_quit (src->loop); } + g_cond_signal (&src->request_finished_cond); } /* Have body. Signal EOS. */ @@ -873,13 +943,19 @@ gst_soup_http_src_finished_cb (SoupMessage * msg, GstSoupHTTPSrc * src) src->ret = GST_FLOW_CUSTOM_ERROR; } else if (G_UNLIKELY (src->session_io_status != GST_SOUP_HTTP_SRC_SESSION_IO_STATUS_RUNNING)) { - /* FIXME: reason_phrase is not translated, add proper error message */ - GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, - ("%s", msg->reason_phrase), - ("libsoup status code %d", msg->status_code)); + if (msg->method == SOUP_METHOD_HEAD) { + GST_DEBUG_OBJECT (src, "Ignoring error %d:%s during HEAD request", + msg->status_code, msg->reason_phrase); + } else { + /* FIXME: reason_phrase is not translated, add proper error message */ + GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, + ("%s", msg->reason_phrase), + ("libsoup status code %d", msg->status_code)); + } } if (src->loop) g_main_loop_quit (src->loop); + g_cond_signal (&src->request_finished_cond); } /* Buffer lifecycle management. @@ -994,6 +1070,16 @@ gst_soup_http_src_got_chunk_cb (SoupMessage * msg, SoupBuffer * chunk, src->request_position = new_position; src->read_position = new_position; + if (src->content_size != 0 && new_position > src->content_size) { + GST_DEBUG_OBJECT (src, "Got position previous estimated content size " + "(%" G_GINT64_FORMAT " > %" G_GINT64_FORMAT ")", new_position, + src->content_size); + src->content_size = new_position; + basesrc->segment.duration = src->content_size; + gst_element_post_message (GST_ELEMENT (src), + gst_message_new_duration_changed (GST_OBJECT (src))); + } + src->ret = GST_FLOW_OK; g_main_loop_quit (src->loop); gst_soup_http_src_session_pause_message (src); @@ -1036,7 +1122,11 @@ gst_soup_http_src_response_cb (SoupSession * session, SoupMessage * msg, static void gst_soup_http_src_parse_status (SoupMessage * msg, GstSoupHTTPSrc * src) { - if (SOUP_STATUS_IS_TRANSPORT_ERROR (msg->status_code)) { + if (msg->method == SOUP_METHOD_HEAD) { + if (!SOUP_STATUS_IS_SUCCESSFUL (msg->status_code)) + GST_DEBUG_OBJECT (src, "Ignoring error %d during HEAD request", + msg->status_code); + } else if (SOUP_STATUS_IS_TRANSPORT_ERROR (msg->status_code)) { switch (msg->status_code) { case SOUP_STATUS_CANT_RESOLVE: case SOUP_STATUS_CANT_RESOLVE_PROXY: @@ -1086,9 +1176,9 @@ gst_soup_http_src_parse_status (SoupMessage * msg, GstSoupHTTPSrc * src) } static gboolean -gst_soup_http_src_build_message (GstSoupHTTPSrc * src) +gst_soup_http_src_build_message (GstSoupHTTPSrc * src, const gchar * method) { - src->msg = soup_message_new (SOUP_METHOD_GET, src->location); + src->msg = soup_message_new (method, src->location); if (!src->msg) { GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, ("Error parsing URL."), ("URL: %s", src->location)); @@ -1123,7 +1213,8 @@ gst_soup_http_src_build_message (GstSoupHTTPSrc * src) (src->automatic_redirect ? 0 : SOUP_MESSAGE_NO_REDIRECT)); soup_message_set_chunk_allocator (src->msg, gst_soup_http_src_chunk_allocator, src, NULL); - gst_soup_http_src_add_range_header (src, src->request_position); + gst_soup_http_src_add_range_header (src, src->request_position, + src->stop_position); gst_soup_http_src_add_extra_headers (src); @@ -1135,19 +1226,14 @@ gst_soup_http_src_build_message (GstSoupHTTPSrc * src) } static GstFlowReturn -gst_soup_http_src_create (GstPushSrc * psrc, GstBuffer ** outbuf) +gst_soup_http_src_do_request (GstSoupHTTPSrc * src, const gchar * method, + GstBuffer ** outbuf) { - GstSoupHTTPSrc *src; - - src = GST_SOUP_HTTP_SRC (psrc); - + GST_LOG_OBJECT (src, "Running request for method: %s", method); if (src->msg && (src->request_position != src->read_position)) { - if (src->content_size != 0 && src->request_position >= src->content_size) { - GST_WARNING_OBJECT (src, "Seeking behind the end of file -- EOS"); - return GST_FLOW_EOS; - } else if (src->session_io_status == - GST_SOUP_HTTP_SRC_SESSION_IO_STATUS_IDLE) { - gst_soup_http_src_add_range_header (src, src->request_position); + if (src->session_io_status == GST_SOUP_HTTP_SRC_SESSION_IO_STATUS_IDLE) { + gst_soup_http_src_add_range_header (src, src->request_position, + src->stop_position); } else { GST_DEBUG_OBJECT (src, "Seek from position %" G_GUINT64_FORMAT " to %" G_GUINT64_FORMAT ": requeueing connection request", @@ -1156,8 +1242,9 @@ gst_soup_http_src_create (GstPushSrc * psrc, GstBuffer ** outbuf) } } if (!src->msg) - if (!gst_soup_http_src_build_message (src)) + if (!gst_soup_http_src_build_message (src, method)) { return GST_FLOW_ERROR; + } src->ret = GST_FLOW_CUSTOM_ERROR; src->outbuf = outbuf; @@ -1168,8 +1255,9 @@ gst_soup_http_src_create (GstPushSrc * psrc, GstBuffer ** outbuf) } if (src->retry) { GST_DEBUG_OBJECT (src, "Reconnecting"); - if (!gst_soup_http_src_build_message (src)) + if (!gst_soup_http_src_build_message (src, method)) { return GST_FLOW_ERROR; + } src->retry = FALSE; continue; } @@ -1199,9 +1287,24 @@ gst_soup_http_src_create (GstPushSrc * psrc, GstBuffer ** outbuf) if (src->ret == GST_FLOW_CUSTOM_ERROR) src->ret = GST_FLOW_EOS; + g_cond_signal (&src->request_finished_cond); return src->ret; } +static GstFlowReturn +gst_soup_http_src_create (GstPushSrc * psrc, GstBuffer ** outbuf) +{ + GstSoupHTTPSrc *src; + GstFlowReturn ret; + + src = GST_SOUP_HTTP_SRC (psrc); + + g_mutex_lock (&src->mutex); + ret = gst_soup_http_src_do_request (src, SOUP_METHOD_GET, outbuf); + g_mutex_unlock (&src->mutex); + return ret; +} + static gboolean gst_soup_http_src_start (GstBaseSrc * bsrc) { @@ -1209,48 +1312,7 @@ gst_soup_http_src_start (GstBaseSrc * bsrc) GST_DEBUG_OBJECT (src, "start(\"%s\")", src->location); - if (!src->location) { - GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (_("No URL set.")), - ("Missing location property")); - return FALSE; - } - - src->context = g_main_context_new (); - - src->loop = g_main_loop_new (src->context, TRUE); - if (!src->loop) { - GST_ELEMENT_ERROR (src, LIBRARY, INIT, - (NULL), ("Failed to start GMainLoop")); - g_main_context_unref (src->context); - return FALSE; - } - - if (src->proxy == NULL) { - src->session = - soup_session_async_new_with_options (SOUP_SESSION_ASYNC_CONTEXT, - src->context, SOUP_SESSION_USER_AGENT, src->user_agent, - SOUP_SESSION_TIMEOUT, src->timeout, -#ifdef HAVE_LIBSOUP_GNOME - SOUP_SESSION_ADD_FEATURE_BY_TYPE, SOUP_TYPE_PROXY_RESOLVER_GNOME, -#endif - NULL); - } else { - src->session = - soup_session_async_new_with_options (SOUP_SESSION_ASYNC_CONTEXT, - src->context, SOUP_SESSION_PROXY_URI, src->proxy, - SOUP_SESSION_TIMEOUT, src->timeout, - SOUP_SESSION_USER_AGENT, src->user_agent, NULL); - } - - if (!src->session) { - GST_ELEMENT_ERROR (src, LIBRARY, INIT, - (NULL), ("Failed to create async session")); - return FALSE; - } - - g_signal_connect (src->session, "authenticate", - G_CALLBACK (gst_soup_http_src_authenticate_cb), src); - return TRUE; + return gst_soup_http_src_session_open (src); } static gboolean @@ -1288,6 +1350,7 @@ gst_soup_http_src_unlock (GstBaseSrc * bsrc) src->interrupted = TRUE; if (src->loop) g_main_loop_quit (src->loop); + g_cond_signal (&src->request_finished_cond); return TRUE; } @@ -1321,11 +1384,46 @@ gst_soup_http_src_get_size (GstBaseSrc * bsrc, guint64 * size) return FALSE; } +static void +gst_soup_http_src_check_seekable (GstSoupHTTPSrc * src) +{ + GstFlowReturn ret = GST_FLOW_OK; + + /* Special case to check if the server allows range requests + * before really starting to get data in the buffer creation + * loops. + */ + if (!src->got_headers && GST_STATE (src) >= GST_STATE_PAUSED) { + g_mutex_lock (&src->mutex); + while (!src->got_headers && !src->interrupted && ret == GST_FLOW_OK) { + if ((src->msg && src->msg->method != SOUP_METHOD_HEAD) && + src->session_io_status != GST_SOUP_HTTP_SRC_SESSION_IO_STATUS_IDLE) { + /* wait for the current request to finish */ + g_cond_wait (&src->request_finished_cond, &src->mutex); + } else { + if (gst_soup_http_src_session_open (src)) { + ret = gst_soup_http_src_do_request (src, SOUP_METHOD_HEAD, NULL); + } + } + } + if (src->ret == GST_FLOW_EOS) { + /* A HEAD request shouldn't lead to EOS */ + src->ret = GST_FLOW_OK; + } + /* resets status to idle */ + gst_soup_http_src_cancel_message (src); + g_mutex_unlock (&src->mutex); + } + +} + static gboolean gst_soup_http_src_is_seekable (GstBaseSrc * bsrc) { GstSoupHTTPSrc *src = GST_SOUP_HTTP_SRC (bsrc); + gst_soup_http_src_check_seekable (src); + return src->seekable; } @@ -1334,15 +1432,21 @@ gst_soup_http_src_do_seek (GstBaseSrc * bsrc, GstSegment * segment) { GstSoupHTTPSrc *src = GST_SOUP_HTTP_SRC (bsrc); - GST_DEBUG_OBJECT (src, "do_seek(%" G_GUINT64_FORMAT ")", segment->start); - + GST_DEBUG_OBJECT (src, "do_seek(%" G_GUINT64_FORMAT "-%" G_GUINT64_FORMAT + ")", segment->start, segment->stop); if (src->read_position == segment->start && - src->request_position == src->read_position) { - GST_DEBUG_OBJECT (src, "Seek to current read position and no seek pending"); + src->request_position == src->read_position && + src->stop_position == segment->stop) { + GST_DEBUG_OBJECT (src, + "Seek to current read/end position and no seek pending"); return TRUE; } - if (!src->seekable) { + gst_soup_http_src_check_seekable (src); + + /* If we have no headers we don't know yet if it is seekable or not. + * Store the start position and error out later if it isn't */ + if (src->got_headers && !src->seekable) { GST_WARNING_OBJECT (src, "Not seekable"); return FALSE; } @@ -1353,11 +1457,13 @@ gst_soup_http_src_do_seek (GstBaseSrc * bsrc, GstSegment * segment) } if (src->content_size != 0 && segment->start >= src->content_size) { - GST_WARNING_OBJECT (src, "Seeking behind end of file, will go to EOS soon"); + GST_WARNING_OBJECT (src, + "Potentially seeking behind end of file, might EOS immediately"); } /* Wait for create() to handle the jump in offset. */ src->request_position = segment->start; + src->stop_position = segment->stop; return TRUE; } @@ -1366,10 +1472,14 @@ gst_soup_http_src_query (GstBaseSrc * bsrc, GstQuery * query) { GstSoupHTTPSrc *src = GST_SOUP_HTTP_SRC (bsrc); gboolean ret; + GstSchedulingFlags flags; + gint minsize, maxsize, align; switch (GST_QUERY_TYPE (query)) { case GST_QUERY_URI: gst_query_set_uri (query, src->location); + if (src->redirection_uri != NULL) + gst_query_set_uri_redirection (query, src->redirection_uri); ret = TRUE; break; default: @@ -1380,6 +1490,16 @@ gst_soup_http_src_query (GstBaseSrc * bsrc, GstQuery * query) if (!ret) ret = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query); + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_SCHEDULING: + gst_query_parse_scheduling (query, &flags, &minsize, &maxsize, &align); + flags |= GST_SCHEDULING_FLAG_BANDWIDTH_LIMITED; + gst_query_set_scheduling (query, flags, minsize, maxsize, align); + break; + default: + break; + } + return ret; } @@ -1406,6 +1526,11 @@ gst_soup_http_src_set_location (GstSoupHTTPSrc * src, const gchar * uri, } } + if (src->redirection_uri) { + g_free (src->redirection_uri); + src->redirection_uri = NULL; + } + src->location = g_strdup (uri); return TRUE; diff --git a/ext/soup/gstsouphttpsrc.h b/ext/soup/gstsouphttpsrc.h index 491b69d4715ca2a04beddc942bbd70cee8b5bfe8..594dfaa2506c0733610bd0748e1972ecdcf9f0c6 100644 --- a/ext/soup/gstsouphttpsrc.h +++ b/ext/soup/gstsouphttpsrc.h @@ -49,6 +49,7 @@ struct _GstSoupHTTPSrc { GstPushSrc element; gchar *location; /* Full URI. */ + gchar *redirection_uri; /* Full URI after redirections. */ gchar *user_agent; /* User-Agent HTTP header. */ gboolean automatic_redirect; /* Follow redirects. */ SoupURI *proxy; /* HTTP proxy URI. */ @@ -68,6 +69,7 @@ struct _GstSoupHTTPSrc { gboolean interrupted; /* Signal unlock(). */ gboolean retry; /* Should attempt to reconnect. */ + gboolean got_headers; /* Already received headers from the server */ gboolean have_size; /* Received and parsed Content-Length header. */ guint64 content_size; /* Value of Content-Length header. */ @@ -75,6 +77,7 @@ struct _GstSoupHTTPSrc { gboolean seekable; /* FALSE if the server does not support Range. */ guint64 request_position; /* Seek to this position. */ + guint64 stop_position; /* Stop at this position. */ /* Shoutcast/icecast metadata extraction handling. */ gboolean iradio_mode; @@ -86,6 +89,9 @@ struct _GstSoupHTTPSrc { GstStructure *extra_headers; guint timeout; + + GMutex mutex; + GCond request_finished_cond; }; struct _GstSoupHTTPSrcClass { diff --git a/ext/speex/Makefile.in b/ext/speex/Makefile.in index 703662658258fd782c2c79af3f159603fc10ccf5..1b110f6936525f7f8fc7f44656f09a63fba21698 100644 --- a/ext/speex/Makefile.in +++ b/ext/speex/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/speex -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,10 +163,23 @@ libgstspeex_la_OBJECTS = $(am_libgstspeex_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstspeex_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstspeex_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstspeex_la_CFLAGS) $(CFLAGS) \ $(libgstspeex_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +192,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstspeex_la_SOURCES) DIST_SOURCES = $(libgstspeex_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +210,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +394,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -554,6 +607,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -580,12 +634,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstspeex.la: $(libgstspeex_la_OBJECTS) $(libgstspeex_la_DEPENDENCIES) $(EXTRA_libgstspeex_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstspeex_la_LINK) -rpath $(plugindir) $(libgstspeex_la_OBJECTS) $(libgstspeex_la_LIBADD) $(LIBS) @@ -600,22 +657,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstspeex_la-gstspeexenc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -647,26 +707,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -678,15 +727,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -695,6 +740,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -839,19 +899,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/speex/gstspeex.c b/ext/speex/gstspeex.c index 67dc52e67b7d20bf1103d76bbf7327be1fdf1faf..9688cd5c2e14ed9e5ff84c67c7db1c73ad63db61 100644 --- a/ext/speex/gstspeex.c +++ b/ext/speex/gstspeex.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include <config.h> diff --git a/ext/speex/gstspeexdec.c b/ext/speex/gstspeexdec.c index cd788043d6861263db17eab48945aeb203de35c1..8f9da2adef694a1d6d71e1eb807d6a949a8c09d3 100644 --- a/ext/speex/gstspeexdec.c +++ b/ext/speex/gstspeexdec.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/ext/speex/gstspeexdec.h b/ext/speex/gstspeexdec.h index 8187af87ce79d58fe2c3dd88e42ec39c4dda3011..ce45e813c5f5394dff82ac2d6f5f8e7fe47e9a95 100644 --- a/ext/speex/gstspeexdec.h +++ b/ext/speex/gstspeexdec.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/speex/gstspeexenc.c b/ext/speex/gstspeexenc.c index 23c172ddd014185e126cf937783e632a3a8880a0..c17e8a3988323119bab2bf0abbc1e3717ca63a32 100644 --- a/ext/speex/gstspeexenc.c +++ b/ext/speex/gstspeexenc.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/ext/speex/gstspeexenc.h b/ext/speex/gstspeexenc.h index 17cb1e2df5dd543a513dcc6c7cb34910013b953d..8d9568dc429454085c398cd20b2ad8ee1c043a04 100644 --- a/ext/speex/gstspeexenc.h +++ b/ext/speex/gstspeexenc.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ext/taglib/Makefile.in b/ext/taglib/Makefile.in index 9592aff695c14e6ca4e195e7144c543b23687868..611758e24eb9ad27c67a2d195607da2aaa7000fb 100644 --- a/ext/taglib/Makefile.in +++ b/ext/taglib/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/taglib -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,10 +162,23 @@ libgsttaglib_la_OBJECTS = $(am_libgsttaglib_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgsttaglib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(libgsttaglib_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CXXLD) $(libgsttaglib_la_CXXFLAGS) $(CXXFLAGS) \ $(libgsttaglib_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -152,17 +191,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ @@ -171,17 +209,16 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = SOURCES = $(libgsttaglib_la_SOURCES) DIST_SOURCES = $(libgsttaglib_la_SOURCES) am__can_run_installinfo = \ @@ -190,6 +227,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -357,6 +411,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -571,6 +626,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -597,12 +653,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgsttaglib.la: $(libgsttaglib_la_OBJECTS) $(libgsttaglib_la_DEPENDENCIES) $(EXTRA_libgsttaglib_la_DEPENDENCIES) $(AM_V_CXXLD)$(libgsttaglib_la_LINK) -rpath $(plugindir) $(libgsttaglib_la_OBJECTS) $(libgsttaglib_la_LIBADD) $(LIBS) @@ -617,22 +676,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsttaglib_la-gsttaglibplugin.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -645,22 +707,25 @@ libgsttaglib_la-gsttaglibplugin.lo: gsttaglibplugin.c @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttaglib_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttaglib_la_CFLAGS) $(CFLAGS) -c -o libgsttaglib_la-gsttaglibplugin.lo `test -f 'gsttaglibplugin.c' || echo '$(srcdir)/'`gsttaglibplugin.c .cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< @@ -685,26 +750,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -716,15 +770,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -733,6 +783,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -877,19 +942,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/taglib/gstapev2mux.cc b/ext/taglib/gstapev2mux.cc index f3c6287461b8f37fe546ddd16768a1f22831b981..eb46f823ecb0303d0894d69306eda6c31d3f5043 100644 --- a/ext/taglib/gstapev2mux.cc +++ b/ext/taglib/gstapev2mux.cc @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/ext/taglib/gstapev2mux.h b/ext/taglib/gstapev2mux.h index 9539a6add9881908060cf0fd100edf01c84f4237..8eceb571423ac6c697897da2c215161baaee0b19 100644 --- a/ext/taglib/gstapev2mux.h +++ b/ext/taglib/gstapev2mux.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef GST_APEV2_MUX_H diff --git a/ext/taglib/gstid3v2mux.cc b/ext/taglib/gstid3v2mux.cc index 50c36c4876a150c5c4b08e0458a2bc97892ccaf4..c345142c1b19796d84c143629ad35557a6ae2577 100644 --- a/ext/taglib/gstid3v2mux.cc +++ b/ext/taglib/gstid3v2mux.cc @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/ext/taglib/gstid3v2mux.h b/ext/taglib/gstid3v2mux.h index 1a66b95d51f7219b0390fd381647b9e419c27cd7..36c748fc4b0564df0ddacd9d9e814fcb6e0d1653 100644 --- a/ext/taglib/gstid3v2mux.h +++ b/ext/taglib/gstid3v2mux.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef GST_ID3V2_MUX_H diff --git a/ext/taglib/gsttaglibplugin.c b/ext/taglib/gsttaglibplugin.c index 281a06602f41b2b5d44458c71a8f29cc0ce1fb7f..dce6bf6d174b04737f3ee9f301e760ee62e0de55 100644 --- a/ext/taglib/gsttaglibplugin.c +++ b/ext/taglib/gsttaglibplugin.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/ext/vpx/Makefile.am b/ext/vpx/Makefile.am index 10b0b3523ee233410132d9fb21448737f138eb69..17636385c12c4b31ec31abfb516155d925cd92f7 100644 --- a/ext/vpx/Makefile.am +++ b/ext/vpx/Makefile.am @@ -5,6 +5,8 @@ libgstvpx_la_SOURCES = \ gstvp8dec.c \ gstvp8enc.c \ gstvp8utils.c \ + gstvp9dec.c \ + gstvp9enc.c \ plugin.c libgstvpx_la_CFLAGS = \ @@ -22,6 +24,8 @@ libgstvpx_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ gstvp8dec.h \ gstvp8enc.h \ + gstvp9dec.h \ + gstvp9enc.h \ gstvp8utils.h presetdir = $(datadir)/gstreamer-$(GST_API_VERSION)/presets diff --git a/ext/vpx/Makefile.in b/ext/vpx/Makefile.in index 49c0a59ac0522a89e662080dce405456d5c9250e..092c3b38813b3957c0f7bb98c0f23539df077369 100644 --- a/ext/vpx/Makefile.in +++ b/ext/vpx/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -18,23 +17,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -55,15 +82,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/vpx -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -134,15 +160,29 @@ libgstvpx_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_libgstvpx_la_OBJECTS = libgstvpx_la-gstvp8dec.lo \ libgstvpx_la-gstvp8enc.lo libgstvpx_la-gstvp8utils.lo \ + libgstvpx_la-gstvp9dec.lo libgstvpx_la-gstvp9enc.lo \ libgstvpx_la-plugin.lo libgstvpx_la_OBJECTS = $(am_libgstvpx_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstvpx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstvpx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstvpx_la_CFLAGS) $(CFLAGS) \ $(libgstvpx_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -155,20 +195,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstvpx_la_SOURCES) DIST_SOURCES = $(libgstvpx_la_SOURCES) am__can_run_installinfo = \ @@ -178,6 +214,23 @@ am__can_run_installinfo = \ esac DATA = $(preset_DATA) HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -345,6 +398,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -512,6 +566,8 @@ libgstvpx_la_SOURCES = \ gstvp8dec.c \ gstvp8enc.c \ gstvp8utils.c \ + gstvp9dec.c \ + gstvp9enc.c \ plugin.c libgstvpx_la_CFLAGS = \ @@ -530,6 +586,8 @@ libgstvpx_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ gstvp8dec.h \ gstvp8enc.h \ + gstvp9dec.h \ + gstvp9enc.h \ gstvp8utils.h presetdir = $(datadir)/gstreamer-$(GST_API_VERSION)/presets @@ -569,6 +627,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -595,12 +654,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstvpx.la: $(libgstvpx_la_OBJECTS) $(libgstvpx_la_DEPENDENCIES) $(EXTRA_libgstvpx_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstvpx_la_LINK) -rpath $(plugindir) $(libgstvpx_la_OBJECTS) $(libgstvpx_la_LIBADD) $(LIBS) @@ -613,25 +675,30 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvpx_la-gstvp8dec.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvpx_la-gstvp8enc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvpx_la-gstvp8utils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvpx_la-gstvp9dec.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvpx_la-gstvp9enc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvpx_la-plugin.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -657,6 +724,20 @@ libgstvpx_la-gstvp8utils.lo: gstvp8utils.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 $(libgstvpx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvpx_la_CFLAGS) $(CFLAGS) -c -o libgstvpx_la-gstvp8utils.lo `test -f 'gstvp8utils.c' || echo '$(srcdir)/'`gstvp8utils.c +libgstvpx_la-gstvp9dec.lo: gstvp9dec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvpx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvpx_la_CFLAGS) $(CFLAGS) -MT libgstvpx_la-gstvp9dec.lo -MD -MP -MF $(DEPDIR)/libgstvpx_la-gstvp9dec.Tpo -c -o libgstvpx_la-gstvp9dec.lo `test -f 'gstvp9dec.c' || echo '$(srcdir)/'`gstvp9dec.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvpx_la-gstvp9dec.Tpo $(DEPDIR)/libgstvpx_la-gstvp9dec.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstvp9dec.c' object='libgstvpx_la-gstvp9dec.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 $(libgstvpx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvpx_la_CFLAGS) $(CFLAGS) -c -o libgstvpx_la-gstvp9dec.lo `test -f 'gstvp9dec.c' || echo '$(srcdir)/'`gstvp9dec.c + +libgstvpx_la-gstvp9enc.lo: gstvp9enc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvpx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvpx_la_CFLAGS) $(CFLAGS) -MT libgstvpx_la-gstvp9enc.lo -MD -MP -MF $(DEPDIR)/libgstvpx_la-gstvp9enc.Tpo -c -o libgstvpx_la-gstvp9enc.lo `test -f 'gstvp9enc.c' || echo '$(srcdir)/'`gstvp9enc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvpx_la-gstvp9enc.Tpo $(DEPDIR)/libgstvpx_la-gstvp9enc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstvp9enc.c' object='libgstvpx_la-gstvp9enc.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 $(libgstvpx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvpx_la_CFLAGS) $(CFLAGS) -c -o libgstvpx_la-gstvp9enc.lo `test -f 'gstvp9enc.c' || echo '$(srcdir)/'`gstvp9enc.c + libgstvpx_la-plugin.lo: plugin.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvpx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvpx_la_CFLAGS) $(CFLAGS) -MT libgstvpx_la-plugin.lo -MD -MP -MF $(DEPDIR)/libgstvpx_la-plugin.Tpo -c -o libgstvpx_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvpx_la-plugin.Tpo $(DEPDIR)/libgstvpx_la-plugin.Plo @@ -691,26 +772,15 @@ uninstall-presetDATA: files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(presetdir)'; $(am__uninstall_files_from_dir) -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -722,15 +792,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -739,6 +805,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -883,20 +964,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES uninstall-presetDATA .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-presetDATA install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES \ - uninstall-presetDATA +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-presetDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-pluginLTLIBRARIES uninstall-presetDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/vpx/gstvp8dec.c b/ext/vpx/gstvp8dec.c index eff013f50798c5449fd7546f749848a85a7c1867..d583e1f4e3aa5ad515b5306cee1804ccdce20279 100644 --- a/ext/vpx/gstvp8dec.c +++ b/ext/vpx/gstvp8dec.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ /** @@ -106,7 +106,7 @@ static gboolean gst_vp8_dec_start (GstVideoDecoder * decoder); static gboolean gst_vp8_dec_stop (GstVideoDecoder * decoder); static gboolean gst_vp8_dec_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state); -static gboolean gst_vp8_dec_reset (GstVideoDecoder * decoder, gboolean hard); +static gboolean gst_vp8_dec_flush (GstVideoDecoder * decoder); static GstFlowReturn gst_vp8_dec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame); static gboolean gst_vp8_dec_decide_allocation (GstVideoDecoder * decoder, @@ -184,7 +184,7 @@ gst_vp8_dec_class_init (GstVP8DecClass * klass) base_video_decoder_class->start = GST_DEBUG_FUNCPTR (gst_vp8_dec_start); base_video_decoder_class->stop = GST_DEBUG_FUNCPTR (gst_vp8_dec_stop); - base_video_decoder_class->reset = GST_DEBUG_FUNCPTR (gst_vp8_dec_reset); + base_video_decoder_class->flush = GST_DEBUG_FUNCPTR (gst_vp8_dec_flush); base_video_decoder_class->set_format = GST_DEBUG_FUNCPTR (gst_vp8_dec_set_format); base_video_decoder_class->handle_frame = @@ -324,11 +324,11 @@ gst_vp8_dec_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state) } static gboolean -gst_vp8_dec_reset (GstVideoDecoder * base_video_decoder, gboolean hard) +gst_vp8_dec_flush (GstVideoDecoder * base_video_decoder) { GstVP8Dec *decoder; - GST_DEBUG_OBJECT (base_video_decoder, "reset"); + GST_DEBUG_OBJECT (base_video_decoder, "flush"); decoder = GST_VP8_DEC (base_video_decoder); @@ -415,7 +415,13 @@ open_codec (GstVP8Dec * dec, GstVideoCodecFrame * frame) gst_buffer_unmap (frame->input_buffer, &minfo); - if (status != VPX_CODEC_OK || !stream_info.is_kf) { + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (dec, "VPX preprocessing error: %s", + gst_vpx_error_name (status)); + gst_video_decoder_finish_frame (GST_VIDEO_DECODER (dec), frame); + return GST_FLOW_CUSTOM_SUCCESS_1; + } + if (!stream_info.is_kf) { GST_WARNING_OBJECT (dec, "No keyframe, skipping"); gst_video_decoder_finish_frame (GST_VIDEO_DECODER (dec), frame); return GST_FLOW_CUSTOM_SUCCESS_1; @@ -521,6 +527,14 @@ gst_vp8_dec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame) img = vpx_codec_get_frame (&dec->decoder, &iter); if (img) { + if (img->fmt != VPX_IMG_FMT_I420) { + vpx_img_free (img); + GST_ELEMENT_ERROR (decoder, LIBRARY, ENCODE, + ("Failed to decode frame"), ("Unsupported color format %d", + img->fmt)); + return GST_FLOW_ERROR; + } + if (deadline < 0) { GST_LOG_OBJECT (dec, "Skipping late frame (%f s past deadline)", (double) -deadline / GST_SECOND); diff --git a/ext/vpx/gstvp8dec.h b/ext/vpx/gstvp8dec.h index c2aaebc8362229d2e51a7a5bf206d8fff9cf45db..8692f01310f64f3d055144008ba48447edf6c891 100644 --- a/ext/vpx/gstvp8dec.h +++ b/ext/vpx/gstvp8dec.h @@ -15,14 +15,20 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ #ifndef __GST_VP8_DEC_H__ #define __GST_VP8_DEC_H__ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_VP8_DECODER + #include <gst/gst.h> #include <gst/video/gstvideodecoder.h> @@ -81,4 +87,6 @@ GType gst_vp8_dec_get_type (void); G_END_DECLS +#endif + #endif /* __GST_VP8_DEC_H__ */ diff --git a/ext/vpx/gstvp8enc.c b/ext/vpx/gstvp8enc.c index bd1012a21a67c7fd0ac1981a6461dc1566eab88f..d68cdff7c019efaeb788f47506a189249cd6de9c 100644 --- a/ext/vpx/gstvp8enc.c +++ b/ext/vpx/gstvp8enc.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ /** @@ -60,13 +60,12 @@ #define GLIB_DISABLE_DEPRECATION_WARNINGS #include <gst/tag/tag.h> +#include <gst/video/video.h> #include <string.h> #include "gstvp8utils.h" #include "gstvp8enc.h" -#include <gst/video/gstvideometa.h> - GST_DEBUG_CATEGORY_STATIC (gst_vp8enc_debug); #define GST_CAT_DEFAULT gst_vp8enc_debug @@ -147,6 +146,8 @@ gst_vp8_enc_user_data_free (GstVP8EncUserData * user_data) #define DEFAULT_TUNING VP8_TUNE_PSNR #define DEFAULT_CQ_LEVEL 10 #define DEFAULT_MAX_INTRA_BITRATE_PCT 0 +#define DEFAULT_TIMEBASE_N 0 +#define DEFAULT_TIMEBASE_D 1 enum { @@ -193,7 +194,8 @@ enum PROP_ARNR_TYPE, PROP_TUNING, PROP_CQ_LEVEL, - PROP_MAX_INTRA_BITRATE_PCT + PROP_MAX_INTRA_BITRATE_PCT, + PROP_TIMEBASE }; #define GST_VP8_ENC_END_USAGE_TYPE (gst_vp8_enc_end_usage_get_type()) @@ -394,8 +396,7 @@ GST_STATIC_PAD_TEMPLATE ("src", #define parent_class gst_vp8_enc_parent_class G_DEFINE_TYPE_WITH_CODE (GstVP8Enc, gst_vp8_enc, GST_TYPE_VIDEO_ENCODER, G_IMPLEMENT_INTERFACE (GST_TYPE_TAG_SETTER, NULL); - G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL); - ); + G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL);); static void gst_vp8_enc_class_init (GstVP8EncClass * klass) @@ -701,6 +702,12 @@ gst_vp8_enc_class_init (GstVP8EncClass * klass) 0, G_MAXINT, DEFAULT_MAX_INTRA_BITRATE_PCT, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + g_object_class_install_property (gobject_class, PROP_TIMEBASE, + gst_param_spec_fraction ("timebase", "Shortest interframe time", + "Fraction of one second that is the shortest interframe time - normally left as zero which will default to the framerate", + 0, 1, G_MAXINT, 1, DEFAULT_TIMEBASE_N, DEFAULT_TIMEBASE_D, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + GST_DEBUG_CATEGORY_INIT (gst_vp8enc_debug, "vp8enc", 0, "VP8 Encoder"); } @@ -769,6 +776,8 @@ gst_vp8_enc_init (GstVP8Enc * gst_vp8_enc) gst_vp8_enc->tuning = DEFAULT_TUNING; gst_vp8_enc->cq_level = DEFAULT_CQ_LEVEL; gst_vp8_enc->max_intra_bitrate_pct = DEFAULT_MAX_INTRA_BITRATE_PCT; + gst_vp8_enc->timebase_n = DEFAULT_TIMEBASE_N; + gst_vp8_enc->timebase_d = DEFAULT_TIMEBASE_D; gst_vp8_enc->cfg.g_profile = DEFAULT_PROFILE; @@ -1163,6 +1172,10 @@ gst_vp8_enc_set_property (GObject * object, guint prop_id, } } break; + case PROP_TIMEBASE: + gst_vp8_enc->timebase_n = gst_value_get_fraction_numerator (value); + gst_vp8_enc->timebase_d = gst_value_get_fraction_denominator (value); + break; default: break; } @@ -1380,6 +1393,10 @@ gst_vp8_enc_get_property (GObject * object, guint prop_id, GValue * value, case PROP_MAX_INTRA_BITRATE_PCT: g_value_set_int (value, gst_vp8_enc->max_intra_bitrate_pct); break; + case PROP_TIMEBASE: + gst_value_set_fraction (value, gst_vp8_enc->timebase_n, + gst_vp8_enc->timebase_d); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1509,16 +1526,29 @@ gst_vp8_enc_set_format (GstVideoEncoder * video_encoder, encoder->cfg.g_w = GST_VIDEO_INFO_WIDTH (info); encoder->cfg.g_h = GST_VIDEO_INFO_HEIGHT (info); - if (GST_VIDEO_INFO_FPS_D (info) == 0 || GST_VIDEO_INFO_FPS_N (info) == 0) { - /* Zero framerate but still need to setup the timebase so we - * presume this is RTP - VP8 payload draft states clock rate of 90000 - * see specification http://tools.ietf.org/html/draft-ietf-payload-vp8-01 - * section 6.3.1 */ - encoder->cfg.g_timebase.num = 1; - encoder->cfg.g_timebase.den = 90000; - } else { + + if (encoder->timebase_n != 0 && encoder->timebase_d != 0) { + GST_DEBUG_OBJECT (video_encoder, "Using timebase configuration"); + encoder->cfg.g_timebase.num = encoder->timebase_n; + encoder->cfg.g_timebase.den = encoder->timebase_d; + } else if (GST_VIDEO_INFO_FPS_D (info) != 0 + && GST_VIDEO_INFO_FPS_N (info) != 0) { + /* GstVideoInfo holds either the framerate or max-framerate (if framerate + * is 0) in FPS so this will be used if max-framerate or framerate + * is set */ + GST_DEBUG_OBJECT (video_encoder, "Setting timebase from framerate"); encoder->cfg.g_timebase.num = GST_VIDEO_INFO_FPS_D (info); encoder->cfg.g_timebase.den = GST_VIDEO_INFO_FPS_N (info); + } else { + /* Zero framerate and max-framerate but still need to setup the timebase to avoid + * a divide by zero error. Presuming the lowest common denominator will be RTP - + * VP8 payload draft states clock rate of 90000 which should work for anyone where + * FPS < 90000 (shouldn't be too many cases where it's higher) though wouldn't be optimal. RTP specification + * http://tools.ietf.org/html/draft-ietf-payload-vp8-01 section 6.3.1 */ + GST_WARNING_OBJECT (encoder, + "No timebase and zero framerate setting timebase to 1/90000"); + encoder->cfg.g_timebase.num = 1; + encoder->cfg.g_timebase.den = 90000; } if (encoder->cfg.g_pass == VPX_RC_FIRST_PASS) { diff --git a/ext/vpx/gstvp8enc.h b/ext/vpx/gstvp8enc.h index a8120677aadc996563f80bc1051ea9799b0f3e83..206ac02a47f6b162d797e777e70e3ef5994808cd 100644 --- a/ext/vpx/gstvp8enc.h +++ b/ext/vpx/gstvp8enc.h @@ -15,13 +15,19 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ #ifndef __GST_VP8_ENC_H__ #define __GST_VP8_ENC_H__ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_VP8_ENCODER + #include <gst/gst.h> #include <gst/video/gstvideoencoder.h> @@ -87,6 +93,9 @@ struct _GstVP8Enc vp8e_tuning tuning; unsigned int cq_level; unsigned int max_intra_bitrate_pct; + /* Timebase - a value of 0 will use the framerate */ + unsigned int timebase_n; + unsigned int timebase_d; /* state */ gboolean inited; @@ -108,4 +117,6 @@ GType gst_vp8_enc_get_type (void); G_END_DECLS +#endif + #endif /* __GST_VP8_ENC_H__ */ diff --git a/ext/vpx/gstvp8utils.c b/ext/vpx/gstvp8utils.c index 90df09b0b3fe5c0c96b49f7d9cba491ad888993d..1721945356cac89fe29ee8a5a7046242350cb256 100644 --- a/ext/vpx/gstvp8utils.c +++ b/ext/vpx/gstvp8utils.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/ext/vpx/gstvp8utils.h b/ext/vpx/gstvp8utils.h index e62ab8fc93e2912c28d722f6171461ae496f7278..df4e77e6800e988e96d8c0527a210fd49d2c5030 100644 --- a/ext/vpx/gstvp8utils.h +++ b/ext/vpx/gstvp8utils.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/ext/vpx/gstvp9dec.c b/ext/vpx/gstvp9dec.c new file mode 100644 index 0000000000000000000000000000000000000000..b5babc2cb3a3caec410b62a293a1ce743adeff5f --- /dev/null +++ b/ext/vpx/gstvp9dec.c @@ -0,0 +1,624 @@ +/* VP9 + * Copyright (C) 2006 David Schleef <ds@schleef.org> + * Copyright (C) 2008,2009,2010 Entropy Wave Inc + * Copyright (C) 2010-2013 Sebastian Dröge <slomo@circular-chaos.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ +/** + * SECTION:element-vp9dec + * @see_also: vp9enc, matroskademux + * + * This element decodes VP9 streams into raw video. + * <ulink url="http://www.webmproject.org">VP9</ulink> is a royalty-free + * video codec maintained by <ulink url="http://www.google.com/">Google + * </ulink>. It's the successor of On2 VP3, which was the base of the + * Theora video codec. + * + * <refsect2> + * <title>Example pipeline</title> + * |[ + * gst-launch -v filesrc location=videotestsrc.webm ! matroskademux ! vp9dec ! xvimagesink + * ]| This example pipeline will decode a WebM stream and decodes the VP9 video. + * </refsect2> + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_VP9_DECODER + +#include <string.h> + +#include "gstvp8utils.h" +#include "gstvp9dec.h" + +#include <gst/video/gstvideometa.h> +#include <gst/video/gstvideopool.h> + +GST_DEBUG_CATEGORY_STATIC (gst_vp9dec_debug); +#define GST_CAT_DEFAULT gst_vp9dec_debug + +#define DEFAULT_POST_PROCESSING FALSE +#define DEFAULT_POST_PROCESSING_FLAGS (VP8_DEBLOCK | VP8_DEMACROBLOCK) +#define DEFAULT_DEBLOCKING_LEVEL 4 +#define DEFAULT_NOISE_LEVEL 0 +#define DEFAULT_THREADS 1 + +enum +{ + PROP_0, + PROP_POST_PROCESSING, + PROP_POST_PROCESSING_FLAGS, + PROP_DEBLOCKING_LEVEL, + PROP_NOISE_LEVEL, + PROP_THREADS +}; + +#define C_FLAGS(v) ((guint) v) +#define GST_VP9_DEC_TYPE_POST_PROCESSING_FLAGS (gst_vp9_dec_post_processing_flags_get_type()) +static GType +gst_vp9_dec_post_processing_flags_get_type (void) +{ + static const GFlagsValue values[] = { + {C_FLAGS (VP8_DEBLOCK), "Deblock", "deblock"}, + {C_FLAGS (VP8_DEMACROBLOCK), "Demacroblock", "demacroblock"}, + {C_FLAGS (VP8_ADDNOISE), "Add noise", "addnoise"}, + {C_FLAGS (VP8_MFQE), "Multi-frame quality enhancement", "mfqe"}, + {0, NULL, NULL} + }; + static volatile GType id = 0; + + if (g_once_init_enter ((gsize *) & id)) { + GType _id; + + _id = g_flags_register_static ("GstVP9DecPostProcessingFlags", values); + + g_once_init_leave ((gsize *) & id, _id); + } + + return id; +} + +#undef C_FLAGS + +static void gst_vp9_dec_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_vp9_dec_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); + +static gboolean gst_vp9_dec_start (GstVideoDecoder * decoder); +static gboolean gst_vp9_dec_stop (GstVideoDecoder * decoder); +static gboolean gst_vp9_dec_set_format (GstVideoDecoder * decoder, + GstVideoCodecState * state); +static gboolean gst_vp9_dec_flush (GstVideoDecoder * decoder); +static GstFlowReturn gst_vp9_dec_handle_frame (GstVideoDecoder * decoder, + GstVideoCodecFrame * frame); +static gboolean gst_vp9_dec_decide_allocation (GstVideoDecoder * decoder, + GstQuery * query); + +static GstStaticPadTemplate gst_vp9_dec_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("video/x-vp9") + ); + +static GstStaticPadTemplate gst_vp9_dec_src_template = +GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ I420, YV12, Y42B, Y444 }")) + ); + +#define parent_class gst_vp9_dec_parent_class +G_DEFINE_TYPE (GstVP9Dec, gst_vp9_dec, GST_TYPE_VIDEO_DECODER); + +static void +gst_vp9_dec_class_init (GstVP9DecClass * klass) +{ + GObjectClass *gobject_class; + GstElementClass *element_class; + GstVideoDecoderClass *base_video_decoder_class; + + gobject_class = G_OBJECT_CLASS (klass); + element_class = GST_ELEMENT_CLASS (klass); + base_video_decoder_class = GST_VIDEO_DECODER_CLASS (klass); + + gobject_class->set_property = gst_vp9_dec_set_property; + gobject_class->get_property = gst_vp9_dec_get_property; + + g_object_class_install_property (gobject_class, PROP_POST_PROCESSING, + g_param_spec_boolean ("post-processing", "Post Processing", + "Enable post processing", DEFAULT_POST_PROCESSING, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_POST_PROCESSING_FLAGS, + g_param_spec_flags ("post-processing-flags", "Post Processing Flags", + "Flags to control post processing", + GST_VP9_DEC_TYPE_POST_PROCESSING_FLAGS, DEFAULT_POST_PROCESSING_FLAGS, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_DEBLOCKING_LEVEL, + g_param_spec_uint ("deblocking-level", "Deblocking Level", + "Deblocking level", + 0, 16, DEFAULT_DEBLOCKING_LEVEL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_NOISE_LEVEL, + g_param_spec_uint ("noise-level", "Noise Level", + "Noise level", + 0, 16, DEFAULT_NOISE_LEVEL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_THREADS, + g_param_spec_uint ("threads", "Max Threads", + "Maximum number of decoding threads", + 1, 16, DEFAULT_THREADS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_vp9_dec_src_template)); + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_vp9_dec_sink_template)); + + gst_element_class_set_static_metadata (element_class, + "On2 VP9 Decoder", + "Codec/Decoder/Video", + "Decode VP9 video streams", "David Schleef <ds@entropywave.com>, " + "Sebastian Dröge <sebastian.droege@collabora.co.uk>"); + + base_video_decoder_class->start = GST_DEBUG_FUNCPTR (gst_vp9_dec_start); + base_video_decoder_class->stop = GST_DEBUG_FUNCPTR (gst_vp9_dec_stop); + base_video_decoder_class->flush = GST_DEBUG_FUNCPTR (gst_vp9_dec_flush); + base_video_decoder_class->set_format = + GST_DEBUG_FUNCPTR (gst_vp9_dec_set_format); + base_video_decoder_class->handle_frame = + GST_DEBUG_FUNCPTR (gst_vp9_dec_handle_frame); + base_video_decoder_class->decide_allocation = gst_vp9_dec_decide_allocation; + + GST_DEBUG_CATEGORY_INIT (gst_vp9dec_debug, "vp9dec", 0, "VP9 Decoder"); +} + +static void +gst_vp9_dec_init (GstVP9Dec * gst_vp9_dec) +{ + GstVideoDecoder *decoder = (GstVideoDecoder *) gst_vp9_dec; + + GST_DEBUG_OBJECT (gst_vp9_dec, "gst_vp9_dec_init"); + gst_video_decoder_set_packetized (decoder, TRUE); + gst_vp9_dec->post_processing = DEFAULT_POST_PROCESSING; + gst_vp9_dec->post_processing_flags = DEFAULT_POST_PROCESSING_FLAGS; + gst_vp9_dec->deblocking_level = DEFAULT_DEBLOCKING_LEVEL; + gst_vp9_dec->noise_level = DEFAULT_NOISE_LEVEL; +} + +static void +gst_vp9_dec_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) +{ + GstVP9Dec *dec; + + g_return_if_fail (GST_IS_VP9_DEC (object)); + dec = GST_VP9_DEC (object); + + GST_DEBUG_OBJECT (object, "gst_vp9_dec_set_property"); + switch (prop_id) { + case PROP_POST_PROCESSING: + dec->post_processing = g_value_get_boolean (value); + break; + case PROP_POST_PROCESSING_FLAGS: + dec->post_processing_flags = g_value_get_flags (value); + break; + case PROP_DEBLOCKING_LEVEL: + dec->deblocking_level = g_value_get_uint (value); + break; + case PROP_NOISE_LEVEL: + dec->noise_level = g_value_get_uint (value); + break; + case PROP_THREADS: + dec->threads = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_vp9_dec_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) +{ + GstVP9Dec *dec; + + g_return_if_fail (GST_IS_VP9_DEC (object)); + dec = GST_VP9_DEC (object); + + switch (prop_id) { + case PROP_POST_PROCESSING: + g_value_set_boolean (value, dec->post_processing); + break; + case PROP_POST_PROCESSING_FLAGS: + g_value_set_flags (value, dec->post_processing_flags); + break; + case PROP_DEBLOCKING_LEVEL: + g_value_set_uint (value, dec->deblocking_level); + break; + case PROP_NOISE_LEVEL: + g_value_set_uint (value, dec->noise_level); + break; + case PROP_THREADS: + g_value_set_uint (value, dec->threads); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static gboolean +gst_vp9_dec_start (GstVideoDecoder * decoder) +{ + GstVP9Dec *gst_vp9_dec = GST_VP9_DEC (decoder); + + GST_DEBUG_OBJECT (gst_vp9_dec, "start"); + gst_vp9_dec->decoder_inited = FALSE; + + return TRUE; +} + +static gboolean +gst_vp9_dec_stop (GstVideoDecoder * base_video_decoder) +{ + GstVP9Dec *gst_vp9_dec = GST_VP9_DEC (base_video_decoder); + + GST_DEBUG_OBJECT (gst_vp9_dec, "stop"); + + if (gst_vp9_dec->output_state) { + gst_video_codec_state_unref (gst_vp9_dec->output_state); + gst_vp9_dec->output_state = NULL; + } + + if (gst_vp9_dec->input_state) { + gst_video_codec_state_unref (gst_vp9_dec->input_state); + gst_vp9_dec->input_state = NULL; + } + + if (gst_vp9_dec->decoder_inited) + vpx_codec_destroy (&gst_vp9_dec->decoder); + gst_vp9_dec->decoder_inited = FALSE; + + return TRUE; +} + +static gboolean +gst_vp9_dec_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state) +{ + GstVP9Dec *gst_vp9_dec = GST_VP9_DEC (decoder); + + GST_DEBUG_OBJECT (gst_vp9_dec, "set_format"); + + if (gst_vp9_dec->decoder_inited) + vpx_codec_destroy (&gst_vp9_dec->decoder); + gst_vp9_dec->decoder_inited = FALSE; + + if (gst_vp9_dec->input_state) + gst_video_codec_state_unref (gst_vp9_dec->input_state); + gst_vp9_dec->input_state = gst_video_codec_state_ref (state); + + return TRUE; +} + +static gboolean +gst_vp9_dec_flush (GstVideoDecoder * base_video_decoder) +{ + GstVP9Dec *decoder; + + GST_DEBUG_OBJECT (base_video_decoder, "flush"); + + decoder = GST_VP9_DEC (base_video_decoder); + + if (decoder->output_state) { + gst_video_codec_state_unref (decoder->output_state); + decoder->output_state = NULL; + } + + if (decoder->decoder_inited) + vpx_codec_destroy (&decoder->decoder); + decoder->decoder_inited = FALSE; + + return TRUE; +} + +static void +gst_vp9_dec_send_tags (GstVP9Dec * dec) +{ + GstTagList *list; + + list = gst_tag_list_new_empty (); + gst_tag_list_add (list, GST_TAG_MERGE_REPLACE, + GST_TAG_VIDEO_CODEC, "VP9 video", NULL); + + gst_pad_push_event (GST_VIDEO_DECODER_SRC_PAD (dec), + gst_event_new_tag (list)); +} + +static void +gst_vp9_dec_image_to_buffer (GstVP9Dec * dec, const vpx_image_t * img, + GstBuffer * buffer) +{ + int deststride, srcstride, height, width, line, comp; + guint8 *dest, *src; + GstVideoFrame frame; + GstVideoInfo *info = &dec->output_state->info; + + if (!gst_video_frame_map (&frame, info, buffer, GST_MAP_WRITE)) { + GST_ERROR_OBJECT (dec, "Could not map video buffer"); + } + + for (comp = 0; comp < 3; comp++) { + dest = GST_VIDEO_FRAME_COMP_DATA (&frame, comp); + src = img->planes[comp]; + width = GST_VIDEO_FRAME_COMP_WIDTH (&frame, comp); + height = GST_VIDEO_FRAME_COMP_HEIGHT (&frame, comp); + deststride = GST_VIDEO_FRAME_COMP_STRIDE (&frame, comp); + srcstride = img->stride[comp]; + + /* FIXME (Edward) : Do a plane memcpy is srcstride == deststride instead + * of copying line by line */ + for (line = 0; line < height; line++) { + memcpy (dest, src, width); + dest += deststride; + src += srcstride; + } + } + + gst_video_frame_unmap (&frame); +} + +static GstFlowReturn +open_codec (GstVP9Dec * dec, GstVideoCodecFrame * frame) +{ + int flags = 0; + vpx_codec_stream_info_t stream_info; + vpx_codec_caps_t caps; + vpx_codec_dec_cfg_t cfg; + vpx_codec_err_t status; + GstMapInfo minfo; + + memset (&stream_info, 0, sizeof (stream_info)); + memset (&cfg, 0, sizeof (cfg)); + stream_info.sz = sizeof (stream_info); + + if (!gst_buffer_map (frame->input_buffer, &minfo, GST_MAP_READ)) { + GST_ERROR_OBJECT (dec, "Failed to map input buffer"); + return GST_FLOW_ERROR; + } + + status = vpx_codec_peek_stream_info (&vpx_codec_vp9_dx_algo, + minfo.data, minfo.size, &stream_info); + + gst_buffer_unmap (frame->input_buffer, &minfo); + + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (dec, "VPX preprocessing error: %s", + gst_vpx_error_name (status)); + gst_video_decoder_finish_frame (GST_VIDEO_DECODER (dec), frame); + return GST_FLOW_CUSTOM_SUCCESS_1; + } + if (!stream_info.is_kf) { + GST_WARNING_OBJECT (dec, "No keyframe, skipping"); + gst_video_decoder_finish_frame (GST_VIDEO_DECODER (dec), frame); + return GST_FLOW_CUSTOM_SUCCESS_1; + } + + /* FIXME: peek_stream_info() does not return valid values, take input caps */ + stream_info.w = dec->input_state->info.width; + stream_info.h = dec->input_state->info.height; + + cfg.w = stream_info.w; + cfg.h = stream_info.h; + cfg.threads = dec->threads; + + caps = vpx_codec_get_caps (&vpx_codec_vp9_dx_algo); + + if (dec->post_processing) { + if (!(caps & VPX_CODEC_CAP_POSTPROC)) { + GST_WARNING_OBJECT (dec, "Decoder does not support post processing"); + } else { + flags |= VPX_CODEC_USE_POSTPROC; + } + } + + status = + vpx_codec_dec_init (&dec->decoder, &vpx_codec_vp9_dx_algo, &cfg, flags); + if (status != VPX_CODEC_OK) { + GST_ELEMENT_ERROR (dec, LIBRARY, INIT, + ("Failed to initialize VP9 decoder"), ("%s", + gst_vpx_error_name (status))); + return GST_FLOW_ERROR; + } + + if ((caps & VPX_CODEC_CAP_POSTPROC) && dec->post_processing) { + vp8_postproc_cfg_t pp_cfg = { 0, }; + + pp_cfg.post_proc_flag = dec->post_processing_flags; + pp_cfg.deblocking_level = dec->deblocking_level; + pp_cfg.noise_level = dec->noise_level; + + status = vpx_codec_control (&dec->decoder, VP8_SET_POSTPROC, &pp_cfg); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (dec, "Couldn't set postprocessing settings: %s", + gst_vpx_error_name (status)); + } + } + + dec->decoder_inited = TRUE; + + return GST_FLOW_OK; +} + +static GstFlowReturn +gst_vp9_dec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame) +{ + GstVP9Dec *dec; + GstFlowReturn ret = GST_FLOW_OK; + vpx_codec_err_t status; + vpx_codec_iter_t iter = NULL; + vpx_image_t *img; + long decoder_deadline = 0; + GstClockTimeDiff deadline; + GstMapInfo minfo; + + GST_DEBUG_OBJECT (decoder, "handle_frame"); + + dec = GST_VP9_DEC (decoder); + + if (!dec->decoder_inited) { + ret = open_codec (dec, frame); + if (ret == GST_FLOW_CUSTOM_SUCCESS_1) + return GST_FLOW_OK; + else if (ret != GST_FLOW_OK) + return ret; + } + + deadline = gst_video_decoder_get_max_decode_time (decoder, frame); + if (deadline < 0) { + decoder_deadline = 1; + } else if (deadline == G_MAXINT64) { + decoder_deadline = 0; + } else { + decoder_deadline = MAX (1, deadline / GST_MSECOND); + } + + if (!gst_buffer_map (frame->input_buffer, &minfo, GST_MAP_READ)) { + GST_ERROR_OBJECT (dec, "Failed to map input buffer"); + return GST_FLOW_ERROR; + } + + status = vpx_codec_decode (&dec->decoder, + minfo.data, minfo.size, NULL, decoder_deadline); + + gst_buffer_unmap (frame->input_buffer, &minfo); + + if (status) { + GST_VIDEO_DECODER_ERROR (decoder, 1, LIBRARY, ENCODE, + ("Failed to decode frame"), ("%s", gst_vpx_error_name (status)), ret); + return ret; + } + + img = vpx_codec_get_frame (&dec->decoder, &iter); + if (img) { + GstVideoFormat fmt; + + switch (img->fmt) { + case VPX_IMG_FMT_I420: + fmt = GST_VIDEO_FORMAT_I420; + break; + case VPX_IMG_FMT_YV12: + fmt = GST_VIDEO_FORMAT_YV12; + break; + case VPX_IMG_FMT_I422: + fmt = GST_VIDEO_FORMAT_Y42B; + break; + case VPX_IMG_FMT_I444: + fmt = GST_VIDEO_FORMAT_Y444; + break; + default: + vpx_img_free (img); + GST_ELEMENT_ERROR (decoder, LIBRARY, ENCODE, + ("Failed to decode frame"), ("Unsupported color format %d", + img->fmt)); + return GST_FLOW_ERROR; + break; + } + + /* FIXME: Width/height in the img is wrong */ + if (!dec->output_state || dec->output_state->info.finfo->format != fmt /*|| + dec->output_state->info.width != img->w || + dec->output_state->info.height != img->h */ ) { + gboolean send_tags = !dec->output_state; + + if (dec->output_state) + gst_video_codec_state_unref (dec->output_state); + + /* FIXME: The width/height in the img is wrong */ + dec->output_state = + gst_video_decoder_set_output_state (GST_VIDEO_DECODER (dec), + fmt, dec->input_state->info.width, dec->input_state->info.height, + dec->input_state); + gst_video_decoder_negotiate (GST_VIDEO_DECODER (dec)); + + if (send_tags) + gst_vp9_dec_send_tags (dec); + } + + if (deadline < 0) { + GST_LOG_OBJECT (dec, "Skipping late frame (%f s past deadline)", + (double) -deadline / GST_SECOND); + gst_video_decoder_drop_frame (decoder, frame); + } else { + ret = gst_video_decoder_allocate_output_frame (decoder, frame); + + if (ret == GST_FLOW_OK) { + gst_vp9_dec_image_to_buffer (dec, img, frame->output_buffer); + ret = gst_video_decoder_finish_frame (decoder, frame); + } else { + gst_video_decoder_finish_frame (decoder, frame); + } + } + + vpx_img_free (img); + + while ((img = vpx_codec_get_frame (&dec->decoder, &iter))) { + GST_WARNING_OBJECT (decoder, "Multiple decoded frames... dropping"); + vpx_img_free (img); + } + } else { + /* Invisible frame */ + GST_VIDEO_CODEC_FRAME_SET_DECODE_ONLY (frame); + gst_video_decoder_finish_frame (decoder, frame); + } + + return ret; +} + +static gboolean +gst_vp9_dec_decide_allocation (GstVideoDecoder * bdec, GstQuery * query) +{ + GstBufferPool *pool; + GstStructure *config; + + if (!GST_VIDEO_DECODER_CLASS (parent_class)->decide_allocation (bdec, query)) + return FALSE; + + g_assert (gst_query_get_n_allocation_pools (query) > 0); + gst_query_parse_nth_allocation_pool (query, 0, &pool, NULL, NULL, NULL); + g_assert (pool != NULL); + + config = gst_buffer_pool_get_config (pool); + if (gst_query_find_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL)) { + gst_buffer_pool_config_add_option (config, + GST_BUFFER_POOL_OPTION_VIDEO_META); + } + gst_buffer_pool_set_config (pool, config); + gst_object_unref (pool); + + return TRUE; +} + +#endif /* HAVE_VP9_DECODER */ diff --git a/ext/vpx/gstvp9dec.h b/ext/vpx/gstvp9dec.h new file mode 100644 index 0000000000000000000000000000000000000000..8cd69ba0db0c7f778b626fa42c3f8da64d647c74 --- /dev/null +++ b/ext/vpx/gstvp9dec.h @@ -0,0 +1,92 @@ +/* VP9 + * Copyright (C) 2006 David Schleef <ds@schleef.org> + * Copyright (C) 2008,2009,2010 Entropy Wave Inc + * Copyright (C) 2010-2013 Sebastian Dröge <slomo@circular-chaos.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef __GST_VP9_DEC_H__ +#define __GST_VP9_DEC_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_VP9_DECODER + +#include <gst/gst.h> +#include <gst/video/gstvideodecoder.h> + +/* FIXME: Undef HAVE_CONFIG_H because vpx_codec.h uses it, + * which causes compilation failures */ +#ifdef HAVE_CONFIG_H +#undef HAVE_CONFIG_H +#endif + +#include <vpx/vpx_decoder.h> +#include <vpx/vp8dx.h> + +G_BEGIN_DECLS + +#define GST_TYPE_VP9_DEC \ + (gst_vp9_dec_get_type()) +#define GST_VP9_DEC(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VP9_DEC,GstVP9Dec)) +#define GST_VP9_DEC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VP9_DEC,GstVP9DecClass)) +#define GST_IS_VP9_DEC(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VP9_DEC)) +#define GST_IS_VP9_DEC_CLASS(obj) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VP9_DEC)) + +typedef struct _GstVP9Dec GstVP9Dec; +typedef struct _GstVP9DecClass GstVP9DecClass; + +struct _GstVP9Dec +{ + GstVideoDecoder base_video_decoder; + + /* < private > */ + vpx_codec_ctx_t decoder; + + /* state */ + gboolean decoder_inited; + + /* properties */ + gboolean post_processing; + enum vp8_postproc_level post_processing_flags; + gint deblocking_level; + gint noise_level; + gint threads; + + GstVideoCodecState *input_state; + GstVideoCodecState *output_state; +}; + +struct _GstVP9DecClass +{ + GstVideoDecoderClass base_video_decoder_class; +}; + +GType gst_vp9_dec_get_type (void); + +G_END_DECLS + +#endif + +#endif /* __GST_VP9_DEC_H__ */ diff --git a/ext/vpx/gstvp9enc.c b/ext/vpx/gstvp9enc.c new file mode 100644 index 0000000000000000000000000000000000000000..ea276f9047e58f30ba2456f4e9d7f84f0b6259a0 --- /dev/null +++ b/ext/vpx/gstvp9enc.c @@ -0,0 +1,1936 @@ +/* VP9 + * Copyright (C) 2006 David Schleef <ds@schleef.org> + * Copyright (C) 2010 Entropy Wave Inc + * Copyright (C) 2010-2013 Sebastian Dröge <slomo@circular-chaos.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ +/** + * SECTION:element-vp9enc + * @see_also: vp9dec, webmmux, oggmux + * + * This element encodes raw video into a VP9 stream. + * <ulink url="http://www.webmproject.org">VP9</ulink> is a royalty-free + * video codec maintained by <ulink url="http://www.google.com/">Google + * </ulink>. It's the successor of On2 VP3, which was the base of the + * Theora video codec. + * + * To control the quality of the encoding, the #GstVP9Enc::target-bitrate, + * #GstVP9Enc::min-quantizer, #GstVP9Enc::max-quantizer or #GstVP9Enc::cq-level + * properties can be used. Which one is used depends on the mode selected by + * the #GstVP9Enc::end-usage property. + * See <ulink url="http://www.webmproject.org/docs/encoder-parameters/">Encoder Parameters</ulink> + * for explanation, examples for useful encoding parameters and more details + * on the encoding parameters. + * + * <refsect2> + * <title>Example pipeline</title> + * |[ + * gst-launch -v videotestsrc num-buffers=1000 ! vp9enc ! webmmux ! filesink location=videotestsrc.webm + * ]| This example pipeline will encode a test video source to VP9 muxed in an + * WebM container. + * </refsect2> + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_VP9_ENCODER + +/* glib decided in 2.32 it would be a great idea to deprecated GValueArray without + * providing an alternative + * + * See https://bugzilla.gnome.org/show_bug.cgi?id=667228 + * */ +#define GLIB_DISABLE_DEPRECATION_WARNINGS + +#include <gst/tag/tag.h> +#include <gst/video/video.h> +#include <string.h> + +#include "gstvp8utils.h" +#include "gstvp9enc.h" + +GST_DEBUG_CATEGORY_STATIC (gst_vp9enc_debug); +#define GST_CAT_DEFAULT gst_vp9enc_debug + +/* From vp9/vp9_cx_iface.c */ +#define DEFAULT_PROFILE 0 + +#define DEFAULT_RC_END_USAGE VPX_VBR +#define DEFAULT_RC_TARGET_BITRATE 256000 +#define DEFAULT_RC_MIN_QUANTIZER 4 +#define DEFAULT_RC_MAX_QUANTIZER 63 + +#define DEFAULT_RC_DROPFRAME_THRESH 0 +#define DEFAULT_RC_RESIZE_ALLOWED 0 +#define DEFAULT_RC_RESIZE_UP_THRESH 30 +#define DEFAULT_RC_RESIZE_DOWN_THRESH 60 +#define DEFAULT_RC_UNDERSHOOT_PCT 100 +#define DEFAULT_RC_OVERSHOOT_PCT 100 +#define DEFAULT_RC_BUF_SZ 6000 +#define DEFAULT_RC_BUF_INITIAL_SZ 4000 +#define DEFAULT_RC_BUF_OPTIMAL_SZ 5000 +#define DEFAULT_RC_2PASS_VBR_BIAS_PCT 50 +#define DEFAULT_RC_2PASS_VBR_MINSECTION_PCT 0 +#define DEFAULT_RC_2PASS_VBR_MAXSECTION_PCT 400 + +#define DEFAULT_KF_MODE VPX_KF_AUTO +#define DEFAULT_KF_MAX_DIST 128 + +#define DEFAULT_MULTIPASS_MODE VPX_RC_ONE_PASS +#define DEFAULT_MULTIPASS_CACHE_FILE "multipass.cache" + +#define DEFAULT_TS_NUMBER_LAYERS 1 +#define DEFAULT_TS_TARGET_BITRATE NULL +#define DEFAULT_TS_RATE_DECIMATOR NULL +#define DEFAULT_TS_PERIODICITY 0 +#define DEFAULT_TS_LAYER_ID NULL + +#define DEFAULT_ERROR_RESILIENT 0 +#define DEFAULT_LAG_IN_FRAMES 0 + +#define DEFAULT_THREADS 0 + +#define DEFAULT_H_SCALING_MODE VP8E_NORMAL +#define DEFAULT_V_SCALING_MODE VP8E_NORMAL +#define DEFAULT_CPU_USED 0 +#define DEFAULT_ENABLE_AUTO_ALT_REF FALSE +#define DEFAULT_DEADLINE VPX_DL_BEST_QUALITY +#define DEFAULT_NOISE_SENSITIVITY 0 +#define DEFAULT_SHARPNESS 0 +#define DEFAULT_STATIC_THRESHOLD 0 +#define DEFAULT_TOKEN_PARTITIONS 0 +#define DEFAULT_ARNR_MAXFRAMES 0 +#define DEFAULT_ARNR_STRENGTH 3 +#define DEFAULT_ARNR_TYPE 3 +#define DEFAULT_TUNING VP8_TUNE_PSNR +#define DEFAULT_CQ_LEVEL 10 +#define DEFAULT_MAX_INTRA_BITRATE_PCT 0 +#define DEFAULT_TIMEBASE_N 0 +#define DEFAULT_TIMEBASE_D 1 + +enum +{ + PROP_0, + PROP_RC_END_USAGE, + PROP_RC_TARGET_BITRATE, + PROP_RC_MIN_QUANTIZER, + PROP_RC_MAX_QUANTIZER, + PROP_RC_DROPFRAME_THRESH, + PROP_RC_RESIZE_ALLOWED, + PROP_RC_RESIZE_UP_THRESH, + PROP_RC_RESIZE_DOWN_THRESH, + PROP_RC_UNDERSHOOT_PCT, + PROP_RC_OVERSHOOT_PCT, + PROP_RC_BUF_SZ, + PROP_RC_BUF_INITIAL_SZ, + PROP_RC_BUF_OPTIMAL_SZ, + PROP_RC_2PASS_VBR_BIAS_PCT, + PROP_RC_2PASS_VBR_MINSECTION_PCT, + PROP_RC_2PASS_VBR_MAXSECTION_PCT, + PROP_KF_MODE, + PROP_KF_MAX_DIST, + PROP_TS_NUMBER_LAYERS, + PROP_TS_TARGET_BITRATE, + PROP_TS_RATE_DECIMATOR, + PROP_TS_PERIODICITY, + PROP_TS_LAYER_ID, + PROP_MULTIPASS_MODE, + PROP_MULTIPASS_CACHE_FILE, + PROP_ERROR_RESILIENT, + PROP_LAG_IN_FRAMES, + PROP_THREADS, + PROP_DEADLINE, + PROP_H_SCALING_MODE, + PROP_V_SCALING_MODE, + PROP_CPU_USED, + PROP_ENABLE_AUTO_ALT_REF, + PROP_NOISE_SENSITIVITY, + PROP_SHARPNESS, + PROP_STATIC_THRESHOLD, + PROP_TOKEN_PARTITIONS, + PROP_ARNR_MAXFRAMES, + PROP_ARNR_STRENGTH, + PROP_ARNR_TYPE, + PROP_TUNING, + PROP_CQ_LEVEL, + PROP_MAX_INTRA_BITRATE_PCT, + PROP_TIMEBASE +}; + +#define GST_VP9_ENC_END_USAGE_TYPE (gst_vp9_enc_end_usage_get_type()) +static GType +gst_vp9_enc_end_usage_get_type (void) +{ + static const GEnumValue values[] = { + {VPX_VBR, "Variable Bit Rate (VBR) mode", "vbr"}, + {VPX_CBR, "Constant Bit Rate (CBR) mode", "cbr"}, + {VPX_CQ, "Constant Quality Mode (CQ) mode", "cq"}, + {0, NULL, NULL} + }; + static volatile GType id = 0; + + if (g_once_init_enter ((gsize *) & id)) { + GType _id; + + _id = g_enum_register_static ("GstVP9EncEndUsage", values); + + g_once_init_leave ((gsize *) & id, _id); + } + + return id; +} + +#define GST_VP9_ENC_MULTIPASS_MODE_TYPE (gst_vp9_enc_multipass_mode_get_type()) +static GType +gst_vp9_enc_multipass_mode_get_type (void) +{ + static const GEnumValue values[] = { + {VPX_RC_ONE_PASS, "One pass encoding (default)", "one-pass"}, + {VPX_RC_FIRST_PASS, "First pass of multipass encoding", "first-pass"}, + {VPX_RC_LAST_PASS, "Last pass of multipass encoding", "last-pass"}, + {0, NULL, NULL} + }; + static volatile GType id = 0; + + if (g_once_init_enter ((gsize *) & id)) { + GType _id; + + _id = g_enum_register_static ("GstVP9EncMultipassMode", values); + + g_once_init_leave ((gsize *) & id, _id); + } + + return id; +} + +#define GST_VP9_ENC_KF_MODE_TYPE (gst_vp9_enc_kf_mode_get_type()) +static GType +gst_vp9_enc_kf_mode_get_type (void) +{ + static const GEnumValue values[] = { + {VPX_KF_AUTO, "Determine optimal placement automatically", "auto"}, + {VPX_KF_DISABLED, "Don't automatically place keyframes", "disabled"}, + {0, NULL, NULL} + }; + static volatile GType id = 0; + + if (g_once_init_enter ((gsize *) & id)) { + GType _id; + + _id = g_enum_register_static ("GstVP9EncKfMode", values); + + g_once_init_leave ((gsize *) & id, _id); + } + + return id; +} + +#define GST_VP9_ENC_TUNING_TYPE (gst_vp9_enc_tuning_get_type()) +static GType +gst_vp9_enc_tuning_get_type (void) +{ + static const GEnumValue values[] = { + {VP8_TUNE_PSNR, "Tune for PSNR", "psnr"}, + {VP8_TUNE_SSIM, "Tune for SSIM", "ssim"}, + {0, NULL, NULL} + }; + static volatile GType id = 0; + + if (g_once_init_enter ((gsize *) & id)) { + GType _id; + + _id = g_enum_register_static ("GstVP9EncTuning", values); + + g_once_init_leave ((gsize *) & id, _id); + } + + return id; +} + +#define GST_VP9_ENC_SCALING_MODE_TYPE (gst_vp9_enc_scaling_mode_get_type()) +static GType +gst_vp9_enc_scaling_mode_get_type (void) +{ + static const GEnumValue values[] = { + {VP8E_NORMAL, "Normal", "normal"}, + {VP8E_FOURFIVE, "4:5", "4:5"}, + {VP8E_THREEFIVE, "3:5", "3:5"}, + {VP8E_ONETWO, "1:2", "1:2"}, + {0, NULL, NULL} + }; + static volatile GType id = 0; + + if (g_once_init_enter ((gsize *) & id)) { + GType _id; + + _id = g_enum_register_static ("GstVP9EncScalingMode", values); + + g_once_init_leave ((gsize *) & id, _id); + } + + return id; +} + +#define GST_VP9_ENC_TOKEN_PARTITIONS_TYPE (gst_vp9_enc_token_partitions_get_type()) +static GType +gst_vp9_enc_token_partitions_get_type (void) +{ + static const GEnumValue values[] = { + {VP8_ONE_TOKENPARTITION, "One token partition", "1"}, + {VP8_TWO_TOKENPARTITION, "Two token partitions", "2"}, + {VP8_FOUR_TOKENPARTITION, "Four token partitions", "4"}, + {VP8_EIGHT_TOKENPARTITION, "Eight token partitions", "8"}, + {0, NULL, NULL} + }; + static volatile GType id = 0; + + if (g_once_init_enter ((gsize *) & id)) { + GType _id; + + _id = g_enum_register_static ("GstVP9EncTokenPartitions", values); + + g_once_init_leave ((gsize *) & id, _id); + } + + return id; +} + +#define GST_VP9_ENC_ER_FLAGS_TYPE (gst_vp9_enc_er_flags_get_type()) +static GType +gst_vp9_enc_er_flags_get_type (void) +{ + static const GFlagsValue values[] = { + {VPX_ERROR_RESILIENT_DEFAULT, "Default error resilience", "default"}, + {VPX_ERROR_RESILIENT_PARTITIONS, + "Allow partitions to be decoded independently", "partitions"}, + {0, NULL, NULL} + }; + static volatile GType id = 0; + + if (g_once_init_enter ((gsize *) & id)) { + GType _id; + + _id = g_flags_register_static ("GstVP9EncErFlags", values); + + g_once_init_leave ((gsize *) & id, _id); + } + + return id; +} + +static void gst_vp9_enc_finalize (GObject * object); +static void gst_vp9_enc_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_vp9_enc_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); + +static gboolean gst_vp9_enc_start (GstVideoEncoder * encoder); +static gboolean gst_vp9_enc_stop (GstVideoEncoder * encoder); +static gboolean gst_vp9_enc_set_format (GstVideoEncoder * + video_encoder, GstVideoCodecState * state); +static gboolean gst_vp9_enc_finish (GstVideoEncoder * video_encoder); +static GstFlowReturn gst_vp9_enc_handle_frame (GstVideoEncoder * + video_encoder, GstVideoCodecFrame * frame); +static gboolean gst_vp9_enc_sink_event (GstVideoEncoder * + video_encoder, GstEvent * event); +static gboolean gst_vp9_enc_propose_allocation (GstVideoEncoder * encoder, + GstQuery * query); + +/* FIXME: Y42B and Y444 do not work yet it seems */ +static GstStaticPadTemplate gst_vp9_enc_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + /*GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ I420, YV12, Y42B, Y444 }")) */ + GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ I420, YV12 }")) + ); + +static GstStaticPadTemplate gst_vp9_enc_src_template = +GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("video/x-vp9, " "profile = (string) {0, 1, 2, 3}") + ); + +#define parent_class gst_vp9_enc_parent_class +G_DEFINE_TYPE_WITH_CODE (GstVP9Enc, gst_vp9_enc, GST_TYPE_VIDEO_ENCODER, + G_IMPLEMENT_INTERFACE (GST_TYPE_TAG_SETTER, NULL); + G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL);); + +static void +gst_vp9_enc_class_init (GstVP9EncClass * klass) +{ + GObjectClass *gobject_class; + GstElementClass *element_class; + GstVideoEncoderClass *video_encoder_class; + + gobject_class = G_OBJECT_CLASS (klass); + element_class = GST_ELEMENT_CLASS (klass); + video_encoder_class = GST_VIDEO_ENCODER_CLASS (klass); + + gobject_class->set_property = gst_vp9_enc_set_property; + gobject_class->get_property = gst_vp9_enc_get_property; + gobject_class->finalize = gst_vp9_enc_finalize; + + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_vp9_enc_src_template)); + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_vp9_enc_sink_template)); + + gst_element_class_set_static_metadata (element_class, + "On2 VP9 Encoder", + "Codec/Encoder/Video", + "Encode VP9 video streams", "David Schleef <ds@entropywave.com>, " + "Sebastian Dröge <sebastian.droege@collabora.co.uk>"); + + video_encoder_class->start = gst_vp9_enc_start; + video_encoder_class->stop = gst_vp9_enc_stop; + video_encoder_class->handle_frame = gst_vp9_enc_handle_frame; + video_encoder_class->set_format = gst_vp9_enc_set_format; + video_encoder_class->finish = gst_vp9_enc_finish; + video_encoder_class->sink_event = gst_vp9_enc_sink_event; + video_encoder_class->propose_allocation = gst_vp9_enc_propose_allocation; + + g_object_class_install_property (gobject_class, PROP_RC_END_USAGE, + g_param_spec_enum ("end-usage", "Rate control mode", + "Rate control mode", + GST_VP9_ENC_END_USAGE_TYPE, DEFAULT_RC_END_USAGE, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_TARGET_BITRATE, + g_param_spec_int ("target-bitrate", "Target bitrate", + "Target bitrate (in bits/sec)", + 0, G_MAXINT, DEFAULT_RC_TARGET_BITRATE, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_MIN_QUANTIZER, + g_param_spec_int ("min-quantizer", "Minimum Quantizer", + "Minimum Quantizer (best)", + 0, 63, DEFAULT_RC_MIN_QUANTIZER, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_MAX_QUANTIZER, + g_param_spec_int ("max-quantizer", "Maximum Quantizer", + "Maximum Quantizer (worst)", + 0, 63, DEFAULT_RC_MAX_QUANTIZER, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_DROPFRAME_THRESH, + g_param_spec_int ("dropframe-threshold", "Drop Frame Threshold", + "Temporal resampling threshold (buf %)", + 0, 100, DEFAULT_RC_DROPFRAME_THRESH, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_RESIZE_ALLOWED, + g_param_spec_boolean ("resize-allowed", "Resize Allowed", + "Allow spatial resampling", + DEFAULT_RC_RESIZE_ALLOWED, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_RESIZE_UP_THRESH, + g_param_spec_int ("resize-up-threshold", "Resize Up Threshold", + "Upscale threshold (buf %)", + 0, 100, DEFAULT_RC_RESIZE_UP_THRESH, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_RESIZE_DOWN_THRESH, + g_param_spec_int ("resize-down-threshold", "Resize Down Threshold", + "Downscale threshold (buf %)", + 0, 100, DEFAULT_RC_RESIZE_DOWN_THRESH, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_UNDERSHOOT_PCT, + g_param_spec_int ("undershoot", "Undershoot PCT", + "Datarate undershoot (min) target (%)", + 0, 1000, DEFAULT_RC_UNDERSHOOT_PCT, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_OVERSHOOT_PCT, + g_param_spec_int ("overshoot", "Overshoot PCT", + "Datarate overshoot (max) target (%)", + 0, 1000, DEFAULT_RC_OVERSHOOT_PCT, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_BUF_SZ, + g_param_spec_int ("buffer-size", "Buffer size", + "Client buffer size (ms)", + 0, G_MAXINT, DEFAULT_RC_BUF_SZ, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_BUF_INITIAL_SZ, + g_param_spec_int ("buffer-initial-size", "Buffer initial size", + "Initial client buffer size (ms)", + 0, G_MAXINT, DEFAULT_RC_BUF_INITIAL_SZ, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_BUF_OPTIMAL_SZ, + g_param_spec_int ("buffer-optimal-size", "Buffer optimal size", + "Optimal client buffer size (ms)", + 0, G_MAXINT, DEFAULT_RC_BUF_OPTIMAL_SZ, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_RC_2PASS_VBR_BIAS_PCT, + g_param_spec_int ("twopass-vbr-bias", "2-pass VBR bias", + "CBR/VBR bias (0=CBR, 100=VBR)", + 0, 100, DEFAULT_RC_2PASS_VBR_BIAS_PCT, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, + PROP_RC_2PASS_VBR_MINSECTION_PCT, + g_param_spec_int ("twopass-vbr-minsection", "2-pass GOP min bitrate", + "GOP minimum bitrate (% target)", 0, G_MAXINT, + DEFAULT_RC_2PASS_VBR_MINSECTION_PCT, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, + PROP_RC_2PASS_VBR_MAXSECTION_PCT, + g_param_spec_int ("twopass-vbr-maxsection", "2-pass GOP max bitrate", + "GOP maximum bitrate (% target)", 0, G_MAXINT, + DEFAULT_RC_2PASS_VBR_MINSECTION_PCT, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_KF_MODE, + g_param_spec_enum ("keyframe-mode", "Keyframe Mode", + "Keyframe placement", + GST_VP9_ENC_KF_MODE_TYPE, DEFAULT_KF_MODE, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_KF_MAX_DIST, + g_param_spec_int ("keyframe-max-dist", "Keyframe max distance", + "Maximum distance between keyframes (number of frames)", + 0, G_MAXINT, DEFAULT_KF_MAX_DIST, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_MULTIPASS_MODE, + g_param_spec_enum ("multipass-mode", "Multipass Mode", + "Multipass encode mode", + GST_VP9_ENC_MULTIPASS_MODE_TYPE, DEFAULT_MULTIPASS_MODE, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_MULTIPASS_CACHE_FILE, + g_param_spec_string ("multipass-cache-file", "Multipass Cache File", + "Multipass cache file", + DEFAULT_MULTIPASS_CACHE_FILE, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_TS_NUMBER_LAYERS, + g_param_spec_int ("temporal-scalability-number-layers", + "Number of coding layers", "Number of coding layers to use", 1, 5, + DEFAULT_TS_NUMBER_LAYERS, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_TS_TARGET_BITRATE, + g_param_spec_value_array ("temporal-scalability-target-bitrate", + "Coding layer target bitrates", + "Target bitrates for coding layers (one per layer, decreasing)", + g_param_spec_int ("target-bitrate", "Target bitrate", + "Target bitrate", 0, G_MAXINT, DEFAULT_RC_TARGET_BITRATE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS), + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_TS_RATE_DECIMATOR, + g_param_spec_value_array ("temporal-scalability-rate-decimator", + "Coding layer rate decimator", + "Rate decimation factors for each layer", + g_param_spec_int ("rate-decimator", "Rate decimator", + "Rate decimator", 0, 1000000000, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS), + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_TS_PERIODICITY, + g_param_spec_int ("temporal-scalability-periodicity", + "Coding layer periodicity", + "Length of sequence that defines layer membership periodicity", 0, 16, + DEFAULT_TS_PERIODICITY, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_TS_LAYER_ID, + g_param_spec_value_array ("temporal-scalability-layer-id", + "Coding layer identification", + "Sequence defining coding layer membership", + g_param_spec_int ("layer-id", "Layer ID", "Layer ID", 0, 4, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS), + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_LAG_IN_FRAMES, + g_param_spec_int ("lag-in-frames", "Lag in frames", + "Maximum number of frames to lag", + 0, 25, DEFAULT_LAG_IN_FRAMES, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_ERROR_RESILIENT, + g_param_spec_flags ("error-resilient", "Error resilient", + "Error resilience flags", + GST_VP9_ENC_ER_FLAGS_TYPE, DEFAULT_ERROR_RESILIENT, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_THREADS, + g_param_spec_int ("threads", "Threads", + "Number of threads to use", + 0, 64, DEFAULT_THREADS, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_DEADLINE, + g_param_spec_int64 ("deadline", "Deadline", + "Deadline per frame (usec, 0=disabled)", + 0, G_MAXINT64, DEFAULT_DEADLINE, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_H_SCALING_MODE, + g_param_spec_enum ("horizontal-scaling-mode", "Horizontal scaling mode", + "Horizontal scaling mode", + GST_VP9_ENC_SCALING_MODE_TYPE, DEFAULT_H_SCALING_MODE, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_V_SCALING_MODE, + g_param_spec_enum ("vertical-scaling-mode", "Vertical scaling mode", + "Vertical scaling mode", + GST_VP9_ENC_SCALING_MODE_TYPE, DEFAULT_V_SCALING_MODE, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_CPU_USED, + g_param_spec_int ("cpu-used", "CPU used", + "CPU used", + -16, 16, DEFAULT_CPU_USED, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_ENABLE_AUTO_ALT_REF, + g_param_spec_boolean ("auto-alt-ref", "Auto alt reference frames", + "Automatically generate AltRef frames", + DEFAULT_ENABLE_AUTO_ALT_REF, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_NOISE_SENSITIVITY, + g_param_spec_int ("noise-sensitivity", "Noise sensitivity", + "Noise sensisivity (frames to blur)", + 0, 6, DEFAULT_NOISE_SENSITIVITY, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_SHARPNESS, + g_param_spec_int ("sharpness", "Sharpness", + "Filter sharpness", + 0, 7, DEFAULT_SHARPNESS, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_STATIC_THRESHOLD, + g_param_spec_int ("static-threshold", "Static Threshold", + "Motion detection threshold", + 0, G_MAXINT, DEFAULT_STATIC_THRESHOLD, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_TOKEN_PARTITIONS, + g_param_spec_enum ("token-partitions", "Token partitions", + "Number of token partitions", + GST_VP9_ENC_TOKEN_PARTITIONS_TYPE, DEFAULT_TOKEN_PARTITIONS, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_ARNR_MAXFRAMES, + g_param_spec_int ("arnr-maxframes", "AltRef max frames", + "AltRef maximum number of frames", + 0, 15, DEFAULT_ARNR_MAXFRAMES, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_ARNR_STRENGTH, + g_param_spec_int ("arnr-strength", "AltRef strength", + "AltRef strength", + 0, 6, DEFAULT_ARNR_STRENGTH, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_ARNR_TYPE, + g_param_spec_int ("arnr-type", "AltRef type", + "AltRef type", + 1, 3, DEFAULT_ARNR_TYPE, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_TUNING, + g_param_spec_enum ("tuning", "Tuning", + "Tuning", + GST_VP9_ENC_TUNING_TYPE, DEFAULT_TUNING, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_CQ_LEVEL, + g_param_spec_int ("cq-level", "Constrained quality level", + "Constrained quality level", + 0, 63, DEFAULT_CQ_LEVEL, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_MAX_INTRA_BITRATE_PCT, + g_param_spec_int ("max-intra-bitrate", "Max Intra bitrate", + "Maximum Intra frame bitrate", + 0, G_MAXINT, DEFAULT_MAX_INTRA_BITRATE_PCT, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); + + g_object_class_install_property (gobject_class, PROP_TIMEBASE, + gst_param_spec_fraction ("timebase", "Shortest interframe time", + "Fraction of one second that is the shortest interframe time - normally left as zero which will default to the framerate", + 0, 1, G_MAXINT, 1, DEFAULT_TIMEBASE_N, DEFAULT_TIMEBASE_D, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + GST_DEBUG_CATEGORY_INIT (gst_vp9enc_debug, "vp9enc", 0, "VP9 Encoder"); +} + +static void +gst_vp9_enc_init (GstVP9Enc * gst_vp9_enc) +{ + vpx_codec_err_t status; + + GST_DEBUG_OBJECT (gst_vp9_enc, "init"); + + status = + vpx_codec_enc_config_default (&vpx_codec_vp9_cx_algo, &gst_vp9_enc->cfg, + 0); + if (status != VPX_CODEC_OK) { + GST_ERROR_OBJECT (gst_vp9_enc, + "Failed to get default encoder configuration: %s", + gst_vpx_error_name (status)); + gst_vp9_enc->have_default_config = FALSE; + } else { + gst_vp9_enc->have_default_config = TRUE; + } + + gst_vp9_enc->cfg.rc_end_usage = DEFAULT_RC_END_USAGE; + gst_vp9_enc->cfg.rc_target_bitrate = DEFAULT_RC_TARGET_BITRATE / 1000; + gst_vp9_enc->rc_target_bitrate_set = FALSE; + gst_vp9_enc->cfg.rc_min_quantizer = DEFAULT_RC_MIN_QUANTIZER; + gst_vp9_enc->cfg.rc_max_quantizer = DEFAULT_RC_MAX_QUANTIZER; + gst_vp9_enc->cfg.rc_dropframe_thresh = DEFAULT_RC_DROPFRAME_THRESH; + gst_vp9_enc->cfg.rc_resize_allowed = DEFAULT_RC_RESIZE_ALLOWED; + gst_vp9_enc->cfg.rc_resize_up_thresh = DEFAULT_RC_RESIZE_UP_THRESH; + gst_vp9_enc->cfg.rc_resize_down_thresh = DEFAULT_RC_RESIZE_DOWN_THRESH; + gst_vp9_enc->cfg.rc_undershoot_pct = DEFAULT_RC_UNDERSHOOT_PCT; + gst_vp9_enc->cfg.rc_overshoot_pct = DEFAULT_RC_OVERSHOOT_PCT; + gst_vp9_enc->cfg.rc_buf_sz = DEFAULT_RC_BUF_SZ; + gst_vp9_enc->cfg.rc_buf_initial_sz = DEFAULT_RC_BUF_INITIAL_SZ; + gst_vp9_enc->cfg.rc_buf_optimal_sz = DEFAULT_RC_BUF_OPTIMAL_SZ; + gst_vp9_enc->cfg.rc_2pass_vbr_bias_pct = DEFAULT_RC_2PASS_VBR_BIAS_PCT; + gst_vp9_enc->cfg.rc_2pass_vbr_minsection_pct = + DEFAULT_RC_2PASS_VBR_MINSECTION_PCT; + gst_vp9_enc->cfg.rc_2pass_vbr_maxsection_pct = + DEFAULT_RC_2PASS_VBR_MAXSECTION_PCT; + gst_vp9_enc->cfg.kf_mode = DEFAULT_KF_MODE; + gst_vp9_enc->cfg.kf_max_dist = DEFAULT_KF_MAX_DIST; + gst_vp9_enc->cfg.g_pass = DEFAULT_MULTIPASS_MODE; + gst_vp9_enc->multipass_cache_file = g_strdup (DEFAULT_MULTIPASS_CACHE_FILE); + gst_vp9_enc->cfg.ts_number_layers = DEFAULT_TS_NUMBER_LAYERS; + gst_vp9_enc->n_ts_target_bitrate = 0; + gst_vp9_enc->n_ts_rate_decimator = 0; + gst_vp9_enc->cfg.ts_periodicity = DEFAULT_TS_PERIODICITY; + gst_vp9_enc->n_ts_layer_id = 0; + gst_vp9_enc->cfg.g_error_resilient = DEFAULT_ERROR_RESILIENT; + gst_vp9_enc->cfg.g_lag_in_frames = DEFAULT_LAG_IN_FRAMES; + gst_vp9_enc->cfg.g_threads = DEFAULT_THREADS; + gst_vp9_enc->deadline = DEFAULT_DEADLINE; + gst_vp9_enc->h_scaling_mode = DEFAULT_H_SCALING_MODE; + gst_vp9_enc->v_scaling_mode = DEFAULT_V_SCALING_MODE; + gst_vp9_enc->cpu_used = DEFAULT_CPU_USED; + gst_vp9_enc->enable_auto_alt_ref = DEFAULT_ENABLE_AUTO_ALT_REF; + gst_vp9_enc->noise_sensitivity = DEFAULT_NOISE_SENSITIVITY; + gst_vp9_enc->sharpness = DEFAULT_SHARPNESS; + gst_vp9_enc->static_threshold = DEFAULT_STATIC_THRESHOLD; + gst_vp9_enc->token_partitions = DEFAULT_TOKEN_PARTITIONS; + gst_vp9_enc->arnr_maxframes = DEFAULT_ARNR_MAXFRAMES; + gst_vp9_enc->arnr_strength = DEFAULT_ARNR_STRENGTH; + gst_vp9_enc->arnr_type = DEFAULT_ARNR_TYPE; + gst_vp9_enc->tuning = DEFAULT_TUNING; + gst_vp9_enc->cq_level = DEFAULT_CQ_LEVEL; + gst_vp9_enc->max_intra_bitrate_pct = DEFAULT_MAX_INTRA_BITRATE_PCT; + gst_vp9_enc->timebase_n = DEFAULT_TIMEBASE_N; + gst_vp9_enc->timebase_d = DEFAULT_TIMEBASE_D; + + gst_vp9_enc->cfg.g_profile = DEFAULT_PROFILE; + + g_mutex_init (&gst_vp9_enc->encoder_lock); +} + +static void +gst_vp9_enc_finalize (GObject * object) +{ + GstVP9Enc *gst_vp9_enc; + + GST_DEBUG_OBJECT (object, "finalize"); + + g_return_if_fail (GST_IS_VP9_ENC (object)); + gst_vp9_enc = GST_VP9_ENC (object); + + g_free (gst_vp9_enc->multipass_cache_file); + gst_vp9_enc->multipass_cache_file = NULL; + + if (gst_vp9_enc->input_state) + gst_video_codec_state_unref (gst_vp9_enc->input_state); + + g_mutex_clear (&gst_vp9_enc->encoder_lock); + + G_OBJECT_CLASS (parent_class)->finalize (object); + +} + +static void +gst_vp9_enc_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) +{ + GstVP9Enc *gst_vp9_enc; + gboolean global = FALSE; + vpx_codec_err_t status; + + g_return_if_fail (GST_IS_VP9_ENC (object)); + gst_vp9_enc = GST_VP9_ENC (object); + + GST_DEBUG_OBJECT (object, "gst_vp9_enc_set_property"); + g_mutex_lock (&gst_vp9_enc->encoder_lock); + switch (prop_id) { + case PROP_RC_END_USAGE: + gst_vp9_enc->cfg.rc_end_usage = g_value_get_enum (value); + global = TRUE; + break; + case PROP_RC_TARGET_BITRATE: + gst_vp9_enc->cfg.rc_target_bitrate = g_value_get_int (value) / 1000; + gst_vp9_enc->rc_target_bitrate_set = TRUE; + global = TRUE; + break; + case PROP_RC_MIN_QUANTIZER: + gst_vp9_enc->cfg.rc_min_quantizer = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_MAX_QUANTIZER: + gst_vp9_enc->cfg.rc_max_quantizer = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_DROPFRAME_THRESH: + gst_vp9_enc->cfg.rc_dropframe_thresh = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_RESIZE_ALLOWED: + gst_vp9_enc->cfg.rc_resize_allowed = g_value_get_boolean (value); + global = TRUE; + break; + case PROP_RC_RESIZE_UP_THRESH: + gst_vp9_enc->cfg.rc_resize_up_thresh = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_RESIZE_DOWN_THRESH: + gst_vp9_enc->cfg.rc_resize_down_thresh = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_UNDERSHOOT_PCT: + gst_vp9_enc->cfg.rc_undershoot_pct = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_OVERSHOOT_PCT: + gst_vp9_enc->cfg.rc_overshoot_pct = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_BUF_SZ: + gst_vp9_enc->cfg.rc_buf_sz = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_BUF_INITIAL_SZ: + gst_vp9_enc->cfg.rc_buf_initial_sz = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_BUF_OPTIMAL_SZ: + gst_vp9_enc->cfg.rc_buf_optimal_sz = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_2PASS_VBR_BIAS_PCT: + gst_vp9_enc->cfg.rc_2pass_vbr_bias_pct = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_2PASS_VBR_MINSECTION_PCT: + gst_vp9_enc->cfg.rc_2pass_vbr_minsection_pct = g_value_get_int (value); + global = TRUE; + break; + case PROP_RC_2PASS_VBR_MAXSECTION_PCT: + gst_vp9_enc->cfg.rc_2pass_vbr_maxsection_pct = g_value_get_int (value); + global = TRUE; + break; + case PROP_KF_MODE: + gst_vp9_enc->cfg.kf_mode = g_value_get_enum (value); + global = TRUE; + break; + case PROP_KF_MAX_DIST: + gst_vp9_enc->cfg.kf_max_dist = g_value_get_int (value); + global = TRUE; + break; + case PROP_MULTIPASS_MODE: + gst_vp9_enc->cfg.g_pass = g_value_get_enum (value); + global = TRUE; + break; + case PROP_MULTIPASS_CACHE_FILE: + if (gst_vp9_enc->multipass_cache_file) + g_free (gst_vp9_enc->multipass_cache_file); + gst_vp9_enc->multipass_cache_file = g_value_dup_string (value); + break; + case PROP_TS_NUMBER_LAYERS: + gst_vp9_enc->cfg.ts_number_layers = g_value_get_int (value); + global = TRUE; + break; + case PROP_TS_TARGET_BITRATE:{ + GValueArray *va = g_value_get_boxed (value); + + memset (&gst_vp9_enc->cfg.ts_target_bitrate, 0, + sizeof (gst_vp9_enc->cfg.ts_target_bitrate)); + if (va->n_values > VPX_TS_MAX_LAYERS) { + g_warning ("%s: Only %d layers allowed at maximum", + GST_ELEMENT_NAME (gst_vp9_enc), VPX_TS_MAX_LAYERS); + } else if (va) { + gint i; + + for (i = 0; i < va->n_values; i++) + gst_vp9_enc->cfg.ts_target_bitrate[i] = + g_value_get_int (g_value_array_get_nth (va, i)); + gst_vp9_enc->n_ts_target_bitrate = va->n_values; + } else { + gst_vp9_enc->n_ts_target_bitrate = 0; + } + global = TRUE; + break; + } + case PROP_TS_RATE_DECIMATOR:{ + GValueArray *va = g_value_get_boxed (value); + + memset (&gst_vp9_enc->cfg.ts_rate_decimator, 0, + sizeof (gst_vp9_enc->cfg.ts_rate_decimator)); + if (va->n_values > VPX_TS_MAX_LAYERS) { + g_warning ("%s: Only %d layers allowed at maximum", + GST_ELEMENT_NAME (gst_vp9_enc), VPX_TS_MAX_LAYERS); + } else if (va) { + gint i; + + for (i = 0; i < va->n_values; i++) + gst_vp9_enc->cfg.ts_rate_decimator[i] = + g_value_get_int (g_value_array_get_nth (va, i)); + gst_vp9_enc->n_ts_rate_decimator = va->n_values; + } else { + gst_vp9_enc->n_ts_rate_decimator = 0; + } + global = TRUE; + break; + } + case PROP_TS_PERIODICITY: + gst_vp9_enc->cfg.ts_periodicity = g_value_get_int (value); + global = TRUE; + break; + case PROP_TS_LAYER_ID:{ + GValueArray *va = g_value_get_boxed (value); + + memset (&gst_vp9_enc->cfg.ts_layer_id, 0, + sizeof (gst_vp9_enc->cfg.ts_layer_id)); + if (va->n_values > VPX_TS_MAX_PERIODICITY) { + g_warning ("%s: Only %d sized layer sequences allowed at maximum", + GST_ELEMENT_NAME (gst_vp9_enc), VPX_TS_MAX_PERIODICITY); + } else if (va) { + gint i; + + for (i = 0; i < va->n_values; i++) + gst_vp9_enc->cfg.ts_layer_id[i] = + g_value_get_int (g_value_array_get_nth (va, i)); + gst_vp9_enc->n_ts_layer_id = va->n_values; + } else { + gst_vp9_enc->n_ts_layer_id = 0; + } + global = TRUE; + break; + } + case PROP_ERROR_RESILIENT: + gst_vp9_enc->cfg.g_error_resilient = g_value_get_flags (value); + global = TRUE; + break; + case PROP_LAG_IN_FRAMES: + gst_vp9_enc->cfg.g_lag_in_frames = g_value_get_int (value); + global = TRUE; + break; + case PROP_THREADS: + gst_vp9_enc->cfg.g_threads = g_value_get_int (value); + global = TRUE; + break; + case PROP_DEADLINE: + gst_vp9_enc->deadline = g_value_get_int64 (value); + break; + case PROP_H_SCALING_MODE: + gst_vp9_enc->h_scaling_mode = g_value_get_enum (value); + if (gst_vp9_enc->inited) { + vpx_scaling_mode_t sm; + + sm.h_scaling_mode = gst_vp9_enc->h_scaling_mode; + sm.v_scaling_mode = gst_vp9_enc->v_scaling_mode; + + status = + vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_SCALEMODE, &sm); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_SCALEMODE: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_V_SCALING_MODE: + gst_vp9_enc->v_scaling_mode = g_value_get_enum (value); + if (gst_vp9_enc->inited) { + vpx_scaling_mode_t sm; + + sm.h_scaling_mode = gst_vp9_enc->h_scaling_mode; + sm.v_scaling_mode = gst_vp9_enc->v_scaling_mode; + + status = + vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_SCALEMODE, &sm); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_SCALEMODE: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_CPU_USED: + gst_vp9_enc->cpu_used = g_value_get_int (value); + if (gst_vp9_enc->inited) { + status = + vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_CPUUSED, + gst_vp9_enc->cpu_used); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, "Failed to set VP8E_SET_CPUUSED: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_ENABLE_AUTO_ALT_REF: + gst_vp9_enc->enable_auto_alt_ref = g_value_get_boolean (value); + if (gst_vp9_enc->inited) { + status = + vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_ENABLEAUTOALTREF, + (gst_vp9_enc->enable_auto_alt_ref ? 1 : 0)); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_ENABLEAUTOALTREF: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_NOISE_SENSITIVITY: + gst_vp9_enc->noise_sensitivity = g_value_get_int (value); + if (gst_vp9_enc->inited) { + status = + vpx_codec_control (&gst_vp9_enc->encoder, + VP8E_SET_NOISE_SENSITIVITY, gst_vp9_enc->noise_sensitivity); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_NOISE_SENSITIVITY: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_SHARPNESS: + gst_vp9_enc->sharpness = g_value_get_int (value); + if (gst_vp9_enc->inited) { + status = vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_SHARPNESS, + gst_vp9_enc->sharpness); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_SHARPNESS: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_STATIC_THRESHOLD: + gst_vp9_enc->static_threshold = g_value_get_int (value); + if (gst_vp9_enc->inited) { + status = + vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_STATIC_THRESHOLD, + gst_vp9_enc->static_threshold); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_STATIC_THRESHOLD: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_TOKEN_PARTITIONS: + gst_vp9_enc->token_partitions = g_value_get_enum (value); + if (gst_vp9_enc->inited) { + status = + vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_TOKEN_PARTITIONS, + gst_vp9_enc->token_partitions); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_TOKEN_PARTIONS: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_ARNR_MAXFRAMES: + gst_vp9_enc->arnr_maxframes = g_value_get_int (value); + if (gst_vp9_enc->inited) { + status = + vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_ARNR_MAXFRAMES, + gst_vp9_enc->arnr_maxframes); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_ARNR_MAXFRAMES: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_ARNR_STRENGTH: + gst_vp9_enc->arnr_strength = g_value_get_int (value); + if (gst_vp9_enc->inited) { + status = + vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_ARNR_STRENGTH, + gst_vp9_enc->arnr_strength); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_ARNR_STRENGTH: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_ARNR_TYPE: + gst_vp9_enc->arnr_type = g_value_get_int (value); + if (gst_vp9_enc->inited) { + status = vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_ARNR_TYPE, + gst_vp9_enc->arnr_type); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_ARNR_TYPE: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_TUNING: + gst_vp9_enc->tuning = g_value_get_enum (value); + if (gst_vp9_enc->inited) { + status = vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_TUNING, + gst_vp9_enc->tuning); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_TUNING: %s", gst_vpx_error_name (status)); + } + } + break; + case PROP_CQ_LEVEL: + gst_vp9_enc->cq_level = g_value_get_int (value); + if (gst_vp9_enc->inited) { + status = vpx_codec_control (&gst_vp9_enc->encoder, VP8E_SET_CQ_LEVEL, + gst_vp9_enc->cq_level); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_CQ_LEVEL: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_MAX_INTRA_BITRATE_PCT: + gst_vp9_enc->max_intra_bitrate_pct = g_value_get_int (value); + if (gst_vp9_enc->inited) { + status = + vpx_codec_control (&gst_vp9_enc->encoder, + VP8E_SET_MAX_INTRA_BITRATE_PCT, gst_vp9_enc->max_intra_bitrate_pct); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (gst_vp9_enc, + "Failed to set VP8E_SET_MAX_INTRA_BITRATE_PCT: %s", + gst_vpx_error_name (status)); + } + } + break; + case PROP_TIMEBASE: + gst_vp9_enc->timebase_n = gst_value_get_fraction_numerator (value); + gst_vp9_enc->timebase_d = gst_value_get_fraction_denominator (value); + break; + default: + break; + } + + if (global &&gst_vp9_enc->inited) { + status = + vpx_codec_enc_config_set (&gst_vp9_enc->encoder, &gst_vp9_enc->cfg); + if (status != VPX_CODEC_OK) { + g_mutex_unlock (&gst_vp9_enc->encoder_lock); + GST_ELEMENT_ERROR (gst_vp9_enc, LIBRARY, INIT, + ("Failed to set encoder configuration"), ("%s", + gst_vpx_error_name (status))); + } else { + g_mutex_unlock (&gst_vp9_enc->encoder_lock); + } + } else { + g_mutex_unlock (&gst_vp9_enc->encoder_lock); + } +} + +static void +gst_vp9_enc_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) +{ + GstVP9Enc *gst_vp9_enc; + + g_return_if_fail (GST_IS_VP9_ENC (object)); + gst_vp9_enc = GST_VP9_ENC (object); + + g_mutex_lock (&gst_vp9_enc->encoder_lock); + switch (prop_id) { + case PROP_RC_END_USAGE: + g_value_set_enum (value, gst_vp9_enc->cfg.rc_end_usage); + break; + case PROP_RC_TARGET_BITRATE: + g_value_set_int (value, gst_vp9_enc->cfg.rc_target_bitrate * 1000); + break; + case PROP_RC_MIN_QUANTIZER: + g_value_set_int (value, gst_vp9_enc->cfg.rc_min_quantizer); + break; + case PROP_RC_MAX_QUANTIZER: + g_value_set_int (value, gst_vp9_enc->cfg.rc_max_quantizer); + break; + case PROP_RC_DROPFRAME_THRESH: + g_value_set_int (value, gst_vp9_enc->cfg.rc_dropframe_thresh); + break; + case PROP_RC_RESIZE_ALLOWED: + g_value_set_boolean (value, gst_vp9_enc->cfg.rc_resize_allowed); + break; + case PROP_RC_RESIZE_UP_THRESH: + g_value_set_int (value, gst_vp9_enc->cfg.rc_resize_up_thresh); + break; + case PROP_RC_RESIZE_DOWN_THRESH: + g_value_set_int (value, gst_vp9_enc->cfg.rc_resize_down_thresh); + break; + case PROP_RC_UNDERSHOOT_PCT: + g_value_set_int (value, gst_vp9_enc->cfg.rc_undershoot_pct); + break; + case PROP_RC_OVERSHOOT_PCT: + g_value_set_int (value, gst_vp9_enc->cfg.rc_overshoot_pct); + break; + case PROP_RC_BUF_SZ: + g_value_set_int (value, gst_vp9_enc->cfg.rc_buf_sz); + break; + case PROP_RC_BUF_INITIAL_SZ: + g_value_set_int (value, gst_vp9_enc->cfg.rc_buf_initial_sz); + break; + case PROP_RC_BUF_OPTIMAL_SZ: + g_value_set_int (value, gst_vp9_enc->cfg.rc_buf_optimal_sz); + break; + case PROP_RC_2PASS_VBR_BIAS_PCT: + g_value_set_int (value, gst_vp9_enc->cfg.rc_2pass_vbr_bias_pct); + break; + case PROP_RC_2PASS_VBR_MINSECTION_PCT: + g_value_set_int (value, gst_vp9_enc->cfg.rc_2pass_vbr_minsection_pct); + break; + case PROP_RC_2PASS_VBR_MAXSECTION_PCT: + g_value_set_int (value, gst_vp9_enc->cfg.rc_2pass_vbr_maxsection_pct); + break; + case PROP_KF_MODE: + g_value_set_enum (value, gst_vp9_enc->cfg.kf_mode); + break; + case PROP_KF_MAX_DIST: + g_value_set_int (value, gst_vp9_enc->cfg.kf_max_dist); + break; + case PROP_MULTIPASS_MODE: + g_value_set_enum (value, gst_vp9_enc->cfg.g_pass); + break; + case PROP_MULTIPASS_CACHE_FILE: + g_value_set_string (value, gst_vp9_enc->multipass_cache_file); + break; + case PROP_TS_NUMBER_LAYERS: + g_value_set_int (value, gst_vp9_enc->cfg.ts_number_layers); + break; + case PROP_TS_TARGET_BITRATE:{ + GValueArray *va; + + if (gst_vp9_enc->n_ts_target_bitrate == 0) { + g_value_set_boxed (value, NULL); + } else { + gint i; + + va = g_value_array_new (gst_vp9_enc->n_ts_target_bitrate); + for (i = 0; i < gst_vp9_enc->n_ts_target_bitrate; i++) { + GValue v = { 0, }; + + g_value_init (&v, G_TYPE_INT); + g_value_set_int (&v, gst_vp9_enc->cfg.ts_target_bitrate[i]); + g_value_array_append (va, &v); + g_value_unset (&v); + } + g_value_set_boxed (value, va); + g_value_array_free (va); + } + break; + } + case PROP_TS_RATE_DECIMATOR:{ + GValueArray *va; + + if (gst_vp9_enc->n_ts_rate_decimator == 0) { + g_value_set_boxed (value, NULL); + } else { + gint i; + + va = g_value_array_new (gst_vp9_enc->n_ts_rate_decimator); + for (i = 0; i < gst_vp9_enc->n_ts_rate_decimator; i++) { + GValue v = { 0, }; + + g_value_init (&v, G_TYPE_INT); + g_value_set_int (&v, gst_vp9_enc->cfg.ts_rate_decimator[i]); + g_value_array_append (va, &v); + g_value_unset (&v); + } + g_value_set_boxed (value, va); + g_value_array_free (va); + } + break; + } + case PROP_TS_PERIODICITY: + g_value_set_int (value, gst_vp9_enc->cfg.ts_periodicity); + break; + case PROP_TS_LAYER_ID:{ + GValueArray *va; + + if (gst_vp9_enc->n_ts_layer_id == 0) { + g_value_set_boxed (value, NULL); + } else { + gint i; + + va = g_value_array_new (gst_vp9_enc->n_ts_layer_id); + for (i = 0; i < gst_vp9_enc->n_ts_layer_id; i++) { + GValue v = { 0, }; + + g_value_init (&v, G_TYPE_INT); + g_value_set_int (&v, gst_vp9_enc->cfg.ts_layer_id[i]); + g_value_array_append (va, &v); + g_value_unset (&v); + } + g_value_set_boxed (value, va); + g_value_array_free (va); + } + break; + } + case PROP_ERROR_RESILIENT: + g_value_set_flags (value, gst_vp9_enc->cfg.g_error_resilient); + break; + case PROP_LAG_IN_FRAMES: + g_value_set_int (value, gst_vp9_enc->cfg.g_lag_in_frames); + break; + case PROP_THREADS: + g_value_set_int (value, gst_vp9_enc->cfg.g_threads); + break; + case PROP_DEADLINE: + g_value_set_int64 (value, gst_vp9_enc->deadline); + break; + case PROP_H_SCALING_MODE: + g_value_set_enum (value, gst_vp9_enc->h_scaling_mode); + break; + case PROP_V_SCALING_MODE: + g_value_set_enum (value, gst_vp9_enc->v_scaling_mode); + break; + case PROP_CPU_USED: + g_value_set_int (value, gst_vp9_enc->cpu_used); + break; + case PROP_ENABLE_AUTO_ALT_REF: + g_value_set_boolean (value, gst_vp9_enc->enable_auto_alt_ref); + break; + case PROP_NOISE_SENSITIVITY: + g_value_set_int (value, gst_vp9_enc->noise_sensitivity); + break; + case PROP_SHARPNESS: + g_value_set_int (value, gst_vp9_enc->sharpness); + break; + case PROP_STATIC_THRESHOLD: + g_value_set_int (value, gst_vp9_enc->static_threshold); + break; + case PROP_TOKEN_PARTITIONS: + g_value_set_enum (value, gst_vp9_enc->token_partitions); + break; + case PROP_ARNR_MAXFRAMES: + g_value_set_int (value, gst_vp9_enc->arnr_maxframes); + break; + case PROP_ARNR_STRENGTH: + g_value_set_int (value, gst_vp9_enc->arnr_strength); + break; + case PROP_ARNR_TYPE: + g_value_set_int (value, gst_vp9_enc->arnr_type); + break; + case PROP_TUNING: + g_value_set_enum (value, gst_vp9_enc->tuning); + break; + case PROP_CQ_LEVEL: + g_value_set_int (value, gst_vp9_enc->cq_level); + break; + case PROP_MAX_INTRA_BITRATE_PCT: + g_value_set_int (value, gst_vp9_enc->max_intra_bitrate_pct); + break; + case PROP_TIMEBASE: + gst_value_set_fraction (value, gst_vp9_enc->timebase_n, + gst_vp9_enc->timebase_d); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } + + g_mutex_unlock (&gst_vp9_enc->encoder_lock); +} + +static gboolean +gst_vp9_enc_start (GstVideoEncoder * video_encoder) +{ + GstVP9Enc *encoder = GST_VP9_ENC (video_encoder); + + GST_DEBUG_OBJECT (video_encoder, "start"); + + if (!encoder->have_default_config) { + GST_ELEMENT_ERROR (encoder, LIBRARY, INIT, + ("Failed to get default encoder configuration"), (NULL)); + return FALSE; + } + + return TRUE; +} + +static gboolean +gst_vp9_enc_stop (GstVideoEncoder * video_encoder) +{ + GstVP9Enc *encoder; + + GST_DEBUG_OBJECT (video_encoder, "stop"); + + encoder = GST_VP9_ENC (video_encoder); + + g_mutex_lock (&encoder->encoder_lock); + if (encoder->inited) { + vpx_codec_destroy (&encoder->encoder); + encoder->inited = FALSE; + } + + if (encoder->first_pass_cache_content) { + g_byte_array_free (encoder->first_pass_cache_content, TRUE); + encoder->first_pass_cache_content = NULL; + } + + if (encoder->cfg.rc_twopass_stats_in.buf) { + g_free (encoder->cfg.rc_twopass_stats_in.buf); + encoder->cfg.rc_twopass_stats_in.buf = NULL; + encoder->cfg.rc_twopass_stats_in.sz = 0; + } + g_mutex_unlock (&encoder->encoder_lock); + + gst_tag_setter_reset_tags (GST_TAG_SETTER (encoder)); + + return TRUE; +} + +static gint +gst_vp9_enc_get_downstream_profile (GstVP9Enc * encoder) +{ + GstCaps *allowed; + GstStructure *s; + gint profile = DEFAULT_PROFILE; + + allowed = gst_pad_get_allowed_caps (GST_VIDEO_ENCODER_SRC_PAD (encoder)); + if (allowed) { + allowed = gst_caps_truncate (allowed); + s = gst_caps_get_structure (allowed, 0); + if (gst_structure_has_field (s, "profile")) { + const GValue *v = gst_structure_get_value (s, "profile"); + const gchar *profile_str = NULL; + + if (GST_VALUE_HOLDS_LIST (v) && gst_value_list_get_size (v) > 0) { + profile_str = g_value_get_string (gst_value_list_get_value (v, 0)); + } else if (G_VALUE_HOLDS_STRING (v)) { + profile_str = g_value_get_string (v); + } + + if (profile_str) { + gchar *endptr = NULL; + + profile = g_ascii_strtoull (profile_str, &endptr, 10); + if (*endptr != '\0' || profile < 0 || profile > 3) { + GST_ERROR_OBJECT (encoder, "Invalid profile '%s'", profile_str); + profile = DEFAULT_PROFILE; + } + } + } + gst_caps_unref (allowed); + } + + GST_DEBUG_OBJECT (encoder, "Using profile %d", profile); + + return profile; +} + +static gboolean +gst_vp9_enc_set_format (GstVideoEncoder * video_encoder, + GstVideoCodecState * state) +{ + GstVP9Enc *encoder; + vpx_codec_err_t status; + vpx_image_t *image; + GstCaps *caps; + gboolean ret = TRUE; + GstVideoInfo *info = &state->info; + GstVideoCodecState *output_state; + gchar *profile_str; + + encoder = GST_VP9_ENC (video_encoder); + GST_DEBUG_OBJECT (video_encoder, "set_format"); + + if (encoder->inited) { + GST_DEBUG_OBJECT (video_encoder, "refusing renegotiation"); + return FALSE; + } + + g_mutex_lock (&encoder->encoder_lock); + encoder->cfg.g_profile = gst_vp9_enc_get_downstream_profile (encoder); + + /* Scale default bitrate to our size */ + if (!encoder->rc_target_bitrate_set) + encoder->cfg.rc_target_bitrate = + gst_util_uint64_scale (DEFAULT_RC_TARGET_BITRATE, + GST_VIDEO_INFO_WIDTH (info) * GST_VIDEO_INFO_HEIGHT (info), + 320 * 240 * 1000); + + encoder->cfg.g_w = GST_VIDEO_INFO_WIDTH (info); + encoder->cfg.g_h = GST_VIDEO_INFO_HEIGHT (info); + + if (encoder->timebase_n != 0 && encoder->timebase_d != 0) { + GST_DEBUG_OBJECT (video_encoder, "Using timebase configuration"); + encoder->cfg.g_timebase.num = encoder->timebase_n; + encoder->cfg.g_timebase.den = encoder->timebase_d; + } else if (GST_VIDEO_INFO_FPS_D (info) != 0 + && GST_VIDEO_INFO_FPS_N (info) != 0) { + /* GstVideoInfo holds either the framerate or max-framerate (if framerate + * is 0) in FPS so this will be used if max-framerate or framerate + * is set */ + GST_DEBUG_OBJECT (video_encoder, "Setting timebase from framerate"); + encoder->cfg.g_timebase.num = GST_VIDEO_INFO_FPS_D (info); + encoder->cfg.g_timebase.den = GST_VIDEO_INFO_FPS_N (info); + } else { + /* Zero framerate and max-framerate but still need to setup the timebase to avoid + * a divide by zero error. Presuming the lowest common denominator will be RTP - + * VP9 payload draft states clock rate of 90000 which should work for anyone where + * FPS < 90000 (shouldn't be too many cases where it's higher) though wouldn't be optimal. RTP specification + * http://tools.ietf.org/html/draft-ietf-payload-vp9-01 section 6.3.1 */ + GST_WARNING_OBJECT (encoder, + "No timebase and zero framerate setting timebase to 1/90000"); + encoder->cfg.g_timebase.num = 1; + encoder->cfg.g_timebase.den = 90000; + } + + if (encoder->cfg.g_pass == VPX_RC_FIRST_PASS) { + encoder->first_pass_cache_content = g_byte_array_sized_new (4096); + } else if (encoder->cfg.g_pass == VPX_RC_LAST_PASS) { + GError *err = NULL; + + if (!encoder->multipass_cache_file) { + GST_ELEMENT_ERROR (encoder, RESOURCE, OPEN_READ, + ("No multipass cache file provided"), (NULL)); + g_mutex_unlock (&encoder->encoder_lock); + return FALSE; + } + + if (!g_file_get_contents (encoder->multipass_cache_file, + (gchar **) & encoder->cfg.rc_twopass_stats_in.buf, + &encoder->cfg.rc_twopass_stats_in.sz, &err)) { + GST_ELEMENT_ERROR (encoder, RESOURCE, OPEN_READ, + ("Failed to read multipass cache file provided"), ("%s", + err->message)); + g_error_free (err); + g_mutex_unlock (&encoder->encoder_lock); + return FALSE; + } + } + + status = vpx_codec_enc_init (&encoder->encoder, &vpx_codec_vp9_cx_algo, + &encoder->cfg, 0); + if (status != VPX_CODEC_OK) { + GST_ELEMENT_ERROR (encoder, LIBRARY, INIT, + ("Failed to initialize encoder"), ("%s", gst_vpx_error_name (status))); + g_mutex_unlock (&encoder->encoder_lock); + return FALSE; + } + + /* FIXME: Disabled for now, does not work with VP9 */ +#if 0 + { + vpx_scaling_mode_t sm; + + sm.h_scaling_mode = encoder->h_scaling_mode; + sm.v_scaling_mode = encoder->v_scaling_mode; + + status = vpx_codec_control (&encoder->encoder, VP8E_SET_SCALEMODE, &sm); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, "Failed to set VP8E_SET_SCALEMODE: %s", + gst_vpx_error_name (status)); + } + } +#endif + + status = + vpx_codec_control (&encoder->encoder, VP8E_SET_CPUUSED, + encoder->cpu_used); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, "Failed to set VP8E_SET_CPUUSED: %s", + gst_vpx_error_name (status)); + } + + status = + vpx_codec_control (&encoder->encoder, VP8E_SET_ENABLEAUTOALTREF, + (encoder->enable_auto_alt_ref ? 1 : 0)); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_ENABLEAUTOALTREF: %s", + gst_vpx_error_name (status)); + } + status = vpx_codec_control (&encoder->encoder, VP8E_SET_NOISE_SENSITIVITY, + encoder->noise_sensitivity); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_NOISE_SENSITIVITY: %s", + gst_vpx_error_name (status)); + } + status = vpx_codec_control (&encoder->encoder, VP8E_SET_SHARPNESS, + encoder->sharpness); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_SHARPNESS: %s", gst_vpx_error_name (status)); + } + status = vpx_codec_control (&encoder->encoder, VP8E_SET_STATIC_THRESHOLD, + encoder->static_threshold); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_STATIC_THRESHOLD: %s", + gst_vpx_error_name (status)); + } + status = vpx_codec_control (&encoder->encoder, VP8E_SET_TOKEN_PARTITIONS, + encoder->token_partitions); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_TOKEN_PARTIONS: %s", + gst_vpx_error_name (status)); + } + status = vpx_codec_control (&encoder->encoder, VP8E_SET_ARNR_MAXFRAMES, + encoder->arnr_maxframes); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_ARNR_MAXFRAMES: %s", + gst_vpx_error_name (status)); + } + status = vpx_codec_control (&encoder->encoder, VP8E_SET_ARNR_STRENGTH, + encoder->arnr_strength); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_ARNR_STRENGTH: %s", + gst_vpx_error_name (status)); + } + status = vpx_codec_control (&encoder->encoder, VP8E_SET_ARNR_TYPE, + encoder->arnr_type); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_ARNR_TYPE: %s", gst_vpx_error_name (status)); + } + status = vpx_codec_control (&encoder->encoder, VP8E_SET_TUNING, + encoder->tuning); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_TUNING: %s", gst_vpx_error_name (status)); + } + status = vpx_codec_control (&encoder->encoder, VP8E_SET_CQ_LEVEL, + encoder->cq_level); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_CQ_LEVEL: %s", gst_vpx_error_name (status)); + } + status = vpx_codec_control (&encoder->encoder, VP8E_SET_MAX_INTRA_BITRATE_PCT, + encoder->max_intra_bitrate_pct); + if (status != VPX_CODEC_OK) { + GST_WARNING_OBJECT (encoder, + "Failed to set VP8E_SET_MAX_INTRA_BITRATE_PCT: %s", + gst_vpx_error_name (status)); + } + + if (GST_VIDEO_INFO_FPS_D (info) == 0 || GST_VIDEO_INFO_FPS_N (info) == 0) { + gst_video_encoder_set_latency (video_encoder, GST_CLOCK_TIME_NONE, + GST_CLOCK_TIME_NONE); + } else { + gst_video_encoder_set_latency (video_encoder, 0, + gst_util_uint64_scale (encoder->cfg.g_lag_in_frames, + GST_VIDEO_INFO_FPS_D (info) * GST_SECOND, + GST_VIDEO_INFO_FPS_N (info))); + } + encoder->inited = TRUE; + + /* Store input state */ + if (encoder->input_state) + gst_video_codec_state_unref (encoder->input_state); + encoder->input_state = gst_video_codec_state_ref (state); + + /* prepare cached image buffer setup */ + image = &encoder->image; + memset (image, 0, sizeof (*image)); + + switch (encoder->input_state->info.finfo->format) { + case GST_VIDEO_FORMAT_I420: + image->fmt = VPX_IMG_FMT_I420; + image->bps = 12; + image->x_chroma_shift = image->y_chroma_shift = 1; + break; + case GST_VIDEO_FORMAT_YV12: + image->fmt = VPX_IMG_FMT_YV12; + image->bps = 12; + image->x_chroma_shift = image->y_chroma_shift = 1; + break; + case GST_VIDEO_FORMAT_Y42B: + image->fmt = VPX_IMG_FMT_I422; + image->bps = 16; + image->x_chroma_shift = 1; + image->y_chroma_shift = 0; + break; + case GST_VIDEO_FORMAT_Y444: + image->fmt = VPX_IMG_FMT_I444; + image->bps = 24; + image->x_chroma_shift = image->y_chroma_shift = 0; + break; + default: + g_assert_not_reached (); + break; + } + image->w = image->d_w = GST_VIDEO_INFO_WIDTH (info); + image->h = image->d_h = GST_VIDEO_INFO_HEIGHT (info); + + image->stride[VPX_PLANE_Y] = GST_VIDEO_INFO_COMP_STRIDE (info, 0); + image->stride[VPX_PLANE_U] = GST_VIDEO_INFO_COMP_STRIDE (info, 1); + image->stride[VPX_PLANE_V] = GST_VIDEO_INFO_COMP_STRIDE (info, 2); + + profile_str = g_strdup_printf ("%d", encoder->cfg.g_profile); + caps = gst_caps_new_simple ("video/x-vp9", + "profile", G_TYPE_STRING, profile_str, NULL); + g_free (profile_str); + + g_mutex_unlock (&encoder->encoder_lock); + + output_state = + gst_video_encoder_set_output_state (video_encoder, caps, state); + gst_video_codec_state_unref (output_state); + + gst_video_encoder_negotiate (GST_VIDEO_ENCODER (encoder)); + + return ret; +} + +static GstFlowReturn +gst_vp9_enc_process (GstVP9Enc * encoder) +{ + vpx_codec_iter_t iter = NULL; + const vpx_codec_cx_pkt_t *pkt; + GstVideoEncoder *video_encoder; + GstVideoCodecFrame *frame; + GstFlowReturn ret = GST_FLOW_OK; + + video_encoder = GST_VIDEO_ENCODER (encoder); + + g_mutex_lock (&encoder->encoder_lock); + pkt = vpx_codec_get_cx_data (&encoder->encoder, &iter); + while (pkt != NULL) { + GstBuffer *buffer; + gboolean invisible; + + GST_DEBUG_OBJECT (encoder, "packet %u type %d", (guint) pkt->data.frame.sz, + pkt->kind); + + if (pkt->kind == VPX_CODEC_STATS_PKT + && encoder->cfg.g_pass == VPX_RC_FIRST_PASS) { + GST_LOG_OBJECT (encoder, "handling STATS packet"); + + g_byte_array_append (encoder->first_pass_cache_content, + pkt->data.twopass_stats.buf, pkt->data.twopass_stats.sz); + + frame = gst_video_encoder_get_oldest_frame (video_encoder); + if (frame != NULL) { + buffer = gst_buffer_new (); + GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_LIVE); + frame->output_buffer = buffer; + g_mutex_unlock (&encoder->encoder_lock); + ret = gst_video_encoder_finish_frame (video_encoder, frame); + g_mutex_lock (&encoder->encoder_lock); + } + + pkt = vpx_codec_get_cx_data (&encoder->encoder, &iter); + continue; + } else if (pkt->kind != VPX_CODEC_CX_FRAME_PKT) { + GST_LOG_OBJECT (encoder, "non frame pkt: %d", pkt->kind); + pkt = vpx_codec_get_cx_data (&encoder->encoder, &iter); + continue; + } + + invisible = (pkt->data.frame.flags & VPX_FRAME_IS_INVISIBLE) != 0; + frame = gst_video_encoder_get_oldest_frame (video_encoder); + g_assert (frame != NULL); + if ((pkt->data.frame.flags & VPX_FRAME_IS_KEY) != 0) + GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame); + else + GST_VIDEO_CODEC_FRAME_UNSET_SYNC_POINT (frame); + + /* FIXME : It would be nice to avoid the memory copy ... */ + buffer = + gst_buffer_new_wrapped (g_memdup (pkt->data.frame.buf, + pkt->data.frame.sz), pkt->data.frame.sz); + + if (invisible) { + g_mutex_unlock (&encoder->encoder_lock); + ret = gst_pad_push (GST_VIDEO_ENCODER_SRC_PAD (encoder), buffer); + g_mutex_lock (&encoder->encoder_lock); + gst_video_codec_frame_unref (frame); + } else { + frame->output_buffer = buffer; + g_mutex_unlock (&encoder->encoder_lock); + ret = gst_video_encoder_finish_frame (video_encoder, frame); + g_mutex_lock (&encoder->encoder_lock); + } + + pkt = vpx_codec_get_cx_data (&encoder->encoder, &iter); + } + g_mutex_unlock (&encoder->encoder_lock); + + return ret; +} + +static GstFlowReturn +gst_vp9_enc_finish (GstVideoEncoder * video_encoder) +{ + GstVP9Enc *encoder; + int flags = 0; + vpx_codec_err_t status; + + GST_DEBUG_OBJECT (video_encoder, "finish"); + + encoder = GST_VP9_ENC (video_encoder); + + g_mutex_lock (&encoder->encoder_lock); + status = + vpx_codec_encode (&encoder->encoder, NULL, encoder->n_frames, 1, flags, + encoder->deadline); + g_mutex_unlock (&encoder->encoder_lock); + if (status != 0) { + GST_ERROR_OBJECT (encoder, "encode returned %d %s", status, + gst_vpx_error_name (status)); + return GST_FLOW_ERROR; + } + + /* dispatch remaining frames */ + gst_vp9_enc_process (encoder); + + if (encoder->cfg.g_pass == VPX_RC_FIRST_PASS && encoder->multipass_cache_file) { + GError *err = NULL; + + if (!g_file_set_contents (encoder->multipass_cache_file, + (const gchar *) encoder->first_pass_cache_content->data, + encoder->first_pass_cache_content->len, &err)) { + GST_ELEMENT_ERROR (encoder, RESOURCE, WRITE, (NULL), + ("Failed to write multipass cache file: %s", err->message)); + g_error_free (err); + } + } + + return GST_FLOW_OK; +} + +static vpx_image_t * +gst_vp9_enc_buffer_to_image (GstVP9Enc * enc, GstVideoFrame * frame) +{ + vpx_image_t *image = g_slice_new (vpx_image_t); + + memcpy (image, &enc->image, sizeof (*image)); + + image->planes[VPX_PLANE_Y] = GST_VIDEO_FRAME_COMP_DATA (frame, 0); + image->planes[VPX_PLANE_U] = GST_VIDEO_FRAME_COMP_DATA (frame, 1); + image->planes[VPX_PLANE_V] = GST_VIDEO_FRAME_COMP_DATA (frame, 2); + + image->stride[VPX_PLANE_Y] = GST_VIDEO_FRAME_COMP_STRIDE (frame, 0); + image->stride[VPX_PLANE_U] = GST_VIDEO_FRAME_COMP_STRIDE (frame, 1); + image->stride[VPX_PLANE_V] = GST_VIDEO_FRAME_COMP_STRIDE (frame, 2); + + return image; +} + +static GstFlowReturn +gst_vp9_enc_handle_frame (GstVideoEncoder * video_encoder, + GstVideoCodecFrame * frame) +{ + GstVP9Enc *encoder; + vpx_codec_err_t status; + int flags = 0; + vpx_image_t *image; + GstVideoFrame vframe; + + GST_DEBUG_OBJECT (video_encoder, "handle_frame"); + + encoder = GST_VP9_ENC (video_encoder); + + encoder->n_frames++; + + GST_DEBUG_OBJECT (video_encoder, "size %d %d", + GST_VIDEO_INFO_WIDTH (&encoder->input_state->info), + GST_VIDEO_INFO_HEIGHT (&encoder->input_state->info)); + + gst_video_frame_map (&vframe, &encoder->input_state->info, + frame->input_buffer, GST_MAP_READ); + image = gst_vp9_enc_buffer_to_image (encoder, &vframe); + + if (GST_VIDEO_CODEC_FRAME_IS_FORCE_KEYFRAME (frame)) { + flags |= VPX_EFLAG_FORCE_KF; + } + + g_mutex_lock (&encoder->encoder_lock); + status = vpx_codec_encode (&encoder->encoder, image, + encoder->n_frames, 1, flags, encoder->deadline); + g_mutex_unlock (&encoder->encoder_lock); + gst_video_frame_unmap (&vframe); + + if (status != 0) { + GST_ELEMENT_ERROR (encoder, LIBRARY, ENCODE, + ("Failed to encode frame"), ("%s", gst_vpx_error_name (status))); + return FALSE; + } + gst_video_codec_frame_unref (frame); + return gst_vp9_enc_process (encoder); +} + +static gboolean +gst_vp9_enc_sink_event (GstVideoEncoder * benc, GstEvent * event) +{ + GstVP9Enc *enc = GST_VP9_ENC (benc); + + /* FIXME : Move this to base encoder class */ + + if (GST_EVENT_TYPE (event) == GST_EVENT_TAG) { + GstTagList *list; + GstTagSetter *setter = GST_TAG_SETTER (enc); + const GstTagMergeMode mode = gst_tag_setter_get_tag_merge_mode (setter); + + gst_event_parse_tag (event, &list); + gst_tag_setter_merge_tags (setter, list, mode); + } + + /* just peeked, baseclass handles the rest */ + return GST_VIDEO_ENCODER_CLASS (parent_class)->sink_event (benc, event); +} + +static gboolean +gst_vp9_enc_propose_allocation (GstVideoEncoder * encoder, GstQuery * query) +{ + gst_query_add_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL); + + return GST_VIDEO_ENCODER_CLASS (parent_class)->propose_allocation (encoder, + query); +} + +#endif /* HAVE_VP9_ENCODER */ diff --git a/ext/vpx/gstvp9enc.h b/ext/vpx/gstvp9enc.h new file mode 100644 index 0000000000000000000000000000000000000000..b9919057967ae8feac363d3ea45095b80053925a --- /dev/null +++ b/ext/vpx/gstvp9enc.h @@ -0,0 +1,121 @@ +/* VP9 + * Copyright (C) 2006 David Schleef <ds@schleef.org> + * Copyright (C) 2010 Entropy Wave Inc + * Copyright (C) 2010-2013 Sebastian Dröge <slomo@circular-chaos.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ +#ifndef __GST_VP9_ENC_H__ +#define __GST_VP9_ENC_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_VP9_ENCODER + +#include <gst/gst.h> +#include <gst/video/gstvideoencoder.h> + +/* FIXME: Undef HAVE_CONFIG_H because vpx_codec.h uses it, + * which causes compilation failures */ +#ifdef HAVE_CONFIG_H +#undef HAVE_CONFIG_H +#endif + +#include <vpx/vpx_encoder.h> +#include <vpx/vp8cx.h> + +G_BEGIN_DECLS + +#define GST_TYPE_VP9_ENC \ + (gst_vp9_enc_get_type()) +#define GST_VP9_ENC(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VP9_ENC,GstVP9Enc)) +#define GST_VP9_ENC_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VP9_ENC,GstVP9EncClass)) +#define GST_IS_VP9_ENC(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VP9_ENC)) +#define GST_IS_VP9_ENC_CLASS(obj) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VP9_ENC)) + +typedef struct _GstVP9Enc GstVP9Enc; +typedef struct _GstVP9EncClass GstVP9EncClass; + +struct _GstVP9Enc +{ + GstVideoEncoder base_video_encoder; + + /* < private > */ + vpx_codec_ctx_t encoder; + GMutex encoder_lock; + + /* properties */ + vpx_codec_enc_cfg_t cfg; + gboolean have_default_config; + gboolean rc_target_bitrate_set; + gint n_ts_target_bitrate; + gint n_ts_rate_decimator; + gint n_ts_layer_id; + /* Global two-pass options */ + gchar *multipass_cache_file; + GByteArray *first_pass_cache_content; + + /* Encode parameter */ + gint64 deadline; + + /* Controls */ + VPX_SCALING_MODE h_scaling_mode; + VPX_SCALING_MODE v_scaling_mode; + int cpu_used; + gboolean enable_auto_alt_ref; + unsigned int noise_sensitivity; + unsigned int sharpness; + unsigned int static_threshold; + vp8e_token_partitions token_partitions; + unsigned int arnr_maxframes; + unsigned int arnr_strength; + unsigned int arnr_type; + vp8e_tuning tuning; + unsigned int cq_level; + unsigned int max_intra_bitrate_pct; + /* Timebase - a value of 0 will use the framerate */ + unsigned int timebase_n; + unsigned int timebase_d; + + /* state */ + gboolean inited; + + vpx_image_t image; + + int n_frames; + + GstVideoCodecState *input_state; +}; + +struct _GstVP9EncClass +{ + GstVideoEncoderClass base_video_encoder_class; +}; + +GType gst_vp9_enc_get_type (void); + +G_END_DECLS + +#endif + +#endif /* __GST_VP9_ENC_H__ */ diff --git a/ext/vpx/plugin.c b/ext/vpx/plugin.c index 363e3328e178a2698a145170d8fdc826b8d4877f..4f04efaff06b9085e6f38351a5a0d3d6cedd4a1a 100644 --- a/ext/vpx/plugin.c +++ b/ext/vpx/plugin.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ @@ -27,6 +27,8 @@ #include "gstvp8dec.h" #include "gstvp8enc.h" +#include "gstvp9dec.h" +#include "gstvp9enc.h" static gboolean plugin_init (GstPlugin * plugin) @@ -41,6 +43,16 @@ plugin_init (GstPlugin * plugin) gst_vp8_enc_get_type ()); #endif +#ifdef HAVE_VP9_DECODER + gst_element_register (plugin, "vp9dec", GST_RANK_PRIMARY, + gst_vp9_dec_get_type ()); +#endif + +#ifdef HAVE_VP9_ENCODER + gst_element_register (plugin, "vp9enc", GST_RANK_PRIMARY, + gst_vp9_enc_get_type ()); +#endif + return TRUE; } diff --git a/ext/wavpack/Makefile.in b/ext/wavpack/Makefile.in index 42ffb4f4e8fb60cf89213bfa56a7790cfccc76e8..48855c325fe4f0feae6c89230cb82f4094bbce47 100644 --- a/ext/wavpack/Makefile.in +++ b/ext/wavpack/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = ext/wavpack -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -140,10 +166,23 @@ libgstwavpack_la_OBJECTS = $(am_libgstwavpack_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstwavpack_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstwavpack_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstwavpack_la_CFLAGS) $(CFLAGS) \ $(libgstwavpack_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -156,20 +195,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstwavpack_la_SOURCES) DIST_SOURCES = $(libgstwavpack_la_SOURCES) am__can_run_installinfo = \ @@ -178,6 +213,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -345,6 +397,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -561,6 +614,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -587,12 +641,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstwavpack.la: $(libgstwavpack_la_OBJECTS) $(libgstwavpack_la_DEPENDENCIES) $(EXTRA_libgstwavpack_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstwavpack_la_LINK) -rpath $(plugindir) $(libgstwavpack_la_OBJECTS) $(libgstwavpack_la_LIBADD) $(LIBS) @@ -609,22 +666,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwavpack_la-gstwavpackstreamreader.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -670,26 +730,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -701,15 +750,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -718,6 +763,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -862,19 +922,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/ext/wavpack/gstwavpack.c b/ext/wavpack/gstwavpack.c index 74bb070f47696f9937d7d8bec013ed51730ec3f7..1609aa2e1eaf7372892465872ec8b6fe46914a73 100644 --- a/ext/wavpack/gstwavpack.c +++ b/ext/wavpack/gstwavpack.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/ext/wavpack/gstwavpackcommon.c b/ext/wavpack/gstwavpackcommon.c index c38447079eab0442c8a952f7a5986df43f65d6bd..40ffb3af70885c0364357236825a6fb2705e8902 100644 --- a/ext/wavpack/gstwavpackcommon.c +++ b/ext/wavpack/gstwavpackcommon.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/ext/wavpack/gstwavpackcommon.h b/ext/wavpack/gstwavpackcommon.h index 4f05683549c606aa29fc4c5fbe8b660d817c817b..f4a81bfe4307b05b613a22c2d9be8849242962a3 100644 --- a/ext/wavpack/gstwavpackcommon.h +++ b/ext/wavpack/gstwavpackcommon.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_WAVPACK_COMMON_H__ diff --git a/ext/wavpack/gstwavpackdec.c b/ext/wavpack/gstwavpackdec.c index 86425ad3afc8b2932d9ecc51d3cd319da4e1bb71..6032b1bf760a3c5b92ae3d36736692d33020f9db 100644 --- a/ext/wavpack/gstwavpackdec.c +++ b/ext/wavpack/gstwavpackdec.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/ext/wavpack/gstwavpackdec.h b/ext/wavpack/gstwavpackdec.h index 006428ceacab5fcbc8f9a2a1a07dc2754747d2d7..8a002b4bf6d4e9cb9d8e3572875aa46a4eed392f 100644 --- a/ext/wavpack/gstwavpackdec.h +++ b/ext/wavpack/gstwavpackdec.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_WAVPACK_DEC_H__ diff --git a/ext/wavpack/gstwavpackenc.c b/ext/wavpack/gstwavpackenc.c index cdd55923f3b25a4c548040b086a386731233ee6a..eccafa192a489470d9236645ef8992335f28fec8 100644 --- a/ext/wavpack/gstwavpackenc.c +++ b/ext/wavpack/gstwavpackenc.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/ext/wavpack/gstwavpackenc.h b/ext/wavpack/gstwavpackenc.h index aab4296fbf822bdd375895882c83a36d7dbb1962..26a5b1128be16a5b8eeb6e00910cf8107b2e38a5 100644 --- a/ext/wavpack/gstwavpackenc.h +++ b/ext/wavpack/gstwavpackenc.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_WAVPACK_ENC_H__ diff --git a/ext/wavpack/gstwavpackstreamreader.c b/ext/wavpack/gstwavpackstreamreader.c index da1fdc27bc0516e502ecc75d2bcdc87815227cc9..f10cf5840bb3bbff2181d36f0eaa7565fab17672 100644 --- a/ext/wavpack/gstwavpackstreamreader.c +++ b/ext/wavpack/gstwavpackstreamreader.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <string.h> diff --git a/ext/wavpack/gstwavpackstreamreader.h b/ext/wavpack/gstwavpackstreamreader.h index 713b4c155f9f29034ceeb6d0582f1da5c44c13e3..17412cc6c3185c393a1d22ecfcc90d7cc96f6934 100644 --- a/ext/wavpack/gstwavpackstreamreader.h +++ b/ext/wavpack/gstwavpackstreamreader.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_WAVPACK_STREAM_READER_H__ diff --git a/gst-libs/gst/gettext.h b/gst-libs/gst/gettext.h index 59902b35ee7c94e5a9eec6a3ef3b4a56765bcdfe..fc70ab7959280f5b162cc1076c5b3517832a2d99 100644 --- a/gst-libs/gst/gettext.h +++ b/gst-libs/gst/gettext.h @@ -13,7 +13,7 @@ You should have received a copy of the GNU Library General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _LIBGETTEXT_H diff --git a/gst-libs/gst/glib-compat-private.h b/gst-libs/gst/glib-compat-private.h index 9a92993d46b1b5f20e4236e66b5ec8f369718abb..8f37de205ec3c197271174852eb12181ce8f87e6 100644 --- a/gst-libs/gst/glib-compat-private.h +++ b/gst-libs/gst/glib-compat-private.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GLIB_COMPAT_PRIVATE_H__ diff --git a/gst-libs/gst/gst-i18n-plugin.h b/gst-libs/gst/gst-i18n-plugin.h index fe597d229288ac5cc1c5126ff289ba548f724524..ff40ce25165fc656c4ad7a5374e9975379fa3c05 100644 --- a/gst-libs/gst/gst-i18n-plugin.h +++ b/gst-libs/gst/gst-i18n-plugin.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_I18N_PLUGIN_H__ diff --git a/gst-plugins-good.doap b/gst-plugins-good.doap index b6df4df532ad392dcb69690c0ed5164858e86453..41693c709b097753208249b5e6a45580fc7ce1a1 100644 --- a/gst-plugins-good.doap +++ b/gst-plugins-good.doap @@ -34,81 +34,51 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library). <release> <Version> - <revision>1.0.10</revision> - <branch>1.0</branch> - <name></name> - <created>2013-08-28</created> - <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.0.10.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.0.9</revision> - <branch>1.0</branch> - <name></name> - <created>2013-07-30</created> - <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.0.9.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.0.8</revision> - <branch>1.0</branch> + <revision>1.1.90</revision> + <branch>1.1</branch> <name></name> - <created>2013-07-11</created> - <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.0.8.tar.xz" /> + <created>2013-09-19</created> + <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.1.90.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.0.7</revision> - <branch>1.0</branch> + <revision>1.1.4</revision> + <branch>1.1</branch> <name></name> - <created>2013-04-26</created> - <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.0.7.tar.xz" /> - </Version> - </release> - - <release> - <Version> - <revision>1.0.6</revision> - <branch>1.0</branch> - <name></name> - <created>2013-03-22</created> - <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.0.6.tar.xz" /> + <created>2013-08-28</created> + <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.1.4.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.0.5</revision> - <branch>1.0</branch> + <revision>1.1.3</revision> + <branch>1.1</branch> <name></name> - <created>2013-01-08</created> - <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.0.5.tar.xz" /> + <created>2013-07-29</created> + <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.1.3.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.0.4</revision> - <branch>1.0</branch> + <revision>1.1.2</revision> + <branch>1.1</branch> <name></name> - <created>2012-12-18</created> - <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.0.4.tar.xz" /> + <created>2013-07-11</created> + <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.1.2.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.0.3</revision> - <branch>1.0</branch> + <revision>1.1.1</revision> + <branch>1.1</branch> <name></name> - <created>2012-11-21</created> - <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.0.3.tar.xz" /> + <created>2013-06-05</created> + <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.1.1.tar.xz" /> </Version> </release> diff --git a/gst-plugins-good.spec b/gst-plugins-good.spec index 0c39cc16d3603809ec485bbbf2d6005eda6531fc..c1ecd7301871c90b2321abfcc393b2eab9e7c892 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.0.10 +Version: 1.1.90 Release: 1.gst Summary: GStreamer plug-ins with good code and licensing @@ -129,6 +129,7 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/gstreamer-%{majorminor}/libgstshapewipe.so %{_libdir}/gstreamer-%{majorminor}/libgstvideofilter.so %{_libdir}/gstreamer-%{majorminor}/libgstaudioparsers.so +%{_libdir}/gstreamer-%{majorminor}/libgstdtmf.so # sys plugins %{_libdir}/gstreamer-%{majorminor}/libgstvideo4linux2.so diff --git a/gst-plugins-good.spec.in b/gst-plugins-good.spec.in index 088f139e4c226f559e88ee3f728c2041a015d0ea..50c02b1bbf7ff39d81d8b8d13929a51395508240 100644 --- a/gst-plugins-good.spec.in +++ b/gst-plugins-good.spec.in @@ -129,6 +129,7 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/gstreamer-%{majorminor}/libgstshapewipe.so %{_libdir}/gstreamer-%{majorminor}/libgstvideofilter.so %{_libdir}/gstreamer-%{majorminor}/libgstaudioparsers.so +%{_libdir}/gstreamer-%{majorminor}/libgstdtmf.so # sys plugins @USE_GST_V4L2_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstvideo4linux2.so diff --git a/gst/Makefile.in b/gst/Makefile.in index 254ed206e913d959a9fd5f43d342107143fe8830..3f66517382828afbad07f6a7ae357ba2e9ec9b6e 100644 --- a/gst/Makefile.in +++ b/gst/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -20,23 +19,51 @@ # descending into all subdirectories a second time, but only after the first # (parallel) run has finished, so it should go right through the second time. VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -56,8 +83,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/common/parallel-subdirs.mak +DIST_COMMON = $(top_srcdir)/common/parallel-subdirs.mak \ + $(srcdir)/Makefile.in $(srcdir)/Makefile.am subdir = gst ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -65,7 +92,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -101,21 +127,28 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -123,9 +156,29 @@ am__can_run_installinfo = \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -318,6 +371,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -522,22 +576,25 @@ clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -552,57 +609,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -618,12 +630,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -635,15 +642,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -652,6 +655,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -812,22 +830,20 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am .PHONY: independent-subdirs $(SUBDIRS) diff --git a/gst/alpha/Makefile.in b/gst/alpha/Makefile.in index b8421e999facf5e55c5b9835856e519e86ff6e14..e9fa32827c0832cf2deb2f95d6d730d59232b1ae 100644 --- a/gst/alpha/Makefile.in +++ b/gst/alpha/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/alpha -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,6 +162,7 @@ libgstalpha_la_OBJECTS = $(am_libgstalpha_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstalpha_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstalpha_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstalpha_la_CFLAGS) $(CFLAGS) \ @@ -148,6 +175,18 @@ libgstalphacolor_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstalphacolor_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstalphacolor_la_CFLAGS) $(CFLAGS) \ $(libgstalphacolor_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -160,20 +199,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstalpha_la_SOURCES) $(libgstalphacolor_la_SOURCES) DIST_SOURCES = $(libgstalpha_la_SOURCES) \ $(libgstalphacolor_la_SOURCES) @@ -183,6 +218,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -350,6 +402,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -564,6 +617,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -590,14 +644,18 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstalpha.la: $(libgstalpha_la_OBJECTS) $(libgstalpha_la_DEPENDENCIES) $(EXTRA_libgstalpha_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstalpha_la_LINK) -rpath $(plugindir) $(libgstalpha_la_OBJECTS) $(libgstalpha_la_LIBADD) $(LIBS) + libgstalphacolor.la: $(libgstalphacolor_la_OBJECTS) $(libgstalphacolor_la_DEPENDENCIES) $(EXTRA_libgstalphacolor_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstalphacolor_la_LINK) -rpath $(plugindir) $(libgstalphacolor_la_OBJECTS) $(libgstalphacolor_la_LIBADD) $(LIBS) @@ -611,22 +669,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstalphacolor_la-gstalphacolor.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -651,26 +712,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -682,15 +732,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -699,6 +745,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -843,19 +904,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/alpha/gstalpha.c b/gst/alpha/gstalpha.c index df53d786381886a78a5e1ae75b050c1f7882956d..5213d2c7e6a2efcc3b0b1d87d6a995280e98a371 100644 --- a/gst/alpha/gstalpha.c +++ b/gst/alpha/gstalpha.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -191,9 +191,9 @@ gst_alpha_method_get_type (void) static GType alpha_method_type = 0; static const GEnumValue alpha_method[] = { {ALPHA_METHOD_SET, "Set/adjust alpha channel", "set"}, - {ALPHA_METHOD_GREEN, "Chroma Key green", "green"}, - {ALPHA_METHOD_BLUE, "Chroma Key blue", "blue"}, - {ALPHA_METHOD_CUSTOM, "Chroma Key on target_r/g/b", "custom"}, + {ALPHA_METHOD_GREEN, "Chroma Key on pure green", "green"}, + {ALPHA_METHOD_BLUE, "Chroma Key on pure blue", "blue"}, + {ALPHA_METHOD_CUSTOM, "Chroma Key on custom RGB values", "custom"}, {0, NULL, NULL}, }; @@ -227,15 +227,18 @@ gst_alpha_class_init (GstAlphaClass * klass) 0.0, 1.0, DEFAULT_ALPHA, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TARGET_R, - g_param_spec_uint ("target-r", "Target Red", "The Red target", 0, 255, + g_param_spec_uint ("target-r", "Target Red", + "The red color value for custom RGB chroma keying", 0, 255, DEFAULT_TARGET_R, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TARGET_G, - g_param_spec_uint ("target-g", "Target Green", "The Green target", 0, 255, + g_param_spec_uint ("target-g", "Target Green", + "The green color value for custom RGB chroma keying", 0, 255, DEFAULT_TARGET_G, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TARGET_B, - g_param_spec_uint ("target-b", "Target Blue", "The Blue target", 0, 255, + g_param_spec_uint ("target-b", "Target Blue", + "The blue color value for custom RGB chroma keying", 0, 255, DEFAULT_TARGET_B, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_ANGLE, @@ -253,7 +256,7 @@ gst_alpha_class_init (GstAlphaClass * klass) G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_WHITE_SENSITIVITY, g_param_spec_uint ("white-sensitivity", - "Sensitivity", "Sensitivity to bright colors", 0, 128, + "White Sensitivity", "Sensitivity to bright colors", 0, 128, DEFAULT_WHITE_SENSITIVITY, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), @@ -327,20 +330,6 @@ gst_alpha_set_property (GObject * object, guint prop_id, && (alpha->prefer_passthrough); alpha->method = method; - switch (alpha->method) { - case ALPHA_METHOD_GREEN: - alpha->target_r = 0; - alpha->target_g = 255; - alpha->target_b = 0; - break; - case ALPHA_METHOD_BLUE: - alpha->target_r = 0; - alpha->target_g = 0; - alpha->target_b = 255; - break; - default: - break; - } gst_alpha_set_process_function (alpha); gst_alpha_init_params (alpha); break; @@ -2300,8 +2289,26 @@ gst_alpha_init_params_full (GstAlpha * alpha, gfloat tmp; gfloat tmp1, tmp2; gfloat y; + guint target_r = alpha->target_r; + guint target_g = alpha->target_g; + guint target_b = alpha->target_b; const gint *matrix; + switch (alpha->method) { + case ALPHA_METHOD_GREEN: + target_r = 0; + target_g = 255; + target_b = 0; + break; + case ALPHA_METHOD_BLUE: + target_r = 0; + target_g = 0; + target_b = 255; + break; + default: + break; + } + /* RGB->RGB: convert to SDTV YUV, chroma keying, convert back * YUV->RGB: chroma keying, convert to RGB * RGB->YUV: convert to YUV, chroma keying @@ -2325,20 +2332,18 @@ gst_alpha_init_params_full (GstAlpha * alpha, (alpha->out_sdtv) ? cog_rgb_to_ycbcr_matrix_8bit_sdtv : cog_rgb_to_ycbcr_matrix_8bit_hdtv; - y = (matrix[0] * ((gint) alpha->target_r) + - matrix[1] * ((gint) alpha->target_g) + - matrix[2] * ((gint) alpha->target_b) + matrix[3]) >> 8; + y = (matrix[0] * ((gint) target_r) + + matrix[1] * ((gint) target_g) + + matrix[2] * ((gint) target_b) + matrix[3]) >> 8; /* Cb,Cr without offset here because the chroma keying * works with them being in range [-128,127] */ tmp1 = - (matrix[4] * ((gint) alpha->target_r) + - matrix[5] * ((gint) alpha->target_g) + - matrix[6] * ((gint) alpha->target_b)) >> 8; + (matrix[4] * ((gint) target_r) + + matrix[5] * ((gint) target_g) + matrix[6] * ((gint) target_b)) >> 8; tmp2 = - (matrix[8] * ((gint) alpha->target_r) + - matrix[9] * ((gint) alpha->target_g) + - matrix[10] * ((gint) alpha->target_b)) >> 8; + (matrix[8] * ((gint) target_r) + + matrix[9] * ((gint) target_g) + matrix[10] * ((gint) target_b)) >> 8; kgl = sqrt (tmp1 * tmp1 + tmp2 * tmp2); alpha->cb = 127 * (tmp1 / kgl); diff --git a/gst/alpha/gstalpha.h b/gst/alpha/gstalpha.h index a3131341db45e886f49739f6c54018ebc94ba0e7..948fb78a5c252c1044a153a056a919d7785d4917 100644 --- a/gst/alpha/gstalpha.h +++ b/gst/alpha/gstalpha.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_ALPHA_H__ diff --git a/gst/alpha/gstalphacolor.c b/gst/alpha/gstalphacolor.c index ee8d97a0597554cbd34b27d944807fadbae0410a..99676776e437ea7ccd91628c8a10147db97026e1 100644 --- a/gst/alpha/gstalphacolor.c +++ b/gst/alpha/gstalphacolor.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/alpha/gstalphacolor.h b/gst/alpha/gstalphacolor.h index ca0e5cc41cc76b7857d2cb58af03918349ce4eef..540f621297a9b2c8b00e8503864fc98cbe6500e3 100644 --- a/gst/alpha/gstalphacolor.h +++ b/gst/alpha/gstalphacolor.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GST_ALPHA_COLOR_H_ diff --git a/gst/apetag/Makefile.in b/gst/apetag/Makefile.in index 6aef6bcb7f89d735ac719099dbb9110f6a6eef95..91428342dc7947268a42516470f55974de53d6aa 100644 --- a/gst/apetag/Makefile.in +++ b/gst/apetag/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/apetag -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -135,10 +161,23 @@ libgstapetag_la_OBJECTS = $(am_libgstapetag_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstapetag_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstapetag_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstapetag_la_CFLAGS) $(CFLAGS) \ $(libgstapetag_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -151,20 +190,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstapetag_la_SOURCES) DIST_SOURCES = $(libgstapetag_la_SOURCES) am__can_run_installinfo = \ @@ -173,6 +208,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -340,6 +392,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -550,6 +603,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -576,12 +630,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstapetag.la: $(libgstapetag_la_OBJECTS) $(libgstapetag_la_DEPENDENCIES) $(EXTRA_libgstapetag_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstapetag_la_LINK) -rpath $(plugindir) $(libgstapetag_la_OBJECTS) $(libgstapetag_la_LIBADD) $(LIBS) @@ -594,22 +651,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapetag_la-gstapedemux.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -627,26 +687,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -658,15 +707,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -675,6 +720,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -819,19 +879,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/apetag/gstapedemux.c b/gst/apetag/gstapedemux.c index 4181d98d791223a8ba39b246f4011bd8b6445518..840765441ca05c13b58ab5eb128e29f059ad3b94 100644 --- a/gst/apetag/gstapedemux.c +++ b/gst/apetag/gstapedemux.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/apetag/gstapedemux.h b/gst/apetag/gstapedemux.h index 3378e5b47a041f1057ea7f44f344ec9b3e67b761..f340547b8bea5a38cbb79f4f5fd12925d05fb4a4 100644 --- a/gst/apetag/gstapedemux.h +++ b/gst/apetag/gstapedemux.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_APE_DEMUX_H__ diff --git a/gst/audiofx/Makefile.am b/gst/audiofx/Makefile.am index c0e7297dedccfdbc2dc88616d0cfd36027205ba7..3ca249c12da358b13aef7db50b7280fe9e7ae9d7 100644 --- a/gst/audiofx/Makefile.am +++ b/gst/audiofx/Makefile.am @@ -5,6 +5,9 @@ plugin_LTLIBRARIES = libgstaudiofx.la # FIXME 0.11: ignore GValueArray warnings for now until this is sorted ERROR_CFLAGS= +ORC_SOURCE=audiopanoramaorc +include $(top_srcdir)/common/orc.mak + # sources used to compile this plug-in libgstaudiofx_la_SOURCES = audiofx.c\ audiopanorama.c \ @@ -20,17 +23,21 @@ libgstaudiofx_la_SOURCES = audiofx.c\ audiowsincband.c \ audiowsinclimit.c \ audiofirfilter.c \ - audioecho.c + audioecho.c \ + gstscaletempo.c +nodist_libgstaudiofx_la_SOURCES = $(ORC_NODIST_SOURCES) # flags used to compile this plugin libgstaudiofx_la_CFLAGS = $(GST_CFLAGS) \ $(GST_BASE_CFLAGS) \ - $(GST_PLUGINS_BASE_CFLAGS) + $(GST_PLUGINS_BASE_CFLAGS) \ + $(ORC_CFLAGS) libgstaudiofx_la_LIBADD = $(GST_LIBS) \ $(GST_BASE_LIBS) \ $(GST_PLUGINS_BASE_LIBS) \ -lgstaudio-$(GST_API_VERSION) \ -lgstfft-$(GST_API_VERSION) \ + $(ORC_LIBS) \ $(LIBM) libgstaudiofx_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstaudiofx_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) @@ -50,6 +57,7 @@ noinst_HEADERS = audiopanorama.h \ audiowsinclimit.h \ audiofirfilter.h \ audioecho.h \ + gstscaletempo.h \ math_compat.h Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/audiofx/Makefile.in b/gst/audiofx/Makefile.in index 522efa542243fe10109914780b3e1f92a4e3949d..03f6d3239ec5dfdd5e97af878b53294825115922 100644 --- a/gst/audiofx/Makefile.in +++ b/gst/audiofx/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,25 +16,75 @@ # plugindir is set in configure +# +# This is a makefile.am fragment to build Orc code. +# +# Define ORC_SOURCE and then include this file, such as: +# +# ORC_SOURCE=gstadderorc +# include $(top_srcdir)/common/orc.mak +# +# This fragment will create tmp-orc.c and gstadderorc.h from +# gstadderorc.orc. +# +# When 'make dist' is run at the top level, or 'make orc-update' +# in a directory including this fragment, the generated source +# files will be copied to $(ORC_SOURCE)-dist.[ch]. These files +# should be checked in to git, since they are used if Orc is +# disabled. +# +# Note that this file defines BUILT_SOURCES, so any later usage +# of BUILT_SOURCES in the Makefile.am that includes this file +# must use '+='. +# + VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -55,16 +104,15 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ +DIST_COMMON = $(top_srcdir)/common/orc.mak $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/depcomp $(noinst_HEADERS) subdir = gst/audiofx -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -132,7 +180,7 @@ LTLIBRARIES = $(plugin_LTLIBRARIES) am__DEPENDENCIES_1 = libgstaudiofx_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_libgstaudiofx_la_OBJECTS = libgstaudiofx_la-audiofx.lo \ libgstaudiofx_la-audiopanorama.lo \ libgstaudiofx_la-audioinvert.lo \ @@ -147,15 +195,32 @@ am_libgstaudiofx_la_OBJECTS = libgstaudiofx_la-audiofx.lo \ libgstaudiofx_la-audiowsincband.lo \ libgstaudiofx_la-audiowsinclimit.lo \ libgstaudiofx_la-audiofirfilter.lo \ - libgstaudiofx_la-audioecho.lo -libgstaudiofx_la_OBJECTS = $(am_libgstaudiofx_la_OBJECTS) + libgstaudiofx_la-audioecho.lo \ + libgstaudiofx_la-gstscaletempo.lo +am__objects_1 = libgstaudiofx_la-tmp-orc.lo +nodist_libgstaudiofx_la_OBJECTS = $(am__objects_1) +libgstaudiofx_la_OBJECTS = $(am_libgstaudiofx_la_OBJECTS) \ + $(nodist_libgstaudiofx_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstaudiofx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstaudiofx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstaudiofx_la_CFLAGS) $(CFLAGS) \ $(libgstaudiofx_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -168,21 +233,18 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libgstaudiofx_la_SOURCES) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgstaudiofx_la_SOURCES) \ + $(nodist_libgstaudiofx_la_SOURCES) DIST_SOURCES = $(libgstaudiofx_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ @@ -190,6 +252,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -359,6 +438,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -520,6 +600,16 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ plugin_LTLIBRARIES = libgstaudiofx.la +ORC_SOURCE = audiopanoramaorc +EXTRA_DIST = $(ORC_SOURCE).orc +ORC_NODIST_SOURCES = tmp-orc.c $(ORC_SOURCE).h +BUILT_SOURCES = tmp-orc.c $(ORC_SOURCE).h +orcc_v_gen = $(orcc_v_gen_$(V)) +orcc_v_gen_ = $(orcc_v_gen_$(AM_DEFAULT_VERBOSITY)) +orcc_v_gen_0 = @echo " ORCC $@"; +cp_v_gen = $(cp_v_gen_$(V)) +cp_v_gen_ = $(cp_v_gen_$(AM_DEFAULT_VERBOSITY)) +cp_v_gen_0 = @echo " CP $@"; # sources used to compile this plug-in libgstaudiofx_la_SOURCES = audiofx.c\ @@ -536,19 +626,23 @@ libgstaudiofx_la_SOURCES = audiofx.c\ audiowsincband.c \ audiowsinclimit.c \ audiofirfilter.c \ - audioecho.c + audioecho.c \ + gstscaletempo.c +nodist_libgstaudiofx_la_SOURCES = $(ORC_NODIST_SOURCES) # flags used to compile this plugin libgstaudiofx_la_CFLAGS = $(GST_CFLAGS) \ $(GST_BASE_CFLAGS) \ - $(GST_PLUGINS_BASE_CFLAGS) + $(GST_PLUGINS_BASE_CFLAGS) \ + $(ORC_CFLAGS) libgstaudiofx_la_LIBADD = $(GST_LIBS) \ $(GST_BASE_LIBS) \ $(GST_PLUGINS_BASE_LIBS) \ -lgstaudio-$(GST_API_VERSION) \ -lgstfft-$(GST_API_VERSION) \ + $(ORC_LIBS) \ $(LIBM) libgstaudiofx_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) @@ -569,13 +663,15 @@ noinst_HEADERS = audiopanorama.h \ audiowsinclimit.h \ audiofirfilter.h \ audioecho.h \ + gstscaletempo.h \ math_compat.h -all: all-am +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/orc.mak $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -596,6 +692,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/common/orc.mak: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -605,6 +702,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -631,12 +729,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstaudiofx.la: $(libgstaudiofx_la_OBJECTS) $(libgstaudiofx_la_DEPENDENCIES) $(EXTRA_libgstaudiofx_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstaudiofx_la_LINK) -rpath $(plugindir) $(libgstaudiofx_la_OBJECTS) $(libgstaudiofx_la_LIBADD) $(LIBS) @@ -661,24 +762,29 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudiofx_la-audiopanorama.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudiofx_la-audiowsincband.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudiofx_la-audiowsinclimit.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudiofx_la-gstscaletempo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudiofx_la-tmp-orc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -788,32 +894,35 @@ libgstaudiofx_la-audioecho.lo: audioecho.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 $(libgstaudiofx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudiofx_la_CFLAGS) $(CFLAGS) -c -o libgstaudiofx_la-audioecho.lo `test -f 'audioecho.c' || echo '$(srcdir)/'`audioecho.c +libgstaudiofx_la-gstscaletempo.lo: gstscaletempo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstaudiofx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudiofx_la_CFLAGS) $(CFLAGS) -MT libgstaudiofx_la-gstscaletempo.lo -MD -MP -MF $(DEPDIR)/libgstaudiofx_la-gstscaletempo.Tpo -c -o libgstaudiofx_la-gstscaletempo.lo `test -f 'gstscaletempo.c' || echo '$(srcdir)/'`gstscaletempo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstaudiofx_la-gstscaletempo.Tpo $(DEPDIR)/libgstaudiofx_la-gstscaletempo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstscaletempo.c' object='libgstaudiofx_la-gstscaletempo.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 $(libgstaudiofx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudiofx_la_CFLAGS) $(CFLAGS) -c -o libgstaudiofx_la-gstscaletempo.lo `test -f 'gstscaletempo.c' || echo '$(srcdir)/'`gstscaletempo.c + +libgstaudiofx_la-tmp-orc.lo: tmp-orc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstaudiofx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudiofx_la_CFLAGS) $(CFLAGS) -MT libgstaudiofx_la-tmp-orc.lo -MD -MP -MF $(DEPDIR)/libgstaudiofx_la-tmp-orc.Tpo -c -o libgstaudiofx_la-tmp-orc.lo `test -f 'tmp-orc.c' || echo '$(srcdir)/'`tmp-orc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstaudiofx_la-tmp-orc.Tpo $(DEPDIR)/libgstaudiofx_la-tmp-orc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tmp-orc.c' object='libgstaudiofx_la-tmp-orc.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 $(libgstaudiofx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudiofx_la_CFLAGS) $(CFLAGS) -c -o libgstaudiofx_la-tmp-orc.lo `test -f 'tmp-orc.c' || echo '$(srcdir)/'`tmp-orc.c + mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -825,15 +934,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -842,6 +947,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -876,14 +996,19 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook check-am: all-am -check: check-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(plugindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: install-am +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -913,10 +1038,11 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am -clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ - mostlyclean-am +clean-am: clean-generic clean-libtool clean-local \ + clean-pluginLTLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) @@ -984,10 +1110,11 @@ ps-am: uninstall-am: uninstall-pluginLTLIBRARIES -.MAKE: install-am install-strip +.MAKE: all check install install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-local clean-pluginLTLIBRARIES \ + cscopelist-am ctags ctags-am dist-hook distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ @@ -998,8 +1125,45 @@ uninstall-am: uninstall-pluginLTLIBRARIES installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES - + tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES + + +orc-update: tmp-orc.c $(ORC_SOURCE).h + $(top_srcdir)/common/gst-indent tmp-orc.c + cp tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c + cp $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h + +@HAVE_ORCC_TRUE@tmp-orc.c: $(srcdir)/$(ORC_SOURCE).orc +@HAVE_ORCC_TRUE@ $(orcc_v_gen)$(ORCC) $(ORCC_FLAGS) --implementation --include glib.h -o tmp-orc.c $(srcdir)/$(ORC_SOURCE).orc + +@HAVE_ORCC_TRUE@$(ORC_SOURCE).h: $(srcdir)/$(ORC_SOURCE).orc +@HAVE_ORCC_TRUE@ $(orcc_v_gen)$(ORCC) $(ORCC_FLAGS) --header --include glib.h -o $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE).orc +@HAVE_ORCC_FALSE@tmp-orc.c: $(srcdir)/$(ORC_SOURCE).orc $(srcdir)/$(ORC_SOURCE)-dist.c +@HAVE_ORCC_FALSE@ $(cp_v_gen)cp $(srcdir)/$(ORC_SOURCE)-dist.c tmp-orc.c + +@HAVE_ORCC_FALSE@$(ORC_SOURCE).h: $(srcdir)/$(ORC_SOURCE).orc $(srcdir)/$(ORC_SOURCE)-dist.c +@HAVE_ORCC_FALSE@ $(cp_v_gen)cp $(srcdir)/$(ORC_SOURCE)-dist.h $(ORC_SOURCE).h + +clean-local: clean-orc +.PHONY: clean-orc +clean-orc: + rm -f tmp-orc.c $(ORC_SOURCE).h + +dist-hook: dist-hook-orc +.PHONY: dist-hook-orc + +# we try and copy updated orc -dist files below, but don't fail if it +# doesn't work as the srcdir might not be writable +dist-hook-orc: tmp-orc.c $(ORC_SOURCE).h + $(top_srcdir)/common/gst-indent tmp-orc.c + rm -f tmp-orc.c~ + cmp -s tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c || \ + cp tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c || true + cmp -s $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h || \ + cp $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h || true + cp -p tmp-orc.c $(distdir)/$(ORC_SOURCE)-dist.c + cp -p $(ORC_SOURCE).h $(distdir)/$(ORC_SOURCE)-dist.h Android.mk: Makefile.am $(BUILT_SOURCES) androgenizer \ diff --git a/gst/audiofx/audioamplify.c b/gst/audiofx/audioamplify.c index 953527d5e8a54d68259222e5468003de7b8f1040..ad5f3c535e26a32d5289c080cbbc033ba18b9e68 100644 --- a/gst/audiofx/audioamplify.c +++ b/gst/audiofx/audioamplify.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/audiofx/audioamplify.h b/gst/audiofx/audioamplify.h index 2f5fc413f6688647b1d10fdf61e2e28bf0a76feb..573eed15550a2490587c24b09458fb68a8242f8c 100644 --- a/gst/audiofx/audioamplify.h +++ b/gst/audiofx/audioamplify.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUDIO_AMPLIFY_H__ diff --git a/gst/audiofx/audiochebband.c b/gst/audiofx/audiochebband.c index a51a9735a3a318d8ce1ff7a8876afa43b9c55b3c..d295009272fa223b3c59548799e596e6620f8a1f 100644 --- a/gst/audiofx/audiochebband.c +++ b/gst/audiofx/audiochebband.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/audiofx/audiochebband.h b/gst/audiofx/audiochebband.h index 6af31486bc865a0d1a0e482e00ea7b3704607c92..58bdaf0e344d91354c3d91a45f3b346c6ef509b1 100644 --- a/gst/audiofx/audiochebband.h +++ b/gst/audiofx/audiochebband.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUDIO_CHEB_BAND_H__ diff --git a/gst/audiofx/audiocheblimit.c b/gst/audiofx/audiocheblimit.c index f50d25bf91f0c0b14b6098b67049b127a1593f07..549a9d2e3dd739091fec45ddf156da23b75e1424 100644 --- a/gst/audiofx/audiocheblimit.c +++ b/gst/audiofx/audiocheblimit.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/audiofx/audiocheblimit.h b/gst/audiofx/audiocheblimit.h index a9f42ba3998aa279184ea4cd6bed651bf511a3a7..19309601e77578b9a07fd86ca2a30315a0868558 100644 --- a/gst/audiofx/audiocheblimit.h +++ b/gst/audiofx/audiocheblimit.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUDIO_CHEB_LIMIT_H__ diff --git a/gst/audiofx/audiodynamic.c b/gst/audiofx/audiodynamic.c index e2d87dcb782f4f8a1a0053ffb0e8ecc6c174dee8..bbc9e93c9b1ff732829109770e60c4ca7290c3b9 100644 --- a/gst/audiofx/audiodynamic.c +++ b/gst/audiofx/audiodynamic.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/audiofx/audiodynamic.h b/gst/audiofx/audiodynamic.h index 66cf9b141d658a2c8709024ef2ff49e408d09e04..09f3bc633a82b3f826f11657627084c691537ecf 100644 --- a/gst/audiofx/audiodynamic.h +++ b/gst/audiofx/audiodynamic.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUDIO_DYNAMIC_H__ diff --git a/gst/audiofx/audioecho.c b/gst/audiofx/audioecho.c index 10b51d9461926ead7dcdb525867343554554009e..60220f02d339c69c0d5fb1957f4b9d89c0a53e31 100644 --- a/gst/audiofx/audioecho.c +++ b/gst/audiofx/audioecho.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -187,6 +187,7 @@ gst_audio_echo_set_property (GObject * object, guint prop_id, switch (prop_id) { case PROP_DELAY:{ guint64 max_delay, delay; + guint rate; g_mutex_lock (&self->lock); delay = g_value_get_uint64 (value); @@ -201,6 +202,11 @@ gst_audio_echo_set_property (GObject * object, guint prop_id, self->delay = delay; self->max_delay = MAX (delay, max_delay); } + rate = GST_AUDIO_FILTER_RATE (self); + if (rate > 0) + self->delay_frames = + MAX (gst_util_uint64_scale (self->delay, rate, GST_SECOND), 1); + g_mutex_unlock (&self->lock); break; } diff --git a/gst/audiofx/audioecho.h b/gst/audiofx/audioecho.h index 1be3cbcc4ff9989670819f13bd615a2c67cca5c0..a3a3de36d7bcc29cb535a6d88b1994db76469ca7 100644 --- a/gst/audiofx/audioecho.h +++ b/gst/audiofx/audioecho.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUDIO_ECHO_H__ diff --git a/gst/audiofx/audiofirfilter.c b/gst/audiofx/audiofirfilter.c index 03bbf1129d6fdc8a0cc7ebb51170b9f05389b0c8..e0887ad49a1d2d89ec4d07930b6a8dd870be5f97 100644 --- a/gst/audiofx/audiofirfilter.c +++ b/gst/audiofx/audiofirfilter.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/gst/audiofx/audiofirfilter.h b/gst/audiofx/audiofirfilter.h index 6ade86f2eb5b4cdb6cb07e80da7edab409f960db..f3b347583b61d97edadb50f5ddd1b2690cefb5f1 100644 --- a/gst/audiofx/audiofirfilter.h +++ b/gst/audiofx/audiofirfilter.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/gst/audiofx/audiofx.c b/gst/audiofx/audiofx.c index e8dfa6c32dc529ee9e4e4cc30087f88f802040db..dbddabef1dc7458a93348e9b34adcc2efe668e49 100644 --- a/gst/audiofx/audiofx.c +++ b/gst/audiofx/audiofx.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -36,6 +36,7 @@ #include "audiowsinclimit.h" #include "audiofirfilter.h" #include "audioecho.h" +#include "gstscaletempo.h" /* entry point to initialize the plug-in * initialize the plug-in itself @@ -68,7 +69,9 @@ plugin_init (GstPlugin * plugin) gst_element_register (plugin, "audiofirfilter", GST_RANK_NONE, GST_TYPE_AUDIO_FIR_FILTER) && gst_element_register (plugin, "audioecho", GST_RANK_NONE, - GST_TYPE_AUDIO_ECHO)); + GST_TYPE_AUDIO_ECHO) && + gst_element_register (plugin, "scaletempo", GST_RANK_NONE, + GST_TYPE_SCALETEMPO)); } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, diff --git a/gst/audiofx/audiofxbasefirfilter.c b/gst/audiofx/audiofxbasefirfilter.c index aaa6f0685ecc2ccf9893b95c2c3addc15f98b674..dd906b5397f48e3398e22d56ec3b173e5191ae53 100644 --- a/gst/audiofx/audiofxbasefirfilter.c +++ b/gst/audiofx/audiofxbasefirfilter.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/gst/audiofx/audiofxbasefirfilter.h b/gst/audiofx/audiofxbasefirfilter.h index 5bbc50b51d3ba739075797b763733dde30ca1b90..2bd5561df7d2502569a9bdd84b8a87d1ee99a12d 100644 --- a/gst/audiofx/audiofxbasefirfilter.h +++ b/gst/audiofx/audiofxbasefirfilter.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/gst/audiofx/audiofxbaseiirfilter.c b/gst/audiofx/audiofxbaseiirfilter.c index 8fd0977bc00c7bbced21ee16b5b0178337bcc21c..50a00da7c39f9a527f1d21ef862311a8cea5d071 100644 --- a/gst/audiofx/audiofxbaseiirfilter.c +++ b/gst/audiofx/audiofxbaseiirfilter.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/audiofx/audiofxbaseiirfilter.h b/gst/audiofx/audiofxbaseiirfilter.h index 8cf91c80640fc987df41ab8f3e4f6261227924ee..d0e8b8b5fb92ee9c2c7eb4463741c3e62186a9a9 100644 --- a/gst/audiofx/audiofxbaseiirfilter.h +++ b/gst/audiofx/audiofxbaseiirfilter.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUDIO_FX_BASE_IIR_FILTER_H__ diff --git a/gst/audiofx/audioiirfilter.c b/gst/audiofx/audioiirfilter.c index 0882017d84c75445a0b5ccc487a0a63864c96a9c..cf3070f155eb5787ea868619c1041b531154fa72 100644 --- a/gst/audiofx/audioiirfilter.c +++ b/gst/audiofx/audioiirfilter.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/gst/audiofx/audioiirfilter.h b/gst/audiofx/audioiirfilter.h index 1cf72f4c64ceab864d5d55fe3e5ff614cce4f8c0..ab39c5be9f3d118ed74bc802db3cf33505252cd7 100644 --- a/gst/audiofx/audioiirfilter.h +++ b/gst/audiofx/audioiirfilter.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/gst/audiofx/audioinvert.c b/gst/audiofx/audioinvert.c index 0dc8a962fb02abc7cd994815785facff5ed4d4ae..7671db1b54c11a4e34c54a3d9bda284d5b8f65d3 100644 --- a/gst/audiofx/audioinvert.c +++ b/gst/audiofx/audioinvert.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/audiofx/audioinvert.h b/gst/audiofx/audioinvert.h index b0d841a887c28af7b800902eca8b1cc994085b8e..cbb5b3f4410c6175751109ee1ffc6539c098ed30 100644 --- a/gst/audiofx/audioinvert.h +++ b/gst/audiofx/audioinvert.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUDIO_INVERT_H__ diff --git a/gst/audiofx/audiokaraoke.c b/gst/audiofx/audiokaraoke.c index 16266f6426450f6f158653e3ecc66318ca0470a3..9d5d575f5a2153890bf5ac1fd8d59ebcf25d7381 100644 --- a/gst/audiofx/audiokaraoke.c +++ b/gst/audiofx/audiokaraoke.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/audiofx/audiokaraoke.h b/gst/audiofx/audiokaraoke.h index a299b887822c60a1294bccdcc456786fed675bca..1391efc33c96fa644c4b65d23a4bbb35fc754901 100644 --- a/gst/audiofx/audiokaraoke.h +++ b/gst/audiofx/audiokaraoke.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUDIO_KARAOKE_H__ diff --git a/gst/audiofx/audiopanorama.c b/gst/audiofx/audiopanorama.c index ee8da45c02be5b9681c6063b6caf978ce343e706..295c1bd4e205f33d7c52a159063cd95794a91d21 100644 --- a/gst/audiofx/audiopanorama.c +++ b/gst/audiofx/audiopanorama.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -45,18 +45,19 @@ #include <gst/gst.h> #include <gst/base/gstbasetransform.h> +#ifdef HAVE_ORC +#include <orc/orcfunctions.h> +#else +#define orc_memset memset +#endif + #include "audiopanorama.h" +#include "audiopanoramaorc.h" #define GST_CAT_DEFAULT gst_audio_panorama_debug GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); /* Filter signals and args */ -enum -{ - /* FILL ME */ - LAST_SIGNAL -}; - enum { PROP_0, @@ -64,13 +65,6 @@ enum PROP_METHOD }; -enum -{ - METHOD_PSYCHOACOUSTIC = 0, - METHOD_SIMPLE, - NUM_METHODS -}; - #define GST_TYPE_AUDIO_PANORAMA_METHOD (gst_audio_panorama_method_get_type ()) static GType gst_audio_panorama_method_get_type (void) @@ -95,21 +89,17 @@ static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " "format = (string) { " GST_AUDIO_NE (F32) ", " GST_AUDIO_NE (S16) "}, " - "rate = (int) [ 1, MAX ], " "channels = (int) 1, " - "layout = (string) interleaved;" - "audio/x-raw, " - "format = (string) { " GST_AUDIO_NE (F32) ", " GST_AUDIO_NE (S16) "}, " - "rate = (int) [ 1, MAX ], " "channels = (int) 2, " - "layout = (string) interleaved, " "channel-mask = (bitmask) 0x3") + "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ], " + "layout = (string) interleaved") ); static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw, " - "format = (string) { " GST_AUDIO_NE (S32) ", " GST_AUDIO_NE (S16) "}, " + "format = (string) { " GST_AUDIO_NE (F32) ", " GST_AUDIO_NE (S16) "}, " "rate = (int) [ 1, MAX ], " "channels = (int) 2, " - "layout = (string) interleaved, " "channel-mask = (bitmask)0x3") + "layout = (string) interleaved") ); G_DEFINE_TYPE (GstAudioPanorama, gst_audio_panorama, GST_TYPE_BASE_TRANSFORM); @@ -126,23 +116,23 @@ static GstCaps *gst_audio_panorama_transform_caps (GstBaseTransform * base, static gboolean gst_audio_panorama_set_caps (GstBaseTransform * base, GstCaps * incaps, GstCaps * outcaps); -static void gst_audio_panorama_transform_m2s_int (GstAudioPanorama * filter, +static void gst_audio_panorama_m2s_int (gfloat pan, gint16 * idata, gint16 * odata, guint num_samples); -static void gst_audio_panorama_transform_s2s_int (GstAudioPanorama * filter, +static void gst_audio_panorama_s2s_int (gfloat pan, gint16 * idata, gint16 * odata, guint num_samples); -static void gst_audio_panorama_transform_m2s_float (GstAudioPanorama * filter, +static void gst_audio_panorama_m2s_float (gfloat pan, gfloat * idata, gfloat * odata, guint num_samples); -static void gst_audio_panorama_transform_s2s_float (GstAudioPanorama * filter, +static void gst_audio_panorama_s2s_float (gfloat pan, gfloat * idata, gfloat * odata, guint num_samples); -static void gst_audio_panorama_transform_m2s_int_simple (GstAudioPanorama * - filter, gint16 * idata, gint16 * odata, guint num_samples); -static void gst_audio_panorama_transform_s2s_int_simple (GstAudioPanorama * - filter, gint16 * idata, gint16 * odata, guint num_samples); -static void gst_audio_panorama_transform_m2s_float_simple (GstAudioPanorama * - filter, gfloat * idata, gfloat * odata, guint num_samples); -static void gst_audio_panorama_transform_s2s_float_simple (GstAudioPanorama * - filter, gfloat * idata, gfloat * odata, guint num_samples); +static void gst_audio_panorama_m2s_int_simple (gfloat pan, + gint16 * idata, gint16 * odata, guint num_samples); +static void gst_audio_panorama_s2s_int_simple (gfloat pan, + gint16 * idata, gint16 * odata, guint num_samples); +static void gst_audio_panorama_m2s_float_simple (gfloat pan, + gfloat * idata, gfloat * odata, guint num_samples); +static void gst_audio_panorama_s2s_float_simple (gfloat pan, + gfloat * idata, gfloat * odata, guint num_samples); static GstFlowReturn gst_audio_panorama_transform (GstBaseTransform * base, GstBuffer * inbuf, GstBuffer * outbuf); @@ -151,20 +141,20 @@ static GstFlowReturn gst_audio_panorama_transform (GstBaseTransform * base, /* Table with processing functions: [channels][format][method] */ static GstAudioPanoramaProcessFunc panorama_process_functions[2][2][2] = { { - {(GstAudioPanoramaProcessFunc) gst_audio_panorama_transform_m2s_int, - (GstAudioPanoramaProcessFunc) - gst_audio_panorama_transform_m2s_int_simple}, - {(GstAudioPanoramaProcessFunc) gst_audio_panorama_transform_m2s_float, - (GstAudioPanoramaProcessFunc) - gst_audio_panorama_transform_m2s_float_simple} + { + (GstAudioPanoramaProcessFunc) gst_audio_panorama_m2s_int, + (GstAudioPanoramaProcessFunc) gst_audio_panorama_m2s_int_simple}, + { + (GstAudioPanoramaProcessFunc) gst_audio_panorama_m2s_float, + (GstAudioPanoramaProcessFunc) gst_audio_panorama_m2s_float_simple} }, { - {(GstAudioPanoramaProcessFunc) gst_audio_panorama_transform_s2s_int, - (GstAudioPanoramaProcessFunc) - gst_audio_panorama_transform_s2s_int_simple}, - {(GstAudioPanoramaProcessFunc) gst_audio_panorama_transform_s2s_float, - (GstAudioPanoramaProcessFunc) - gst_audio_panorama_transform_s2s_float_simple} + { + (GstAudioPanoramaProcessFunc) gst_audio_panorama_s2s_int, + (GstAudioPanoramaProcessFunc) gst_audio_panorama_s2s_int_simple}, + { + (GstAudioPanoramaProcessFunc) gst_audio_panorama_s2s_float, + (GstAudioPanoramaProcessFunc) gst_audio_panorama_s2s_float_simple} } }; @@ -253,10 +243,7 @@ gst_audio_panorama_set_process_function (GstAudioPanorama * filter, } format_index = GST_AUDIO_FORMAT_INFO_IS_FLOAT (finfo) ? 1 : 0; - method_index = filter->method; - if (method_index >= NUM_METHODS || method_index < 0) - method_index = METHOD_PSYCHOACOUSTIC; filter->process = panorama_process_functions[channel_index][format_index][method_index]; @@ -326,20 +313,33 @@ gst_audio_panorama_transform_caps (GstBaseTransform * base, { GstCaps *res; GstStructure *structure; + gint i; - /* transform caps gives one single caps so we can just replace - * the channel property with our range. */ + /* replace the channel property with our range. */ res = gst_caps_copy (caps); - structure = gst_caps_get_structure (res, 0); - if (direction == GST_PAD_SRC) { - GST_INFO ("allow 1-2 channels"); - gst_structure_set (structure, "channels", GST_TYPE_INT_RANGE, 1, 2, NULL); - gst_structure_remove_field (structure, "channel-mask"); - } else { - GST_INFO ("allow 2 channels"); - gst_structure_set (structure, "channels", G_TYPE_INT, 2, NULL); + for (i = 0; i < gst_caps_get_size (res); i++) { + structure = gst_caps_get_structure (res, i); + if (direction == GST_PAD_SRC) { + GST_INFO_OBJECT (base, "[%d] allow 1-2 channels", i); + gst_structure_set (structure, "channels", GST_TYPE_INT_RANGE, 1, 2, NULL); + } else { + GST_INFO_OBJECT (base, "[%d] allow 2 channels", i); + gst_structure_set (structure, "channels", G_TYPE_INT, 2, NULL); + } gst_structure_remove_field (structure, "channel-mask"); } + GST_DEBUG_OBJECT (base, "transformed %" GST_PTR_FORMAT, res); + + if (filter) { + GstCaps *intersection; + + GST_DEBUG_OBJECT (base, "Using filter caps %" GST_PTR_FORMAT, filter); + intersection = + gst_caps_intersect_full (filter, res, GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (res); + res = intersection; + GST_DEBUG_OBJECT (base, "Intersection %" GST_PTR_FORMAT, res); + } return res; } @@ -373,250 +373,128 @@ no_format: } /* psychoacoustic processing functions */ + +/* mono to stereo panning + * pan: -1.0 0.0 1.0 + * l: 1.0 0.5 0.0 + * r: 0.0 0.5 1.0 + * + * FIXME: we should use -3db (1/sqtr(2)) for 50:50 + */ static void -gst_audio_panorama_transform_m2s_int (GstAudioPanorama * filter, gint16 * idata, - gint16 * odata, guint num_samples) +gst_audio_panorama_m2s_int (gfloat pan, gint16 * idata, gint16 * odata, guint n) { - guint i; - gdouble val; - glong lval, rval; - gdouble rpan, lpan; - - /* pan: -1.0 0.0 1.0 - * lpan: 1.0 0.5 0.0 - * rpan: 0.0 0.5 1.0 - * - * FIXME: we should use -3db (1/sqtr(2)) for 50:50 - */ - rpan = (gdouble) (filter->panorama + 1.0) / 2.0; - lpan = 1.0 - rpan; - - for (i = 0; i < num_samples; i++) { - val = (gdouble) * idata++; - - lval = (glong) (val * lpan); - rval = (glong) (val * rpan); - - *odata++ = (gint16) CLAMP (lval, G_MININT16, G_MAXINT16); - *odata++ = (gint16) CLAMP (rval, G_MININT16, G_MAXINT16); - } + gfloat r = (pan + 1.0) / 2.0; + audiopanoramam_orc_process_s16_ch1_psy (odata, idata, 1.0 - r, r, n); } static void -gst_audio_panorama_transform_s2s_int (GstAudioPanorama * filter, gint16 * idata, - gint16 * odata, guint num_samples) +gst_audio_panorama_m2s_float (gfloat pan, gfloat * idata, + gfloat * odata, guint n) { - guint i; - glong lval, rval; - gdouble lival, rival; - gdouble lrpan, llpan, rrpan, rlpan; - - /* pan: -1.0 0.0 1.0 - * llpan: 1.0 1.0 0.0 - * lrpan: 1.0 0.0 0.0 - * rrpan: 0.0 1.0 1.0 - * rlpan: 0.0 0.0 1.0 - */ - if (filter->panorama > 0) { - rlpan = (gdouble) filter->panorama; - llpan = 1.0 - rlpan; - lrpan = 0.0; - rrpan = 1.0; - } else { - rrpan = (gdouble) (1.0 + filter->panorama); - lrpan = 1.0 - rrpan; - rlpan = 0.0; - llpan = 1.0; - } - - for (i = 0; i < num_samples; i++) { - lival = (gdouble) * idata++; - rival = (gdouble) * idata++; - - lval = lival * llpan + rival * lrpan; - rval = lival * rlpan + rival * rrpan; - - *odata++ = (gint16) CLAMP (lval, G_MININT16, G_MAXINT16); - *odata++ = (gint16) CLAMP (rval, G_MININT16, G_MAXINT16); - } + gfloat r = (pan + 1.0) / 2.0; + audiopanoramam_orc_process_f32_ch1_psy (odata, idata, 1.0 - r, r, n); } +/* stereo balance + * pan: -1.0 0.0 1.0 + * ll: 1.0 1.0 0.0 + * lr: 1.0 0.0 0.0 + * rr: 0.0 1.0 1.0 + * rl: 0.0 0.0 1.0 + */ static void -gst_audio_panorama_transform_m2s_float (GstAudioPanorama * filter, - gfloat * idata, gfloat * odata, guint num_samples) +gst_audio_panorama_s2s_int (gfloat pan, gint16 * idata, gint16 * odata, guint n) { - guint i; - gfloat val; - gdouble rpan, lpan; - - /* pan: -1.0 0.0 1.0 - * lpan: 1.0 0.5 0.0 - * rpan: 0.0 0.5 1.0 - * - * FIXME: we should use -3db (1/sqtr(2)) for 50:50 - */ - rpan = (gdouble) (filter->panorama + 1.0) / 2.0; - lpan = 1.0 - rpan; - - for (i = 0; i < num_samples; i++) { - val = *idata++; - - *odata++ = val * lpan; - *odata++ = val * rpan; + if (pan == 0.0) { + audiopanoramam_orc_process_s16_ch2_none (odata, idata, n); + } else if (pan > 0.0) { + gfloat rl = pan; + gfloat ll = 1.0 - rl; + audiopanoramam_orc_process_s16_ch2_psy_right (odata, idata, ll, rl, n); + } else { + gfloat rr = 1.0 + pan; + gfloat lr = 1.0 - rr; + audiopanoramam_orc_process_s16_ch2_psy_left (odata, idata, lr, rr, n); } } static void -gst_audio_panorama_transform_s2s_float (GstAudioPanorama * filter, - gfloat * idata, gfloat * odata, guint num_samples) +gst_audio_panorama_s2s_float (gfloat pan, gfloat * idata, + gfloat * odata, guint n) { - guint i; - gfloat lival, rival; - gdouble lrpan, llpan, rrpan, rlpan; - - /* pan: -1.0 0.0 1.0 - * llpan: 1.0 1.0 0.0 - * lrpan: 1.0 0.0 0.0 - * rrpan: 0.0 1.0 1.0 - * rlpan: 0.0 0.0 1.0 - */ - if (filter->panorama > 0) { - rlpan = (gdouble) filter->panorama; - llpan = 1.0 - rlpan; - lrpan = 0.0; - rrpan = 1.0; + if (pan == 0.0) { + audiopanoramam_orc_process_f32_ch2_none (odata, idata, n); + } else if (pan > 0.0) { + gfloat rl = pan; + gfloat ll = 1.0 - rl; + audiopanoramam_orc_process_f32_ch2_psy_right (odata, idata, ll, rl, n); } else { - rrpan = (gdouble) (1.0 + filter->panorama); - lrpan = 1.0 - rrpan; - rlpan = 0.0; - llpan = 1.0; - } - - for (i = 0; i < num_samples; i++) { - lival = *idata++; - rival = *idata++; - - *odata++ = lival * llpan + rival * lrpan; - *odata++ = lival * rlpan + rival * rrpan; + gfloat rr = 1.0 + pan; + gfloat lr = 1.0 - rr; + audiopanoramam_orc_process_f32_ch2_psy_left (odata, idata, lr, rr, n); } } /* simple processing functions */ + static void -gst_audio_panorama_transform_m2s_int_simple (GstAudioPanorama * filter, - gint16 * idata, gint16 * odata, guint num_samples) +gst_audio_panorama_m2s_int_simple (gfloat pan, gint16 * idata, + gint16 * odata, guint n) { - guint i; - gdouble pan; - glong lval, rval; - - if (filter->panorama > 0.0) { - pan = 1.0 - filter->panorama; - for (i = 0; i < num_samples; i++) { - rval = *idata++; - lval = (glong) ((gdouble) rval * pan); - - *odata++ = (gint16) CLAMP (lval, G_MININT16, G_MAXINT16); - *odata++ = (gint16) rval; - } + if (pan == 0.0) { + audiopanoramam_orc_process_s16_ch1_none (odata, idata, n); + } else if (pan > 0.0) { + gfloat lpan = 1.0 - pan; + audiopanoramam_orc_process_s16_ch1_sim_left (odata, idata, lpan, n); } else { - pan = 1.0 + filter->panorama; - for (i = 0; i < num_samples; i++) { - lval = *idata++; - rval = (glong) ((gdouble) lval * pan); - - *odata++ = (gint16) lval; - *odata++ = (gint16) CLAMP (rval, G_MININT16, G_MAXINT16); - } + gfloat rpan = 1.0 + pan; + audiopanoramam_orc_process_s16_ch1_sim_right (odata, idata, rpan, n); } } static void -gst_audio_panorama_transform_s2s_int_simple (GstAudioPanorama * filter, - gint16 * idata, gint16 * odata, guint num_samples) +gst_audio_panorama_s2s_int_simple (gfloat pan, gint16 * idata, + gint16 * odata, guint n) { - guint i; - glong lval, rval; - gdouble lival, rival, pan; - - if (filter->panorama > 0.0) { - pan = 1.0 - filter->panorama; - for (i = 0; i < num_samples; i++) { - lival = (gdouble) * idata++; - rival = (gdouble) * idata++; - - lval = (glong) (lival * pan); - rval = (glong) rival; - - *odata++ = (gint16) CLAMP (lval, G_MININT16, G_MAXINT16); - *odata++ = (gint16) rval; - } + if (pan == 0.0) { + audiopanoramam_orc_process_s16_ch2_none (odata, idata, n); + } else if (pan > 0.0) { + gfloat lpan = 1.0 - pan; + audiopanoramam_orc_process_s16_ch2_sim_left (odata, idata, lpan, n); } else { - pan = 1.0 + filter->panorama; - for (i = 0; i < num_samples; i++) { - lival = (gdouble) * idata++; - rival = (gdouble) * idata++; - - lval = (glong) lival; - rval = (glong) (rival * pan); - - *odata++ = (gint16) lval; - *odata++ = (gint16) CLAMP (rval, G_MININT16, G_MAXINT16); - } + gfloat rpan = 1.0 + pan; + audiopanoramam_orc_process_s16_ch2_sim_right (odata, idata, rpan, n); } } static void -gst_audio_panorama_transform_m2s_float_simple (GstAudioPanorama * filter, - gfloat * idata, gfloat * odata, guint num_samples) +gst_audio_panorama_m2s_float_simple (gfloat pan, gfloat * idata, + gfloat * odata, guint n) { - guint i; - gfloat val, pan; - - if (filter->panorama > 0.0) { - pan = 1.0 - filter->panorama; - for (i = 0; i < num_samples; i++) { - val = *idata++; - - *odata++ = val * pan; - *odata++ = val; - } + if (pan == 0.0) { + audiopanoramam_orc_process_f32_ch1_none (odata, idata, n); + } else if (pan > 0.0) { + gfloat lpan = 1.0 - pan; + audiopanoramam_orc_process_f32_ch1_sim_left (odata, idata, lpan, n); } else { - pan = 1.0 + filter->panorama; - for (i = 0; i < num_samples; i++) { - val = *idata++; - - *odata++ = val; - *odata++ = val * pan; - } + gfloat rpan = 1.0 + pan; + audiopanoramam_orc_process_f32_ch1_sim_right (odata, idata, rpan, n); } } static void -gst_audio_panorama_transform_s2s_float_simple (GstAudioPanorama * filter, - gfloat * idata, gfloat * odata, guint num_samples) +gst_audio_panorama_s2s_float_simple (gfloat pan, gfloat * idata, + gfloat * odata, guint n) { - guint i; - gfloat lival, rival, pan; - - if (filter->panorama > 0.0) { - pan = 1.0 - filter->panorama; - for (i = 0; i < num_samples; i++) { - lival = *idata++; - rival = *idata++; - - *odata++ = lival * pan; - *odata++ = rival; - } + if (pan == 0.0) { + audiopanoramam_orc_process_f32_ch2_none (odata, idata, n); + } else if (pan > 0.0) { + gfloat lpan = 1.0 - pan; + audiopanoramam_orc_process_f32_ch2_sim_left (odata, idata, lpan, n); } else { - pan = 1.0 + filter->panorama; - for (i = 0; i < num_samples; i++) { - lival = *idata++; - rival = *idata++; - - *odata++ = lival; - *odata++ = rival * pan; - } + gfloat rpan = 1.0 + pan; + audiopanoramam_orc_process_f32_ch2_sim_right (odata, idata, rpan, n); } } @@ -627,34 +505,32 @@ gst_audio_panorama_transform (GstBaseTransform * base, GstBuffer * inbuf, GstBuffer * outbuf) { GstAudioPanorama *filter = GST_AUDIO_PANORAMA (base); - GstClockTime timestamp, stream_time; + GstClockTime ts; GstMapInfo inmap, outmap; - timestamp = GST_BUFFER_TIMESTAMP (inbuf); - stream_time = - gst_segment_to_stream_time (&base->segment, GST_FORMAT_TIME, timestamp); + ts = gst_segment_to_stream_time (&base->segment, GST_FORMAT_TIME, + GST_BUFFER_TIMESTAMP (inbuf)); - GST_DEBUG_OBJECT (filter, "sync to %" GST_TIME_FORMAT, - GST_TIME_ARGS (timestamp)); - - if (GST_CLOCK_TIME_IS_VALID (stream_time)) - gst_object_sync_values (GST_OBJECT (filter), stream_time); + if (GST_CLOCK_TIME_IS_VALID (ts)) { + GST_DEBUG_OBJECT (filter, "sync to %" GST_TIME_FORMAT, GST_TIME_ARGS (ts)); + gst_object_sync_values (GST_OBJECT (filter), ts); + } - gst_buffer_map (inbuf, &inmap, GST_MAP_READ); gst_buffer_map (outbuf, &outmap, GST_MAP_WRITE); if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (inbuf, GST_BUFFER_FLAG_GAP))) { GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_GAP); - memset (outmap.data, 0, outmap.size); + orc_memset (outmap.data, 0, outmap.size); } else { - /* output always stereo, input mono or stereo, + /* output is always stereo, input is mono or stereo, * and info describes input format */ guint num_samples = outmap.size / (2 * GST_AUDIO_INFO_BPS (&filter->info)); - filter->process (filter, inmap.data, outmap.data, num_samples); + gst_buffer_map (inbuf, &inmap, GST_MAP_READ); + filter->process (filter->panorama, inmap.data, outmap.data, num_samples); + gst_buffer_unmap (inbuf, &inmap); } - gst_buffer_unmap (inbuf, &inmap); gst_buffer_unmap (outbuf, &outmap); return GST_FLOW_OK; diff --git a/gst/audiofx/audiopanorama.h b/gst/audiofx/audiopanorama.h index e445f4dd637e7849ab6a6c86fb50cd186d186798..44d1cec2b55babfb38f8af298aebae3f543aa1b0 100644 --- a/gst/audiofx/audiopanorama.h +++ b/gst/audiofx/audiopanorama.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUDIO_PANORAMA_H__ @@ -37,18 +37,24 @@ G_BEGIN_DECLS typedef struct _GstAudioPanorama GstAudioPanorama; typedef struct _GstAudioPanoramaClass GstAudioPanoramaClass; -typedef void (*GstAudioPanoramaProcessFunc)(GstAudioPanorama*, guint8*, guint8*, guint); +typedef void (*GstAudioPanoramaProcessFunc)(gfloat, guint8*, guint8*, guint); + +typedef enum +{ + METHOD_PSYCHOACOUSTIC = 0, + METHOD_SIMPLE +} GstAudioPanoramaMethod; struct _GstAudioPanorama { GstBaseTransform element; + /* properties */ gfloat panorama; + GstAudioPanoramaMethod method; /* < private > */ GstAudioPanoramaProcessFunc process; - GstAudioInfo info; - gint method; }; struct _GstAudioPanoramaClass { diff --git a/gst/audiofx/audiopanoramaorc-dist.c b/gst/audiofx/audiopanoramaorc-dist.c new file mode 100644 index 0000000000000000000000000000000000000000..dc871464218e30e1c57032b90d2eccc25cb1cea9 --- /dev/null +++ b/gst/audiofx/audiopanoramaorc-dist.c @@ -0,0 +1,3977 @@ + +/* autogenerated from audiopanoramaorc.orc */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <glib.h> + +#ifndef _ORC_INTEGER_TYPEDEFS_ +#define _ORC_INTEGER_TYPEDEFS_ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include <stdint.h> +typedef int8_t orc_int8; +typedef int16_t orc_int16; +typedef int32_t orc_int32; +typedef int64_t orc_int64; +typedef uint8_t orc_uint8; +typedef uint16_t orc_uint16; +typedef uint32_t orc_uint32; +typedef uint64_t orc_uint64; +#define ORC_UINT64_C(x) UINT64_C(x) +#elif defined(_MSC_VER) +typedef signed __int8 orc_int8; +typedef signed __int16 orc_int16; +typedef signed __int32 orc_int32; +typedef signed __int64 orc_int64; +typedef unsigned __int8 orc_uint8; +typedef unsigned __int16 orc_uint16; +typedef unsigned __int32 orc_uint32; +typedef unsigned __int64 orc_uint64; +#define ORC_UINT64_C(x) (x##Ui64) +#define inline __inline +#else +#include <limits.h> +typedef signed char orc_int8; +typedef short orc_int16; +typedef int orc_int32; +typedef unsigned char orc_uint8; +typedef unsigned short orc_uint16; +typedef unsigned int orc_uint32; +#if INT_MAX == LONG_MAX +typedef long long orc_int64; +typedef unsigned long long orc_uint64; +#define ORC_UINT64_C(x) (x##ULL) +#else +typedef long orc_int64; +typedef unsigned long orc_uint64; +#define ORC_UINT64_C(x) (x##UL) +#endif +#endif +typedef union +{ + orc_int16 i; + orc_int8 x2[2]; +} orc_union16; +typedef union +{ + orc_int32 i; + float f; + orc_int16 x2[2]; + orc_int8 x4[4]; +} orc_union32; +typedef union +{ + orc_int64 i; + double f; + orc_int32 x2[2]; + float x2f[2]; + orc_int16 x4[4]; +} orc_union64; +#endif +#ifndef ORC_RESTRICT +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#else +#define ORC_RESTRICT +#endif +#endif + +#ifndef ORC_INTERNAL +#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +#define ORC_INTERNAL __hidden +#elif defined (__GNUC__) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#else +#define ORC_INTERNAL +#endif +#endif + + +#ifndef DISABLE_ORC +#include <orc/orc.h> +#endif +void audiopanoramam_orc_process_s16_ch1_none (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, int n); +void audiopanoramam_orc_process_f32_ch1_none (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, int n); +void audiopanoramam_orc_process_s16_ch2_none (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, int n); +void audiopanoramam_orc_process_f32_ch2_none (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, int n); +void audiopanoramam_orc_process_s16_ch1_psy (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_f32_ch1_psy (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_s16_ch2_psy_right (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_s16_ch2_psy_left (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_f32_ch2_psy_right (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_f32_ch2_psy_left (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_s16_ch1_sim_right (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_s16_ch1_sim_left (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_s16_ch2_sim_right (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_s16_ch2_sim_left (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_f32_ch1_sim_right (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_f32_ch1_sim_left (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_f32_ch2_sim_right (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_f32_ch2_sim_left (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n); + + +/* begin Orc C target preamble */ +#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) +#define ORC_ABS(a) ((a)<0 ? -(a) : (a)) +#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) +#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b)) +#define ORC_SB_MAX 127 +#define ORC_SB_MIN (-1-ORC_SB_MAX) +#define ORC_UB_MAX 255 +#define ORC_UB_MIN 0 +#define ORC_SW_MAX 32767 +#define ORC_SW_MIN (-1-ORC_SW_MAX) +#define ORC_UW_MAX 65535 +#define ORC_UW_MIN 0 +#define ORC_SL_MAX 2147483647 +#define ORC_SL_MIN (-1-ORC_SL_MAX) +#define ORC_UL_MAX 4294967295U +#define ORC_UL_MIN 0 +#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX) +#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX) +#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX) +#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX) +#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX) +#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX) +#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8)) +#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) +#define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56)) +#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) +#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff)) +#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0)) +#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff))) +#define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0)) +#ifndef ORC_RESTRICT +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#else +#define ORC_RESTRICT +#endif +#endif +/* end Orc C target preamble */ + + + +/* audiopanoramam_orc_process_s16_ch1_none */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_s16_ch1_none (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var32; + orc_union16 var33; + orc_union32 var34; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union16 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var32 = ptr4[i]; + /* 1: loadw */ + var33 = ptr4[i]; + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var32.i; + _dest.x2[1] = var33.i; + var34.i = _dest.i; + } + /* 3: storel */ + ptr0[i] = var34; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_s16_ch1_none (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var32; + orc_union16 var33; + orc_union32 var34; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var32 = ptr4[i]; + /* 1: loadw */ + var33 = ptr4[i]; + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var32.i; + _dest.x2[1] = var33.i; + var34.i = _dest.i; + } + /* 3: storel */ + ptr0[i] = var34; + } + +} + +void +audiopanoramam_orc_process_s16_ch1_none (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 54, 95, 99, 104, 49, 95, 110, 111, 110, 101, 11, 4, 4, 12, 2, 2, + 195, 0, 4, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_none); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_none"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_none); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_f32_ch1_none */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_f32_ch1_none (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + orc_union64 var34; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: loadl */ + var33 = ptr4[i]; + /* 2: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var32.i; + _dest.x2[1] = var33.i; + var34.i = _dest.i; + } + /* 3: storeq */ + ptr0[i] = var34; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_f32_ch1_none (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + orc_union64 var34; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: loadl */ + var33 = ptr4[i]; + /* 2: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var32.i; + _dest.x2[1] = var33.i; + var34.i = _dest.i; + } + /* 3: storeq */ + ptr0[i] = var34; + } + +} + +void +audiopanoramam_orc_process_f32_ch1_none (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 50, 95, 99, 104, 49, 95, 110, 111, 110, 101, 11, 8, 8, 12, 4, 4, + 194, 0, 4, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_none); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_none"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_none); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_s16_ch2_none */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_s16_ch2_none (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: copyw */ + var33.x2[0] = var32.x2[0]; + var33.x2[1] = var32.x2[1]; + /* 2: storel */ + ptr0[i] = var33; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_s16_ch2_none (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: copyw */ + var33.x2[0] = var32.x2[0]; + var33.x2[1] = var32.x2[1]; + /* 2: storel */ + ptr0[i] = var33; + } + +} + +void +audiopanoramam_orc_process_s16_ch2_none (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 54, 95, 99, 104, 50, 95, 110, 111, 110, 101, 11, 4, 4, 12, 4, 4, + 21, 1, 79, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_none); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_none"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_none); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + + orc_program_append_2 (p, "copyw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_f32_ch2_none */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_f32_ch2_none (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var32; + orc_union64 var33; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union64 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var32 = ptr4[i]; + /* 1: copyl */ + var33.x2[0] = var32.x2[0]; + var33.x2[1] = var32.x2[1]; + /* 2: storeq */ + ptr0[i] = var33; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_f32_ch2_none (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var32; + orc_union64 var33; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var32 = ptr4[i]; + /* 1: copyl */ + var33.x2[0] = var32.x2[0]; + var33.x2[1] = var32.x2[1]; + /* 2: storeq */ + ptr0[i] = var33; + } + +} + +void +audiopanoramam_orc_process_f32_ch2_none (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 50, 95, 99, 104, 50, 95, 110, 111, 110, 101, 11, 8, 8, 12, 8, 8, + 21, 1, 112, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_none); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_none"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_none); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + + orc_program_append_2 (p, "copyl", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_s16_ch1_psy */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_s16_ch1_psy (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, float p2, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var35; + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; + orc_union64 var43; + orc_union64 var44; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union16 *) s1; + + /* 3: loadpl */ + var36.f = p2; + /* 5: loadpl */ + var37.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var35 = ptr4[i]; + /* 1: convswl */ + var39.i = var35.i; + /* 2: convlf */ + var40.f = var39.i; + /* 4: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var40.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var41.i = ORC_DENORMAL (_dest1.i); + } + /* 6: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var40.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var42.i = ORC_DENORMAL (_dest1.i); + } + /* 7: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var42.i; + _dest.x2[1] = var41.i; + var43.i = _dest.i; + } + /* 8: convfl */ + { + int tmp; + tmp = (int) var43.x2f[0]; + if (tmp == 0x80000000 && !(var43.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var43.x2f[1]; + if (tmp == 0x80000000 && !(var43.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[1] = tmp; + } + /* 9: convssslw */ + var38.x2[0] = ORC_CLAMP_SW (var44.x2[0]); + var38.x2[1] = ORC_CLAMP_SW (var44.x2[1]); + /* 10: storel */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_s16_ch1_psy (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var35; + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; + orc_union64 var43; + orc_union64 var44; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + + /* 3: loadpl */ + var36.i = ex->params[25]; + /* 5: loadpl */ + var37.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var35 = ptr4[i]; + /* 1: convswl */ + var39.i = var35.i; + /* 2: convlf */ + var40.f = var39.i; + /* 4: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var40.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var41.i = ORC_DENORMAL (_dest1.i); + } + /* 6: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var40.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var42.i = ORC_DENORMAL (_dest1.i); + } + /* 7: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var42.i; + _dest.x2[1] = var41.i; + var43.i = _dest.i; + } + /* 8: convfl */ + { + int tmp; + tmp = (int) var43.x2f[0]; + if (tmp == 0x80000000 && !(var43.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var43.x2f[1]; + if (tmp == 0x80000000 && !(var43.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[1] = tmp; + } + /* 9: convssslw */ + var38.x2[0] = ORC_CLAMP_SW (var44.x2[0]); + var38.x2[1] = ORC_CLAMP_SW (var44.x2[1]); + /* 10: storel */ + ptr0[i] = var38; + } + +} + +void +audiopanoramam_orc_process_s16_ch1_psy (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, float p2, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 21, 1, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_psy); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_psy"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_psy); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + { + orc_union32 tmp; + tmp.f = p2; + ex->params[ORC_VAR_P2] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_f32_ch1_psy */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_f32_ch1_psy (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, float p2, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_union32 var35; + orc_union32 var36; + orc_union32 var37; + orc_union64 var38; + orc_union32 var39; + orc_union32 var40; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union32 *) s1; + + /* 1: loadpl */ + var35.f = p2; + /* 4: loadpl */ + var37.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 2: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var34.i); + _src2.i = ORC_DENORMAL (var35.i); + _dest1.f = _src1.f * _src2.f; + var39.i = ORC_DENORMAL (_dest1.i); + } + /* 3: loadl */ + var36 = ptr4[i]; + /* 5: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var36.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var40.i = ORC_DENORMAL (_dest1.i); + } + /* 6: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var39.i; + var38.i = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_f32_ch1_psy (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_union32 var35; + orc_union32 var36; + orc_union32 var37; + orc_union64 var38; + orc_union32 var39; + orc_union32 var40; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + /* 1: loadpl */ + var35.i = ex->params[25]; + /* 4: loadpl */ + var37.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 2: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var34.i); + _src2.i = ORC_DENORMAL (var35.i); + _dest1.f = _src1.f * _src2.f; + var39.i = ORC_DENORMAL (_dest1.i); + } + /* 3: loadl */ + var36 = ptr4[i]; + /* 5: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var36.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var40.i = ORC_DENORMAL (_dest1.i); + } + /* 6: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var39.i; + var38.i = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var38; + } + +} + +void +audiopanoramam_orc_process_f32_ch1_psy (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, float p2, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_psy); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_psy"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_psy); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + { + orc_union32 tmp; + tmp.f = p2; + ex->params[ORC_VAR_P2] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_s16_ch2_psy_right */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_s16_ch2_psy_right (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, float p2, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + orc_union32 var39; + orc_union64 var40; + orc_union64 var41; + orc_union32 var42; + orc_union32 var43; + orc_union32 var44; + orc_union32 var45; + orc_union32 var46; + orc_union64 var47; + orc_union64 var48; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + /* 5: loadpl */ + var37.f = p2; + /* 7: loadpl */ + var38.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: convswl */ + var40.x2[0] = var36.x2[0]; + var40.x2[1] = var36.x2[1]; + /* 2: convlf */ + var41.x2f[0] = var40.x2[0]; + var41.x2f[1] = var40.x2[1]; + /* 3: select0ql */ + { + orc_union64 _src; + _src.i = var41.i; + var42.i = _src.x2[0]; + } + /* 4: select1ql */ + { + orc_union64 _src; + _src.i = var41.i; + var43.i = _src.x2[1]; + } + /* 6: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var42.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var44.i = ORC_DENORMAL (_dest1.i); + } + /* 8: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var42.i); + _src2.i = ORC_DENORMAL (var38.i); + _dest1.f = _src1.f * _src2.f; + var45.i = ORC_DENORMAL (_dest1.i); + } + /* 9: addf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var44.i); + _src2.i = ORC_DENORMAL (var43.i); + _dest1.f = _src1.f + _src2.f; + var46.i = ORC_DENORMAL (_dest1.i); + } + /* 10: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var45.i; + _dest.x2[1] = var46.i; + var47.i = _dest.i; + } + /* 11: convfl */ + { + int tmp; + tmp = (int) var47.x2f[0]; + if (tmp == 0x80000000 && !(var47.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var48.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var47.x2f[1]; + if (tmp == 0x80000000 && !(var47.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var48.x2[1] = tmp; + } + /* 12: convssslw */ + var39.x2[0] = ORC_CLAMP_SW (var48.x2[0]); + var39.x2[1] = ORC_CLAMP_SW (var48.x2[1]); + /* 13: storel */ + ptr0[i] = var39; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_s16_ch2_psy_right (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + orc_union32 var39; + orc_union64 var40; + orc_union64 var41; + orc_union32 var42; + orc_union32 var43; + orc_union32 var44; + orc_union32 var45; + orc_union32 var46; + orc_union64 var47; + orc_union64 var48; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + /* 5: loadpl */ + var37.i = ex->params[25]; + /* 7: loadpl */ + var38.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: convswl */ + var40.x2[0] = var36.x2[0]; + var40.x2[1] = var36.x2[1]; + /* 2: convlf */ + var41.x2f[0] = var40.x2[0]; + var41.x2f[1] = var40.x2[1]; + /* 3: select0ql */ + { + orc_union64 _src; + _src.i = var41.i; + var42.i = _src.x2[0]; + } + /* 4: select1ql */ + { + orc_union64 _src; + _src.i = var41.i; + var43.i = _src.x2[1]; + } + /* 6: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var42.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var44.i = ORC_DENORMAL (_dest1.i); + } + /* 8: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var42.i); + _src2.i = ORC_DENORMAL (var38.i); + _dest1.f = _src1.f * _src2.f; + var45.i = ORC_DENORMAL (_dest1.i); + } + /* 9: addf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var44.i); + _src2.i = ORC_DENORMAL (var43.i); + _dest1.f = _src1.f + _src2.f; + var46.i = ORC_DENORMAL (_dest1.i); + } + /* 10: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var45.i; + _dest.x2[1] = var46.i; + var47.i = _dest.i; + } + /* 11: convfl */ + { + int tmp; + tmp = (int) var47.x2f[0]; + if (tmp == 0x80000000 && !(var47.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var48.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var47.x2f[1]; + if (tmp == 0x80000000 && !(var47.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var48.x2[1] = tmp; + } + /* 12: convssslw */ + var39.x2[0] = ORC_CLAMP_SW (var48.x2[0]); + var39.x2[1] = ORC_CLAMP_SW (var48.x2[1]); + /* 13: storel */ + ptr0[i] = var39; + } + +} + +void +audiopanoramam_orc_process_s16_ch2_psy_right (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, float p2, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 32, 202, 35, 33, 25, 202, 33, 33, 24, 200, 34, 35, 34, 194, 32, 33, + 34, 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_psy_right); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_psy_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_psy_right); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + + orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + { + orc_union32 tmp; + tmp.f = p2; + ex->params[ORC_VAR_P2] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_s16_ch2_psy_left */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_s16_ch2_psy_left (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, float p2, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + orc_union32 var39; + orc_union64 var40; + orc_union64 var41; + orc_union32 var42; + orc_union32 var43; + orc_union32 var44; + orc_union32 var45; + orc_union32 var46; + orc_union64 var47; + orc_union64 var48; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + /* 5: loadpl */ + var37.f = p1; + /* 7: loadpl */ + var38.f = p2; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: convswl */ + var40.x2[0] = var36.x2[0]; + var40.x2[1] = var36.x2[1]; + /* 2: convlf */ + var41.x2f[0] = var40.x2[0]; + var41.x2f[1] = var40.x2[1]; + /* 3: select0ql */ + { + orc_union64 _src; + _src.i = var41.i; + var42.i = _src.x2[0]; + } + /* 4: select1ql */ + { + orc_union64 _src; + _src.i = var41.i; + var43.i = _src.x2[1]; + } + /* 6: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var43.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var44.i = ORC_DENORMAL (_dest1.i); + } + /* 8: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var43.i); + _src2.i = ORC_DENORMAL (var38.i); + _dest1.f = _src1.f * _src2.f; + var45.i = ORC_DENORMAL (_dest1.i); + } + /* 9: addf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var44.i); + _src2.i = ORC_DENORMAL (var42.i); + _dest1.f = _src1.f + _src2.f; + var46.i = ORC_DENORMAL (_dest1.i); + } + /* 10: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var46.i; + _dest.x2[1] = var45.i; + var47.i = _dest.i; + } + /* 11: convfl */ + { + int tmp; + tmp = (int) var47.x2f[0]; + if (tmp == 0x80000000 && !(var47.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var48.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var47.x2f[1]; + if (tmp == 0x80000000 && !(var47.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var48.x2[1] = tmp; + } + /* 12: convssslw */ + var39.x2[0] = ORC_CLAMP_SW (var48.x2[0]); + var39.x2[1] = ORC_CLAMP_SW (var48.x2[1]); + /* 13: storel */ + ptr0[i] = var39; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_s16_ch2_psy_left (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + orc_union32 var39; + orc_union64 var40; + orc_union64 var41; + orc_union32 var42; + orc_union32 var43; + orc_union32 var44; + orc_union32 var45; + orc_union32 var46; + orc_union64 var47; + orc_union64 var48; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + /* 5: loadpl */ + var37.i = ex->params[24]; + /* 7: loadpl */ + var38.i = ex->params[25]; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: convswl */ + var40.x2[0] = var36.x2[0]; + var40.x2[1] = var36.x2[1]; + /* 2: convlf */ + var41.x2f[0] = var40.x2[0]; + var41.x2f[1] = var40.x2[1]; + /* 3: select0ql */ + { + orc_union64 _src; + _src.i = var41.i; + var42.i = _src.x2[0]; + } + /* 4: select1ql */ + { + orc_union64 _src; + _src.i = var41.i; + var43.i = _src.x2[1]; + } + /* 6: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var43.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var44.i = ORC_DENORMAL (_dest1.i); + } + /* 8: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var43.i); + _src2.i = ORC_DENORMAL (var38.i); + _dest1.f = _src1.f * _src2.f; + var45.i = ORC_DENORMAL (_dest1.i); + } + /* 9: addf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var44.i); + _src2.i = ORC_DENORMAL (var42.i); + _dest1.f = _src1.f + _src2.f; + var46.i = ORC_DENORMAL (_dest1.i); + } + /* 10: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var46.i; + _dest.x2[1] = var45.i; + var47.i = _dest.i; + } + /* 11: convfl */ + { + int tmp; + tmp = (int) var47.x2f[0]; + if (tmp == 0x80000000 && !(var47.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var48.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var47.x2f[1]; + if (tmp == 0x80000000 && !(var47.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var48.x2[1] = tmp; + } + /* 12: convssslw */ + var39.x2[0] = ORC_CLAMP_SW (var48.x2[0]); + var39.x2[1] = ORC_CLAMP_SW (var48.x2[1]); + /* 13: storel */ + ptr0[i] = var39; + } + +} + +void +audiopanoramam_orc_process_s16_ch2_psy_left (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, float p2, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 202, 34, 35, 24, 202, 35, 35, 25, 200, 33, 34, 33, 194, 32, 33, 35, + 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_psy_left); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_psy_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_psy_left); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + + orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T4, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + { + orc_union32 tmp; + tmp.f = p2; + ex->params[ORC_VAR_P2] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_f32_ch2_psy_right */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_f32_ch2_psy_right (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, float p2, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var35; + orc_union64 var36; + orc_union32 var37; + orc_union32 var38; + orc_union64 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; + orc_union32 var43; + orc_union32 var44; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union64 *) s1; + + /* 4: loadpl */ + var37.f = p2; + /* 6: loadpl */ + var38.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var35 = ptr4[i]; + /* 1: select0ql */ + { + orc_union64 _src; + _src.i = var35.i; + var40.i = _src.x2[0]; + } + /* 2: loadq */ + var36 = ptr4[i]; + /* 3: select1ql */ + { + orc_union64 _src; + _src.i = var36.i; + var41.i = _src.x2[1]; + } + /* 5: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var40.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var42.i = ORC_DENORMAL (_dest1.i); + } + /* 7: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var40.i); + _src2.i = ORC_DENORMAL (var38.i); + _dest1.f = _src1.f * _src2.f; + var43.i = ORC_DENORMAL (_dest1.i); + } + /* 8: addf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var42.i); + _src2.i = ORC_DENORMAL (var41.i); + _dest1.f = _src1.f + _src2.f; + var44.i = ORC_DENORMAL (_dest1.i); + } + /* 9: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var43.i; + _dest.x2[1] = var44.i; + var39.i = _dest.i; + } + /* 10: storeq */ + ptr0[i] = var39; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_f32_ch2_psy_right (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var35; + orc_union64 var36; + orc_union32 var37; + orc_union32 var38; + orc_union64 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; + orc_union32 var43; + orc_union32 var44; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + /* 4: loadpl */ + var37.i = ex->params[25]; + /* 6: loadpl */ + var38.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var35 = ptr4[i]; + /* 1: select0ql */ + { + orc_union64 _src; + _src.i = var35.i; + var40.i = _src.x2[0]; + } + /* 2: loadq */ + var36 = ptr4[i]; + /* 3: select1ql */ + { + orc_union64 _src; + _src.i = var36.i; + var41.i = _src.x2[1]; + } + /* 5: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var40.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var42.i = ORC_DENORMAL (_dest1.i); + } + /* 7: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var40.i); + _src2.i = ORC_DENORMAL (var38.i); + _dest1.f = _src1.f * _src2.f; + var43.i = ORC_DENORMAL (_dest1.i); + } + /* 8: addf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var42.i); + _src2.i = ORC_DENORMAL (var41.i); + _dest1.f = _src1.f + _src2.f; + var44.i = ORC_DENORMAL (_dest1.i); + } + /* 9: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var43.i; + _dest.x2[1] = var44.i; + var39.i = _dest.i; + } + /* 10: storeq */ + ptr0[i] = var39; + } + +} + +void +audiopanoramam_orc_process_f32_ch2_psy_right (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, float p2, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 33, 194, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_psy_right); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_psy_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_psy_right); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + { + orc_union32 tmp; + tmp.f = p2; + ex->params[ORC_VAR_P2] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_f32_ch2_psy_left */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_f32_ch2_psy_left (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, float p2, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var35; + orc_union64 var36; + orc_union32 var37; + orc_union32 var38; + orc_union64 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; + orc_union32 var43; + orc_union32 var44; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union64 *) s1; + + /* 4: loadpl */ + var37.f = p1; + /* 6: loadpl */ + var38.f = p2; + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var35 = ptr4[i]; + /* 1: select0ql */ + { + orc_union64 _src; + _src.i = var35.i; + var40.i = _src.x2[0]; + } + /* 2: loadq */ + var36 = ptr4[i]; + /* 3: select1ql */ + { + orc_union64 _src; + _src.i = var36.i; + var41.i = _src.x2[1]; + } + /* 5: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var41.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var42.i = ORC_DENORMAL (_dest1.i); + } + /* 7: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var41.i); + _src2.i = ORC_DENORMAL (var38.i); + _dest1.f = _src1.f * _src2.f; + var43.i = ORC_DENORMAL (_dest1.i); + } + /* 8: addf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var42.i); + _src2.i = ORC_DENORMAL (var40.i); + _dest1.f = _src1.f + _src2.f; + var44.i = ORC_DENORMAL (_dest1.i); + } + /* 9: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var44.i; + _dest.x2[1] = var43.i; + var39.i = _dest.i; + } + /* 10: storeq */ + ptr0[i] = var39; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_f32_ch2_psy_left (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var35; + orc_union64 var36; + orc_union32 var37; + orc_union32 var38; + orc_union64 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; + orc_union32 var43; + orc_union32 var44; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + /* 4: loadpl */ + var37.i = ex->params[24]; + /* 6: loadpl */ + var38.i = ex->params[25]; + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var35 = ptr4[i]; + /* 1: select0ql */ + { + orc_union64 _src; + _src.i = var35.i; + var40.i = _src.x2[0]; + } + /* 2: loadq */ + var36 = ptr4[i]; + /* 3: select1ql */ + { + orc_union64 _src; + _src.i = var36.i; + var41.i = _src.x2[1]; + } + /* 5: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var41.i); + _src2.i = ORC_DENORMAL (var37.i); + _dest1.f = _src1.f * _src2.f; + var42.i = ORC_DENORMAL (_dest1.i); + } + /* 7: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var41.i); + _src2.i = ORC_DENORMAL (var38.i); + _dest1.f = _src1.f * _src2.f; + var43.i = ORC_DENORMAL (_dest1.i); + } + /* 8: addf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var42.i); + _src2.i = ORC_DENORMAL (var40.i); + _dest1.f = _src1.f + _src2.f; + var44.i = ORC_DENORMAL (_dest1.i); + } + /* 9: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var44.i; + _dest.x2[1] = var43.i; + var39.i = _dest.i; + } + /* 10: storeq */ + ptr0[i] = var39; + } + +} + +void +audiopanoramam_orc_process_f32_ch2_psy_left (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, float p2, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 194, 0, 32, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_psy_left); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_psy_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_psy_left); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_S1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + { + orc_union32 tmp; + tmp.f = p2; + ex->params[ORC_VAR_P2] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_s16_ch1_sim_right */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_s16_ch1_sim_right (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var35; + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union64 var41; + orc_union64 var42; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union16 *) s1; + + /* 3: loadpl */ + var36.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var35 = ptr4[i]; + /* 1: convswl */ + var38.i = var35.i; + /* 2: convlf */ + var39.f = var38.i; + /* 4: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var39.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var40.i = ORC_DENORMAL (_dest1.i); + } + /* 5: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var39.i; + _dest.x2[1] = var40.i; + var41.i = _dest.i; + } + /* 6: convfl */ + { + int tmp; + tmp = (int) var41.x2f[0]; + if (tmp == 0x80000000 && !(var41.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var42.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var41.x2f[1]; + if (tmp == 0x80000000 && !(var41.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var42.x2[1] = tmp; + } + /* 7: convssslw */ + var37.x2[0] = ORC_CLAMP_SW (var42.x2[0]); + var37.x2[1] = ORC_CLAMP_SW (var42.x2[1]); + /* 8: storel */ + ptr0[i] = var37; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_s16_ch1_sim_right (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var35; + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union64 var41; + orc_union64 var42; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + + /* 3: loadpl */ + var36.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var35 = ptr4[i]; + /* 1: convswl */ + var38.i = var35.i; + /* 2: convlf */ + var39.f = var38.i; + /* 4: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var39.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var40.i = ORC_DENORMAL (_dest1.i); + } + /* 5: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var39.i; + _dest.x2[1] = var40.i; + var41.i = _dest.i; + } + /* 6: convfl */ + { + int tmp; + tmp = (int) var41.x2f[0]; + if (tmp == 0x80000000 && !(var41.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var42.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var41.x2f[1]; + if (tmp == 0x80000000 && !(var41.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var42.x2[1] = tmp; + } + /* 7: convssslw */ + var37.x2[0] = ORC_CLAMP_SW (var42.x2[0]); + var37.x2[1] = ORC_CLAMP_SW (var42.x2[1]); + /* 8: storel */ + ptr0[i] = var37; + } + +} + +void +audiopanoramam_orc_process_s16_ch1_sim_right (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 21, 1, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_sim_right); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_sim_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_sim_right); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_s16_ch1_sim_left */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_s16_ch1_sim_left (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var35; + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union64 var41; + orc_union64 var42; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union16 *) s1; + + /* 3: loadpl */ + var36.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var35 = ptr4[i]; + /* 1: convswl */ + var38.i = var35.i; + /* 2: convlf */ + var39.f = var38.i; + /* 4: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var39.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var40.i = ORC_DENORMAL (_dest1.i); + } + /* 5: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var39.i; + var41.i = _dest.i; + } + /* 6: convfl */ + { + int tmp; + tmp = (int) var41.x2f[0]; + if (tmp == 0x80000000 && !(var41.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var42.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var41.x2f[1]; + if (tmp == 0x80000000 && !(var41.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var42.x2[1] = tmp; + } + /* 7: convssslw */ + var37.x2[0] = ORC_CLAMP_SW (var42.x2[0]); + var37.x2[1] = ORC_CLAMP_SW (var42.x2[1]); + /* 8: storel */ + ptr0[i] = var37; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_s16_ch1_sim_left (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var35; + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union64 var41; + orc_union64 var42; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + + /* 3: loadpl */ + var36.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var35 = ptr4[i]; + /* 1: convswl */ + var38.i = var35.i; + /* 2: convlf */ + var39.f = var38.i; + /* 4: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var39.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var40.i = ORC_DENORMAL (_dest1.i); + } + /* 5: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var39.i; + var41.i = _dest.i; + } + /* 6: convfl */ + { + int tmp; + tmp = (int) var41.x2f[0]; + if (tmp == 0x80000000 && !(var41.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var42.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var41.x2f[1]; + if (tmp == 0x80000000 && !(var41.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var42.x2[1] = tmp; + } + /* 7: convssslw */ + var37.x2[0] = ORC_CLAMP_SW (var42.x2[0]); + var37.x2[1] = ORC_CLAMP_SW (var42.x2[1]); + /* 8: storel */ + ptr0[i] = var37; + } + +} + +void +audiopanoramam_orc_process_s16_ch1_sim_left (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 1, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_sim_left); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_sim_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_sim_left); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_s16_ch2_sim_right */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_s16_ch2_sim_right (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var35; + orc_union32 var36; + orc_union32 var37; + orc_union64 var38; + orc_union64 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; + orc_union64 var43; + orc_union64 var44; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + /* 5: loadpl */ + var36.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: convswl */ + var38.x2[0] = var35.x2[0]; + var38.x2[1] = var35.x2[1]; + /* 2: convlf */ + var39.x2f[0] = var38.x2[0]; + var39.x2f[1] = var38.x2[1]; + /* 3: select0ql */ + { + orc_union64 _src; + _src.i = var39.i; + var40.i = _src.x2[0]; + } + /* 4: select1ql */ + { + orc_union64 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + } + /* 6: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var41.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var42.i = ORC_DENORMAL (_dest1.i); + } + /* 7: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var42.i; + var43.i = _dest.i; + } + /* 8: convfl */ + { + int tmp; + tmp = (int) var43.x2f[0]; + if (tmp == 0x80000000 && !(var43.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var43.x2f[1]; + if (tmp == 0x80000000 && !(var43.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[1] = tmp; + } + /* 9: convssslw */ + var37.x2[0] = ORC_CLAMP_SW (var44.x2[0]); + var37.x2[1] = ORC_CLAMP_SW (var44.x2[1]); + /* 10: storel */ + ptr0[i] = var37; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_s16_ch2_sim_right (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var35; + orc_union32 var36; + orc_union32 var37; + orc_union64 var38; + orc_union64 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; + orc_union64 var43; + orc_union64 var44; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + /* 5: loadpl */ + var36.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: convswl */ + var38.x2[0] = var35.x2[0]; + var38.x2[1] = var35.x2[1]; + /* 2: convlf */ + var39.x2f[0] = var38.x2[0]; + var39.x2f[1] = var38.x2[1]; + /* 3: select0ql */ + { + orc_union64 _src; + _src.i = var39.i; + var40.i = _src.x2[0]; + } + /* 4: select1ql */ + { + orc_union64 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + } + /* 6: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var41.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var42.i = ORC_DENORMAL (_dest1.i); + } + /* 7: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var42.i; + var43.i = _dest.i; + } + /* 8: convfl */ + { + int tmp; + tmp = (int) var43.x2f[0]; + if (tmp == 0x80000000 && !(var43.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var43.x2f[1]; + if (tmp == 0x80000000 && !(var43.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[1] = tmp; + } + /* 9: convssslw */ + var37.x2[0] = ORC_CLAMP_SW (var44.x2[0]); + var37.x2[1] = ORC_CLAMP_SW (var44.x2[1]); + /* 10: storel */ + ptr0[i] = var37; + } + +} + +void +audiopanoramam_orc_process_s16_ch2_sim_right (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_sim_right); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_sim_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_sim_right); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + + orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_s16_ch2_sim_left */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_s16_ch2_sim_left (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var35; + orc_union32 var36; + orc_union32 var37; + orc_union64 var38; + orc_union64 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; + orc_union64 var43; + orc_union64 var44; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + /* 5: loadpl */ + var36.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: convswl */ + var38.x2[0] = var35.x2[0]; + var38.x2[1] = var35.x2[1]; + /* 2: convlf */ + var39.x2f[0] = var38.x2[0]; + var39.x2f[1] = var38.x2[1]; + /* 3: select0ql */ + { + orc_union64 _src; + _src.i = var39.i; + var40.i = _src.x2[0]; + } + /* 4: select1ql */ + { + orc_union64 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + } + /* 6: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var40.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var42.i = ORC_DENORMAL (_dest1.i); + } + /* 7: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var42.i; + _dest.x2[1] = var41.i; + var43.i = _dest.i; + } + /* 8: convfl */ + { + int tmp; + tmp = (int) var43.x2f[0]; + if (tmp == 0x80000000 && !(var43.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var43.x2f[1]; + if (tmp == 0x80000000 && !(var43.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[1] = tmp; + } + /* 9: convssslw */ + var37.x2[0] = ORC_CLAMP_SW (var44.x2[0]); + var37.x2[1] = ORC_CLAMP_SW (var44.x2[1]); + /* 10: storel */ + ptr0[i] = var37; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_s16_ch2_sim_left (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var35; + orc_union32 var36; + orc_union32 var37; + orc_union64 var38; + orc_union64 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; + orc_union64 var43; + orc_union64 var44; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + /* 5: loadpl */ + var36.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: convswl */ + var38.x2[0] = var35.x2[0]; + var38.x2[1] = var35.x2[1]; + /* 2: convlf */ + var39.x2f[0] = var38.x2[0]; + var39.x2f[1] = var38.x2[1]; + /* 3: select0ql */ + { + orc_union64 _src; + _src.i = var39.i; + var40.i = _src.x2[0]; + } + /* 4: select1ql */ + { + orc_union64 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + } + /* 6: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var40.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var42.i = ORC_DENORMAL (_dest1.i); + } + /* 7: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var42.i; + _dest.x2[1] = var41.i; + var43.i = _dest.i; + } + /* 8: convfl */ + { + int tmp; + tmp = (int) var43.x2f[0]; + if (tmp == 0x80000000 && !(var43.x2[0] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[0] = tmp; + } + { + int tmp; + tmp = (int) var43.x2f[1]; + if (tmp == 0x80000000 && !(var43.x2[1] & 0x80000000)) + tmp = 0x7fffffff; + var44.x2[1] = tmp; + } + /* 9: convssslw */ + var37.x2[0] = ORC_CLAMP_SW (var44.x2[0]); + var37.x2[1] = ORC_CLAMP_SW (var44.x2[1]); + /* 10: storel */ + ptr0[i] = var37; + } + +} + +void +audiopanoramam_orc_process_s16_ch2_sim_left (gint16 * ORC_RESTRICT d1, + const gint16 * ORC_RESTRICT s1, float p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 194, 32, 33, 34, 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, 0, + + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_sim_left); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_sim_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_sim_left); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + + orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_f32_ch1_sim_right */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_f32_ch1_sim_right (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_union32 var35; + orc_union32 var36; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union32 *) s1; + + /* 3: loadpl */ + var36.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 1: copyl */ + var38.i = var34.i; + /* 2: loadl */ + var35 = ptr4[i]; + /* 4: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var35.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var39.i = ORC_DENORMAL (_dest1.i); + } + /* 5: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var38.i; + _dest.x2[1] = var39.i; + var37.i = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var37; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_f32_ch1_sim_right (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_union32 var35; + orc_union32 var36; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + /* 3: loadpl */ + var36.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 1: copyl */ + var38.i = var34.i; + /* 2: loadl */ + var35 = ptr4[i]; + /* 4: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var35.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var39.i = ORC_DENORMAL (_dest1.i); + } + /* 5: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var38.i; + _dest.x2[1] = var39.i; + var37.i = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var37; + } + +} + +void +audiopanoramam_orc_process_f32_ch1_sim_right (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_sim_right); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_sim_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_sim_right); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_f32_ch1_sim_left */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_f32_ch1_sim_left (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_union32 var35; + orc_union32 var36; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union32 *) s1; + + /* 1: loadpl */ + var35.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 2: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var34.i); + _src2.i = ORC_DENORMAL (var35.i); + _dest1.f = _src1.f * _src2.f; + var38.i = ORC_DENORMAL (_dest1.i); + } + /* 3: loadl */ + var36 = ptr4[i]; + /* 4: copyl */ + var39.i = var36.i; + /* 5: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var38.i; + _dest.x2[1] = var39.i; + var37.i = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var37; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_f32_ch1_sim_left (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_union32 var35; + orc_union32 var36; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + /* 1: loadpl */ + var35.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 2: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var34.i); + _src2.i = ORC_DENORMAL (var35.i); + _dest1.f = _src1.f * _src2.f; + var38.i = ORC_DENORMAL (_dest1.i); + } + /* 3: loadl */ + var36 = ptr4[i]; + /* 4: copyl */ + var39.i = var36.i; + /* 5: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var38.i; + _dest.x2[1] = var39.i; + var37.i = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var37; + } + +} + +void +audiopanoramam_orc_process_f32_ch1_sim_left (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_sim_left); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_sim_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_sim_left); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_f32_ch2_sim_right */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_f32_ch2_sim_right (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var34; + orc_union64 var35; + orc_union32 var36; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union64 *) s1; + + /* 4: loadpl */ + var36.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var34 = ptr4[i]; + /* 1: select0ql */ + { + orc_union64 _src; + _src.i = var34.i; + var38.i = _src.x2[0]; + } + /* 2: loadq */ + var35 = ptr4[i]; + /* 3: select1ql */ + { + orc_union64 _src; + _src.i = var35.i; + var39.i = _src.x2[1]; + } + /* 5: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var39.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var40.i = ORC_DENORMAL (_dest1.i); + } + /* 6: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var38.i; + _dest.x2[1] = var40.i; + var37.i = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var37; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_f32_ch2_sim_right (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var34; + orc_union64 var35; + orc_union32 var36; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + /* 4: loadpl */ + var36.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var34 = ptr4[i]; + /* 1: select0ql */ + { + orc_union64 _src; + _src.i = var34.i; + var38.i = _src.x2[0]; + } + /* 2: loadq */ + var35 = ptr4[i]; + /* 3: select1ql */ + { + orc_union64 _src; + _src.i = var35.i; + var39.i = _src.x2[1]; + } + /* 5: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var39.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var40.i = ORC_DENORMAL (_dest1.i); + } + /* 6: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var38.i; + _dest.x2[1] = var40.i; + var37.i = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var37; + } + +} + +void +audiopanoramam_orc_process_f32_ch2_sim_right (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_sim_right); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_sim_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_sim_right); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif + + +/* audiopanoramam_orc_process_f32_ch2_sim_left */ +#ifdef DISABLE_ORC +void +audiopanoramam_orc_process_f32_ch2_sim_left (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var34; + orc_union64 var35; + orc_union32 var36; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union64 *) s1; + + /* 4: loadpl */ + var36.f = p1; + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var34 = ptr4[i]; + /* 1: select0ql */ + { + orc_union64 _src; + _src.i = var34.i; + var38.i = _src.x2[0]; + } + /* 2: loadq */ + var35 = ptr4[i]; + /* 3: select1ql */ + { + orc_union64 _src; + _src.i = var35.i; + var39.i = _src.x2[1]; + } + /* 5: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var38.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var40.i = ORC_DENORMAL (_dest1.i); + } + /* 6: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var39.i; + var37.i = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var37; + } + +} + +#else +static void +_backup_audiopanoramam_orc_process_f32_ch2_sim_left (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var34; + orc_union64 var35; + orc_union32 var36; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + /* 4: loadpl */ + var36.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var34 = ptr4[i]; + /* 1: select0ql */ + { + orc_union64 _src; + _src.i = var34.i; + var38.i = _src.x2[0]; + } + /* 2: loadq */ + var35 = ptr4[i]; + /* 3: select1ql */ + { + orc_union64 _src; + _src.i = var35.i; + var39.i = _src.x2[1]; + } + /* 5: mulf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var38.i); + _src2.i = ORC_DENORMAL (var36.i); + _dest1.f = _src1.f * _src2.f; + var40.i = ORC_DENORMAL (_dest1.i); + } + /* 6: mergelq */ + { + orc_union64 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var39.i; + var37.i = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var37; + } + +} + +void +audiopanoramam_orc_process_f32_ch2_sim_left (gfloat * ORC_RESTRICT d1, + const gfloat * ORC_RESTRICT s1, float p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_sim_left); +#else + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_sim_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_sim_left); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + { + orc_union32 tmp; + tmp.f = p1; + ex->params[ORC_VAR_P1] = tmp.i; + } + + func = c->exec; + func (ex); +} +#endif diff --git a/gst/audiofx/audiopanoramaorc-dist.h b/gst/audiofx/audiopanoramaorc-dist.h new file mode 100644 index 0000000000000000000000000000000000000000..7611fba77401d13b6a6f9fbfbb5719ae0694e0c7 --- /dev/null +++ b/gst/audiofx/audiopanoramaorc-dist.h @@ -0,0 +1,107 @@ + +/* autogenerated from audiopanoramaorc.orc */ + +#ifndef _AUDIOPANORAMAORC_H_ +#define _AUDIOPANORAMAORC_H_ + +#include <glib.h> + +#ifdef __cplusplus +extern "C" { +#endif + + + +#ifndef _ORC_INTEGER_TYPEDEFS_ +#define _ORC_INTEGER_TYPEDEFS_ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include <stdint.h> +typedef int8_t orc_int8; +typedef int16_t orc_int16; +typedef int32_t orc_int32; +typedef int64_t orc_int64; +typedef uint8_t orc_uint8; +typedef uint16_t orc_uint16; +typedef uint32_t orc_uint32; +typedef uint64_t orc_uint64; +#define ORC_UINT64_C(x) UINT64_C(x) +#elif defined(_MSC_VER) +typedef signed __int8 orc_int8; +typedef signed __int16 orc_int16; +typedef signed __int32 orc_int32; +typedef signed __int64 orc_int64; +typedef unsigned __int8 orc_uint8; +typedef unsigned __int16 orc_uint16; +typedef unsigned __int32 orc_uint32; +typedef unsigned __int64 orc_uint64; +#define ORC_UINT64_C(x) (x##Ui64) +#define inline __inline +#else +#include <limits.h> +typedef signed char orc_int8; +typedef short orc_int16; +typedef int orc_int32; +typedef unsigned char orc_uint8; +typedef unsigned short orc_uint16; +typedef unsigned int orc_uint32; +#if INT_MAX == LONG_MAX +typedef long long orc_int64; +typedef unsigned long long orc_uint64; +#define ORC_UINT64_C(x) (x##ULL) +#else +typedef long orc_int64; +typedef unsigned long orc_uint64; +#define ORC_UINT64_C(x) (x##UL) +#endif +#endif +typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; +typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +#endif +#ifndef ORC_RESTRICT +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#else +#define ORC_RESTRICT +#endif +#endif + +#ifndef ORC_INTERNAL +#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +#define ORC_INTERNAL __hidden +#elif defined (__GNUC__) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#else +#define ORC_INTERNAL +#endif +#endif + +void audiopanoramam_orc_process_s16_ch1_none (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int n); +void audiopanoramam_orc_process_f32_ch1_none (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, int n); +void audiopanoramam_orc_process_s16_ch2_none (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int n); +void audiopanoramam_orc_process_f32_ch2_none (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, int n); +void audiopanoramam_orc_process_s16_ch1_psy (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_f32_ch1_psy (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_s16_ch2_psy_right (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_s16_ch2_psy_left (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_f32_ch2_psy_right (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_f32_ch2_psy_left (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, float p2, int n); +void audiopanoramam_orc_process_s16_ch1_sim_right (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_s16_ch1_sim_left (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_s16_ch2_sim_right (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_s16_ch2_sim_left (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_f32_ch1_sim_right (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_f32_ch1_sim_left (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_f32_ch2_sim_right (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, int n); +void audiopanoramam_orc_process_f32_ch2_sim_left (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, int n); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/gst/audiofx/audiopanoramaorc.orc b/gst/audiofx/audiopanoramaorc.orc new file mode 100644 index 0000000000000000000000000000000000000000..46140111e714d411e7146ad86e237a7393977761 --- /dev/null +++ b/gst/audiofx/audiopanoramaorc.orc @@ -0,0 +1,258 @@ +# pass through functions + +.function audiopanoramam_orc_process_s16_ch1_none +.source 2 s1 gint16 +.dest 4 d1 gint16 + +mergewl d1 s1 s1 + + +.function audiopanoramam_orc_process_f32_ch1_none +.source 4 s1 gfloat +.dest 8 d1 gfloat + +mergelq d1 s1 s1 + + +.function audiopanoramam_orc_process_s16_ch2_none +.source 4 s1 gint16 +.dest 4 d1 gint16 + +x2 copyw d1 s1 + + +.function audiopanoramam_orc_process_f32_ch2_none +.source 8 s1 gfloat +.dest 8 d1 gfloat + +x2 copyl d1 s1 + + +# psychoacoustic processing function + +.function audiopanoramam_orc_process_s16_ch1_psy +.source 2 s1 gint16 +.dest 4 d1 gint16 +.floatparam 4 lpan +.floatparam 4 rpan +.temp 8 t1 +.temp 4 left +.temp 4 right + +convswl left s1 +convlf left left +mulf right left rpan +mulf left left lpan +mergelq t1 left right +x2 convfl t1 t1 +x2 convssslw d1 t1 + + +.function audiopanoramam_orc_process_f32_ch1_psy +.source 4 s1 gfloat +.dest 8 d1 gfloat +.floatparam 4 lpan +.floatparam 4 rpan +.temp 4 left +.temp 4 right + +mulf right s1 rpan +mulf left s1 lpan +mergelq d1 left right + + +.function audiopanoramam_orc_process_s16_ch2_psy_right +.source 4 s1 gint16 +.dest 4 d1 gint16 +.floatparam 4 llpan +.floatparam 4 rlpan +.temp 8 t1 +.temp 4 left +.temp 4 right +.temp 4 right1 + +x2 convswl t1 s1 +x2 convlf t1 t1 +select0ql left t1 +select1ql right t1 +mulf right1 left rlpan +mulf left left llpan +addf right right1 right +mergelq t1 left right +x2 convfl t1 t1 +x2 convssslw d1 t1 + + +.function audiopanoramam_orc_process_s16_ch2_psy_left +.source 4 s1 gint16 +.dest 4 d1 gint16 +.floatparam 4 lrpan +.floatparam 4 rrpan +.temp 8 t1 +.temp 4 left +.temp 4 left1 +.temp 4 right + +x2 convswl t1 s1 +x2 convlf t1 t1 +select0ql left t1 +select1ql right t1 +mulf left1 right lrpan +mulf right right rrpan +addf left left1 left +mergelq t1 left right +x2 convfl t1 t1 +x2 convssslw d1 t1 + + +.function audiopanoramam_orc_process_f32_ch2_psy_right +.source 8 s1 gfloat +.dest 8 d1 gfloat +.floatparam 4 llpan +.floatparam 4 rlpan +.temp 4 left +.temp 4 right +.temp 4 right1 + +select0ql left s1 +select1ql right s1 +mulf right1 left rlpan +mulf left left llpan +addf right right1 right +mergelq d1 left right + + +.function audiopanoramam_orc_process_f32_ch2_psy_left +.source 8 s1 gfloat +.dest 8 d1 gfloat +.floatparam 4 lrpan +.floatparam 4 rrpan +.temp 4 left +.temp 4 left1 +.temp 4 right + +select0ql left s1 +select1ql right s1 +mulf left1 right lrpan +mulf right right rrpan +addf left left1 left +mergelq d1 left right + +# simple processing functions + +.function audiopanoramam_orc_process_s16_ch1_sim_right +.source 2 s1 gint16 +.dest 4 d1 gint16 +.floatparam 4 rpan +.temp 8 t1 +.temp 4 left +.temp 4 right + +convswl left s1 +convlf left left +mulf right left rpan +mergelq t1 left right +x2 convfl t1 t1 +x2 convssslw d1 t1 + + +.function audiopanoramam_orc_process_s16_ch1_sim_left +.source 2 s1 gint16 +.dest 4 d1 gint16 +.floatparam 4 lpan +.temp 8 t1 +.temp 4 left +.temp 4 right + +convswl right s1 +convlf right right +mulf left right lpan +mergelq t1 left right +x2 convfl t1 t1 +x2 convssslw d1 t1 + + +.function audiopanoramam_orc_process_s16_ch2_sim_right +.source 4 s1 gint16 +.dest 4 d1 gint16 +.floatparam 4 rpan +.temp 8 t1 +.temp 4 left +.temp 4 right + +x2 convswl t1 s1 +x2 convlf t1 t1 +select0ql left t1 +select1ql right t1 +mulf right right rpan +mergelq t1 left right +x2 convfl t1 t1 +x2 convssslw d1 t1 + + +.function audiopanoramam_orc_process_s16_ch2_sim_left +.source 4 s1 gint16 +.dest 4 d1 gint16 +.floatparam 4 lpan +.temp 8 t1 +.temp 4 left +.temp 4 right + +x2 convswl t1 s1 +x2 convlf t1 t1 +select0ql left t1 +select1ql right t1 +mulf left left lpan +mergelq t1 left right +x2 convfl t1 t1 +x2 convssslw d1 t1 + + +.function audiopanoramam_orc_process_f32_ch1_sim_right +.source 4 s1 gfloat +.dest 8 d1 gfloat +.floatparam 4 rpan +.temp 4 left +.temp 4 right + +copyl left s1 +mulf right s1 rpan +mergelq d1 left right + + +.function audiopanoramam_orc_process_f32_ch1_sim_left +.source 4 s1 gfloat +.dest 8 d1 gfloat +.floatparam 4 lpan +.temp 4 left +.temp 4 right + +mulf left s1 lpan +copyl right s1 +mergelq d1 left right + + +.function audiopanoramam_orc_process_f32_ch2_sim_right +.source 8 s1 gfloat +.dest 8 d1 gfloat +.floatparam 4 rpan +.temp 4 left +.temp 4 right + +select0ql left s1 +select1ql right s1 +mulf right right rpan +mergelq d1 left right + +.function audiopanoramam_orc_process_f32_ch2_sim_left +.source 8 s1 gfloat +.dest 8 d1 gfloat +.floatparam 4 lpan +.temp 4 left +.temp 4 right + +select0ql left s1 +select1ql right s1 +mulf left left lpan +mergelq d1 left right + diff --git a/gst/audiofx/audiowsincband.c b/gst/audiofx/audiowsincband.c index 56488fbfb4482dc91e420b8b09278bd99784ff86..3cbad5d31b0efb06f2c4cb8169827ef60b4990a2 100644 --- a/gst/audiofx/audiowsincband.c +++ b/gst/audiofx/audiowsincband.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * * this windowed sinc filter is taken from the freely downloadable DSP book, diff --git a/gst/audiofx/audiowsincband.h b/gst/audiofx/audiowsincband.h index 8933fe9eb88bce8e974ff35ef9dc33685a95b603..27c2bd479f63949af8a9fab647c98170e9c09f1b 100644 --- a/gst/audiofx/audiowsincband.h +++ b/gst/audiofx/audiowsincband.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * * this windowed sinc filter is taken from the freely downloadable DSP book, diff --git a/gst/audiofx/audiowsinclimit.c b/gst/audiofx/audiowsinclimit.c index 34a6c1671a434cc50be789f746e9805de4a4188a..38eb00717c823b5ea183cf363a262faa56877881 100644 --- a/gst/audiofx/audiowsinclimit.c +++ b/gst/audiofx/audiowsinclimit.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * * this windowed sinc filter is taken from the freely downloadable DSP book, @@ -45,9 +45,9 @@ * <refsect2> * <title>Example launch line</title> * |[ - * gst-launch-1.0 audiotestsrc freq=1500 ! audioconvert ! audiowsinclimit mode=low-pass frequency=1000 length=501 ! audioconvert ! alsasink - * gst-launch-1.0 filesrc location="melo1.ogg" ! oggdemux ! vorbisdec ! audioconvert ! audiowsinclimit mode=high-pass frequency=15000 length=501 ! audioconvert ! alsasink - * gst-launch-1.0 audiotestsrc wave=white-noise ! audioconvert ! audiowsinclimit mode=low-pass frequency=1000 length=10001 window=blackman ! audioconvert ! alsasink + * gst-launch-1.0 audiotestsrc freq=1500 ! audioconvert ! audiowsinclimit mode=low-pass cutoff=1000 length=501 ! audioconvert ! alsasink + * gst-launch-1.0 filesrc location="melo1.ogg" ! oggdemux ! vorbisdec ! audioconvert ! audiowsinclimit mode=high-pass cutoff=15000 length=501 ! audioconvert ! alsasink + * gst-launch-1.0 audiotestsrc wave=white-noise ! audioconvert ! audiowsinclimit mode=low-pass cutoff=1000 length=10001 window=blackman ! audioconvert ! alsasink * ]| * </refsect2> */ diff --git a/gst/audiofx/audiowsinclimit.h b/gst/audiofx/audiowsinclimit.h index 3afdf13a3fde555cfc4f3862f630331358342a9c..e7fa915a0aff137691027eb0900d4c0c2d5d4831 100644 --- a/gst/audiofx/audiowsinclimit.h +++ b/gst/audiofx/audiowsinclimit.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * * this windowed sinc filter is taken from the freely downloadable DSP book, diff --git a/gst/audiofx/gstscaletempo.c b/gst/audiofx/gstscaletempo.c new file mode 100644 index 0000000000000000000000000000000000000000..87118f0c28c61b2a184ff824b4e715902ad5cbf9 --- /dev/null +++ b/gst/audiofx/gstscaletempo.c @@ -0,0 +1,747 @@ +/* + * GStreamer + * Copyright (C) 2008 Rov Juvano <rovjuvano@users.sourceforge.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/** + * SECTION:element-scaletempo + * + * Scale tempo while maintaining pitch + * (WSOLA-like technique with cross correlation) + * Inspired by SoundTouch library by Olli Parviainen + * + * Use Sceletempo to apply playback rates without the chipmunk effect. + * + * <refsect2> + * <title>Example pipelines</title> + * <para> + * |[ + * filesrc location=media.ext ! decodebin name=d \ + * d. ! queue ! audioconvert ! audioresample ! scaletempo ! audioconvert ! audioresample ! autoaudiosink \ + * d. ! queue ! videoconvert ! autovideosink + * ]| + * OR + * |[ + * playbin uri=... audio_sink="scaletempo ! audioconvert ! audioresample ! autoaudiosink" + * ]| + * When an application sends a seek event with rate != 1.0, Scaletempo applies + * the rate change by scaling the tempo without scaling the pitch. + * + * Scaletempo works by producing audio in constant sized chunks + * (#GstScaletempo:stride) but consuming chunks proportional to the playback + * rate. + * + * Scaletempo then smooths the output by blending the end of one stride with + * the next (#GstScaletempo:overlap). + * + * Scaletempo smooths the overlap further by searching within the input buffer + * for the best overlap position. Scaletempo uses a statistical cross + * correlation (roughly a dot-product). Scaletempo consumes most of its CPU + * cycles here. One can use the #GstScaletempo:search propery to tune how far + * the algoritm looks. + * </para> + * </refsect2> + */ + +/* + * Note: frame = audio key unit (i.e. one sample for each channel) + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <gst/gst.h> +#include <gst/base/gstbasetransform.h> +#include <gst/audio/audio.h> +#include <string.h> /* for memset */ + +#include "gstscaletempo.h" + +GST_DEBUG_CATEGORY_STATIC (gst_scaletempo_debug); +#define GST_CAT_DEFAULT gst_scaletempo_debug + +/* Filter signals and args */ +enum +{ + LAST_SIGNAL +}; + +enum +{ + PROP_0, + PROP_RATE, + PROP_STRIDE, + PROP_OVERLAP, + PROP_SEARCH, +}; + +#define SUPPORTED_CAPS \ +GST_STATIC_CAPS ( \ + GST_AUDIO_CAPS_MAKE (GST_AUDIO_NE (F32)) "; " \ + GST_AUDIO_CAPS_MAKE (GST_AUDIO_NE (S16)) \ +) + +static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + SUPPORTED_CAPS); + +static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + SUPPORTED_CAPS); + +#define DEBUG_INIT(bla) GST_DEBUG_CATEGORY_INIT (gst_scaletempo_debug, "scaletempo", 0, "scaletempo element"); + +#define gst_scaletempo_parent_class parent_class +G_DEFINE_TYPE_WITH_CODE (GstScaletempo, gst_scaletempo, + GST_TYPE_BASE_TRANSFORM, DEBUG_INIT (0)); + +static guint +best_overlap_offset_float (GstScaletempo * st) +{ + gfloat *pw, *po, *ppc, *search_start; + gfloat best_corr = G_MININT; + guint best_off = 0; + gint i, off; + + pw = st->table_window; + po = st->buf_overlap; + po += st->samples_per_frame; + ppc = st->buf_pre_corr; + for (i = st->samples_per_frame; i < st->samples_overlap; i++) { + *ppc++ = *pw++ * *po++; + } + + search_start = (gfloat *) st->buf_queue + st->samples_per_frame; + for (off = 0; off < st->frames_search; off++) { + gfloat corr = 0; + gfloat *ps = search_start; + ppc = st->buf_pre_corr; + for (i = st->samples_per_frame; i < st->samples_overlap; i++) { + corr += *ppc++ * *ps++; + } + if (corr > best_corr) { + best_corr = corr; + best_off = off; + } + search_start += st->samples_per_frame; + } + + return best_off * st->bytes_per_frame; +} + +/* buffer padding for loop optimization: sizeof(gint32) * (loop_size - 1) */ +#define UNROLL_PADDING (4*3) +static guint +best_overlap_offset_s16 (GstScaletempo * st) +{ + gint32 *pw, *ppc; + gint16 *po, *search_start; + gint64 best_corr = G_MININT64; + guint best_off = 0; + guint off; + glong i; + + pw = st->table_window; + po = st->buf_overlap; + po += st->samples_per_frame; + ppc = st->buf_pre_corr; + for (i = st->samples_per_frame; i < st->samples_overlap; i++) { + *ppc++ = (*pw++ * *po++) >> 15; + } + + search_start = (gint16 *) st->buf_queue + st->samples_per_frame; + for (off = 0; off < st->frames_search; off++) { + gint64 corr = 0; + gint16 *ps = search_start; + ppc = st->buf_pre_corr; + ppc += st->samples_overlap - st->samples_per_frame; + ps += st->samples_overlap - st->samples_per_frame; + i = -((glong) st->samples_overlap - (glong) st->samples_per_frame); + do { + corr += ppc[i + 0] * ps[i + 0]; + corr += ppc[i + 1] * ps[i + 1]; + corr += ppc[i + 2] * ps[i + 2]; + corr += ppc[i + 3] * ps[i + 3]; + i += 4; + } while (i < 0); + if (corr > best_corr) { + best_corr = corr; + best_off = off; + } + search_start += st->samples_per_frame; + } + + return best_off * st->bytes_per_frame; +} + +static void +output_overlap_float (GstScaletempo * st, gpointer buf_out, guint bytes_off) +{ + gfloat *pout = buf_out; + gfloat *pb = st->table_blend; + gfloat *po = st->buf_overlap; + gfloat *pin = (gfloat *) (st->buf_queue + bytes_off); + gint i; + for (i = 0; i < st->samples_overlap; i++) { + *pout++ = *po - *pb++ * (*po - *pin++); + po++; + } +} + +static void +output_overlap_s16 (GstScaletempo * st, gpointer buf_out, guint bytes_off) +{ + gint16 *pout = buf_out; + gint32 *pb = st->table_blend; + gint16 *po = st->buf_overlap; + gint16 *pin = (gint16 *) (st->buf_queue + bytes_off); + gint i; + for (i = 0; i < st->samples_overlap; i++) { + *pout++ = *po - ((*pb++ * (*po - *pin++)) >> 16); + po++; + } +} + +static guint +fill_queue (GstScaletempo * st, GstBuffer * buf_in, guint offset) +{ + guint bytes_in = gst_buffer_get_size (buf_in) - offset; + guint offset_unchanged = offset; + GstMapInfo map; + + gst_buffer_map (buf_in, &map, GST_MAP_READ); + if (st->bytes_to_slide > 0) { + if (st->bytes_to_slide < st->bytes_queued) { + guint bytes_in_move = st->bytes_queued - st->bytes_to_slide; + memmove (st->buf_queue, st->buf_queue + st->bytes_to_slide, + bytes_in_move); + st->bytes_to_slide = 0; + st->bytes_queued = bytes_in_move; + } else { + guint bytes_in_skip; + st->bytes_to_slide -= st->bytes_queued; + bytes_in_skip = MIN (st->bytes_to_slide, bytes_in); + st->bytes_queued = 0; + st->bytes_to_slide -= bytes_in_skip; + offset += bytes_in_skip; + bytes_in -= bytes_in_skip; + } + } + + if (bytes_in > 0) { + guint bytes_in_copy = + MIN (st->bytes_queue_max - st->bytes_queued, bytes_in); + memcpy (st->buf_queue + st->bytes_queued, map.data + offset, bytes_in_copy); + st->bytes_queued += bytes_in_copy; + offset += bytes_in_copy; + } + gst_buffer_unmap (buf_in, &map); + + return offset - offset_unchanged; +} + +static void +reinit_buffers (GstScaletempo * st) +{ + gint i, j; + guint frames_overlap; + guint new_size; + GstClockTime latency; + + guint frames_stride = st->ms_stride * st->sample_rate / 1000.0; + st->bytes_stride = frames_stride * st->bytes_per_frame; + + /* overlap */ + frames_overlap = frames_stride * st->percent_overlap; + if (frames_overlap < 1) { /* if no overlap */ + st->bytes_overlap = 0; + st->bytes_standing = st->bytes_stride; + st->samples_standing = st->bytes_standing / st->bytes_per_sample; + st->output_overlap = NULL; + } else { + guint prev_overlap = st->bytes_overlap; + st->bytes_overlap = frames_overlap * st->bytes_per_frame; + st->samples_overlap = frames_overlap * st->samples_per_frame; + st->bytes_standing = st->bytes_stride - st->bytes_overlap; + st->samples_standing = st->bytes_standing / st->bytes_per_sample; + st->buf_overlap = g_realloc (st->buf_overlap, st->bytes_overlap); + st->table_blend = g_realloc (st->table_blend, st->samples_overlap * 4); /* sizeof (gint32|gfloat) */ + if (st->bytes_overlap > prev_overlap) { + memset ((guint8 *) st->buf_overlap + prev_overlap, 0, + st->bytes_overlap - prev_overlap); + } + if (st->use_int) { + gint32 *pb = st->table_blend; + gint64 blend = 0; + for (i = 0; i < frames_overlap; i++) { + gint32 v = blend / frames_overlap; + for (j = 0; j < st->samples_per_frame; j++) { + *pb++ = v; + } + blend += 65535; /* 2^16 */ + } + st->output_overlap = output_overlap_s16; + } else { + gfloat *pb = st->table_blend; + gfloat t = (gfloat) frames_overlap; + for (i = 0; i < frames_overlap; i++) { + gfloat v = i / t; + for (j = 0; j < st->samples_per_frame; j++) { + *pb++ = v; + } + } + st->output_overlap = output_overlap_float; + } + } + + /* best overlap */ + st->frames_search = + (frames_overlap <= 1) ? 0 : st->ms_search * st->sample_rate / 1000.0; + if (st->frames_search < 1) { /* if no search */ + st->best_overlap_offset = NULL; + } else { + guint bytes_pre_corr = (st->samples_overlap - st->samples_per_frame) * 4; /* sizeof (gint32|gfloat) */ + st->buf_pre_corr = + g_realloc (st->buf_pre_corr, bytes_pre_corr + UNROLL_PADDING); + st->table_window = g_realloc (st->table_window, bytes_pre_corr); + if (st->use_int) { + gint64 t = frames_overlap; + gint32 n = 8589934588LL / (t * t); /* 4 * (2^31 - 1) / t^2 */ + gint32 *pw; + + memset ((guint8 *) st->buf_pre_corr + bytes_pre_corr, 0, UNROLL_PADDING); + pw = st->table_window; + for (i = 1; i < frames_overlap; i++) { + gint32 v = (i * (t - i) * n) >> 15; + for (j = 0; j < st->samples_per_frame; j++) { + *pw++ = v; + } + } + st->best_overlap_offset = best_overlap_offset_s16; + } else { + gfloat *pw = st->table_window; + for (i = 1; i < frames_overlap; i++) { + gfloat v = i * (frames_overlap - i); + for (j = 0; j < st->samples_per_frame; j++) { + *pw++ = v; + } + } + st->best_overlap_offset = best_overlap_offset_float; + } + } + + new_size = + (st->frames_search + frames_stride + + frames_overlap) * st->bytes_per_frame; + if (st->bytes_queued > new_size) { + if (st->bytes_to_slide > st->bytes_queued) { + st->bytes_to_slide -= st->bytes_queued; + st->bytes_queued = 0; + } else { + guint new_queued = MIN (st->bytes_queued - st->bytes_to_slide, new_size); + memmove (st->buf_queue, + st->buf_queue + st->bytes_queued - new_queued, new_queued); + st->bytes_to_slide = 0; + st->bytes_queued = new_queued; + } + } + + st->bytes_queue_max = new_size; + st->buf_queue = g_realloc (st->buf_queue, st->bytes_queue_max); + + latency = + gst_util_uint64_scale (st->bytes_queue_max, GST_SECOND, + st->bytes_per_frame * st->sample_rate); + if (st->latency != latency) { + st->latency = latency; + gst_element_post_message (GST_ELEMENT (st), + gst_message_new_latency (GST_OBJECT (st))); + } + + st->bytes_stride_scaled = st->bytes_stride * st->scale; + st->frames_stride_scaled = st->bytes_stride_scaled / st->bytes_per_frame; + + GST_DEBUG + ("%.3f scale, %.3f stride_in, %i stride_out, %i standing, %i overlap, %i search, %i queue, %s mode", + st->scale, st->frames_stride_scaled, + (gint) (st->bytes_stride / st->bytes_per_frame), + (gint) (st->bytes_standing / st->bytes_per_frame), + (gint) (st->bytes_overlap / st->bytes_per_frame), st->frames_search, + (gint) (st->bytes_queue_max / st->bytes_per_frame), + (st->use_int ? "s16" : "float")); + + st->reinit_buffers = FALSE; +} + + +/* GstBaseTransform vmethod implementations */ +static GstFlowReturn +gst_scaletempo_transform (GstBaseTransform * trans, + GstBuffer * inbuf, GstBuffer * outbuf) +{ + GstScaletempo *st = GST_SCALETEMPO (trans); + gint8 *pout; + guint offset_in, bytes_out; + GstMapInfo omap; + GstClockTime timestamp; + + gst_buffer_map (outbuf, &omap, GST_MAP_WRITE); + pout = (gint8 *) omap.data; + offset_in = fill_queue (st, inbuf, 0); + bytes_out = 0; + while (st->bytes_queued >= st->bytes_queue_max) { + guint bytes_off = 0; + gdouble frames_to_slide; + guint frames_to_stride_whole; + + /* output stride */ + if (st->output_overlap) { + if (st->best_overlap_offset) { + bytes_off = st->best_overlap_offset (st); + } + st->output_overlap (st, pout, bytes_off); + } + memcpy (pout + st->bytes_overlap, + st->buf_queue + bytes_off + st->bytes_overlap, st->bytes_standing); + pout += st->bytes_stride; + bytes_out += st->bytes_stride; + + /* input stride */ + memcpy (st->buf_overlap, + st->buf_queue + bytes_off + st->bytes_stride, st->bytes_overlap); + frames_to_slide = st->frames_stride_scaled + st->frames_stride_error; + frames_to_stride_whole = (gint) frames_to_slide; + st->bytes_to_slide = frames_to_stride_whole * st->bytes_per_frame; + st->frames_stride_error = frames_to_slide - frames_to_stride_whole; + + offset_in += fill_queue (st, inbuf, offset_in); + } + + gst_buffer_unmap (outbuf, &omap); + + timestamp = GST_BUFFER_TIMESTAMP (inbuf) - st->segment_start; + if (timestamp < st->latency) + timestamp = 0; + else + timestamp -= st->latency; + GST_BUFFER_TIMESTAMP (outbuf) = timestamp / st->scale + st->segment_start; + GST_BUFFER_DURATION (outbuf) = + gst_util_uint64_scale (bytes_out, GST_SECOND, + st->bytes_per_frame * st->sample_rate); + gst_buffer_set_size (outbuf, bytes_out); + + return GST_FLOW_OK; +} + +static gboolean +gst_scaletempo_transform_size (GstBaseTransform * trans, + GstPadDirection direction, + GstCaps * caps, gsize size, GstCaps * othercaps, gsize * othersize) +{ + if (direction == GST_PAD_SINK) { + GstScaletempo *scaletempo = GST_SCALETEMPO (trans); + gint bytes_to_out; + + if (scaletempo->reinit_buffers) + reinit_buffers (scaletempo); + + bytes_to_out = size + scaletempo->bytes_queued - scaletempo->bytes_to_slide; + if (bytes_to_out < (gint) scaletempo->bytes_queue_max) { + *othersize = 0; + } else { + /* while (total_buffered - stride_length * n >= queue_max) n++ */ + *othersize = scaletempo->bytes_stride * ((guint) ( + (bytes_to_out - scaletempo->bytes_queue_max + + /* rounding protection */ scaletempo->bytes_per_frame) + / scaletempo->bytes_stride_scaled) + 1); + } + + return TRUE; + } + return FALSE; +} + +static gboolean +gst_scaletempo_sink_event (GstBaseTransform * trans, GstEvent * event) +{ + if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) { + GstScaletempo *scaletempo = GST_SCALETEMPO (trans); + GstSegment segment; + + gst_event_copy_segment (event, &segment); + + if (scaletempo->scale != segment.rate) { + if (ABS (segment.rate - 1.0) < 1e-10) { + scaletempo->scale = 1.0; + gst_base_transform_set_passthrough (GST_BASE_TRANSFORM (scaletempo), + TRUE); + } else { + gst_base_transform_set_passthrough (GST_BASE_TRANSFORM (scaletempo), + FALSE); + scaletempo->scale = segment.rate; + scaletempo->bytes_stride_scaled = + scaletempo->bytes_stride * scaletempo->scale; + scaletempo->frames_stride_scaled = + scaletempo->bytes_stride_scaled / scaletempo->bytes_per_frame; + GST_DEBUG ("%.3f scale, %.3f stride_in, %i stride_out", + scaletempo->scale, scaletempo->frames_stride_scaled, + (gint) (scaletempo->bytes_stride / scaletempo->bytes_per_frame)); + + scaletempo->bytes_to_slide = 0; + } + } + + if (scaletempo->scale != 1.0) { + scaletempo->segment_start = segment.start; + segment.applied_rate = scaletempo->scale; + segment.rate = 1.0; + gst_event_unref (event); + + if (segment.stop != -1) { + segment.stop = (segment.stop - segment.start) / segment.applied_rate + + segment.start; + } + + event = gst_event_new_segment (&segment); + gst_pad_push_event (GST_BASE_TRANSFORM_SRC_PAD (trans), event); + return TRUE; + } + } + return GST_BASE_TRANSFORM_CLASS (parent_class)->sink_event (trans, event); +} + +static gboolean +gst_scaletempo_set_caps (GstBaseTransform * trans, + GstCaps * incaps, GstCaps * outcaps) +{ + GstScaletempo *scaletempo = GST_SCALETEMPO (trans); + + gint width, bps, nch, rate; + gboolean use_int; + GstAudioInfo info; + + if (!gst_audio_info_from_caps (&info, incaps)) + return FALSE; + + nch = GST_AUDIO_INFO_CHANNELS (&info); + rate = GST_AUDIO_INFO_RATE (&info); + width = GST_AUDIO_INFO_WIDTH (&info); + use_int = GST_AUDIO_INFO_IS_INTEGER (&info); + + bps = width / 8; + + GST_DEBUG ("caps: %" GST_PTR_FORMAT ", %d bps", incaps, bps); + + if (rate != scaletempo->sample_rate + || nch != scaletempo->samples_per_frame + || bps != scaletempo->bytes_per_sample + || use_int != scaletempo->use_int) { + scaletempo->sample_rate = rate; + scaletempo->samples_per_frame = nch; + scaletempo->bytes_per_sample = bps; + scaletempo->bytes_per_frame = nch * bps; + scaletempo->use_int = use_int; + scaletempo->reinit_buffers = TRUE; + } + + return TRUE; +} + +static gboolean +gst_scaletempo_query (GstBaseTransform * trans, GstPadDirection direction, + GstQuery * query) +{ + GstScaletempo *scaletempo = GST_SCALETEMPO (trans); + + if (direction == GST_PAD_SRC) { + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_LATENCY:{ + GstPad *peer; + gboolean res; + + if ((peer = gst_pad_get_peer (GST_BASE_TRANSFORM_SINK_PAD (trans)))) { + if ((res = gst_pad_query (peer, query))) { + GstClockTime min, max; + gboolean live; + + gst_query_parse_latency (query, &live, &min, &max); + + GST_DEBUG_OBJECT (scaletempo, "Peer latency: min %" + GST_TIME_FORMAT " max %" GST_TIME_FORMAT, + GST_TIME_ARGS (min), GST_TIME_ARGS (max)); + + /* add our own latency */ + GST_DEBUG_OBJECT (scaletempo, "Our latency: %" GST_TIME_FORMAT, + GST_TIME_ARGS (scaletempo->latency)); + min += scaletempo->latency; + if (max != GST_CLOCK_TIME_NONE) + max += scaletempo->latency; + + GST_DEBUG_OBJECT (scaletempo, "Calculated total latency : min %" + GST_TIME_FORMAT " max %" GST_TIME_FORMAT, + GST_TIME_ARGS (min), GST_TIME_ARGS (max)); + gst_query_set_latency (query, live, min, max); + } + gst_object_unref (peer); + } + + return TRUE; + break; + } + default:{ + return GST_BASE_TRANSFORM_CLASS (parent_class)->query (trans, direction, + query); + break; + } + } + } else { + return GST_BASE_TRANSFORM_CLASS (parent_class)->query (trans, direction, + query); + } +} + +/* GObject vmethod implementations */ +static void +gst_scaletempo_get_property (GObject * object, + guint prop_id, GValue * value, GParamSpec * pspec) +{ + GstScaletempo *scaletempo = GST_SCALETEMPO (object); + + switch (prop_id) { + case PROP_RATE: + g_value_set_double (value, scaletempo->scale); + break; + case PROP_STRIDE: + g_value_set_uint (value, scaletempo->ms_stride); + break; + case PROP_OVERLAP: + g_value_set_double (value, scaletempo->percent_overlap); + break; + case PROP_SEARCH: + g_value_set_uint (value, scaletempo->ms_search); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_scaletempo_set_property (GObject * object, + guint prop_id, const GValue * value, GParamSpec * pspec) +{ + GstScaletempo *scaletempo = GST_SCALETEMPO (object); + + switch (prop_id) { + case PROP_STRIDE:{ + guint new_value = g_value_get_uint (value); + if (scaletempo->ms_stride != new_value) { + scaletempo->ms_stride = new_value; + scaletempo->reinit_buffers = TRUE; + } + break; + } + case PROP_OVERLAP:{ + gdouble new_value = g_value_get_double (value); + if (scaletempo->percent_overlap != new_value) { + scaletempo->percent_overlap = new_value; + scaletempo->reinit_buffers = TRUE; + } + break; + } + case PROP_SEARCH:{ + guint new_value = g_value_get_uint (value); + if (scaletempo->ms_search != new_value) { + scaletempo->ms_search = new_value; + scaletempo->reinit_buffers = TRUE; + } + break; + } + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_scaletempo_class_init (GstScaletempoClass * klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass); + GstBaseTransformClass *basetransform_class = GST_BASE_TRANSFORM_CLASS (klass); + + gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_scaletempo_get_property); + gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_scaletempo_set_property); + + g_object_class_install_property (gobject_class, PROP_RATE, + g_param_spec_double ("rate", "Playback Rate", "Current playback rate", + G_MININT, G_MAXINT, 1.0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_STRIDE, + g_param_spec_uint ("stride", "Stride Length", + "Length in milliseconds to output each stride", 1, 5000, 30, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_OVERLAP, + g_param_spec_double ("overlap", "Overlap Length", + "Percentage of stride to overlap", 0, 1, .2, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_SEARCH, + g_param_spec_uint ("search", "Search Length", + "Length in milliseconds to search for best overlap position", 0, 500, + 14, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&src_template)); + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&sink_template)); + gst_element_class_set_static_metadata (gstelement_class, "Scaletempo", + "Filter/Effect/Rate", + "Sync audio tempo with playback rate", + "Rov Juvano <rovjuvano@users.sourceforge.net>"); + + basetransform_class->sink_event = + GST_DEBUG_FUNCPTR (gst_scaletempo_sink_event); + basetransform_class->set_caps = GST_DEBUG_FUNCPTR (gst_scaletempo_set_caps); + basetransform_class->transform_size = + GST_DEBUG_FUNCPTR (gst_scaletempo_transform_size); + basetransform_class->transform = GST_DEBUG_FUNCPTR (gst_scaletempo_transform); + basetransform_class->query = GST_DEBUG_FUNCPTR (gst_scaletempo_query); +} + +static void +gst_scaletempo_init (GstScaletempo * scaletempo) +{ + /* defaults */ + scaletempo->ms_stride = 30; + scaletempo->percent_overlap = .2; + scaletempo->ms_search = 14; + + /* uninitialized */ + scaletempo->scale = 0; + scaletempo->sample_rate = 0; + scaletempo->frames_stride_error = 0; + scaletempo->bytes_stride = 0; + scaletempo->bytes_queued = 0; + scaletempo->bytes_to_slide = 0; + scaletempo->segment_start = 0; +} diff --git a/gst/audiofx/gstscaletempo.h b/gst/audiofx/gstscaletempo.h new file mode 100644 index 0000000000000000000000000000000000000000..9be1510916f8da500abdd5c7e13cc2c64c8f4a63 --- /dev/null +++ b/gst/audiofx/gstscaletempo.h @@ -0,0 +1,98 @@ +/* + * GStreamer + * Copyright (C) 2008 Rov Juvano <rovjuvano@users.sourceforge.net> + * + * 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_SCALETEMPO_H__ +#define __GST_SCALETEMPO_H__ + +#include <gst/gst.h> +#include <gst/base/gstbasetransform.h> + +G_BEGIN_DECLS + +#define GST_TYPE_SCALETEMPO (gst_scaletempo_get_type()) +#define GST_SCALETEMPO(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_SCALETEMPO, GstScaletempo)) +#define GST_SCALETEMPO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_SCALETEMPO, GstScaletempoClass)) +#define GST_IS_SCALETEMPO(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_SCALETEMPO)) +#define GST_IS_SCALETEMPO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_SCALETEMPO)) + +typedef struct _GstScaletempo GstScaletempo; +typedef struct _GstScaletempoClass GstScaletempoClass; +typedef struct _GstScaletempoPrivate GstScaletempoPrivate; + +struct _GstScaletempo +{ + GstBaseTransform element; + + gdouble scale; + + /* parameters */ + guint ms_stride; + gdouble percent_overlap; + guint ms_search; + + /* caps */ + gboolean use_int; + guint samples_per_frame; /* AKA number of channels */ + guint bytes_per_sample; + guint bytes_per_frame; + guint sample_rate; + + /* stride */ + gdouble frames_stride_scaled; + gdouble frames_stride_error; + guint bytes_stride; + gdouble bytes_stride_scaled; + guint bytes_queue_max; + guint bytes_queued; + guint bytes_to_slide; + gint8 *buf_queue; + + /* overlap */ + guint samples_overlap; + guint samples_standing; + guint bytes_overlap; + guint bytes_standing; + gpointer buf_overlap; + gpointer table_blend; + void (*output_overlap) (GstScaletempo * scaletempo, gpointer out_buf, guint bytes_off); + + /* best overlap */ + guint frames_search; + gpointer buf_pre_corr; + gpointer table_window; + guint (*best_overlap_offset) (GstScaletempo * scaletempo); + + /* gstreamer */ + gint64 segment_start; + GstClockTime latency; + + /* threads */ + gboolean reinit_buffers; +}; + +struct _GstScaletempoClass +{ + GstBaseTransformClass parent_class; +}; + +GType gst_scaletempo_get_type (void); + +G_END_DECLS +#endif /* __GST_SCALETEMPO_H__ */ diff --git a/gst/audiofx/math_compat.h b/gst/audiofx/math_compat.h index 87296981e407e72e1c95b10474f005c453e79867..da2370c1489f08ad3c5cddb668f6d863020aefa7 100644 --- a/gst/audiofx/math_compat.h +++ b/gst/audiofx/math_compat.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __MATH_COMPAT_H__ diff --git a/gst/audioparsers/Makefile.am b/gst/audioparsers/Makefile.am index 3533314fc1a63bb06db52c181081900773510317..b2b2a4d1f72112e91c3e7bee8b1113550f7521e7 100644 --- a/gst/audioparsers/Makefile.am +++ b/gst/audioparsers/Makefile.am @@ -3,11 +3,12 @@ plugin_LTLIBRARIES = libgstaudioparsers.la libgstaudioparsers_la_SOURCES = \ gstaacparse.c gstamrparse.c gstac3parse.c \ gstdcaparse.c gstflacparse.c gstmpegaudioparse.c \ - gstwavpackparse.c plugin.c + gstsbcparse.c gstwavpackparse.c plugin.c libgstaudioparsers_la_CFLAGS = \ $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) libgstaudioparsers_la_LIBADD = \ + -lgstpbutils-$(GST_API_VERSION) \ $(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) \ -lgstaudio-$(GST_API_VERSION) \ $(GST_BASE_LIBS) $(GST_LIBS) @@ -15,4 +16,5 @@ libgstaudioparsers_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstaudioparsers_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = gstaacparse.h gstamrparse.h gstac3parse.h \ - gstdcaparse.h gstflacparse.h gstmpegaudioparse.h gstwavpackparse.h + gstdcaparse.h gstflacparse.h gstmpegaudioparse.h gstsbcparse.h \ + gstwavpackparse.h diff --git a/gst/audioparsers/Makefile.in b/gst/audioparsers/Makefile.in index baa77eaf3f2a085b16620681829dca623266a8d6..cad919b437a48b2eb287c6e767627d071c85f144 100644 --- a/gst/audioparsers/Makefile.in +++ b/gst/audioparsers/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/audioparsers -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,16 +163,30 @@ am_libgstaudioparsers_la_OBJECTS = \ libgstaudioparsers_la-gstdcaparse.lo \ libgstaudioparsers_la-gstflacparse.lo \ libgstaudioparsers_la-gstmpegaudioparse.lo \ + libgstaudioparsers_la-gstsbcparse.lo \ libgstaudioparsers_la-gstwavpackparse.lo \ libgstaudioparsers_la-plugin.lo libgstaudioparsers_la_OBJECTS = $(am_libgstaudioparsers_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstaudioparsers_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstaudioparsers_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstaudioparsers_la_CFLAGS) $(CFLAGS) \ $(libgstaudioparsers_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -159,20 +199,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstaudioparsers_la_SOURCES) DIST_SOURCES = $(libgstaudioparsers_la_SOURCES) am__can_run_installinfo = \ @@ -181,6 +217,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -348,6 +401,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -512,12 +566,13 @@ plugin_LTLIBRARIES = libgstaudioparsers.la libgstaudioparsers_la_SOURCES = \ gstaacparse.c gstamrparse.c gstac3parse.c \ gstdcaparse.c gstflacparse.c gstmpegaudioparse.c \ - gstwavpackparse.c plugin.c + gstsbcparse.c gstwavpackparse.c plugin.c libgstaudioparsers_la_CFLAGS = \ $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) libgstaudioparsers_la_LIBADD = \ + -lgstpbutils-$(GST_API_VERSION) \ $(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) \ -lgstaudio-$(GST_API_VERSION) \ $(GST_BASE_LIBS) $(GST_LIBS) @@ -525,7 +580,8 @@ libgstaudioparsers_la_LIBADD = \ libgstaudioparsers_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstaudioparsers_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = gstaacparse.h gstamrparse.h gstac3parse.h \ - gstdcaparse.h gstflacparse.h gstmpegaudioparse.h gstwavpackparse.h + gstdcaparse.h gstflacparse.h gstmpegaudioparse.h gstsbcparse.h \ + gstwavpackparse.h all: all-am @@ -561,6 +617,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -587,12 +644,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstaudioparsers.la: $(libgstaudioparsers_la_OBJECTS) $(libgstaudioparsers_la_DEPENDENCIES) $(EXTRA_libgstaudioparsers_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstaudioparsers_la_LINK) -rpath $(plugindir) $(libgstaudioparsers_la_OBJECTS) $(libgstaudioparsers_la_LIBADD) $(LIBS) @@ -608,26 +668,30 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudioparsers_la-gstdcaparse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudioparsers_la-gstflacparse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudioparsers_la-gstmpegaudioparse.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudioparsers_la-gstsbcparse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudioparsers_la-gstwavpackparse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudioparsers_la-plugin.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -674,6 +738,13 @@ libgstaudioparsers_la-gstmpegaudioparse.lo: gstmpegaudioparse.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 $(libgstaudioparsers_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudioparsers_la_CFLAGS) $(CFLAGS) -c -o libgstaudioparsers_la-gstmpegaudioparse.lo `test -f 'gstmpegaudioparse.c' || echo '$(srcdir)/'`gstmpegaudioparse.c +libgstaudioparsers_la-gstsbcparse.lo: gstsbcparse.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstaudioparsers_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudioparsers_la_CFLAGS) $(CFLAGS) -MT libgstaudioparsers_la-gstsbcparse.lo -MD -MP -MF $(DEPDIR)/libgstaudioparsers_la-gstsbcparse.Tpo -c -o libgstaudioparsers_la-gstsbcparse.lo `test -f 'gstsbcparse.c' || echo '$(srcdir)/'`gstsbcparse.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstaudioparsers_la-gstsbcparse.Tpo $(DEPDIR)/libgstaudioparsers_la-gstsbcparse.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstsbcparse.c' object='libgstaudioparsers_la-gstsbcparse.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 $(libgstaudioparsers_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudioparsers_la_CFLAGS) $(CFLAGS) -c -o libgstaudioparsers_la-gstsbcparse.lo `test -f 'gstsbcparse.c' || echo '$(srcdir)/'`gstsbcparse.c + libgstaudioparsers_la-gstwavpackparse.lo: gstwavpackparse.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstaudioparsers_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudioparsers_la_CFLAGS) $(CFLAGS) -MT libgstaudioparsers_la-gstwavpackparse.lo -MD -MP -MF $(DEPDIR)/libgstaudioparsers_la-gstwavpackparse.Tpo -c -o libgstaudioparsers_la-gstwavpackparse.lo `test -f 'gstwavpackparse.c' || echo '$(srcdir)/'`gstwavpackparse.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstaudioparsers_la-gstwavpackparse.Tpo $(DEPDIR)/libgstaudioparsers_la-gstwavpackparse.Plo @@ -694,26 +765,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -725,15 +785,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -742,6 +798,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -886,19 +957,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/gst/audioparsers/gstaacparse.c b/gst/audioparsers/gstaacparse.c index 1c64cd207570d495b1b90be3374283b59befa84d..ce7f6fe13233b7a19ae7d87401a9b09187a509bb 100644 --- a/gst/audioparsers/gstaacparse.c +++ b/gst/audioparsers/gstaacparse.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -45,6 +45,7 @@ #include <string.h> #include <gst/base/gstbitreader.h> +#include <gst/pbutils/codec-utils.h> #include "gstaacparse.h" @@ -68,6 +69,9 @@ GST_DEBUG_CATEGORY_STATIC (aacparse_debug); #define ADTS_MAX_SIZE 10 /* Should be enough */ #define LOAS_MAX_SIZE 3 /* Should be enough */ +#define ADTS_HEADERS_LENGTH 7UL /* Total byte-length of fixed and variable + headers prepended during raw to ADTS + conversion */ #define AAC_FRAME_DURATION(parse) (GST_SECOND/parse->frames_per_sec) @@ -91,22 +95,11 @@ static GstCaps *gst_aac_parse_sink_getcaps (GstBaseParse * parse, static GstFlowReturn gst_aac_parse_handle_frame (GstBaseParse * parse, GstBaseParseFrame * frame, gint * skipsize); +static GstFlowReturn gst_aac_parse_pre_push_frame (GstBaseParse * parse, + GstBaseParseFrame * frame); G_DEFINE_TYPE (GstAacParse, gst_aac_parse, GST_TYPE_BASE_PARSE); -static inline gint -gst_aac_parse_get_sample_rate_from_index (guint sr_idx) -{ - static const guint aac_sample_rates[] = { 96000, 88200, 64000, 48000, 44100, - 32000, 24000, 22050, 16000, 12000, 11025, 8000 - }; - - if (sr_idx < G_N_ELEMENTS (aac_sample_rates)) - return aac_sample_rates[sr_idx]; - GST_WARNING ("Invalid sample rate index %u", sr_idx); - return 0; -} - /** * gst_aac_parse_class_init: * @klass: #GstAacParseClass. @@ -135,6 +128,8 @@ gst_aac_parse_class_init (GstAacParseClass * klass) parse_class->set_sink_caps = GST_DEBUG_FUNCPTR (gst_aac_parse_sink_setcaps); parse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_aac_parse_sink_getcaps); parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_aac_parse_handle_frame); + parse_class->pre_push_frame = + GST_DEBUG_FUNCPTR (gst_aac_parse_pre_push_frame); } @@ -165,9 +160,11 @@ static gboolean gst_aac_parse_set_src_caps (GstAacParse * aacparse, GstCaps * sink_caps) { GstStructure *s; - GstCaps *src_caps = NULL; + GstCaps *src_caps = NULL, *allowed; gboolean res = FALSE; const gchar *stream_format; + GstBuffer *codec_data; + guint16 codec_data_data; GST_DEBUG_OBJECT (aacparse, "sink caps: %" GST_PTR_FORMAT, sink_caps); if (sink_caps) @@ -178,6 +175,7 @@ gst_aac_parse_set_src_caps (GstAacParse * aacparse, GstCaps * sink_caps) gst_caps_set_simple (src_caps, "framed", G_TYPE_BOOLEAN, TRUE, "mpegversion", G_TYPE_INT, aacparse->mpegversion, NULL); + aacparse->output_header_type = aacparse->header_type; switch (aacparse->header_type) { case DSPAAC_HEADER_NONE: stream_format = "raw"; @@ -203,11 +201,65 @@ gst_aac_parse_set_src_caps (GstAacParse * aacparse, GstCaps * sink_caps) if (stream_format) gst_structure_set (s, "stream-format", G_TYPE_STRING, stream_format, NULL); + allowed = gst_pad_get_allowed_caps (GST_BASE_PARSE (aacparse)->srcpad); + if (!gst_caps_can_intersect (src_caps, allowed)) { + GST_DEBUG_OBJECT (GST_BASE_PARSE (aacparse)->srcpad, + "Caps can not intersect"); + if (aacparse->header_type == DSPAAC_HEADER_ADTS) { + GST_DEBUG_OBJECT (GST_BASE_PARSE (aacparse)->srcpad, + "Input is ADTS, trying raw"); + gst_caps_set_simple (src_caps, "stream-format", G_TYPE_STRING, "raw", + NULL); + if (gst_caps_can_intersect (src_caps, allowed)) { + GstMapInfo map; + int idx; + + idx = + gst_codec_utils_aac_get_index_from_sample_rate + (aacparse->sample_rate); + if (idx < 0) + goto not_a_known_rate; + + GST_DEBUG_OBJECT (GST_BASE_PARSE (aacparse)->srcpad, + "Caps can intersect, we will drop the ADTS layer"); + aacparse->output_header_type = DSPAAC_HEADER_NONE; + + /* The codec_data data is according to AudioSpecificConfig, + ISO/IEC 14496-3, 1.6.2.1 */ + codec_data = gst_buffer_new_and_alloc (2); + gst_buffer_map (codec_data, &map, GST_MAP_WRITE); + codec_data_data = + (aacparse->object_type << 11) | + (idx << 7) | (aacparse->channels << 3); + GST_WRITE_UINT16_BE (map.data, codec_data_data); + gst_buffer_unmap (codec_data, &map); + gst_caps_set_simple (src_caps, "codec_data", GST_TYPE_BUFFER, + codec_data, NULL); + } + } else if (aacparse->header_type == DSPAAC_HEADER_NONE) { + GST_DEBUG_OBJECT (GST_BASE_PARSE (aacparse)->srcpad, + "Input is raw, trying ADTS"); + gst_caps_set_simple (src_caps, "stream-format", G_TYPE_STRING, "adts", + NULL); + if (gst_caps_can_intersect (src_caps, allowed)) { + GST_DEBUG_OBJECT (GST_BASE_PARSE (aacparse)->srcpad, + "Caps can intersect, we will prepend ADTS headers"); + aacparse->output_header_type = DSPAAC_HEADER_ADTS; + } + } + } + gst_caps_unref (allowed); + GST_DEBUG_OBJECT (aacparse, "setting src caps: %" GST_PTR_FORMAT, src_caps); res = gst_pad_set_caps (GST_BASE_PARSE (aacparse)->srcpad, src_caps); gst_caps_unref (src_caps); return res; + +not_a_known_rate: + gst_caps_unref (allowed); + gst_caps_unref (src_caps); + return FALSE; } @@ -250,7 +302,8 @@ gst_aac_parse_sink_setcaps (GstBaseParse * parse, GstCaps * caps) sr_idx = ((map.data[0] & 0x07) << 1) | ((map.data[1] & 0x80) >> 7); aacparse->object_type = (map.data[0] & 0xf8) >> 3; - aacparse->sample_rate = gst_aac_parse_get_sample_rate_from_index (sr_idx); + aacparse->sample_rate = + gst_codec_utils_aac_get_sample_rate_from_index (sr_idx); aacparse->channels = (map.data[1] & 0x78) >> 3; aacparse->header_type = DSPAAC_HEADER_NONE; aacparse->mpegversion = 4; @@ -263,7 +316,8 @@ gst_aac_parse_sink_setcaps (GstBaseParse * parse, GstCaps * caps) /* arrange for metadata and get out of the way */ gst_aac_parse_set_src_caps (aacparse, caps); - gst_base_parse_set_passthrough (parse, TRUE); + if (aacparse->header_type == aacparse->output_header_type) + gst_base_parse_set_passthrough (parse, TRUE); } else return FALSE; @@ -669,7 +723,7 @@ gst_aac_parse_parse_adts_header (GstAacParse * aacparse, const guint8 * data, if (rate) { gint sr_idx = (data[2] & 0x3c) >> 2; - *rate = gst_aac_parse_get_sample_rate_from_index (sr_idx); + *rate = gst_codec_utils_aac_get_sample_rate_from_index (sr_idx); } if (channels) *channels = ((data[2] & 0x01) << 2) | ((data[3] & 0xc0) >> 6); @@ -677,7 +731,7 @@ gst_aac_parse_parse_adts_header (GstAacParse * aacparse, const guint8 * data, if (version) *version = (data[1] & 0x08) ? 2 : 4; if (object) - *object = (data[2] & 0xc0) >> 6; + *object = ((data[2] & 0xc0) >> 6) + 1; } /** @@ -860,7 +914,8 @@ gst_aac_parse_detect_stream (GstAacParse * aacparse, /* FIXME: This gives totally wrong results. Duration calculation cannot be based on this */ - aacparse->sample_rate = gst_aac_parse_get_sample_rate_from_index (sr_idx); + aacparse->sample_rate = + gst_codec_utils_aac_get_sample_rate_from_index (sr_idx); /* baseparse is not given any fps, * so it will give up on timestamps, seeking, etc */ @@ -892,6 +947,184 @@ gst_aac_parse_detect_stream (GstAacParse * aacparse, return FALSE; } +/** + * gst_aac_parse_get_audio_profile_object_type + * @aacparse: #GstAacParse. + * + * Gets the MPEG-2 profile or the MPEG-4 object type value corresponding to the + * mpegversion and profile of @aacparse's src pad caps, according to the + * values defined by table 1.A.11 in ISO/IEC 14496-3. + * + * Returns: the profile or object type value corresponding to @aacparse's src + * pad caps, if such a value exists; otherwise G_MAXUINT8. + */ +static guint8 +gst_aac_parse_get_audio_profile_object_type (GstAacParse * aacparse) +{ + GstCaps *srccaps; + GstStructure *srcstruct; + const gchar *profile; + guint8 ret; + + srccaps = gst_pad_get_current_caps (GST_BASE_PARSE_SRC_PAD (aacparse)); + srcstruct = gst_caps_get_structure (srccaps, 0); + profile = gst_structure_get_string (srcstruct, "profile"); + if (G_UNLIKELY (profile == NULL)) { + gst_caps_unref (srccaps); + return G_MAXUINT8; + } + + if (g_strcmp0 (profile, "main") == 0) { + ret = (guint8) 0U; + } else if (g_strcmp0 (profile, "lc") == 0) { + ret = (guint8) 1U; + } else if (g_strcmp0 (profile, "ssr") == 0) { + ret = (guint8) 2U; + } else if (g_strcmp0 (profile, "ltp") == 0) { + if (G_LIKELY (aacparse->mpegversion == 4)) + ret = (guint8) 3U; + else + ret = G_MAXUINT8; /* LTP Object Type allowed only for MPEG-4 */ + } else { + ret = G_MAXUINT8; + } + + gst_caps_unref (srccaps); + return ret; +} + +/** + * gst_aac_parse_get_audio_channel_configuration + * @num_channels: number of audio channels. + * + * Gets the Channel Configuration value, as defined by table 1.19 in ISO/IEC + * 14496-3, for a given number of audio channels. + * + * Returns: the Channel Configuration value corresponding to @num_channels, if + * such a value exists; otherwise G_MAXUINT8. + */ +static guint8 +gst_aac_parse_get_audio_channel_configuration (gint num_channels) +{ + if (num_channels >= 1 && num_channels <= 6) /* Mono up to & including 5.1 */ + return (guint8) num_channels; + else if (num_channels == 8) /* 7.1 */ + return (guint8) 7U; + else + return G_MAXUINT8; +} + +/** + * gst_aac_parse_get_audio_sampling_frequency_index: + * @sample_rate: audio sampling rate. + * + * Gets the Sampling Frequency Index value, as defined by table 1.18 in ISO/IEC + * 14496-3, for a given sampling rate. + * + * Returns: the Sampling Frequency Index value corresponding to @sample_rate, + * if such a value exists; otherwise G_MAXUINT8. + */ +static guint8 +gst_aac_parse_get_audio_sampling_frequency_index (gint sample_rate) +{ + switch (sample_rate) { + case 96000: + return 0x0U; + case 88200: + return 0x1U; + case 64000: + return 0x2U; + case 48000: + return 0x3U; + case 44100: + return 0x4U; + case 32000: + return 0x5U; + case 24000: + return 0x6U; + case 22050: + return 0x7U; + case 16000: + return 0x8U; + case 12000: + return 0x9U; + case 11025: + return 0xAU; + case 8000: + return 0xBU; + case 7350: + return 0xCU; + default: + return G_MAXUINT8; + } +} + +/** + * gst_aac_parse_prepend_adts_headers: + * @aacparse: #GstAacParse. + * @frame: raw AAC frame to which ADTS headers shall be prepended. + * + * Prepends ADTS headers to a raw AAC audio frame. + * + * Returns: TRUE if ADTS headers were successfully prepended; FALSE otherwise. + */ +static gboolean +gst_aac_parse_prepend_adts_headers (GstAacParse * aacparse, + GstBaseParseFrame * frame) +{ + GstMemory *mem; + guint8 *adts_headers; + gsize buf_size; + gsize frame_size; + guint8 id, profile, channel_configuration, sampling_frequency_index; + + id = (aacparse->mpegversion == 4) ? 0x0U : 0x1U; + profile = gst_aac_parse_get_audio_profile_object_type (aacparse); + if (profile == G_MAXUINT8) { + GST_ERROR_OBJECT (aacparse, "Unsupported audio profile or object type"); + return FALSE; + } + channel_configuration = + gst_aac_parse_get_audio_channel_configuration (aacparse->channels); + if (channel_configuration == G_MAXUINT8) { + GST_ERROR_OBJECT (aacparse, "Unsupported number of channels"); + return FALSE; + } + sampling_frequency_index = + gst_aac_parse_get_audio_sampling_frequency_index (aacparse->sample_rate); + if (sampling_frequency_index == G_MAXUINT8) { + GST_ERROR_OBJECT (aacparse, "Unsupported sampling frequency"); + return FALSE; + } + + frame->out_buffer = gst_buffer_copy (frame->buffer); + buf_size = gst_buffer_get_size (frame->out_buffer); + frame_size = buf_size + ADTS_HEADERS_LENGTH; + + if (G_UNLIKELY (frame_size >= 0x4000)) { + GST_ERROR_OBJECT (aacparse, "Frame size is too big for ADTS"); + return FALSE; + } + + adts_headers = (guint8 *) g_malloc0 (ADTS_HEADERS_LENGTH); + + /* Note: no error correction bits are added to the resulting ADTS frames */ + adts_headers[0] = 0xFFU; + adts_headers[1] = 0xF0U | (id << 3) | 0x1U; + adts_headers[2] = (profile << 6) | (sampling_frequency_index << 2) | 0x2U | + (channel_configuration & 0x4U); + adts_headers[3] = ((channel_configuration & 0x3U) << 6) | 0x30U | + (guint8) (frame_size >> 11); + adts_headers[4] = (guint8) ((frame_size >> 3) & 0x00FF); + adts_headers[5] = (guint8) (((frame_size & 0x0007) << 5) + 0x1FU); + adts_headers[6] = 0xFCU; + + mem = gst_memory_new_wrapped (0, adts_headers, ADTS_HEADERS_LENGTH, 0, + ADTS_HEADERS_LENGTH, NULL, NULL); + gst_buffer_prepend_memory (frame->out_buffer, mem); + + return TRUE; +} /** * gst_aac_parse_check_valid_frame: @@ -1036,6 +1269,14 @@ gst_aac_parse_handle_frame (GstBaseParse * parse, } } + if (aacparse->header_type == DSPAAC_HEADER_NONE + && aacparse->output_header_type == DSPAAC_HEADER_ADTS) { + if (!gst_aac_parse_prepend_adts_headers (aacparse, frame)) { + GST_ERROR_OBJECT (aacparse, "Failed to prepend ADTS headers to frame"); + ret = GST_FLOW_ERROR; + } + } + exit: gst_buffer_unmap (buffer, &map); @@ -1056,6 +1297,26 @@ exit: return GST_FLOW_OK; } +static GstFlowReturn +gst_aac_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame) +{ + GstAacParse *aacparse = GST_AAC_PARSE (parse); + + /* As a special case, we can remove the ADTS framing and output raw AAC. */ + if (aacparse->header_type == DSPAAC_HEADER_ADTS + && aacparse->output_header_type == DSPAAC_HEADER_NONE) { + guint header_size; + GstMapInfo map; + gst_buffer_map (frame->buffer, &map, GST_MAP_READ); + header_size = (map.data[1] & 1) ? 7 : 9; /* optional CRC */ + gst_buffer_unmap (frame->buffer, &map); + gst_buffer_resize (frame->buffer, header_size, + gst_buffer_get_size (frame->buffer) - header_size); + } + + return GST_FLOW_OK; +} + /** * gst_aac_parse_start: diff --git a/gst/audioparsers/gstaacparse.h b/gst/audioparsers/gstaacparse.h index 11f75e683b9b948992d428f61fb9ce04b3d7bf88..51a2ed15e5be6f1b42ce86cdec0f5db7fdb040fb 100644 --- a/gst/audioparsers/gstaacparse.h +++ b/gst/audioparsers/gstaacparse.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AAC_PARSE_H__ @@ -80,6 +80,7 @@ struct _GstAacParse { gint frame_samples; GstAacHeaderType header_type; + GstAacHeaderType output_header_type; }; /** diff --git a/gst/audioparsers/gstac3parse.c b/gst/audioparsers/gstac3parse.c index c0c7b5cdcbc04f7d8aa4b3b4204570cc5cb30d09..23b017f69d3efbd0fad41f42858a034cdfac3ea4 100644 --- a/gst/audioparsers/gstac3parse.c +++ b/gst/audioparsers/gstac3parse.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-ac3parse @@ -35,7 +35,7 @@ */ /* TODO: - * - add support for audio/x-private1-ac3 as well + * - audio/ac3 to audio/x-private1-ac3 is not implemented (done in the muxer) * - should accept framed and unframed input (needs decodebin fixes first) */ @@ -153,7 +153,8 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-ac3; " "audio/x-eac3; " "audio/ac3")); + GST_STATIC_CAPS ("audio/x-ac3; " "audio/x-eac3; " "audio/ac3; " + "audio/x-private1-ac3")); static void gst_ac3_parse_finalize (GObject * object); @@ -165,6 +166,8 @@ static gboolean gst_ac3_parse_src_event (GstBaseParse * parse, GstEvent * event); static GstCaps *gst_ac3_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter); +static gboolean gst_ac3_parse_set_sink_caps (GstBaseParse * parse, + GstCaps * caps); #define gst_ac3_parse_parent_class parent_class G_DEFINE_TYPE (GstAc3Parse, gst_ac3_parse, GST_TYPE_BASE_PARSE); @@ -195,6 +198,7 @@ gst_ac3_parse_class_init (GstAc3ParseClass * klass) parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_ac3_parse_handle_frame); parse_class->src_event = GST_DEBUG_FUNCPTR (gst_ac3_parse_src_event); parse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_ac3_parse_get_sink_caps); + parse_class->set_sink_caps = GST_DEBUG_FUNCPTR (gst_ac3_parse_set_sink_caps); } static void @@ -212,6 +216,8 @@ gst_ac3_parse_init (GstAc3Parse * ac3parse) { gst_base_parse_set_min_frame_size (GST_BASE_PARSE (ac3parse), 6); gst_ac3_parse_reset (ac3parse); + ac3parse->baseparse_chainfunc = + GST_BASE_PARSE_SINK_PAD (GST_BASE_PARSE (ac3parse))->chainfunc; } static void @@ -660,6 +666,50 @@ cleanup: return res; } + +/* + * MPEG-PS private1 streams add a 2 bytes "Audio Substream Headers" for each + * buffer (not each frame) with the offset of the next frame's start. + * + * Buffer 1: + * ------------------------------------------- + * |firstAccUnit|AC3SyncWord|xxxxxxxxxxxxxxxxx + * ------------------------------------------- + * Buffer 2: + * ------------------------------------------- + * |firstAccUnit|xxxxxx|AC3SyncWord|xxxxxxxxxx + * ------------------------------------------- + * + * These 2 bytes can be dropped safely as they do not include any timing + * information, only the offset to the start of the next frame. + * + * From http://stnsoft.com/DVD/ass-hdr.html: + * "FirstAccUnit offset to frame which corresponds to PTS value offset 0 is the + * last byte of FirstAccUnit, ie add the offset of byte 2 to get the AU's offset + * The value 0000 indicates there is no first access unit" + * */ + +static GstFlowReturn +gst_ac3_parse_chain_priv (GstPad * pad, GstObject * parent, GstBuffer * buffer) +{ + GstAc3Parse *ac3parse = GST_AC3_PARSE (parent); + GstFlowReturn ret; + GstBuffer *newbuf; + gsize size; + + size = gst_buffer_get_size (buffer); + if (size >= 2) { + newbuf = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, 2, size - 2); + gst_buffer_unref (buffer); + ret = ac3parse->baseparse_chainfunc (pad, parent, newbuf); + } else { + gst_buffer_unref (buffer); + ret = GST_FLOW_OK; + } + + return ret; +} + static gboolean gst_ac3_parse_src_event (GstBaseParse * parse, GstEvent * event) { @@ -737,3 +787,18 @@ gst_ac3_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter) return res; } + +static gboolean +gst_ac3_parse_set_sink_caps (GstBaseParse * parse, GstCaps * caps) +{ + GstStructure *s; + GstAc3Parse *ac3parse = GST_AC3_PARSE (parse); + + s = gst_caps_get_structure (caps, 0); + if (gst_structure_has_name (s, "audio/x-private1-ac3")) { + gst_pad_set_chain_function (parse->sinkpad, gst_ac3_parse_chain_priv); + } else { + gst_pad_set_chain_function (parse->sinkpad, ac3parse->baseparse_chainfunc); + } + return TRUE; +} diff --git a/gst/audioparsers/gstac3parse.h b/gst/audioparsers/gstac3parse.h index 545419f14f0c166af35d38d90c7891bbee632ecb..0800dca3c5a75580ef99ac415ed4066b507430f1 100644 --- a/gst/audioparsers/gstac3parse.h +++ b/gst/audioparsers/gstac3parse.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AC3_PARSE_H__ @@ -57,11 +57,12 @@ struct _GstAc3Parse { GstBaseParse baseparse; /*< private >*/ - gint sample_rate; - gint channels; - gint blocks; - gboolean eac; - volatile gint align; + gint sample_rate; + gint channels; + gint blocks; + gboolean eac; + volatile gint align; + GstPadChainFunction baseparse_chainfunc; }; /** diff --git a/gst/audioparsers/gstamrparse.c b/gst/audioparsers/gstamrparse.c index 7d4ff8524877fac5c1b2965789a34897d5dd770f..1a321528dc2612d4a88b39e51ecc0fa4f9e003cc 100644 --- a/gst/audioparsers/gstamrparse.c +++ b/gst/audioparsers/gstamrparse.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/audioparsers/gstamrparse.h b/gst/audioparsers/gstamrparse.h index 86a26e026c0ae7a336e139e5566d91dfeb8b95f7..7898b71588da132bf962e6b56bd1fa68acc5bae2 100644 --- a/gst/audioparsers/gstamrparse.h +++ b/gst/audioparsers/gstamrparse.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AMR_PARSE_H__ diff --git a/gst/audioparsers/gstdcaparse.c b/gst/audioparsers/gstdcaparse.c index 3c1f61eb51ba076be0dd0bff85f2fb23ac494063..6df74ea62a54d69e26fcba22d1590f31085915db 100644 --- a/gst/audioparsers/gstdcaparse.c +++ b/gst/audioparsers/gstdcaparse.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -68,7 +68,7 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-dts")); + GST_STATIC_CAPS ("audio/x-dts; " "audio/x-private1-dts")); static void gst_dca_parse_finalize (GObject * object); @@ -78,6 +78,8 @@ static GstFlowReturn gst_dca_parse_handle_frame (GstBaseParse * parse, GstBaseParseFrame * frame, gint * skipsize); static GstCaps *gst_dca_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter); +static gboolean gst_dca_parse_set_sink_caps (GstBaseParse * parse, + GstCaps * caps); #define gst_dca_parse_parent_class parent_class G_DEFINE_TYPE (GstDcaParse, gst_dca_parse, GST_TYPE_BASE_PARSE); @@ -98,6 +100,7 @@ gst_dca_parse_class_init (GstDcaParseClass * klass) parse_class->stop = GST_DEBUG_FUNCPTR (gst_dca_parse_stop); parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_dca_parse_handle_frame); parse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_dca_parse_get_sink_caps); + parse_class->set_sink_caps = GST_DEBUG_FUNCPTR (gst_dca_parse_set_sink_caps); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template)); @@ -127,6 +130,8 @@ gst_dca_parse_init (GstDcaParse * dcaparse) gst_base_parse_set_min_frame_size (GST_BASE_PARSE (dcaparse), DCA_MIN_FRAMESIZE); gst_dca_parse_reset (dcaparse); + dcaparse->baseparse_chainfunc = + GST_BASE_PARSE_SINK_PAD (GST_BASE_PARSE (dcaparse))->chainfunc; } static void @@ -440,6 +445,35 @@ cleanup: return ret; } +/* + * MPEG-PS private1 streams add a 2 bytes "Audio Substream Headers" for each + * buffer (not each frame) with the offset of the next frame's start. + * These 2 bytes can be dropped safely as they do not include any timing + * information, only the offset to the start of the next frame. + * See gstac3parse.c for a more detailed description. + * */ + +static GstFlowReturn +gst_dca_parse_chain_priv (GstPad * pad, GstObject * parent, GstBuffer * buffer) +{ + GstDcaParse *dcaparse = GST_DCA_PARSE (parent); + GstFlowReturn ret; + GstBuffer *newbuf; + gsize size; + + size = gst_buffer_get_size (buffer); + if (size >= 2) { + newbuf = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, 2, size - 2); + gst_buffer_unref (buffer); + ret = dcaparse->baseparse_chainfunc (pad, parent, newbuf); + } else { + gst_buffer_unref (buffer); + ret = GST_FLOW_OK; + } + + return ret; +} + static GstCaps * gst_dca_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter) { @@ -485,3 +519,18 @@ gst_dca_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter) return res; } + +static gboolean +gst_dca_parse_set_sink_caps (GstBaseParse * parse, GstCaps * caps) +{ + GstStructure *s; + GstDcaParse *dcaparse = GST_DCA_PARSE (parse); + + s = gst_caps_get_structure (caps, 0); + if (gst_structure_has_name (s, "audio/x-private1-dts")) { + gst_pad_set_chain_function (parse->sinkpad, gst_dca_parse_chain_priv); + } else { + gst_pad_set_chain_function (parse->sinkpad, dcaparse->baseparse_chainfunc); + } + return TRUE; +} diff --git a/gst/audioparsers/gstdcaparse.h b/gst/audioparsers/gstdcaparse.h index b3e066bd0b4cca0608c93239190771c8d2d3aa39..b1ac76dfa8dbc8fd81c93d7f6d10623a41fc74f6 100644 --- a/gst/audioparsers/gstdcaparse.h +++ b/gst/audioparsers/gstdcaparse.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_DCA_PARSE_H__ @@ -51,14 +51,16 @@ struct _GstDcaParse { GstBaseParse baseparse; /*< private >*/ - gint rate; - gint channels; - gint depth; - gint endianness; - gint block_size; - gint frame_size; + gint rate; + gint channels; + gint depth; + gint endianness; + gint block_size; + gint frame_size; - guint32 last_sync; + guint32 last_sync; + + GstPadChainFunction baseparse_chainfunc; }; /** diff --git a/gst/audioparsers/gstflacparse.c b/gst/audioparsers/gstflacparse.c index 043c9a7b20549efe840b2a9e66b0dac78f28b95b..875694217f86ffed32b97bf27df2c612e33f55c4 100644 --- a/gst/audioparsers/gstflacparse.c +++ b/gst/audioparsers/gstflacparse.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -204,6 +204,8 @@ static GstFlowReturn gst_flac_parse_pre_push_frame (GstBaseParse * parse, static gboolean gst_flac_parse_convert (GstBaseParse * parse, GstFormat src_format, gint64 src_value, GstFormat dest_format, gint64 * dest_value); +static gboolean gst_flac_parse_src_event (GstBaseParse * parse, + GstEvent * event); static GstCaps *gst_flac_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter); @@ -237,6 +239,7 @@ gst_flac_parse_class_init (GstFlacParseClass * klass) baseparse_class->pre_push_frame = GST_DEBUG_FUNCPTR (gst_flac_parse_pre_push_frame); baseparse_class->convert = GST_DEBUG_FUNCPTR (gst_flac_parse_convert); + baseparse_class->src_event = GST_DEBUG_FUNCPTR (gst_flac_parse_src_event); baseparse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_flac_parse_get_sink_caps); @@ -753,7 +756,7 @@ gst_flac_parse_handle_frame (GstBaseParse * parse, GstMapInfo map; gboolean result = TRUE; GstFlowReturn ret = GST_FLOW_OK; - guint framesize; + guint framesize = 0; gst_buffer_map (buffer, &map, GST_MAP_READ); @@ -1126,6 +1129,9 @@ gst_flac_parse_handle_picture (GstFlacParse * flacparse, GstBuffer * buffer) if (!gst_byte_reader_get_uint32_be (&reader, &img_len)) goto error; + if (gst_byte_reader_get_pos (&reader) + img_len > map.size) + goto error; + if (!flacparse->tags) flacparse->tags = gst_tag_list_new_empty (); @@ -1222,7 +1228,7 @@ _value_array_append_buffer (GValue * array_val, GstBuffer * buf) g_value_unset (&value); } -static gboolean +static GstFlowReturn gst_flac_parse_handle_headers (GstFlacParse * flacparse) { GstBuffer *vorbiscomment = NULL; @@ -1231,7 +1237,7 @@ gst_flac_parse_handle_headers (GstFlacParse * flacparse) GValue array = { 0, }; GstCaps *caps; GList *l; - gboolean res = TRUE; + GstFlowReturn res = GST_FLOW_OK; caps = gst_caps_new_simple ("audio/x-flac", "channels", G_TYPE_INT, flacparse->channels, @@ -1333,7 +1339,6 @@ push_headers: * negotiated caps will change to caps that include the streamheader field */ while (flacparse->headers) { GstBuffer *buf = GST_BUFFER (flacparse->headers->data); - GstFlowReturn ret; GstBaseParseFrame frame; flacparse->headers = @@ -1344,12 +1349,10 @@ push_headers: gst_base_parse_frame_init (&frame); frame.buffer = buf; frame.overhead = -1; - ret = gst_base_parse_push_frame (GST_BASE_PARSE (flacparse), &frame); - if (ret != GST_FLOW_OK) { - res = FALSE; - break; - } + res = gst_base_parse_push_frame (GST_BASE_PARSE (flacparse), &frame); gst_base_parse_frame_free (&frame); + if (res != GST_FLOW_OK) + break; } g_list_foreach (flacparse->headers, (GFunc) gst_mini_object_unref, NULL); g_list_free (flacparse->headers); @@ -1576,13 +1579,15 @@ gst_flac_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame, } if (is_last) { - if (!gst_flac_parse_handle_headers (flacparse)) - goto cleanup; + res = gst_flac_parse_handle_headers (flacparse); /* Minimal size of a frame header */ gst_base_parse_set_min_frame_size (GST_BASE_PARSE (flacparse), MAX (9, flacparse->min_framesize)); flacparse->state = GST_FLAC_PARSE_STATE_DATA; + + if (res != GST_FLOW_OK) + goto cleanup; } /* DROPPED because we pushed already or will push all headers manually */ @@ -1615,18 +1620,18 @@ gst_flac_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame, GST_WARNING_OBJECT (flacparse, "Generating headers for variable blocksize streams not supported"); - if (!gst_flac_parse_handle_headers (flacparse)) - goto cleanup; + res = gst_flac_parse_handle_headers (flacparse); } else { GST_DEBUG_OBJECT (flacparse, "Generating headers"); if (!gst_flac_parse_generate_headers (flacparse)) goto cleanup; - if (!gst_flac_parse_handle_headers (flacparse)) - goto cleanup; + res = gst_flac_parse_handle_headers (flacparse); } flacparse->state = GST_FLAC_PARSE_STATE_DATA; + if (res != GST_FLOW_OK) + goto cleanup; } /* also cater for oggmux metadata */ @@ -1694,7 +1699,6 @@ gst_flac_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame) if (flacparse->toc) { gst_pad_push_event (GST_BASE_PARSE_SRC_PAD (flacparse), gst_event_new_toc (flacparse->toc, FALSE)); - flacparse->toc = NULL; } frame->flags |= GST_BASE_PARSE_FRAME_FLAG_CLIP; @@ -1734,6 +1738,61 @@ gst_flac_parse_convert (GstBaseParse * parse, src_value, dest_format, dest_value); } +static gboolean +gst_flac_parse_src_event (GstBaseParse * parse, GstEvent * event) +{ + GstFlacParse *flacparse = GST_FLAC_PARSE (parse); + gboolean res = FALSE; + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_TOC_SELECT: + { + GstTocEntry *entry = NULL; + GstEvent *seek_event; + GstToc *toc = NULL; + gint64 start_pos; + gchar *uid = NULL; + + /* FIXME: some locking would be good */ + if (flacparse->toc) + toc = gst_toc_ref (flacparse->toc); + + if (toc != NULL) { + gst_event_parse_toc_select (event, &uid); + if (uid != NULL) { + entry = gst_toc_find_entry (toc, uid); + if (entry != NULL) { + gst_toc_entry_get_start_stop_times (entry, &start_pos, NULL); + + /* FIXME: use segment rate here instead? */ + seek_event = gst_event_new_seek (1.0, + GST_FORMAT_TIME, + GST_SEEK_FLAG_FLUSH, + GST_SEEK_TYPE_SET, start_pos, GST_SEEK_TYPE_NONE, -1); + + res = + GST_BASE_PARSE_CLASS (parent_class)->src_event (parse, + seek_event); + + g_free (uid); + } else { + GST_WARNING_OBJECT (parse, "no TOC entry with given UID: %s", uid); + } + } + gst_toc_unref (toc); + } else { + GST_DEBUG_OBJECT (flacparse, "no TOC to select"); + } + gst_event_unref (event); + break; + } + default: + res = GST_BASE_PARSE_CLASS (parent_class)->src_event (parse, event); + break; + } + return res; +} + static GstCaps * gst_flac_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter) { diff --git a/gst/audioparsers/gstflacparse.h b/gst/audioparsers/gstflacparse.h index bba021279ada43ae30fab72aef54c79693f39890..5113abc3c4acd458fc3c249af012179a08bae4df 100644 --- a/gst/audioparsers/gstflacparse.h +++ b/gst/audioparsers/gstflacparse.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_FLAC_PARSE_H__ diff --git a/gst/audioparsers/gstmpegaudioparse.c b/gst/audioparsers/gstmpegaudioparse.c index b14d2e6a350d61d194e799f2bf88d06ac76dea11..aaa934943572c3f678985e1ff355cd1f1e3ea83b 100644 --- a/gst/audioparsers/gstmpegaudioparse.c +++ b/gst/audioparsers/gstmpegaudioparse.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-mpegaudioparse diff --git a/gst/audioparsers/gstmpegaudioparse.h b/gst/audioparsers/gstmpegaudioparse.h index 6b42673552d740e609f4f0663f7957c9214278e5..5e576beae5a3eef186a9e034c67be155a80ebd9f 100644 --- a/gst/audioparsers/gstmpegaudioparse.h +++ b/gst/audioparsers/gstmpegaudioparse.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MPEG_AUDIO_PARSE_H__ diff --git a/gst/audioparsers/gstsbcparse.c b/gst/audioparsers/gstsbcparse.c new file mode 100644 index 0000000000000000000000000000000000000000..5df456ae621dff5e8a442beba0a9ee24a01e39fd --- /dev/null +++ b/gst/audioparsers/gstsbcparse.c @@ -0,0 +1,487 @@ +/* GStreamer SBC audio parser + * Copyright (C) 2012 Collabora Ltd. <tim.muller@collabora.co.uk> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/** + * SECTION:element-sbcparse + * @see_also: sbcdec, sbcenc + * + * The sbcparse element will parse a bluetooth SBC audio stream into + * frames and timestamp them properly. + * + * Since: 1.2.0 + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "gstsbcparse.h" + +#include <string.h> +#include <gst/tag/tag.h> +#include <gst/audio/audio.h> + +#include <gst/base/gstbitreader.h> +#include <gst/base/gstbytereader.h> + +#define SBC_SYNCBYTE 0x9C + +GST_DEBUG_CATEGORY_STATIC (sbcparse_debug); +#define GST_CAT_DEFAULT sbcparse_debug + +static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-sbc, parsed = (boolean) true, " + "channels = (int) [ 1, 2 ], " + "rate = (int) { 16000, 32000, 44100, 48000 }") + ); + +static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-sbc") + ); + +static gboolean gst_sbc_parse_start (GstBaseParse * parse); +static gboolean gst_sbc_parse_stop (GstBaseParse * parse); +static GstFlowReturn gst_sbc_parse_handle_frame (GstBaseParse * parse, + GstBaseParseFrame * frame, gint * skipsize); +static GstCaps *gst_sbc_parse_get_sink_caps (GstBaseParse * parse, + GstCaps * filter); + +static guint8 gst_sbc_calculate_crc8 (const guint8 * data, gint bits_crc); +static gsize gst_sbc_calc_framelen (guint subbands, GstSbcChannelMode ch_mode, + guint blocks, guint bitpool); +static gsize gst_sbc_parse_header (const guint8 * data, guint * rate, + guint * n_blocks, GstSbcChannelMode * ch_mode, + GstSbcAllocationMethod * alloc_method, guint * n_subbands, guint * bitpool); + +#define parent_class gst_sbc_parse_parent_class +G_DEFINE_TYPE (GstSbcParse, gst_sbc_parse, GST_TYPE_BASE_PARSE); + +static void +gst_sbc_parse_class_init (GstSbcParseClass * klass) +{ + GstBaseParseClass *baseparse_class = GST_BASE_PARSE_CLASS (klass); + GstElementClass *element_class = GST_ELEMENT_CLASS (klass); + + GST_DEBUG_CATEGORY_INIT (sbcparse_debug, "sbcparse", 0, "SBC audio parser"); + + baseparse_class->start = GST_DEBUG_FUNCPTR (gst_sbc_parse_start); + baseparse_class->stop = GST_DEBUG_FUNCPTR (gst_sbc_parse_stop); + + baseparse_class->handle_frame = + GST_DEBUG_FUNCPTR (gst_sbc_parse_handle_frame); + baseparse_class->get_sink_caps = + GST_DEBUG_FUNCPTR (gst_sbc_parse_get_sink_caps); + + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&src_factory)); + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&sink_factory)); + + gst_element_class_set_static_metadata (element_class, "SBC audio parser", + "Codec/Parser/Audio", "Parses an SBC bluetooth audio stream", + "Tim-Philipp Müller <tim.muller@collabora.co.uk>"); +} + +static void +gst_sbc_parse_reset (GstSbcParse * sbcparse) +{ + sbcparse->alloc_method = GST_SBC_ALLOCATION_METHOD_INVALID; + sbcparse->ch_mode = GST_SBC_CHANNEL_MODE_INVALID; + sbcparse->rate = -1; + sbcparse->n_blocks = -1; + sbcparse->n_subbands = -1; + sbcparse->bitpool = -1; +} + +static void +gst_sbc_parse_init (GstSbcParse * sbcparse) +{ + gst_sbc_parse_reset (sbcparse); +} + +static gboolean +gst_sbc_parse_start (GstBaseParse * parse) +{ + gst_base_parse_set_min_frame_size (parse, + gst_sbc_calc_framelen (4, GST_SBC_CHANNEL_MODE_MONO, 4, 2)); + + gst_base_parse_set_has_timing_info (parse, FALSE); + + gst_base_parse_set_syncable (parse, TRUE); + + return TRUE; +} + +static gboolean +gst_sbc_parse_stop (GstBaseParse * parse) +{ + gst_sbc_parse_reset (GST_SBC_PARSE (parse)); + return TRUE; +} + +static const gchar * +gst_sbc_channel_mode_get_name (GstSbcChannelMode ch_mode) +{ + switch (ch_mode) { + case GST_SBC_CHANNEL_MODE_MONO: + return "mono"; + case GST_SBC_CHANNEL_MODE_DUAL: + return "dual"; + case GST_SBC_CHANNEL_MODE_STEREO: + return "stereo"; + case GST_SBC_CHANNEL_MODE_JOINT_STEREO: + return "joint"; + default: + break; + } + return "invalid"; +} + +static const gchar * +gst_sbc_allocation_method_get_name (GstSbcAllocationMethod alloc_method) +{ + switch (alloc_method) { + case GST_SBC_ALLOCATION_METHOD_SNR: + return "snr"; + case GST_SBC_ALLOCATION_METHOD_LOUDNESS: + return "loudness"; + default: + break; + } + return "invalid"; +} + +static GstFlowReturn +gst_sbc_parse_handle_frame (GstBaseParse * parse, GstBaseParseFrame * frame, + gint * skipsize) +{ + GstSbcParse *sbcparse = GST_SBC_PARSE (parse); + GstSbcAllocationMethod alloc_method = GST_SBC_ALLOCATION_METHOD_INVALID; + GstSbcChannelMode ch_mode = GST_SBC_CHANNEL_MODE_INVALID; + GstMapInfo map; + guint rate = 0, n_blocks = 0, n_subbands = 0, bitpool = 0; + gsize frame_len, next_len; + gint i, max_frames; + + gst_buffer_map (frame->buffer, &map, GST_MAP_READ); + + g_assert (map.size >= 6); + + frame_len = gst_sbc_parse_header (map.data, &rate, &n_blocks, &ch_mode, + &alloc_method, &n_subbands, &bitpool); + + GST_LOG_OBJECT (parse, "frame_len: %u", (guint) frame_len); + + if (frame_len == 0) + goto resync; + + if (sbcparse->alloc_method != alloc_method + || sbcparse->ch_mode != ch_mode + || sbcparse->rate != rate + || sbcparse->n_blocks != n_blocks + || sbcparse->n_subbands != n_subbands || sbcparse->bitpool != bitpool) { + guint avg_bitrate; + GstCaps *caps; + + /* FIXME: do all of these need to be in the caps? */ + caps = gst_caps_new_simple ("audio/x-sbc", "rate", G_TYPE_INT, rate, + "channels", G_TYPE_INT, (ch_mode == GST_SBC_CHANNEL_MODE_MONO) ? 1 : 2, + "channel-mode", G_TYPE_STRING, gst_sbc_channel_mode_get_name (ch_mode), + "blocks", G_TYPE_INT, n_blocks, "subbands", G_TYPE_INT, n_subbands, + "allocation-method", G_TYPE_STRING, + gst_sbc_allocation_method_get_name (alloc_method), + "bitpool", G_TYPE_INT, bitpool, "parsed", G_TYPE_BOOLEAN, TRUE, NULL); + + GST_INFO_OBJECT (sbcparse, "caps changed to %" GST_PTR_FORMAT, caps); + + gst_pad_push_event (GST_BASE_PARSE_SRC_PAD (sbcparse), + gst_event_new_caps (caps)); + + avg_bitrate = (8 * frame_len * rate) / (n_subbands * n_blocks); + gst_base_parse_set_average_bitrate (parse, avg_bitrate); + + gst_base_parse_set_frame_rate (parse, rate, n_subbands * n_blocks, 0, 0); + + sbcparse->alloc_method = alloc_method; + sbcparse->ch_mode = ch_mode; + sbcparse->rate = rate; + sbcparse->n_blocks = n_blocks; + sbcparse->n_subbands = n_subbands; + sbcparse->bitpool = bitpool; + + gst_caps_unref (caps); + } + + if (frame_len > map.size) + goto need_more_data; + + GST_BUFFER_OFFSET (frame->buffer) = GST_BUFFER_OFFSET_NONE; + GST_BUFFER_OFFSET_END (frame->buffer) = GST_BUFFER_OFFSET_NONE; + + /* completely arbitrary limit, we only process data we already have, + * so we aren't introducing latency here */ + max_frames = MIN (map.size / frame_len, n_blocks * n_subbands * 5); + GST_LOG_OBJECT (sbcparse, "parsing up to %d frames", max_frames); + + for (i = 1; i < max_frames; ++i) { + next_len = gst_sbc_parse_header (map.data + (i * frame_len), &rate, + &n_blocks, &ch_mode, &alloc_method, &n_subbands, &bitpool); + + if (next_len != frame_len || sbcparse->alloc_method != alloc_method || + sbcparse->ch_mode != ch_mode || sbcparse->rate != rate || + sbcparse->n_blocks != n_blocks || sbcparse->n_subbands != n_subbands || + sbcparse->bitpool != bitpool) { + break; + } + } + GST_LOG_OBJECT (sbcparse, "packing %d SBC frames into next output buffer", i); + + /* Note: local n_subbands and n_blocks variables might be tainted if we + * bailed out of the loop above because of a header configuration mismatch */ + gst_base_parse_set_frame_rate (parse, rate, + sbcparse->n_subbands * sbcparse->n_blocks * i, 0, 0); + + gst_buffer_unmap (frame->buffer, &map); + return gst_base_parse_finish_frame (parse, frame, i * frame_len); + +resync: + { + const guint8 *possible_sync; + + GST_DEBUG_OBJECT (parse, "no sync, resyncing"); + + possible_sync = memchr (map.data, SBC_SYNCBYTE, map.size); + + if (possible_sync != NULL) + *skipsize = (gint) (possible_sync - map.data); + else + *skipsize = map.size; + + gst_buffer_unmap (frame->buffer, &map); + + /* we could optimise things here by looping over the data and checking + * whether the sync is good or not instead of handing control back to + * the base class just to be called again */ + return GST_FLOW_OK; + } +need_more_data: + { + GST_LOG_OBJECT (parse, + "need %" G_GSIZE_FORMAT " bytes, but only have %" G_GSIZE_FORMAT, + frame_len, map.size); + gst_base_parse_set_min_frame_size (parse, frame_len); + gst_buffer_unmap (frame->buffer, &map); + return GST_FLOW_OK; + } +} + +static GstCaps * +gst_sbc_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter) +{ + GstCaps *peercaps, *templ; + GstCaps *res; + + templ = gst_pad_get_pad_template_caps (GST_BASE_PARSE_SINK_PAD (parse)); + peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter); + + if (peercaps) { + guint i, n; + + /* Remove the parsed field */ + peercaps = gst_caps_make_writable (peercaps); + n = gst_caps_get_size (peercaps); + for (i = 0; i < n; i++) { + GstStructure *s = gst_caps_get_structure (peercaps, i); + + gst_structure_remove_field (s, "parsed"); + } + + res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (peercaps); + res = gst_caps_make_writable (res); + + /* Append the template caps because we still want to accept + * caps without any fields in the case upstream does not + * know anything. + */ + gst_caps_append (res, templ); + } else { + res = templ; + } + + if (filter) { + GstCaps *intersection; + + intersection = + gst_caps_intersect_full (filter, res, GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (res); + res = intersection; + } + + return res; +} + +static const guint8 crc_table[256] = { + 0x00, 0x1D, 0x3A, 0x27, 0x74, 0x69, 0x4E, 0x53, + 0xE8, 0xF5, 0xD2, 0xCF, 0x9C, 0x81, 0xA6, 0xBB, + 0xCD, 0xD0, 0xF7, 0xEA, 0xB9, 0xA4, 0x83, 0x9E, + 0x25, 0x38, 0x1F, 0x02, 0x51, 0x4C, 0x6B, 0x76, + 0x87, 0x9A, 0xBD, 0xA0, 0xF3, 0xEE, 0xC9, 0xD4, + 0x6F, 0x72, 0x55, 0x48, 0x1B, 0x06, 0x21, 0x3C, + 0x4A, 0x57, 0x70, 0x6D, 0x3E, 0x23, 0x04, 0x19, + 0xA2, 0xBF, 0x98, 0x85, 0xD6, 0xCB, 0xEC, 0xF1, + 0x13, 0x0E, 0x29, 0x34, 0x67, 0x7A, 0x5D, 0x40, + 0xFB, 0xE6, 0xC1, 0xDC, 0x8F, 0x92, 0xB5, 0xA8, + 0xDE, 0xC3, 0xE4, 0xF9, 0xAA, 0xB7, 0x90, 0x8D, + 0x36, 0x2B, 0x0C, 0x11, 0x42, 0x5F, 0x78, 0x65, + 0x94, 0x89, 0xAE, 0xB3, 0xE0, 0xFD, 0xDA, 0xC7, + 0x7C, 0x61, 0x46, 0x5B, 0x08, 0x15, 0x32, 0x2F, + 0x59, 0x44, 0x63, 0x7E, 0x2D, 0x30, 0x17, 0x0A, + 0xB1, 0xAC, 0x8B, 0x96, 0xC5, 0xD8, 0xFF, 0xE2, + 0x26, 0x3B, 0x1C, 0x01, 0x52, 0x4F, 0x68, 0x75, + 0xCE, 0xD3, 0xF4, 0xE9, 0xBA, 0xA7, 0x80, 0x9D, + 0xEB, 0xF6, 0xD1, 0xCC, 0x9F, 0x82, 0xA5, 0xB8, + 0x03, 0x1E, 0x39, 0x24, 0x77, 0x6A, 0x4D, 0x50, + 0xA1, 0xBC, 0x9B, 0x86, 0xD5, 0xC8, 0xEF, 0xF2, + 0x49, 0x54, 0x73, 0x6E, 0x3D, 0x20, 0x07, 0x1A, + 0x6C, 0x71, 0x56, 0x4B, 0x18, 0x05, 0x22, 0x3F, + 0x84, 0x99, 0xBE, 0xA3, 0xF0, 0xED, 0xCA, 0xD7, + 0x35, 0x28, 0x0F, 0x12, 0x41, 0x5C, 0x7B, 0x66, + 0xDD, 0xC0, 0xE7, 0xFA, 0xA9, 0xB4, 0x93, 0x8E, + 0xF8, 0xE5, 0xC2, 0xDF, 0x8C, 0x91, 0xB6, 0xAB, + 0x10, 0x0D, 0x2A, 0x37, 0x64, 0x79, 0x5E, 0x43, + 0xB2, 0xAF, 0x88, 0x95, 0xC6, 0xDB, 0xFC, 0xE1, + 0x5A, 0x47, 0x60, 0x7D, 0x2E, 0x33, 0x14, 0x09, + 0x7F, 0x62, 0x45, 0x58, 0x0B, 0x16, 0x31, 0x2C, + 0x97, 0x8A, 0xAD, 0xB0, 0xE3, 0xFE, 0xD9, 0xC4 +}; + +static guint8 +gst_sbc_calculate_crc8 (const guint8 * data, gint crc_bits) +{ + guint8 crc = 0x0f; + guint8 octet; + + while (crc_bits >= 8) { + crc = crc_table[crc ^ *data]; + crc_bits -= 8; + ++data; + } + + octet = *data; + while (crc_bits > 0) { + gchar bit = ((octet ^ crc) & 0x80) >> 7; + + crc = ((crc & 0x7f) << 1) ^ (bit ? 0x1d : 0); + + octet = octet << 1; + --crc_bits; + } + + return crc; +} + +static gsize +gst_sbc_calc_framelen (guint subbands, GstSbcChannelMode ch_mode, + guint blocks, guint bitpool) +{ + switch (ch_mode) { + case GST_SBC_CHANNEL_MODE_MONO: + return 4 + (subbands * 1) / 2 + (blocks * 1 * bitpool) / 8; + case GST_SBC_CHANNEL_MODE_DUAL: + return 4 + (subbands * 2) / 2 + (blocks * 2 * bitpool) / 8; + case GST_SBC_CHANNEL_MODE_STEREO: + return 4 + (subbands * 2) / 2 + (blocks * bitpool) / 8; + case GST_SBC_CHANNEL_MODE_JOINT_STEREO: + return 4 + (subbands * 2) / 2 + (subbands + blocks * bitpool) / 8; + default: + break; + } + + g_return_val_if_reached (0); +} + +static gsize +gst_sbc_parse_header (const guint8 * data, guint * rate, guint * n_blocks, + GstSbcChannelMode * ch_mode, GstSbcAllocationMethod * alloc_method, + guint * n_subbands, guint * bitpool) +{ + static const guint16 sbc_rates[4] = { 16000, 32000, 44100, 48000 }; + static const guint8 sbc_blocks[4] = { 4, 8, 12, 16 }; + guint8 crc_data[2 + 1 + 8], crc_bits, i; + + GST_MEMDUMP ("header", data, 8); + + if (data[0] != SBC_SYNCBYTE) + return 0; + + *rate = sbc_rates[(data[1] >> 6) & 0x03]; + *n_blocks = sbc_blocks[(data[1] >> 4) & 0x03]; + *ch_mode = (GstSbcChannelMode) ((data[1] >> 2) & 0x03); + *alloc_method = (data[1] >> 1) & 0x01; + *n_subbands = (data[1] & 0x01) ? 8 : 4; + *bitpool = data[2]; + + GST_TRACE ("rate=%u, n_blocks=%u, ch_mode=%u, alloc_method=%u, " + "n_subbands=%u, bitpool=%u", *rate, *n_blocks, *ch_mode, *alloc_method, + *n_subbands, *bitpool); + + if (*bitpool < 2) + return 0; + + /* check CRC */ + crc_data[0] = data[1]; + crc_data[1] = data[2]; + crc_bits = 16; + + /* joint flags and RFA */ + if (*ch_mode == GST_SBC_CHANNEL_MODE_JOINT_STEREO) + crc_bits += *n_subbands; + + /* scale factors */ + if (*ch_mode == GST_SBC_CHANNEL_MODE_MONO) + crc_bits += *n_subbands * 1 * 4; + else + crc_bits += *n_subbands * 2 * 4; + + for (i = 16; i < crc_bits; i += 8) { + crc_data[i / 8] = data[1 + (i / 8) + 1]; + } + + if (i > crc_bits) { + crc_data[(i / 8) - 1] &= 0xF0; + } + + GST_MEMDUMP ("crc bytes", crc_data, GST_ROUND_UP_8 (crc_bits) / 8); + if (gst_sbc_calculate_crc8 (crc_data, crc_bits) != data[3]) { + GST_LOG ("header CRC check failed, bits=%u, got 0x%02x, expected 0x%02x", + crc_bits, gst_sbc_calculate_crc8 (crc_data, crc_bits), data[3]); + return 0; + } + + return gst_sbc_calc_framelen (*n_subbands, *ch_mode, *n_blocks, *bitpool); +} diff --git a/gst/audioparsers/gstsbcparse.h b/gst/audioparsers/gstsbcparse.h new file mode 100644 index 0000000000000000000000000000000000000000..2115270e9a3910b80394937106299b92a4c83c4a --- /dev/null +++ b/gst/audioparsers/gstsbcparse.h @@ -0,0 +1,74 @@ +/* GStreamer SBC audio parser + * Copyright (C) 2012 Collabora Ltd. <tim.muller@collabora.co.uk> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_SBC_PARSE_H_INCLUDED__ +#define __GST_SBC_PARSE_H_INCLUDED__ + + +#include <gst/gst.h> +#include <gst/base/gstbaseparse.h> + +G_BEGIN_DECLS + +#define GST_TYPE_SBC_PARSE (gst_sbc_parse_get_type()) +#define GST_SBC_PARSE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SBC_PARSE,GstSbcParse)) +#define GST_SBC_PARSE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SBC_PARSE,GstSbcParseClass)) +#define GST_SBC_PARSE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),GST_TYPE_SBC_PARSE,GstSbcParseClass)) +#define GST_IS_SBC_PARSE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SBC_PARSE)) +#define GST_IS_SBC_PARSE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SBC_PARSE)) +#define GST_SBC_PARSE_CAST(obj) ((GstSbcParse *)(obj)) + +typedef enum { + GST_SBC_CHANNEL_MODE_INVALID = -1, + GST_SBC_CHANNEL_MODE_MONO = 0, + GST_SBC_CHANNEL_MODE_DUAL = 1, + GST_SBC_CHANNEL_MODE_STEREO = 2, + GST_SBC_CHANNEL_MODE_JOINT_STEREO = 3 +} GstSbcChannelMode; + +typedef enum { + GST_SBC_ALLOCATION_METHOD_INVALID = -1, + GST_SBC_ALLOCATION_METHOD_SNR = 0, + GST_SBC_ALLOCATION_METHOD_LOUDNESS = 1 +} GstSbcAllocationMethod; + +typedef struct _GstSbcParse GstSbcParse; +typedef struct _GstSbcParseClass GstSbcParseClass; + +struct _GstSbcParse { + GstBaseParse baseparse; + + /* current output format */ + GstSbcAllocationMethod alloc_method; + GstSbcChannelMode ch_mode; + gint rate; + gint n_blocks; + gint n_subbands; + gint bitpool; +}; + +struct _GstSbcParseClass { + GstBaseParseClass baseparse_class; +}; + +GType gst_sbc_parse_get_type (void); + +G_END_DECLS + +#endif /* __GST_SBC_PARSE_H_INCLUDED__ */ diff --git a/gst/audioparsers/gstwavpackparse.c b/gst/audioparsers/gstwavpackparse.c index a05707cee6dfee37ca22fd2ab83be9dacbf3df23..8f124dd2418d6fe74cdf96a041c6a93a9d6efd41 100644 --- a/gst/audioparsers/gstwavpackparse.c +++ b/gst/audioparsers/gstwavpackparse.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-wavpackparse diff --git a/gst/audioparsers/gstwavpackparse.h b/gst/audioparsers/gstwavpackparse.h index 72ad340a156b96a328e95ca11f12e82a1d6d50ad..1070f5915cb1695a5286c73e67a5575594a7d5db 100644 --- a/gst/audioparsers/gstwavpackparse.h +++ b/gst/audioparsers/gstwavpackparse.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_WAVPACK_PARSE_H__ diff --git a/gst/audioparsers/plugin.c b/gst/audioparsers/plugin.c index 75f497831f58a2430bad6b0fe635a948e364d8ac..8cbfe605d276693e8e62346d90acc9a73f368711 100644 --- a/gst/audioparsers/plugin.c +++ b/gst/audioparsers/plugin.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -27,6 +27,7 @@ #include "gstdcaparse.h" #include "gstflacparse.h" #include "gstmpegaudioparse.h" +#include "gstsbcparse.h" #include "gstwavpackparse.h" static gboolean @@ -46,6 +47,8 @@ plugin_init (GstPlugin * plugin) GST_RANK_PRIMARY + 1, GST_TYPE_FLAC_PARSE); ret &= gst_element_register (plugin, "mpegaudioparse", GST_RANK_PRIMARY + 2, GST_TYPE_MPEG_AUDIO_PARSE); + ret &= gst_element_register (plugin, "sbcparse", + GST_RANK_PRIMARY + 1, GST_TYPE_SBC_PARSE); ret &= gst_element_register (plugin, "wavpackparse", GST_RANK_PRIMARY + 1, GST_TYPE_WAVPACK_PARSE); diff --git a/gst/auparse/Makefile.in b/gst/auparse/Makefile.in index 61352d91997e86eeb339f20d4207be67b18daf85..e1f12f33c984318bbb2cb42091c65119fbec7bc9 100644 --- a/gst/auparse/Makefile.in +++ b/gst/auparse/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/auparse -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -135,10 +161,23 @@ libgstauparse_la_OBJECTS = $(am_libgstauparse_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstauparse_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstauparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstauparse_la_CFLAGS) $(CFLAGS) \ $(libgstauparse_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -151,20 +190,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstauparse_la_SOURCES) DIST_SOURCES = $(libgstauparse_la_SOURCES) am__can_run_installinfo = \ @@ -173,6 +208,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -340,6 +392,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -541,6 +594,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -567,12 +621,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstauparse.la: $(libgstauparse_la_OBJECTS) $(libgstauparse_la_DEPENDENCIES) $(EXTRA_libgstauparse_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstauparse_la_LINK) -rpath $(plugindir) $(libgstauparse_la_OBJECTS) $(libgstauparse_la_LIBADD) $(LIBS) @@ -585,22 +642,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstauparse_la-gstauparse.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -618,26 +678,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -649,15 +698,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -666,6 +711,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -810,19 +870,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/auparse/gstauparse.c b/gst/auparse/gstauparse.c index dd6c3b2bd9ce7d6d1955f8d2a129e6f5e9fef02e..c4319cbc9269c7506d2f7e12caf9081a3f20207f 100644 --- a/gst/auparse/gstauparse.c +++ b/gst/auparse/gstauparse.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/auparse/gstauparse.h b/gst/auparse/gstauparse.h index 5744d268737952d291fa218af9f9fd83786da015..6d8f35a82ae638d9673f2626f628dc62750e8b98 100644 --- a/gst/auparse/gstauparse.h +++ b/gst/auparse/gstauparse.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/autodetect/Makefile.in b/gst/autodetect/Makefile.in index 17cef76e649ad615de7bbd62213bbaba262287f0..d54000bff83bbce1b501de71f9880be5cb13de46 100644 --- a/gst/autodetect/Makefile.in +++ b/gst/autodetect/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/autodetect -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -139,10 +165,23 @@ libgstautodetect_la_OBJECTS = $(am_libgstautodetect_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstautodetect_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstautodetect_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstautodetect_la_CFLAGS) $(CFLAGS) \ $(libgstautodetect_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -155,20 +194,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstautodetect_la_SOURCES) DIST_SOURCES = $(libgstautodetect_la_SOURCES) am__can_run_installinfo = \ @@ -177,6 +212,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -344,6 +396,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -557,6 +610,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -583,12 +637,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstautodetect.la: $(libgstautodetect_la_OBJECTS) $(libgstautodetect_la_DEPENDENCIES) $(EXTRA_libgstautodetect_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstautodetect_la_LINK) -rpath $(plugindir) $(libgstautodetect_la_OBJECTS) $(libgstautodetect_la_LIBADD) $(LIBS) @@ -605,22 +662,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstautodetect_la-gstautovideosrc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -666,26 +726,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -697,15 +746,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -714,6 +759,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -858,19 +918,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/autodetect/gstautoaudiosink.c b/gst/autodetect/gstautoaudiosink.c index e3fd7c70c9ee4c98129b3a512f5db5ce661afeec..09306b49e0627a0bc3cc8c73cdf278c1d2ecfc6a 100644 --- a/gst/autodetect/gstautoaudiosink.c +++ b/gst/autodetect/gstautoaudiosink.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -45,6 +45,7 @@ #include "gstautodetect.h" #define DEFAULT_TS_OFFSET 0 +#define DEFAULT_SYNC TRUE /* Properties */ enum @@ -52,6 +53,7 @@ enum PROP_0, PROP_CAPS, PROP_TS_OFFSET, + PROP_SYNC, }; static GstStateChangeReturn @@ -108,6 +110,11 @@ gst_auto_audio_sink_class_init (GstAutoAudioSinkClass * klass) "Timestamp offset in nanoseconds", G_MININT64, G_MAXINT64, DEFAULT_TS_OFFSET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_SYNC, + g_param_spec_boolean ("sync", "Sync", + "Sync on the clock", DEFAULT_SYNC, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + gst_element_class_add_pad_template (eklass, gst_static_pad_template_get (&sink_template)); @@ -175,6 +182,7 @@ gst_auto_audio_sink_init (GstAutoAudioSink * sink) /* set the default raw audio caps */ sink->filter_caps = gst_static_caps_get (&raw_caps); sink->ts_offset = DEFAULT_TS_OFFSET; + sink->sync = DEFAULT_SYNC; /* mark as sink */ GST_OBJECT_FLAG_SET (sink, GST_ELEMENT_FLAG_SINK); @@ -204,18 +212,6 @@ gst_auto_audio_sink_factory_filter (GstPluginFeature * feature, gpointer data) return TRUE; } -static gint -gst_auto_audio_sink_compare_ranks (GstPluginFeature * f1, GstPluginFeature * f2) -{ - gint diff; - - diff = gst_plugin_feature_get_rank (f2) - gst_plugin_feature_get_rank (f1); - if (diff != 0) - return diff; - return strcmp (gst_plugin_feature_get_name (f2), - gst_plugin_feature_get_name (f1)); -} - static GstElement * gst_auto_audio_sink_create_element_with_pretty_name (GstAutoAudioSink * sink, GstElementFactory * factory) @@ -251,7 +247,8 @@ gst_auto_audio_sink_find_best (GstAutoAudioSink * sink) list = gst_registry_feature_filter (gst_registry_get (), (GstPluginFeatureFilter) gst_auto_audio_sink_factory_filter, FALSE, sink); - list = g_list_sort (list, (GCompareFunc) gst_auto_audio_sink_compare_ranks); + list = + g_list_sort (list, (GCompareFunc) gst_plugin_feature_rank_compare_func); /* We don't treat sound server sinks special. Our policy is that sound * server sinks that have a rank must not auto-spawn a daemon under any @@ -347,6 +344,7 @@ gst_auto_audio_sink_detect (GstAutoAudioSink * sink) goto no_sink; g_object_set (G_OBJECT (esink), "ts-offset", sink->ts_offset, NULL); + g_object_set (G_OBJECT (esink), "sync", sink->sync, NULL); sink->kid = esink; /* Ensure the child is brought up to the right state to match the parent @@ -432,6 +430,11 @@ gst_auto_audio_sink_set_property (GObject * object, guint prop_id, if (sink->kid) g_object_set_property (G_OBJECT (sink->kid), pspec->name, value); break; + case PROP_SYNC: + sink->sync = g_value_get_boolean (value); + if (sink->kid) + g_object_set_property (G_OBJECT (sink->kid), pspec->name, value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -452,6 +455,9 @@ gst_auto_audio_sink_get_property (GObject * object, guint prop_id, case PROP_TS_OFFSET: g_value_set_int64 (value, sink->ts_offset); break; + case PROP_SYNC: + g_value_set_boolean (value, sink->sync); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; diff --git a/gst/autodetect/gstautoaudiosink.h b/gst/autodetect/gstautoaudiosink.h index 40fae5c60187e3c842a6462275d3fb2d5b0e4b35..6a049aee3f1c498c2bfa376084c6dd98385a3461 100644 --- a/gst/autodetect/gstautoaudiosink.h +++ b/gst/autodetect/gstautoaudiosink.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUTO_AUDIO_SINK_H__ @@ -45,6 +45,7 @@ typedef struct _GstAutoAudioSink { GstElement *kid; GstCaps *filter_caps; GstClockTimeDiff ts_offset; + gboolean sync; } GstAutoAudioSink; typedef struct _GstAutoAudioSinkClass { diff --git a/gst/autodetect/gstautoaudiosrc.c b/gst/autodetect/gstautoaudiosrc.c index f251bc8e1250f62bf05b0c4227eb614921b76593..f20cf57e9f6894274dc80ede90ccaa1a5eb41e77 100644 --- a/gst/autodetect/gstautoaudiosrc.c +++ b/gst/autodetect/gstautoaudiosrc.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -198,18 +198,6 @@ gst_auto_audio_src_factory_filter (GstPluginFeature * feature, gpointer data) return TRUE; } -static gint -gst_auto_audio_src_compare_ranks (GstPluginFeature * f1, GstPluginFeature * f2) -{ - gint diff; - - diff = gst_plugin_feature_get_rank (f2) - gst_plugin_feature_get_rank (f1); - if (diff != 0) - return diff; - return strcmp (gst_plugin_feature_get_name (f2), - gst_plugin_feature_get_name (f1)); -} - static GstElement * gst_auto_audio_src_create_element_with_pretty_name (GstAutoAudioSrc * src, GstElementFactory * factory) @@ -245,7 +233,8 @@ gst_auto_audio_src_find_best (GstAutoAudioSrc * src) list = gst_registry_feature_filter (gst_registry_get (), (GstPluginFeatureFilter) gst_auto_audio_src_factory_filter, FALSE, src); - list = g_list_sort (list, (GCompareFunc) gst_auto_audio_src_compare_ranks); + list = + g_list_sort (list, (GCompareFunc) gst_plugin_feature_rank_compare_func); /* We don't treat sound server sources special. Our policy is that sound * server sources that have a rank must not auto-spawn a daemon under any diff --git a/gst/autodetect/gstautoaudiosrc.h b/gst/autodetect/gstautoaudiosrc.h index 86696276e4e5522072eb5475dcabb6ef2d91bd6b..99b9aa5be4e2f82c79e813199b1c92aa494b16b8 100644 --- a/gst/autodetect/gstautoaudiosrc.h +++ b/gst/autodetect/gstautoaudiosrc.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUTO_AUDIO_SRC_H__ diff --git a/gst/autodetect/gstautodetect.c b/gst/autodetect/gstautodetect.c index 48f03cb43b5cc5174495511279d01aea4ff237ab..96a8cd739fc3bd9b33e1496cfe798329350fc84c 100644 --- a/gst/autodetect/gstautodetect.c +++ b/gst/autodetect/gstautodetect.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/autodetect/gstautodetect.h b/gst/autodetect/gstautodetect.h index d4952d7d6af2631297f972f3088d1734d1d0a226..5e6875c69304f6476af1943d8531c664eea2e7ef 100644 --- a/gst/autodetect/gstautodetect.h +++ b/gst/autodetect/gstautodetect.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUTO_DETECT_H__ diff --git a/gst/autodetect/gstautovideosink.c b/gst/autodetect/gstautovideosink.c index 4aa7161f2712ceabc1052a0211a426071404ef46..7456095e38601b1b57b3ea592a91982dc2ae3a06 100644 --- a/gst/autodetect/gstautovideosink.c +++ b/gst/autodetect/gstautovideosink.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -45,6 +45,7 @@ #include "gstautodetect.h" #define DEFAULT_TS_OFFSET 0 +#define DEFAULT_SYNC TRUE /* Properties */ enum @@ -52,6 +53,7 @@ enum PROP_0, PROP_CAPS, PROP_TS_OFFSET, + PROP_SYNC, }; static GstStateChangeReturn @@ -106,6 +108,11 @@ gst_auto_video_sink_class_init (GstAutoVideoSinkClass * klass) "Timestamp offset in nanoseconds", G_MININT64, G_MAXINT64, DEFAULT_TS_OFFSET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_SYNC, + g_param_spec_boolean ("sync", "Sync", + "Sync on the clock", DEFAULT_SYNC, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + gst_element_class_add_pad_template (eklass, gst_static_pad_template_get (&sink_template)); gst_element_class_set_static_metadata (eklass, "Auto video sink", @@ -174,6 +181,7 @@ gst_auto_video_sink_init (GstAutoVideoSink * sink) /* set the default raw video caps */ sink->filter_caps = gst_static_caps_get (&raw_caps); sink->ts_offset = DEFAULT_TS_OFFSET; + sink->sync = DEFAULT_SYNC; /* mark as sink */ GST_OBJECT_FLAG_SET (sink, GST_ELEMENT_FLAG_SINK); @@ -203,18 +211,6 @@ gst_auto_video_sink_factory_filter (GstPluginFeature * feature, gpointer data) return TRUE; } -static gint -gst_auto_video_sink_compare_ranks (GstPluginFeature * f1, GstPluginFeature * f2) -{ - gint diff; - - diff = gst_plugin_feature_get_rank (f2) - gst_plugin_feature_get_rank (f1); - if (diff != 0) - return diff; - return strcmp (gst_plugin_feature_get_name (f2), - gst_plugin_feature_get_name (f1)); -} - static GstElement * gst_auto_video_sink_create_element_with_pretty_name (GstAutoVideoSink * sink, GstElementFactory * factory) @@ -250,7 +246,8 @@ gst_auto_video_sink_find_best (GstAutoVideoSink * sink) list = gst_registry_feature_filter (gst_registry_get (), (GstPluginFeatureFilter) gst_auto_video_sink_factory_filter, FALSE, sink); - list = g_list_sort (list, (GCompareFunc) gst_auto_video_sink_compare_ranks); + list = + g_list_sort (list, (GCompareFunc) gst_plugin_feature_rank_compare_func); GST_LOG_OBJECT (sink, "Trying to find usable video devices ..."); @@ -343,6 +340,7 @@ gst_auto_video_sink_detect (GstAutoVideoSink * sink) goto no_sink; g_object_set (G_OBJECT (esink), "ts-offset", sink->ts_offset, NULL); + g_object_set (G_OBJECT (esink), "sync", sink->sync, NULL); sink->kid = esink; gst_bin_add (GST_BIN (sink), esink); @@ -420,6 +418,11 @@ gst_auto_video_sink_set_property (GObject * object, guint prop_id, if (sink->kid) g_object_set_property (G_OBJECT (sink->kid), pspec->name, value); break; + case PROP_SYNC: + sink->sync = g_value_get_boolean (value); + if (sink->kid) + g_object_set_property (G_OBJECT (sink->kid), pspec->name, value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -440,6 +443,9 @@ gst_auto_video_sink_get_property (GObject * object, guint prop_id, case PROP_TS_OFFSET: g_value_set_int64 (value, sink->ts_offset); break; + case PROP_SYNC: + g_value_set_boolean (value, sink->sync); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; diff --git a/gst/autodetect/gstautovideosink.h b/gst/autodetect/gstautovideosink.h index 1ec4a26bfd6e493e4e10de5dccc3f6c5a3662ec9..dcc1d9894c68735291dcae9e7366eba80e655e74 100644 --- a/gst/autodetect/gstautovideosink.h +++ b/gst/autodetect/gstautovideosink.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUTO_VIDEO_SINK_H__ @@ -45,6 +45,7 @@ typedef struct _GstAutoVideoSink { GstElement *kid; GstCaps *filter_caps; GstClockTimeDiff ts_offset; + gboolean sync; } GstAutoVideoSink; typedef struct _GstAutoVideoSinkClass { diff --git a/gst/autodetect/gstautovideosrc.c b/gst/autodetect/gstautovideosrc.c index 0184c673c821b86b41662f8625f61dd00de01f6c..6c0ba09c4ac90ff329e0b3e5cd060a6c07cec2cc 100644 --- a/gst/autodetect/gstautovideosrc.c +++ b/gst/autodetect/gstautovideosrc.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -197,18 +197,6 @@ gst_auto_video_src_factory_filter (GstPluginFeature * feature, gpointer data) return TRUE; } -static gint -gst_auto_video_src_compare_ranks (GstPluginFeature * f1, GstPluginFeature * f2) -{ - gint diff; - - diff = gst_plugin_feature_get_rank (f2) - gst_plugin_feature_get_rank (f1); - if (diff != 0) - return diff; - return strcmp (gst_plugin_feature_get_name (f2), - gst_plugin_feature_get_name (f1)); -} - static GstElement * gst_auto_video_src_create_element_with_pretty_name (GstAutoVideoSrc * src, GstElementFactory * factory) @@ -244,7 +232,8 @@ gst_auto_video_src_find_best (GstAutoVideoSrc * src) list = gst_registry_feature_filter (gst_registry_get (), (GstPluginFeatureFilter) gst_auto_video_src_factory_filter, FALSE, src); - list = g_list_sort (list, (GCompareFunc) gst_auto_video_src_compare_ranks); + list = + g_list_sort (list, (GCompareFunc) gst_plugin_feature_rank_compare_func); GST_LOG_OBJECT (src, "Trying to find usable video devices ..."); diff --git a/gst/autodetect/gstautovideosrc.h b/gst/autodetect/gstautovideosrc.h index d72bcd209b9375032d416ae9b2162a8f221d3471..ec5d4fc8ac4b5e1ee72618a75855425fc477da26 100644 --- a/gst/autodetect/gstautovideosrc.h +++ b/gst/autodetect/gstautovideosrc.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AUTO_VIDEO_SRC_H__ diff --git a/gst/avi/Makefile.in b/gst/avi/Makefile.in index 8708751290481aa01bb2f0b156da5dcfb5be6eef..4e975d990f862885891ad73c22d0173463bbee84 100644 --- a/gst/avi/Makefile.in +++ b/gst/avi/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/avi -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,10 +163,23 @@ libgstavi_la_OBJECTS = $(am_libgstavi_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstavi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstavi_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstavi_la_CFLAGS) $(CFLAGS) \ $(libgstavi_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +192,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstavi_la_SOURCES) DIST_SOURCES = $(libgstavi_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +210,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +394,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -562,6 +615,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -588,12 +642,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstavi.la: $(libgstavi_la_OBJECTS) $(libgstavi_la_DEPENDENCIES) $(EXTRA_libgstavi_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstavi_la_LINK) -rpath $(plugindir) $(libgstavi_la_OBJECTS) $(libgstavi_la_LIBADD) $(LIBS) @@ -609,22 +666,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstavi_la-gstavisubtitle.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -663,26 +723,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -694,15 +743,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -711,6 +756,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -855,19 +915,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/avi/avi-ids.h b/gst/avi/avi-ids.h index 695a4f83908f8ec49385f26b3c4034a7afa43380..9c098033428f04cceeb5984f4574a410fb4d4629 100644 --- a/gst/avi/avi-ids.h +++ b/gst/avi/avi-ids.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AVI_H__ diff --git a/gst/avi/gstavi.c b/gst/avi/gstavi.c index a0482a835f11663368a3845711d665df100a7d9d..b4cf0ad4aa4b98f329f2f9079f40592203bad640 100644 --- a/gst/avi/gstavi.c +++ b/gst/avi/gstavi.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -35,7 +35,6 @@ plugin_init (GstPlugin * plugin) gst_riff_init (); #ifdef ENABLE_NLS - setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif /* ENABLE_NLS */ diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index 930e239784dd831cbf937c7c2af293b70d685227..a3a1b5dc93251e9775fbcf397834ef77aa04847a 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* Element-Checklist-Version: 5 */ @@ -57,7 +57,7 @@ #define DIV_ROUND_UP(s,v) (((s) + ((v)-1)) / (v)) -#define GST_AVI_KEYFRAME 1 +#define GST_AVI_KEYFRAME (1 << 0) #define ENTRY_IS_KEYFRAME(e) ((e)->flags == GST_AVI_KEYFRAME) #define ENTRY_SET_KEYFRAME(e) ((e)->flags = GST_AVI_KEYFRAME) #define ENTRY_UNSET_KEYFRAME(e) ((e)->flags = 0) @@ -256,6 +256,9 @@ gst_avi_demux_reset (GstAviDemux * avi) avi->num_t_streams = 0; avi->main_stream = -1; + avi->have_group_id = FALSE; + avi->group_id = G_MAXUINT; + avi->state = GST_AVI_DEMUX_START; avi->offset = 0; avi->building_index = FALSE; @@ -456,14 +459,14 @@ gst_avi_demux_handle_src_query (GstPad * pad, GstObject * parent, if (stream->strh->type == GST_RIFF_FCC_auds) { if (stream->is_vbr) { /* VBR */ - pos = gst_util_uint64_scale ((gint64) stream->current_entry * - stream->strh->scale, GST_SECOND, (guint64) stream->strh->rate); + pos = avi_stream_convert_frames_to_time_unchecked (stream, + stream->current_total); GST_DEBUG_OBJECT (avi, "VBR convert frame %u, time %" GST_TIME_FORMAT, stream->current_entry, GST_TIME_ARGS (pos)); } else if (stream->strf.auds->av_bps != 0) { /* CBR */ - pos = gst_util_uint64_scale (stream->current_total, GST_SECOND, - (guint64) stream->strf.auds->av_bps); + pos = avi_stream_convert_bytes_to_time_unchecked (stream, + stream->current_total); GST_DEBUG_OBJECT (avi, "CBR convert bytes %u, time %" GST_TIME_FORMAT, stream->current_total, GST_TIME_ARGS (pos)); @@ -510,14 +513,16 @@ gst_avi_demux_handle_src_query (GstPad * pad, GstObject * parent, /* only act on audio or video streams */ if (stream->strh->type != GST_RIFF_FCC_auds && - stream->strh->type != GST_RIFF_FCC_vids) { + stream->strh->type != GST_RIFF_FCC_vids && + stream->strh->type != GST_RIFF_FCC_iavs) { res = FALSE; break; } /* take stream duration, fall back to avih duration */ if ((duration = stream->duration) == -1) - duration = avi->duration; + if ((duration = stream->hdr_duration) == -1) + duration = avi->duration; gst_query_parse_duration (query, &fmt, NULL); @@ -573,6 +578,25 @@ gst_avi_demux_handle_src_query (GstPad * pad, GstObject * parent, res = gst_pad_query_default (pad, parent, query); break; } + case GST_QUERY_SEGMENT: + { + GstFormat format; + gint64 start, stop; + + format = avi->segment.format; + + start = + gst_segment_to_stream_time (&avi->segment, format, + avi->segment.start); + if ((stop = avi->segment.stop) == -1) + stop = avi->segment.duration; + else + stop = gst_segment_to_stream_time (&avi->segment, format, stop); + + gst_query_set_segment (query, avi->segment.rate, format, start, stop); + res = TRUE; + break; + } default: res = gst_pad_query_default (pad, parent, query); break; @@ -724,6 +748,7 @@ gst_avi_demux_handle_sink_event (GstPad * pad, GstObject * parent, { gint64 boffset, offset = 0; GstSegment segment; + GstEvent *segment_event; /* some debug output */ gst_event_copy_segment (event, &segment); @@ -821,7 +846,9 @@ gst_avi_demux_handle_sink_event (GstPad * pad, GstObject * parent, gst_segment_copy_into (&segment, &avi->segment); GST_DEBUG_OBJECT (avi, "Pushing newseg %" GST_SEGMENT_FORMAT, &segment); - gst_avi_demux_push_event (avi, gst_event_new_segment (&segment)); + segment_event = gst_event_new_segment (&segment); + gst_event_set_seqnum (segment_event, gst_event_get_seqnum (event)); + gst_avi_demux_push_event (avi, segment_event); GST_DEBUG_OBJECT (avi, "next chunk expected at %" G_GINT64_FORMAT, boffset); @@ -1370,9 +1397,13 @@ gst_avi_demux_get_buffer_info (GstAviDemux * avi, GstAviStream * stream, if (timestamp) *timestamp = avi_stream_convert_frames_to_time_unchecked (stream, entry->total); - if (ts_end) + if (ts_end) { + gint size = 1; + if (G_LIKELY (entry_n + 1 < stream->idx_n)) + size = stream->index[entry_n + 1].total - entry->total; *ts_end = avi_stream_convert_frames_to_time_unchecked (stream, - entry->total + 1); + entry->total + size); + } } else { if (timestamp) *timestamp = @@ -1978,6 +2009,7 @@ gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf) GstElement *element; gboolean got_strh = FALSE, got_strf = FALSE, got_vprp = FALSE; gst_riff_vprp *vprp = NULL; + GstEvent *event; gchar *stream_id; element = GST_ELEMENT_CAST (avi); @@ -2355,9 +2387,26 @@ gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf) gst_pad_set_active (pad, TRUE); stream_id = - gst_pad_create_stream_id_printf (pad, GST_ELEMENT_CAST (avi), "%u", + gst_pad_create_stream_id_printf (pad, GST_ELEMENT_CAST (avi), "%03u", avi->num_streams); - gst_pad_push_event (pad, gst_event_new_stream_start (stream_id)); + + event = gst_pad_get_sticky_event (avi->sinkpad, GST_EVENT_STREAM_START, 0); + if (event) { + if (gst_event_parse_group_id (event, &avi->group_id)) + avi->have_group_id = TRUE; + else + avi->have_group_id = FALSE; + gst_event_unref (event); + } else if (!avi->have_group_id) { + avi->have_group_id = TRUE; + avi->group_id = gst_util_group_id_next (); + } + + event = gst_event_new_stream_start (stream_id); + if (avi->have_group_id) + gst_event_set_group_id (event, avi->group_id); + + gst_pad_push_event (pad, event); g_free (stream_id); gst_pad_set_caps (pad, caps); gst_caps_unref (caps); @@ -2547,10 +2596,11 @@ gst_avi_demux_index_for_time (GstAviDemux * avi, } else { index = avi_stream_convert_time_to_frames_unchecked (stream, time); } - } else { + } else if (stream->strh->type == GST_RIFF_FCC_auds) { /* constant rate stream */ total = avi_stream_convert_time_to_bytes_unchecked (stream, time); - } + } else + return -1; if (index == -1) { GstAviIndexEntry *entry; @@ -2587,7 +2637,9 @@ gst_avi_demux_stream_for_id (GstAviDemux * avi, guint32 id) /* get the stream for this entry */ stream_nr = CHUNKID_TO_STREAMNR (id); if (G_UNLIKELY (stream_nr >= avi->num_streams)) { - GST_WARNING_OBJECT (avi, "invalid stream nr %d", stream_nr); + GST_WARNING_OBJECT (avi, + "invalid stream nr %d (0x%08x, %" GST_FOURCC_FORMAT ")", stream_nr, id, + GST_FOURCC_ARGS (id)); return NULL; } stream = &avi->stream[stream_nr]; @@ -2665,7 +2717,8 @@ gst_avi_demux_parse_index (GstAviDemux * avi, GstBuffer * buf) if (stream->strh->type == GST_RIFF_FCC_auds) { /* all audio frames are keyframes */ ENTRY_SET_KEYFRAME (&entry); - } else if (stream->strf.vids->compression == GST_RIFF_DXSB) { + } else if (stream->strh->type == GST_RIFF_FCC_vids && + stream->strf.vids->compression == GST_RIFF_DXSB) { /* all xsub frames are keyframes */ ENTRY_SET_KEYFRAME (&entry); } else { @@ -4073,6 +4126,8 @@ gst_avi_demux_do_seek (GstAviDemux * avi, GstSegment * segment) /* get the entry index for the requested position */ index = gst_avi_demux_index_for_time (avi, stream, seek_time); GST_DEBUG_OBJECT (avi, "Got entry %u", index); + if (index == -1) + return FALSE; /* check if we are already on a keyframe */ if (!ENTRY_IS_KEYFRAME (&stream->index[index])) { @@ -4124,6 +4179,8 @@ gst_avi_demux_do_seek (GstAviDemux * avi, GstSegment * segment) /* get the entry index for the requested position */ index = gst_avi_demux_index_for_time (avi, ostream, seek_time); + if (index == -1) + continue; /* move to previous keyframe */ if (!ENTRY_IS_KEYFRAME (&ostream->index[index])) @@ -4152,12 +4209,14 @@ gst_avi_demux_handle_seek (GstAviDemux * avi, GstPad * pad, GstEvent * event) gboolean update; GstSegment seeksegment = { 0, }; gint i; + guint32 seqnum = 0; if (event) { GST_DEBUG_OBJECT (avi, "doing seek with event"); gst_event_parse_seek (event, &rate, &format, &flags, &cur_type, &cur, &stop_type, &stop); + seqnum = gst_event_get_seqnum (event); /* we have to have a format as the segment format. Try to convert * if not. */ @@ -4189,6 +4248,8 @@ gst_avi_demux_handle_seek (GstAviDemux * avi, GstPad * pad, GstEvent * event) if (flush) { GstEvent *fevent = gst_event_new_flush_start (); + if (seqnum) + gst_event_set_seqnum (fevent, seqnum); /* for a flushing seek, we send a flush_start on all pads. This will * eventually stop streaming with a WRONG_STATE. We can thus eventually * take the STREAM_LOCK. */ @@ -4222,6 +4283,9 @@ gst_avi_demux_handle_seek (GstAviDemux * avi, GstPad * pad, GstEvent * event) if (flush) { GstEvent *fevent = gst_event_new_flush_stop (TRUE); + if (seqnum) + gst_event_set_seqnum (fevent, seqnum); + GST_DEBUG_OBJECT (avi, "sending flush stop"); gst_avi_demux_push_event (avi, gst_event_ref (fevent)); gst_pad_push_event (avi->sinkpad, fevent); @@ -4232,15 +4296,20 @@ gst_avi_demux_handle_seek (GstAviDemux * avi, GstPad * pad, GstEvent * event) /* post the SEGMENT_START message when we do segmented playback */ if (avi->segment.flags & GST_SEEK_FLAG_SEGMENT) { - gst_element_post_message (GST_ELEMENT_CAST (avi), + GstMessage *segment_start_msg = gst_message_new_segment_start (GST_OBJECT_CAST (avi), - avi->segment.format, avi->segment.position)); + avi->segment.format, avi->segment.position); + if (seqnum) + gst_message_set_seqnum (segment_start_msg, seqnum); + gst_element_post_message (GST_ELEMENT_CAST (avi), segment_start_msg); } /* queue the segment event for the streaming thread. */ if (avi->seg_event) gst_event_unref (avi->seg_event); avi->seg_event = gst_event_new_segment (&avi->segment); + if (seqnum) + gst_event_set_seqnum (avi->seg_event, seqnum); if (!avi->streaming) { gst_pad_start_task (avi->sinkpad, (GstTaskFunction) gst_avi_demux_loop, @@ -4339,6 +4408,8 @@ avi_demux_handle_seek_push (GstAviDemux * avi, GstPad * pad, GstEvent * event) index = gst_avi_demux_index_for_time (avi, stream, cur); GST_DEBUG_OBJECT (avi, "str %u: Found entry %u for %" GST_TIME_FORMAT, str_num, index, GST_TIME_ARGS (cur)); + if (index == -1) + return -1; /* check if we are already on a keyframe */ if (!ENTRY_IS_KEYFRAME (&stream->index[index])) { @@ -4389,6 +4460,8 @@ avi_demux_handle_seek_push (GstAviDemux * avi, GstPad * pad, GstEvent * event) idx = gst_avi_demux_index_for_time (avi, str, cur); GST_DEBUG_OBJECT (avi, "str %u: Found entry %u for %" GST_TIME_FORMAT, n, idx, GST_TIME_ARGS (cur)); + if (idx == -1) + continue; /* check if we are already on a keyframe */ if (!ENTRY_IS_KEYFRAME (&str->index[idx])) { @@ -4543,6 +4616,10 @@ gst_avi_demux_invert (GstAviStream * stream, GstBuffer * buf) return buf; /* Ignore non DIB buffers */ } + /* raw rgb data is stored topdown, but instead of inverting the buffer, */ + /* some tools just negate the height field in the header (e.g. ffmpeg) */ + if (((gint32) stream->strf.vids->height) < 0) + return buf; h = stream->strf.vids->height; w = stream->strf.vids->width; @@ -5107,7 +5184,18 @@ gst_avi_demux_stream_data (GstAviDemux * avi) /* increment our positions */ stream->current_entry++; - stream->current_total += size; + /* as in pull mode, 'total' is either bytes (CBR) or frames (VBR) */ + if (stream->strh->type == GST_RIFF_FCC_auds && stream->is_vbr) { + gint blockalign = stream->strf.auds->blockalign; + if (blockalign > 0) + stream->current_total += DIV_ROUND_UP (size, blockalign); + else + stream->current_total++; + } else { + stream->current_total += size; + } + GST_LOG_OBJECT (avi, "current entry %u, total %u", + stream->current_entry, stream->current_total); /* update current position in the segment */ avi->segment.position = next_ts; diff --git a/gst/avi/gstavidemux.h b/gst/avi/gstavidemux.h index 33868461d1603d002e95478c3f4c95a53b997265..a7cefba48b4d1d5a15c2673c31ca36d3c5659438 100644 --- a/gst/avi/gstavidemux.h +++ b/gst/avi/gstavidemux.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AVI_DEMUX_H__ @@ -163,6 +163,9 @@ typedef struct _GstAviDemux { guint main_stream; /* used for seeking */ + gboolean have_group_id; + guint group_id; + /* for streaming mode */ gboolean streaming; gboolean have_eos; diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c index 2739555986a87425f6060a4d058d8ccc4fab5fb7..c3b8772c69d5f65359a6fba86f73629d1cadee31 100644 --- a/gst/avi/gstavimux.c +++ b/gst/avi/gstavimux.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* based on: @@ -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 }, " + "format = (string) { YUY2, I420, BGR, BGRx, BGRA, GRAY8 }, " "width = (int) [ 16, 4096 ], " "height = (int) [ 16, 4096 ], " "framerate = (fraction) [ 0, MAX ]; " @@ -395,6 +395,7 @@ gst_avi_mux_vidsink_set_caps (GstPad * pad, GstCaps * vscaps) gint width, height; gint par_n, par_d; gboolean codec_data_in_headers = TRUE; + gboolean valid_caps = TRUE; avimux = GST_AVI_MUX (gst_pad_get_parent (pad)); @@ -476,7 +477,21 @@ gst_avi_mux_vidsink_set_caps (GstPad * pad, GstCaps * vscaps) avipad->vids.compression = GST_MAKE_FOURCC ('I', '4', '2', '0'); avipad->vids.bit_cnt = 12; break; + case GST_VIDEO_FORMAT_GRAY8: + avipad->vids.compression = GST_MAKE_FOURCC ('Y', '8', '0', '0'); + avipad->vids.bit_cnt = 8; + break; + case GST_VIDEO_FORMAT_BGR: + avipad->vids.compression = GST_MAKE_FOURCC (0x00, 0x00, 0x00, 0x00); + avipad->vids.bit_cnt = 24; + break; + case GST_VIDEO_FORMAT_BGRx: + case GST_VIDEO_FORMAT_BGRA: + avipad->vids.compression = GST_MAKE_FOURCC (0x00, 0x00, 0x00, 0x00); + avipad->vids.bit_cnt = 32; + break; default: + valid_caps = FALSE; break; } } else { @@ -502,6 +517,8 @@ gst_avi_mux_vidsink_set_caps (GstPad * pad, GstCaps * vscaps) case 5: avipad->vids.compression = GST_MAKE_FOURCC ('D', 'X', '5', '0'); break; + default: + valid_caps = FALSE; } } else if (gst_structure_has_name (structure, "video/x-msmpeg")) { gint msmpegversion; @@ -567,6 +584,7 @@ gst_avi_mux_vidsink_set_caps (GstPad * pad, GstCaps * vscaps) case 3: avipad->vids.compression = GST_MAKE_FOURCC ('W', 'M', 'V', '3'); default: + valid_caps = FALSE; break; } } @@ -574,9 +592,11 @@ gst_avi_mux_vidsink_set_caps (GstPad * pad, GstCaps * vscaps) avipad->vids.compression = GST_MAKE_FOURCC ('M', 'J', '2', 'C'); } else if (!strcmp (mimetype, "video/x-vp8")) { avipad->vids.compression = GST_MAKE_FOURCC ('V', 'P', '8', '0'); + } else { + valid_caps = FALSE; } - if (!avipad->vids.compression) + if (!valid_caps) goto refuse_caps; } @@ -1291,7 +1311,7 @@ gst_avi_mux_riff_get_avi_header (GstAviMux * avimux) if (audpad->auds_codec_data) { gst_buffer_map (audpad->auds_codec_data, &map, GST_MAP_READ); hdl &= gst_byte_writer_put_data (&bw, map.data, map.size); - gst_buffer_unmap (vidpad->vids_codec_data, &map); + gst_buffer_unmap (audpad->auds_codec_data, &map); } gst_avi_mux_end_chunk (&bw, strf); } @@ -1906,6 +1926,68 @@ gst_avi_mux_send_pad_data (GstAviMux * avimux, gulong num_bytes) return gst_pad_push (avimux->srcpad, buffer); } +#define gst_avi_mux_is_uncompressed(fourcc) \ + (fourcc == GST_RIFF_DIB || \ + fourcc == GST_RIFF_rgb || \ + fourcc == GST_RIFF_RGB || fourcc == GST_RIFF_RAW) + +/* + * Helper for gst_avi_demux_invert() + */ +static inline void +swap_line (guint8 * d1, guint8 * d2, guint8 * tmp, gint bytes) +{ + memcpy (tmp, d1, bytes); + memcpy (d1, d2, bytes); + memcpy (d2, tmp, bytes); +} + +/* + * Invert DIB buffers... Takes existing buffer and + * returns either the buffer or a new one (with old + * one dereferenced). + * FFMPEG does this by simply negating the height in the header. Should we? + * FIXME: can't we preallocate tmp? and remember stride, bpp? + * this could be done in do_one_buffer() I suppose + */ +static GstBuffer * +gst_avi_mux_invert (GstAviPad * avipad, GstBuffer * buf) +{ + gint y, w, h; + gint bpp, stride; + guint8 *tmp = NULL; + GstMapInfo map; + + GstAviVideoPad *vidpad = (GstAviVideoPad *) avipad; + + h = vidpad->vids.height; + w = vidpad->vids.width; + bpp = vidpad->vids.bit_cnt ? vidpad->vids.bit_cnt : 8; + stride = GST_ROUND_UP_4 (w * (bpp / 8)); + + buf = gst_buffer_make_writable (buf); + + gst_buffer_map (buf, &map, GST_MAP_READWRITE); + if (map.size < (stride * h)) { + GST_WARNING ("Buffer is smaller than reported Width x Height x Depth"); + gst_buffer_unmap (buf, &map); + return buf; + } + + tmp = g_malloc (stride); + + for (y = 0; y < h / 2; y++) { + swap_line (map.data + stride * y, map.data + stride * (h - 1 - y), tmp, + stride); + } + + g_free (tmp); + + gst_buffer_unmap (buf, &map); + + return buf; +} + /* do buffer */ static GstFlowReturn gst_avi_mux_do_buffer (GstAviMux * avimux, GstAviPad * avipad) @@ -1928,6 +2010,7 @@ gst_avi_mux_do_buffer (GstAviMux * avimux, GstAviPad * avipad) GstAviVideoPad *vidpad = (GstAviVideoPad *) avipad; if (vidpad->prepend_buffer) { + /* Keep a reference to data until we copy the timestamps, then release it */ GstBuffer *newdata = gst_buffer_append (vidpad->prepend_buffer, gst_buffer_ref (data)); gst_buffer_copy_into (newdata, data, GST_BUFFER_COPY_TIMESTAMPS, 0, -1); @@ -1936,11 +2019,16 @@ gst_avi_mux_do_buffer (GstAviMux * avimux, GstAviPad * avipad) data = newdata; vidpad->prepend_buffer = NULL; } + + /* DIB buffers are stored topdown (I don't know why) */ + if (gst_avi_mux_is_uncompressed (avipad->hdr.fcc_handler)) { + data = gst_avi_mux_invert (avipad, data); + } } if (avimux->restart) { if ((res = gst_avi_mux_restart_file (avimux)) != GST_FLOW_OK) - return res; + goto done; } datasize = gst_buffer_get_size (data); @@ -1950,10 +2038,10 @@ gst_avi_mux_do_buffer (GstAviMux * avimux, GstAviPad * avipad) datasize > GST_AVI_MAX_SIZE) { if (avimux->enable_large_avi) { if ((res = gst_avi_mux_bigfile (avimux, FALSE)) != GST_FLOW_OK) - return res; + goto done; } else { if ((res = gst_avi_mux_restart_file (avimux)) != GST_FLOW_OK) - return res; + goto done; } } @@ -1970,8 +2058,10 @@ gst_avi_mux_do_buffer (GstAviMux * avimux, GstAviPad * avipad) avimux->data_size += total_size; } - if (G_UNLIKELY (avipad->hook)) + if (G_UNLIKELY (avipad->hook)) { + gst_buffer_ref (data); avipad->hook (avimux, avipad, data); + } /* the suggested buffer size is the max frame size */ if (avipad->hdr.bufsize < datasize) @@ -2003,19 +2093,23 @@ gst_avi_mux_do_buffer (GstAviMux * avimux, GstAviPad * avipad) GST_LOG_OBJECT (avimux, "pushing buffers: head, data"); if ((res = gst_pad_push (avimux->srcpad, header)) != GST_FLOW_OK) - return res; + goto done; + + gst_buffer_ref (data); if ((res = gst_pad_push (avimux->srcpad, data)) != GST_FLOW_OK) - return res; + goto done; if (pad_bytes) { if ((res = gst_avi_mux_send_pad_data (avimux, pad_bytes)) != GST_FLOW_OK) - return res; + goto done; } /* if any push above fails, we're in trouble with file consistency anyway */ avimux->total_data += total_size; avimux->idx_offset += total_size; +done: + gst_buffer_unref (data); return res; } @@ -2037,9 +2131,6 @@ gst_avi_mux_do_one_buffer (GstAviMux * avimux) if (!avipad->collect) continue; - if (!avipad->hdr.fcc_handler) - goto not_negotiated; - buffer = gst_collect_pads_peek (avimux->collect, avipad->collect); if (!buffer) continue; @@ -2082,13 +2173,6 @@ gst_avi_mux_do_one_buffer (GstAviMux * avimux) return GST_FLOW_EOS; } - /* ERRORS */ -not_negotiated: - { - GST_ELEMENT_ERROR (avimux, CORE, NEGOTIATION, (NULL), - ("pad %s not negotiated", GST_PAD_NAME (avipad->collect->pad))); - return GST_FLOW_NOT_NEGOTIATED; - } } static GstFlowReturn diff --git a/gst/avi/gstavimux.h b/gst/avi/gstavimux.h index f1ce70635ea816a559e95d34044a866b85360c47..6a4135fdab2e05517ceaa066889b4481fad1ee05 100644 --- a/gst/avi/gstavimux.h +++ b/gst/avi/gstavimux.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/avi/gstavisubtitle.c b/gst/avi/gstavisubtitle.c index 0cd2f35f52c9e64315fdd62407e91489282241a8..7b2fa2dd2077e7e85c45556abede1800707f6756 100644 --- a/gst/avi/gstavisubtitle.c +++ b/gst/avi/gstavisubtitle.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/cutter/Makefile.in b/gst/cutter/Makefile.in index 32d7cc4d506c43aa92e63b175b23c32f34bdede1..f4aab63d4d9beec73fdeb82496e79faa2d8746aa 100644 --- a/gst/cutter/Makefile.in +++ b/gst/cutter/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/cutter -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -135,10 +161,23 @@ libgstcutter_la_OBJECTS = $(am_libgstcutter_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstcutter_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstcutter_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstcutter_la_CFLAGS) $(CFLAGS) \ $(libgstcutter_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -151,20 +190,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstcutter_la_SOURCES) DIST_SOURCES = $(libgstcutter_la_SOURCES) am__can_run_installinfo = \ @@ -173,6 +208,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -340,6 +392,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -542,6 +595,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -568,12 +622,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstcutter.la: $(libgstcutter_la_OBJECTS) $(libgstcutter_la_DEPENDENCIES) $(EXTRA_libgstcutter_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstcutter_la_LINK) -rpath $(plugindir) $(libgstcutter_la_OBJECTS) $(libgstcutter_la_LIBADD) $(LIBS) @@ -586,22 +643,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcutter_la-gstcutter.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -619,26 +679,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -650,15 +699,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -667,6 +712,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -811,19 +871,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/cutter/gstcutter.c b/gst/cutter/gstcutter.c index 5c3001f45febf76f0c92209cefb41235ba00c2cd..2c373664c1cd433df3b75d77fb041f1f723c48e6 100644 --- a/gst/cutter/gstcutter.c +++ b/gst/cutter/gstcutter.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-cutter diff --git a/gst/cutter/gstcutter.h b/gst/cutter/gstcutter.h index 47c1750dbfa182e80a5b1d358bf705f38e6023b4..3875f8f12907fb532ec9284185d315bafd38c026 100644 --- a/gst/cutter/gstcutter.h +++ b/gst/cutter/gstcutter.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/debugutils/Makefile.in b/gst/debugutils/Makefile.in index c12ea06b96228feda5c393018b3ee6d1fca231c3..f9f48bafa55717cdb37a2fa090d7e321b3eb6333 100644 --- a/gst/debugutils/Makefile.in +++ b/gst/debugutils/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/debugutils -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -140,6 +166,7 @@ libgstdebug_la_OBJECTS = $(am_libgstdebug_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstdebug_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstdebug_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstdebug_la_CFLAGS) $(CFLAGS) \ @@ -155,6 +182,18 @@ libgstnavigationtest_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstnavigationtest_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstnavigationtest_la_CFLAGS) \ $(CFLAGS) $(libgstnavigationtest_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -167,20 +206,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstdebug_la_SOURCES) $(libgstnavigationtest_la_SOURCES) DIST_SOURCES = $(libgstdebug_la_SOURCES) \ $(libgstnavigationtest_la_SOURCES) @@ -190,6 +225,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -357,6 +409,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -591,6 +644,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -617,14 +671,18 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstdebug.la: $(libgstdebug_la_OBJECTS) $(libgstdebug_la_DEPENDENCIES) $(EXTRA_libgstdebug_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstdebug_la_LINK) -rpath $(plugindir) $(libgstdebug_la_OBJECTS) $(libgstdebug_la_LIBADD) $(LIBS) + libgstnavigationtest.la: $(libgstnavigationtest_la_OBJECTS) $(libgstnavigationtest_la_DEPENDENCIES) $(EXTRA_libgstnavigationtest_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstnavigationtest_la_LINK) -rpath $(plugindir) $(libgstnavigationtest_la_OBJECTS) $(libgstnavigationtest_la_LIBADD) $(LIBS) @@ -648,22 +706,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstnavigationtest_la-gstnavigationtest.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -758,26 +819,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -789,15 +839,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -806,6 +852,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -950,19 +1011,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/debugutils/breakmydata.c b/gst/debugutils/breakmydata.c index 412a36295ee49c128368f214a815d0bf02483662..c7306b10d17c6d4ef39dae81722e9afb906ef965 100644 --- a/gst/debugutils/breakmydata.c +++ b/gst/debugutils/breakmydata.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-breakmydata diff --git a/gst/debugutils/cpureport.c b/gst/debugutils/cpureport.c index b4d6c043a472a2ff79431f7b0e7af5aefe70c03c..85cc294780bf0d2fdb1e0384395106be16dfb96f 100644 --- a/gst/debugutils/cpureport.c +++ b/gst/debugutils/cpureport.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/debugutils/cpureport.h b/gst/debugutils/cpureport.h index d1a0966b6f7aaa0d77177e720e2d2322a3e9fa38..35055598d441c36eafa635711eabeb37b5311f16 100644 --- a/gst/debugutils/cpureport.h +++ b/gst/debugutils/cpureport.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_CPU_REPORT_H__ diff --git a/gst/debugutils/gstcapsdebug.h b/gst/debugutils/gstcapsdebug.h index 1f3c070e6769be731d24a37b71630517c098a819..9d0930dcc6a5c9c7ecffc19126114c16b8309bd2 100644 --- a/gst/debugutils/gstcapsdebug.h +++ b/gst/debugutils/gstcapsdebug.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GST_CAPS_DEBUG_H_ diff --git a/gst/debugutils/gstdebug.c b/gst/debugutils/gstdebug.c index cf78ea3903fd59a3be835441c7cd04984a36edd0..a56aa9fa0368771225b3065f703518054cdf77ca 100644 --- a/gst/debugutils/gstdebug.c +++ b/gst/debugutils/gstdebug.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/debugutils/gstnavigationtest.c b/gst/debugutils/gstnavigationtest.c index a8f46ecf85c244009557f1e5911ab2d81271afc5..de98900bea959973b1d6ed4360f1cc05a0228e2b 100644 --- a/gst/debugutils/gstnavigationtest.c +++ b/gst/debugutils/gstnavigationtest.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/debugutils/gstnavigationtest.h b/gst/debugutils/gstnavigationtest.h index deff63840dafe65f610a17a4d12690f23a76dee1..f1cf458bb5040f30751404b01355444e1c8fee69 100644 --- a/gst/debugutils/gstnavigationtest.h +++ b/gst/debugutils/gstnavigationtest.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/debugutils/gstnavseek.c b/gst/debugutils/gstnavseek.c index 6b036badbd0988a1f35216fad9c9d98089cf0bd7..02b4c0c09e8cb3931c8b4ddbf2a5ef77cbbe2025 100644 --- a/gst/debugutils/gstnavseek.c +++ b/gst/debugutils/gstnavseek.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/debugutils/gstnavseek.h b/gst/debugutils/gstnavseek.h index af7e9d21fee9b728aa21c29be4169f342b171db7..1b9c924444588ea8536613d866684e9c4fbe4dd5 100644 --- a/gst/debugutils/gstnavseek.h +++ b/gst/debugutils/gstnavseek.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/debugutils/gstpushfilesrc.c b/gst/debugutils/gstpushfilesrc.c index 4a5a4c6dd8f2762350dfd39bb0b18cbb5e3f8f0d..435d18515feca7e06002859893e5f1b279063414 100644 --- a/gst/debugutils/gstpushfilesrc.c +++ b/gst/debugutils/gstpushfilesrc.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/debugutils/gstpushfilesrc.h b/gst/debugutils/gstpushfilesrc.h index d9333444bd2614fc1cc9d63decc3a3bfd53d4848..6013cc8780830ecf19dcee6fb9af306506d3048c 100644 --- a/gst/debugutils/gstpushfilesrc.h +++ b/gst/debugutils/gstpushfilesrc.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_PUSH_FILE_SRC_H__ diff --git a/gst/debugutils/gsttaginject.c b/gst/debugutils/gsttaginject.c index 33de83fc2903ac4996e627e424e765013f207c50..b9b27273db6e5f3424e60bc4a7a5fa159193382c 100644 --- a/gst/debugutils/gsttaginject.c +++ b/gst/debugutils/gsttaginject.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-taginject diff --git a/gst/debugutils/gsttaginject.h b/gst/debugutils/gsttaginject.h index 8e8de1eecdde7f57f607bcebb301cb35df60b0bc..a5459275f01cf07c35a41e080963f539844b13e5 100644 --- a/gst/debugutils/gsttaginject.h +++ b/gst/debugutils/gsttaginject.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/debugutils/progressreport.c b/gst/debugutils/progressreport.c index 18e14373e60d19614288214b23bdbccd7cb3c52f..859e4b950c5040b8a36becb141e9833faf0d02d6 100644 --- a/gst/debugutils/progressreport.c +++ b/gst/debugutils/progressreport.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/debugutils/progressreport.h b/gst/debugutils/progressreport.h index 0d501499b725d71721d42f7b957436bf34e465a6..c46ac099dfc642fdc4622e7db9adbf76bb16de19 100644 --- a/gst/debugutils/progressreport.h +++ b/gst/debugutils/progressreport.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_PROGRESS_REPORT_H__ diff --git a/gst/debugutils/rndbuffersize.c b/gst/debugutils/rndbuffersize.c index 68a2705103054ffcbbbe50921e7171365dfb9fad..6259579f05b5a1e0f87950e649376342dba741c4 100644 --- a/gst/debugutils/rndbuffersize.c +++ b/gst/debugutils/rndbuffersize.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-rndbuffersize diff --git a/gst/debugutils/testplugin.c b/gst/debugutils/testplugin.c index c201982372a235bf5a84defc6c2ae6d63d108239..7d104cd40e531b1c0c1815d4bbe04b2b3a13dad3 100644 --- a/gst/debugutils/testplugin.c +++ b/gst/debugutils/testplugin.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/debugutils/tests.c b/gst/debugutils/tests.c index 4d2a4693ea35478b6b28242e1ed1ad9e9ff05212..d318664a9f67165b76fcfd019d93e5cb9d4d71cd 100644 --- a/gst/debugutils/tests.c +++ b/gst/debugutils/tests.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/debugutils/tests.h b/gst/debugutils/tests.h index 9926af62b03ebacd6b092b859cd194002d757c6b..c8fa088cbd096ad6b9a9b3d67d0d7b5e2df59af9 100644 --- a/gst/debugutils/tests.h +++ b/gst/debugutils/tests.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/gst.h> diff --git a/gst/deinterlace/Makefile.in b/gst/deinterlace/Makefile.in index e9ecc089e45888e937c373ee9dbfb2c9e1f82613..e9c7fa6f8c845e0660a03e77430992a06d6c3b44 100644 --- a/gst/deinterlace/Makefile.in +++ b/gst/deinterlace/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -39,23 +38,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -75,8 +102,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/common/orc.mak +DIST_COMMON = $(top_srcdir)/common/orc.mak $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/depcomp $(noinst_HEADERS) subdir = gst/deinterlace ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -84,7 +111,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -153,16 +179,20 @@ am__DEPENDENCIES_1 = libgstdeinterlace_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) +am__dirstamp = $(am__leading_dot)dirstamp am_libgstdeinterlace_la_OBJECTS = \ libgstdeinterlace_la-gstdeinterlace.lo \ libgstdeinterlace_la-gstdeinterlacemethod.lo \ - libgstdeinterlace_la-tomsmocomp.lo \ - libgstdeinterlace_la-greedy.lo libgstdeinterlace_la-greedyh.lo \ - libgstdeinterlace_la-vfir.lo libgstdeinterlace_la-weavetff.lo \ - libgstdeinterlace_la-weavebff.lo libgstdeinterlace_la-weave.lo \ - libgstdeinterlace_la-linear.lo \ - libgstdeinterlace_la-linearblend.lo \ - libgstdeinterlace_la-scalerbob.lo + tvtime/libgstdeinterlace_la-tomsmocomp.lo \ + tvtime/libgstdeinterlace_la-greedy.lo \ + tvtime/libgstdeinterlace_la-greedyh.lo \ + tvtime/libgstdeinterlace_la-vfir.lo \ + tvtime/libgstdeinterlace_la-weavetff.lo \ + tvtime/libgstdeinterlace_la-weavebff.lo \ + tvtime/libgstdeinterlace_la-weave.lo \ + tvtime/libgstdeinterlace_la-linear.lo \ + tvtime/libgstdeinterlace_la-linearblend.lo \ + tvtime/libgstdeinterlace_la-scalerbob.lo am__objects_1 = libgstdeinterlace_la-tmp-orc.lo nodist_libgstdeinterlace_la_OBJECTS = $(am__objects_1) libgstdeinterlace_la_OBJECTS = $(am_libgstdeinterlace_la_OBJECTS) \ @@ -170,10 +200,23 @@ libgstdeinterlace_la_OBJECTS = $(am_libgstdeinterlace_la_OBJECTS) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstdeinterlace_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) \ $(libgstdeinterlace_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -186,20 +229,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstdeinterlace_la_SOURCES) \ $(nodist_libgstdeinterlace_la_SOURCES) DIST_SOURCES = $(libgstdeinterlace_la_SOURCES) @@ -209,6 +248,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -376,6 +432,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -633,6 +690,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -659,52 +717,86 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } +tvtime/$(am__dirstamp): + @$(MKDIR_P) tvtime + @: > tvtime/$(am__dirstamp) +tvtime/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tvtime/$(DEPDIR) + @: > tvtime/$(DEPDIR)/$(am__dirstamp) +tvtime/libgstdeinterlace_la-tomsmocomp.lo: tvtime/$(am__dirstamp) \ + tvtime/$(DEPDIR)/$(am__dirstamp) +tvtime/libgstdeinterlace_la-greedy.lo: tvtime/$(am__dirstamp) \ + tvtime/$(DEPDIR)/$(am__dirstamp) +tvtime/libgstdeinterlace_la-greedyh.lo: tvtime/$(am__dirstamp) \ + tvtime/$(DEPDIR)/$(am__dirstamp) +tvtime/libgstdeinterlace_la-vfir.lo: tvtime/$(am__dirstamp) \ + tvtime/$(DEPDIR)/$(am__dirstamp) +tvtime/libgstdeinterlace_la-weavetff.lo: tvtime/$(am__dirstamp) \ + tvtime/$(DEPDIR)/$(am__dirstamp) +tvtime/libgstdeinterlace_la-weavebff.lo: tvtime/$(am__dirstamp) \ + tvtime/$(DEPDIR)/$(am__dirstamp) +tvtime/libgstdeinterlace_la-weave.lo: tvtime/$(am__dirstamp) \ + tvtime/$(DEPDIR)/$(am__dirstamp) +tvtime/libgstdeinterlace_la-linear.lo: tvtime/$(am__dirstamp) \ + tvtime/$(DEPDIR)/$(am__dirstamp) +tvtime/libgstdeinterlace_la-linearblend.lo: tvtime/$(am__dirstamp) \ + tvtime/$(DEPDIR)/$(am__dirstamp) +tvtime/libgstdeinterlace_la-scalerbob.lo: tvtime/$(am__dirstamp) \ + tvtime/$(DEPDIR)/$(am__dirstamp) + libgstdeinterlace.la: $(libgstdeinterlace_la_OBJECTS) $(libgstdeinterlace_la_DEPENDENCIES) $(EXTRA_libgstdeinterlace_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstdeinterlace_la_LINK) -rpath $(plugindir) $(libgstdeinterlace_la_OBJECTS) $(libgstdeinterlace_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) + -rm -f tvtime/*.$(OBJEXT) + -rm -f tvtime/*.lo distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-greedy.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-greedyh.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-gstdeinterlace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-gstdeinterlacemethod.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-linear.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-linearblend.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-scalerbob.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-tmp-orc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-tomsmocomp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-vfir.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-weave.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-weavebff.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdeinterlace_la-weavetff.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tvtime/$(DEPDIR)/libgstdeinterlace_la-greedy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tvtime/$(DEPDIR)/libgstdeinterlace_la-greedyh.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tvtime/$(DEPDIR)/libgstdeinterlace_la-linear.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tvtime/$(DEPDIR)/libgstdeinterlace_la-linearblend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tvtime/$(DEPDIR)/libgstdeinterlace_la-scalerbob.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tvtime/$(DEPDIR)/libgstdeinterlace_la-tomsmocomp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tvtime/$(DEPDIR)/libgstdeinterlace_la-vfir.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tvtime/$(DEPDIR)/libgstdeinterlace_la-weave.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tvtime/$(DEPDIR)/libgstdeinterlace_la-weavebff.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tvtime/$(DEPDIR)/libgstdeinterlace_la-weavetff.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -723,75 +815,75 @@ libgstdeinterlace_la-gstdeinterlacemethod.lo: gstdeinterlacemethod.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-gstdeinterlacemethod.lo `test -f 'gstdeinterlacemethod.c' || echo '$(srcdir)/'`gstdeinterlacemethod.c -libgstdeinterlace_la-tomsmocomp.lo: tvtime/tomsmocomp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-tomsmocomp.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-tomsmocomp.Tpo -c -o libgstdeinterlace_la-tomsmocomp.lo `test -f 'tvtime/tomsmocomp.c' || echo '$(srcdir)/'`tvtime/tomsmocomp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdeinterlace_la-tomsmocomp.Tpo $(DEPDIR)/libgstdeinterlace_la-tomsmocomp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/tomsmocomp.c' object='libgstdeinterlace_la-tomsmocomp.lo' libtool=yes @AMDEPBACKSLASH@ +tvtime/libgstdeinterlace_la-tomsmocomp.lo: tvtime/tomsmocomp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT tvtime/libgstdeinterlace_la-tomsmocomp.lo -MD -MP -MF tvtime/$(DEPDIR)/libgstdeinterlace_la-tomsmocomp.Tpo -c -o tvtime/libgstdeinterlace_la-tomsmocomp.lo `test -f 'tvtime/tomsmocomp.c' || echo '$(srcdir)/'`tvtime/tomsmocomp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tvtime/$(DEPDIR)/libgstdeinterlace_la-tomsmocomp.Tpo tvtime/$(DEPDIR)/libgstdeinterlace_la-tomsmocomp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/tomsmocomp.c' object='tvtime/libgstdeinterlace_la-tomsmocomp.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-tomsmocomp.lo `test -f 'tvtime/tomsmocomp.c' || echo '$(srcdir)/'`tvtime/tomsmocomp.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o tvtime/libgstdeinterlace_la-tomsmocomp.lo `test -f 'tvtime/tomsmocomp.c' || echo '$(srcdir)/'`tvtime/tomsmocomp.c -libgstdeinterlace_la-greedy.lo: tvtime/greedy.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-greedy.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-greedy.Tpo -c -o libgstdeinterlace_la-greedy.lo `test -f 'tvtime/greedy.c' || echo '$(srcdir)/'`tvtime/greedy.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdeinterlace_la-greedy.Tpo $(DEPDIR)/libgstdeinterlace_la-greedy.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/greedy.c' object='libgstdeinterlace_la-greedy.lo' libtool=yes @AMDEPBACKSLASH@ +tvtime/libgstdeinterlace_la-greedy.lo: tvtime/greedy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT tvtime/libgstdeinterlace_la-greedy.lo -MD -MP -MF tvtime/$(DEPDIR)/libgstdeinterlace_la-greedy.Tpo -c -o tvtime/libgstdeinterlace_la-greedy.lo `test -f 'tvtime/greedy.c' || echo '$(srcdir)/'`tvtime/greedy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tvtime/$(DEPDIR)/libgstdeinterlace_la-greedy.Tpo tvtime/$(DEPDIR)/libgstdeinterlace_la-greedy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/greedy.c' object='tvtime/libgstdeinterlace_la-greedy.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-greedy.lo `test -f 'tvtime/greedy.c' || echo '$(srcdir)/'`tvtime/greedy.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o tvtime/libgstdeinterlace_la-greedy.lo `test -f 'tvtime/greedy.c' || echo '$(srcdir)/'`tvtime/greedy.c -libgstdeinterlace_la-greedyh.lo: tvtime/greedyh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-greedyh.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-greedyh.Tpo -c -o libgstdeinterlace_la-greedyh.lo `test -f 'tvtime/greedyh.c' || echo '$(srcdir)/'`tvtime/greedyh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdeinterlace_la-greedyh.Tpo $(DEPDIR)/libgstdeinterlace_la-greedyh.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/greedyh.c' object='libgstdeinterlace_la-greedyh.lo' libtool=yes @AMDEPBACKSLASH@ +tvtime/libgstdeinterlace_la-greedyh.lo: tvtime/greedyh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT tvtime/libgstdeinterlace_la-greedyh.lo -MD -MP -MF tvtime/$(DEPDIR)/libgstdeinterlace_la-greedyh.Tpo -c -o tvtime/libgstdeinterlace_la-greedyh.lo `test -f 'tvtime/greedyh.c' || echo '$(srcdir)/'`tvtime/greedyh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tvtime/$(DEPDIR)/libgstdeinterlace_la-greedyh.Tpo tvtime/$(DEPDIR)/libgstdeinterlace_la-greedyh.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/greedyh.c' object='tvtime/libgstdeinterlace_la-greedyh.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-greedyh.lo `test -f 'tvtime/greedyh.c' || echo '$(srcdir)/'`tvtime/greedyh.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o tvtime/libgstdeinterlace_la-greedyh.lo `test -f 'tvtime/greedyh.c' || echo '$(srcdir)/'`tvtime/greedyh.c -libgstdeinterlace_la-vfir.lo: tvtime/vfir.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-vfir.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-vfir.Tpo -c -o libgstdeinterlace_la-vfir.lo `test -f 'tvtime/vfir.c' || echo '$(srcdir)/'`tvtime/vfir.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdeinterlace_la-vfir.Tpo $(DEPDIR)/libgstdeinterlace_la-vfir.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/vfir.c' object='libgstdeinterlace_la-vfir.lo' libtool=yes @AMDEPBACKSLASH@ +tvtime/libgstdeinterlace_la-vfir.lo: tvtime/vfir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT tvtime/libgstdeinterlace_la-vfir.lo -MD -MP -MF tvtime/$(DEPDIR)/libgstdeinterlace_la-vfir.Tpo -c -o tvtime/libgstdeinterlace_la-vfir.lo `test -f 'tvtime/vfir.c' || echo '$(srcdir)/'`tvtime/vfir.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tvtime/$(DEPDIR)/libgstdeinterlace_la-vfir.Tpo tvtime/$(DEPDIR)/libgstdeinterlace_la-vfir.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/vfir.c' object='tvtime/libgstdeinterlace_la-vfir.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-vfir.lo `test -f 'tvtime/vfir.c' || echo '$(srcdir)/'`tvtime/vfir.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o tvtime/libgstdeinterlace_la-vfir.lo `test -f 'tvtime/vfir.c' || echo '$(srcdir)/'`tvtime/vfir.c -libgstdeinterlace_la-weavetff.lo: tvtime/weavetff.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-weavetff.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-weavetff.Tpo -c -o libgstdeinterlace_la-weavetff.lo `test -f 'tvtime/weavetff.c' || echo '$(srcdir)/'`tvtime/weavetff.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdeinterlace_la-weavetff.Tpo $(DEPDIR)/libgstdeinterlace_la-weavetff.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/weavetff.c' object='libgstdeinterlace_la-weavetff.lo' libtool=yes @AMDEPBACKSLASH@ +tvtime/libgstdeinterlace_la-weavetff.lo: tvtime/weavetff.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT tvtime/libgstdeinterlace_la-weavetff.lo -MD -MP -MF tvtime/$(DEPDIR)/libgstdeinterlace_la-weavetff.Tpo -c -o tvtime/libgstdeinterlace_la-weavetff.lo `test -f 'tvtime/weavetff.c' || echo '$(srcdir)/'`tvtime/weavetff.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tvtime/$(DEPDIR)/libgstdeinterlace_la-weavetff.Tpo tvtime/$(DEPDIR)/libgstdeinterlace_la-weavetff.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/weavetff.c' object='tvtime/libgstdeinterlace_la-weavetff.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-weavetff.lo `test -f 'tvtime/weavetff.c' || echo '$(srcdir)/'`tvtime/weavetff.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o tvtime/libgstdeinterlace_la-weavetff.lo `test -f 'tvtime/weavetff.c' || echo '$(srcdir)/'`tvtime/weavetff.c -libgstdeinterlace_la-weavebff.lo: tvtime/weavebff.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-weavebff.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-weavebff.Tpo -c -o libgstdeinterlace_la-weavebff.lo `test -f 'tvtime/weavebff.c' || echo '$(srcdir)/'`tvtime/weavebff.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdeinterlace_la-weavebff.Tpo $(DEPDIR)/libgstdeinterlace_la-weavebff.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/weavebff.c' object='libgstdeinterlace_la-weavebff.lo' libtool=yes @AMDEPBACKSLASH@ +tvtime/libgstdeinterlace_la-weavebff.lo: tvtime/weavebff.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT tvtime/libgstdeinterlace_la-weavebff.lo -MD -MP -MF tvtime/$(DEPDIR)/libgstdeinterlace_la-weavebff.Tpo -c -o tvtime/libgstdeinterlace_la-weavebff.lo `test -f 'tvtime/weavebff.c' || echo '$(srcdir)/'`tvtime/weavebff.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tvtime/$(DEPDIR)/libgstdeinterlace_la-weavebff.Tpo tvtime/$(DEPDIR)/libgstdeinterlace_la-weavebff.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/weavebff.c' object='tvtime/libgstdeinterlace_la-weavebff.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-weavebff.lo `test -f 'tvtime/weavebff.c' || echo '$(srcdir)/'`tvtime/weavebff.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o tvtime/libgstdeinterlace_la-weavebff.lo `test -f 'tvtime/weavebff.c' || echo '$(srcdir)/'`tvtime/weavebff.c -libgstdeinterlace_la-weave.lo: tvtime/weave.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-weave.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-weave.Tpo -c -o libgstdeinterlace_la-weave.lo `test -f 'tvtime/weave.c' || echo '$(srcdir)/'`tvtime/weave.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdeinterlace_la-weave.Tpo $(DEPDIR)/libgstdeinterlace_la-weave.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/weave.c' object='libgstdeinterlace_la-weave.lo' libtool=yes @AMDEPBACKSLASH@ +tvtime/libgstdeinterlace_la-weave.lo: tvtime/weave.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT tvtime/libgstdeinterlace_la-weave.lo -MD -MP -MF tvtime/$(DEPDIR)/libgstdeinterlace_la-weave.Tpo -c -o tvtime/libgstdeinterlace_la-weave.lo `test -f 'tvtime/weave.c' || echo '$(srcdir)/'`tvtime/weave.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tvtime/$(DEPDIR)/libgstdeinterlace_la-weave.Tpo tvtime/$(DEPDIR)/libgstdeinterlace_la-weave.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/weave.c' object='tvtime/libgstdeinterlace_la-weave.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-weave.lo `test -f 'tvtime/weave.c' || echo '$(srcdir)/'`tvtime/weave.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o tvtime/libgstdeinterlace_la-weave.lo `test -f 'tvtime/weave.c' || echo '$(srcdir)/'`tvtime/weave.c -libgstdeinterlace_la-linear.lo: tvtime/linear.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-linear.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-linear.Tpo -c -o libgstdeinterlace_la-linear.lo `test -f 'tvtime/linear.c' || echo '$(srcdir)/'`tvtime/linear.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdeinterlace_la-linear.Tpo $(DEPDIR)/libgstdeinterlace_la-linear.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/linear.c' object='libgstdeinterlace_la-linear.lo' libtool=yes @AMDEPBACKSLASH@ +tvtime/libgstdeinterlace_la-linear.lo: tvtime/linear.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT tvtime/libgstdeinterlace_la-linear.lo -MD -MP -MF tvtime/$(DEPDIR)/libgstdeinterlace_la-linear.Tpo -c -o tvtime/libgstdeinterlace_la-linear.lo `test -f 'tvtime/linear.c' || echo '$(srcdir)/'`tvtime/linear.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tvtime/$(DEPDIR)/libgstdeinterlace_la-linear.Tpo tvtime/$(DEPDIR)/libgstdeinterlace_la-linear.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/linear.c' object='tvtime/libgstdeinterlace_la-linear.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-linear.lo `test -f 'tvtime/linear.c' || echo '$(srcdir)/'`tvtime/linear.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o tvtime/libgstdeinterlace_la-linear.lo `test -f 'tvtime/linear.c' || echo '$(srcdir)/'`tvtime/linear.c -libgstdeinterlace_la-linearblend.lo: tvtime/linearblend.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-linearblend.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-linearblend.Tpo -c -o libgstdeinterlace_la-linearblend.lo `test -f 'tvtime/linearblend.c' || echo '$(srcdir)/'`tvtime/linearblend.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdeinterlace_la-linearblend.Tpo $(DEPDIR)/libgstdeinterlace_la-linearblend.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/linearblend.c' object='libgstdeinterlace_la-linearblend.lo' libtool=yes @AMDEPBACKSLASH@ +tvtime/libgstdeinterlace_la-linearblend.lo: tvtime/linearblend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT tvtime/libgstdeinterlace_la-linearblend.lo -MD -MP -MF tvtime/$(DEPDIR)/libgstdeinterlace_la-linearblend.Tpo -c -o tvtime/libgstdeinterlace_la-linearblend.lo `test -f 'tvtime/linearblend.c' || echo '$(srcdir)/'`tvtime/linearblend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tvtime/$(DEPDIR)/libgstdeinterlace_la-linearblend.Tpo tvtime/$(DEPDIR)/libgstdeinterlace_la-linearblend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/linearblend.c' object='tvtime/libgstdeinterlace_la-linearblend.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-linearblend.lo `test -f 'tvtime/linearblend.c' || echo '$(srcdir)/'`tvtime/linearblend.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o tvtime/libgstdeinterlace_la-linearblend.lo `test -f 'tvtime/linearblend.c' || echo '$(srcdir)/'`tvtime/linearblend.c -libgstdeinterlace_la-scalerbob.lo: tvtime/scalerbob.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-scalerbob.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-scalerbob.Tpo -c -o libgstdeinterlace_la-scalerbob.lo `test -f 'tvtime/scalerbob.c' || echo '$(srcdir)/'`tvtime/scalerbob.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdeinterlace_la-scalerbob.Tpo $(DEPDIR)/libgstdeinterlace_la-scalerbob.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/scalerbob.c' object='libgstdeinterlace_la-scalerbob.lo' libtool=yes @AMDEPBACKSLASH@ +tvtime/libgstdeinterlace_la-scalerbob.lo: tvtime/scalerbob.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT tvtime/libgstdeinterlace_la-scalerbob.lo -MD -MP -MF tvtime/$(DEPDIR)/libgstdeinterlace_la-scalerbob.Tpo -c -o tvtime/libgstdeinterlace_la-scalerbob.lo `test -f 'tvtime/scalerbob.c' || echo '$(srcdir)/'`tvtime/scalerbob.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tvtime/$(DEPDIR)/libgstdeinterlace_la-scalerbob.Tpo tvtime/$(DEPDIR)/libgstdeinterlace_la-scalerbob.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tvtime/scalerbob.c' object='tvtime/libgstdeinterlace_la-scalerbob.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 $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o libgstdeinterlace_la-scalerbob.lo `test -f 'tvtime/scalerbob.c' || echo '$(srcdir)/'`tvtime/scalerbob.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -c -o tvtime/libgstdeinterlace_la-scalerbob.lo `test -f 'tvtime/scalerbob.c' || echo '$(srcdir)/'`tvtime/scalerbob.c libgstdeinterlace_la-tmp-orc.lo: tmp-orc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdeinterlace_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdeinterlace_la_CFLAGS) $(CFLAGS) -MT libgstdeinterlace_la-tmp-orc.lo -MD -MP -MF $(DEPDIR)/libgstdeinterlace_la-tmp-orc.Tpo -c -o libgstdeinterlace_la-tmp-orc.lo `test -f 'tmp-orc.c' || echo '$(srcdir)/'`tmp-orc.c @@ -805,27 +897,17 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs + -rm -rf tvtime/.libs tvtime/_libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -837,15 +919,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -854,6 +932,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -926,6 +1019,8 @@ clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f tvtime/$(DEPDIR)/$(am__dirstamp) + -rm -f tvtime/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -937,7 +1032,7 @@ clean-am: clean-generic clean-libtool clean-local \ clean-pluginLTLIBRARIES mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -rf ./$(DEPDIR) tvtime/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -983,7 +1078,7 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -rf ./$(DEPDIR) tvtime/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -1004,19 +1099,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: all check install install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-local clean-pluginLTLIBRARIES ctags \ - dist-hook distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-pluginLTLIBRARIES install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-local clean-pluginLTLIBRARIES \ + cscopelist-am ctags ctags-am dist-hook distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pluginLTLIBRARIES \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ uninstall-pluginLTLIBRARIES diff --git a/gst/deinterlace/gstdeinterlace.c b/gst/deinterlace/gstdeinterlace.c index 985b44129f2e5e4bcd0bdb8b4cdd343202d555a1..b9b687c862b0d33c0c0cec401d2313f0d4b1f193 100644 --- a/gst/deinterlace/gstdeinterlace.c +++ b/gst/deinterlace/gstdeinterlace.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -2363,7 +2363,11 @@ gst_deinterlace_do_bufferpool (GstDeinterlace * self, GstCaps * outcaps) gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max); else { pool = NULL; - size = GST_VIDEO_INFO_SIZE (&self->vinfo), min = max = 0; + size = GST_VIDEO_INFO_SIZE (&self->vinfo); + min = + MAX ((gst_deinterlace_method_get_fields_required (self->method) + + 1) / 2 + 1, 4); + max = 0; } if (pool == NULL) { @@ -2376,6 +2380,7 @@ gst_deinterlace_do_bufferpool (GstDeinterlace * self, GstCaps * outcaps) config = gst_buffer_pool_get_config (pool); gst_buffer_pool_config_set_params (config, outcaps, size, min, max); gst_buffer_pool_config_set_allocator (config, allocator, ¶ms); + gst_buffer_pool_config_add_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META); gst_buffer_pool_set_config (pool, config); /* now store */ @@ -2461,8 +2466,7 @@ gst_deinterlace_setcaps (GstDeinterlace * self, GstPad * pad, GstCaps * caps) "progressive", NULL); } - if (!gst_pad_set_caps (self->srcpad, srccaps)) - goto caps_not_accepted; + gst_pad_set_caps (self->srcpad, srccaps); if (fps_n != 0) { self->field_duration = gst_util_uint64_scale (GST_SECOND, fps_d, fps_n); @@ -2488,12 +2492,6 @@ invalid_caps: GST_ERROR_OBJECT (pad, "Invalid caps: %" GST_PTR_FORMAT, caps); return FALSE; } -caps_not_accepted: - { - GST_ERROR_OBJECT (pad, "Caps not accepted: %" GST_PTR_FORMAT, srccaps); - gst_caps_unref (srccaps); - return FALSE; - } no_bufferpool: { GST_ERROR_OBJECT (pad, "could not negotiate bufferpool"); @@ -2599,6 +2597,41 @@ gst_deinterlace_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) return res; } +static gboolean +gst_deinterlace_propose_allocation (GstDeinterlace * self, GstQuery * query) +{ + GstBufferPool *pool; + GstCaps *caps; + GstVideoInfo info; + guint size; + GstStructure *config; + + gst_query_parse_allocation (query, &caps, NULL); + + if (caps == NULL) + return FALSE; + + if (!gst_video_info_from_caps (&info, caps)) + return FALSE; + + size = GST_VIDEO_INFO_SIZE (&info); + + pool = gst_video_buffer_pool_new (); + + gst_query_add_allocation_pool (query, pool, size, 0, 0); + + config = gst_buffer_pool_get_config (pool); + gst_buffer_pool_config_set_params (config, caps, size, + (gst_deinterlace_method_get_fields_required (self->method) + 1) / 2 + 1, + 0); + gst_buffer_pool_set_config (pool, config); + + gst_object_unref (pool); + gst_query_add_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL); + + return TRUE; +} + static gboolean gst_deinterlace_sink_query (GstPad * pad, GstObject * parent, GstQuery * query) { @@ -2623,7 +2656,7 @@ gst_deinterlace_sink_query (GstPad * pad, GstObject * parent, GstQuery * query) if (self->passthrough) res = gst_pad_peer_query (self->srcpad, query); else - res = gst_pad_query_default (pad, parent, query); + res = gst_deinterlace_propose_allocation (self, query); break; default: res = gst_pad_query_default (pad, parent, query); diff --git a/gst/deinterlace/gstdeinterlace.h b/gst/deinterlace/gstdeinterlace.h index 3b8a3367282328f30488c9bb641a71342bc06760..5ca8960d1f55091e30cc78d41c29d3955c3f1405 100644 --- a/gst/deinterlace/gstdeinterlace.h +++ b/gst/deinterlace/gstdeinterlace.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_DEINTERLACE_H__ @@ -25,7 +25,7 @@ #include <gst/gst.h> #include <gst/video/video.h> #include <gst/video/gstvideopool.h> -#include <gst/video/gstvideofilter.h> +#include <gst/video/gstvideometa.h> #include "gstdeinterlacemethod.h" diff --git a/gst/deinterlace/gstdeinterlacemethod.c b/gst/deinterlace/gstdeinterlacemethod.c index e78aebcfdaceb590bab0da3d902cdc7b2ddfebaf..69a42464b7d0d08e564d0a213e91d24c20a870e8 100644 --- a/gst/deinterlace/gstdeinterlacemethod.c +++ b/gst/deinterlace/gstdeinterlacemethod.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -106,7 +106,6 @@ static void gst_deinterlace_method_setup_impl (GstDeinterlaceMethod * self, GstVideoInfo * vinfo) { - gint i; GstDeinterlaceMethodClass *klass = GST_DEINTERLACE_METHOD_GET_CLASS (self); self->vinfo = vinfo; @@ -116,14 +115,6 @@ gst_deinterlace_method_setup_impl (GstDeinterlaceMethod * self, if (GST_VIDEO_INFO_FORMAT (self->vinfo) == GST_VIDEO_FORMAT_UNKNOWN) return; - for (i = 0; i < 4; i++) { - self->width[i] = GST_VIDEO_INFO_COMP_WIDTH (vinfo, i); - self->height[i] = GST_VIDEO_INFO_COMP_HEIGHT (vinfo, i); - self->offset[i] = GST_VIDEO_INFO_COMP_OFFSET (vinfo, i); - self->row_stride[i] = GST_VIDEO_INFO_COMP_STRIDE (vinfo, i); - self->pixel_stride[i] = GST_VIDEO_INFO_COMP_PSTRIDE (vinfo, i); - } - switch (GST_VIDEO_INFO_FORMAT (self->vinfo)) { case GST_VIDEO_FORMAT_YUY2: self->deinterlace_frame = klass->deinterlace_frame_yuy2; @@ -300,16 +291,17 @@ gst_deinterlace_simple_method_supported (GstDeinterlaceMethodClass * mklass, static void gst_deinterlace_simple_method_interpolate_scanline_packed (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint stride) { - memcpy (out, scanlines->m1, self->parent.row_stride[0]); + memcpy (out, scanlines->m1, stride); } static void gst_deinterlace_simple_method_copy_scanline_packed (GstDeinterlaceSimpleMethod * - self, guint8 * out, const GstDeinterlaceScanlineData * scanlines) + self, guint8 * out, const GstDeinterlaceScanlineData * scanlines, + guint stride) { - memcpy (out, scanlines->m0, self->parent.row_stride[0]); + memcpy (out, scanlines->m0, stride); } static void @@ -320,43 +312,43 @@ gst_deinterlace_simple_method_deinterlace_frame_packed (GstDeinterlaceMethod * GstDeinterlaceSimpleMethod *self = GST_DEINTERLACE_SIMPLE_METHOD (method); GstDeinterlaceMethodClass *dm_class = GST_DEINTERLACE_METHOD_GET_CLASS (self); GstDeinterlaceScanlineData scanlines; - guint8 *dest; - const guint8 *field0, *field1, *field2, *fieldp; - guint cur_field_flags = history[cur_field_idx].flags; + guint cur_field_flags; gint i; - gint frame_height = GST_VIDEO_INFO_HEIGHT (self->parent.vinfo); - gint stride = self->parent.row_stride[0]; + gint frame_height, frame_width; + GstVideoFrame *framep, *frame0, *frame1, *frame2; g_assert (self->interpolate_scanline_packed != NULL); g_assert (self->copy_scanline_packed != NULL); - if (cur_field_idx > 0) { - fieldp = GST_VIDEO_FRAME_COMP_DATA (history[cur_field_idx - 1].frame, 0); - } else { - fieldp = NULL; - } + frame_height = GST_VIDEO_FRAME_HEIGHT (outframe); + frame_width = GST_VIDEO_FRAME_PLANE_STRIDE (outframe, 0); - dest = GST_VIDEO_FRAME_COMP_DATA (outframe, 0); + frame0 = history[cur_field_idx].frame; + frame_width = MIN (frame_width, GST_VIDEO_FRAME_PLANE_STRIDE (frame0, 0)); + cur_field_flags = history[cur_field_idx].flags; - field0 = GST_VIDEO_FRAME_COMP_DATA (history[cur_field_idx].frame, 0); + framep = (cur_field_idx > 0 ? history[cur_field_idx - 1].frame : NULL); + if (framep) + frame_width = MIN (frame_width, GST_VIDEO_FRAME_PLANE_STRIDE (framep, 0)); g_assert (dm_class->fields_required <= 4); - if (cur_field_idx + 1 < history_count) { - field1 = GST_VIDEO_FRAME_COMP_DATA (history[cur_field_idx + 1].frame, 0); - } else { - field1 = NULL; - } + frame1 = + (cur_field_idx + 1 < + history_count ? history[cur_field_idx + 1].frame : NULL); + if (frame1) + frame_width = MIN (frame_width, GST_VIDEO_FRAME_PLANE_STRIDE (frame1, 0)); - if (cur_field_idx + 2 < history_count) { - field2 = GST_VIDEO_FRAME_COMP_DATA (history[cur_field_idx + 2].frame, 0); - } else { - field2 = NULL; - } + frame2 = + (cur_field_idx + 2 < + history_count ? history[cur_field_idx + 2].frame : NULL); + if (frame2) + frame_width = MIN (frame_width, GST_VIDEO_FRAME_PLANE_STRIDE (frame2, 0)); #define CLAMP_LOW(i) (((i)<0) ? (i+2) : (i)) #define CLAMP_HI(i) (((i)>=(frame_height)) ? (i-2) : (i)) -#define LINE(x,i) ((x) + CLAMP_HI(CLAMP_LOW(i)) * (stride)) +#define LINE(x,i) (((guint8*)GST_VIDEO_FRAME_PLANE_DATA((x),0)) + CLAMP_HI(CLAMP_LOW(i)) * \ + GST_VIDEO_FRAME_PLANE_STRIDE((x),0)) #define LINE2(x,i) ((x) ? LINE(x,i) : NULL) for (i = 0; i < frame_height; i++) { @@ -365,142 +357,159 @@ gst_deinterlace_simple_method_deinterlace_frame_packed (GstDeinterlaceMethod * if (!((i & 1) ^ scanlines.bottom_field)) { /* copying */ - scanlines.tp = LINE2 (fieldp, i - 1); - scanlines.bp = LINE2 (fieldp, i + 1); + scanlines.tp = LINE2 (framep, i - 1); + scanlines.bp = LINE2 (framep, i + 1); - scanlines.tt0 = LINE2 (field0, (i - 2 >= 0) ? i - 2 : i); - scanlines.m0 = LINE2 (field0, i); - scanlines.bb0 = LINE2 (field0, (i + 2 < frame_height ? i + 2 : i)); + scanlines.tt0 = LINE2 (frame0, (i - 2 >= 0) ? i - 2 : i); + scanlines.m0 = LINE2 (frame0, i); + scanlines.bb0 = LINE2 (frame0, (i + 2 < frame_height ? i + 2 : i)); - scanlines.t1 = LINE2 (field1, i - 1); - scanlines.b1 = LINE2 (field1, i + 1); + scanlines.t1 = LINE2 (frame1, i - 1); + scanlines.b1 = LINE2 (frame1, i + 1); - scanlines.tt2 = LINE2 (field2, (i - 2 >= 0) ? i - 2 : i); - scanlines.m2 = LINE2 (field2, i); - scanlines.bb2 = LINE2 (field2, (i + 2 < frame_height ? i + 2 : i)); + scanlines.tt2 = LINE2 (frame2, (i - 2 >= 0) ? i - 2 : i); + scanlines.m2 = LINE2 (frame2, i); + scanlines.bb2 = LINE2 (frame2, (i + 2 < frame_height ? i + 2 : i)); - self->copy_scanline_packed (self, LINE (dest, i), &scanlines); + self->copy_scanline_packed (self, LINE (outframe, i), &scanlines, + frame_width); } else { /* interpolating */ - scanlines.ttp = LINE2 (fieldp, (i - 2 >= 0) ? i - 2 : i); - scanlines.mp = LINE2 (fieldp, i); - scanlines.bbp = LINE2 (fieldp, (i + 2 < frame_height ? i + 2 : i)); + scanlines.ttp = LINE2 (framep, (i - 2 >= 0) ? i - 2 : i); + scanlines.mp = LINE2 (framep, i); + scanlines.bbp = LINE2 (framep, (i + 2 < frame_height ? i + 2 : i)); - scanlines.t0 = LINE2 (field0, i - 1); - scanlines.b0 = LINE2 (field0, i + 1); + scanlines.t0 = LINE2 (frame0, i - 1); + scanlines.b0 = LINE2 (frame0, i + 1); - scanlines.tt1 = LINE2 (field1, (i - 2 >= 0) ? i - 2 : i); - scanlines.m1 = LINE2 (field1, i); - scanlines.bb1 = LINE2 (field1, (i + 2 < frame_height ? i + 2 : i)); + scanlines.tt1 = LINE2 (frame1, (i - 2 >= 0) ? i - 2 : i); + scanlines.m1 = LINE2 (frame1, i); + scanlines.bb1 = LINE2 (frame1, (i + 2 < frame_height ? i + 2 : i)); - scanlines.t2 = LINE2 (field2, i - 1); - scanlines.b2 = LINE2 (field2, i + 1); + scanlines.t2 = LINE2 (frame2, i - 1); + scanlines.b2 = LINE2 (frame2, i + 1); - self->interpolate_scanline_packed (self, LINE (dest, i), &scanlines); + self->interpolate_scanline_packed (self, LINE (outframe, i), &scanlines, + frame_width); } +#undef LINE +#undef LINE2 } } static void gst_deinterlace_simple_method_interpolate_scanline_planar_y (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m1, self->parent.row_stride[0]); + memcpy (out, scanlines->m1, size); } static void gst_deinterlace_simple_method_copy_scanline_planar_y (GstDeinterlaceSimpleMethod - * self, guint8 * out, const GstDeinterlaceScanlineData * scanlines) + * self, guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint + size) { - memcpy (out, scanlines->m0, self->parent.row_stride[0]); + memcpy (out, scanlines->m0, size); } static void gst_deinterlace_simple_method_interpolate_scanline_planar_u (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m1, self->parent.row_stride[1]); + memcpy (out, scanlines->m1, size); } static void gst_deinterlace_simple_method_copy_scanline_planar_u (GstDeinterlaceSimpleMethod - * self, guint8 * out, const GstDeinterlaceScanlineData * scanlines) + * self, guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint + size) { - memcpy (out, scanlines->m0, self->parent.row_stride[1]); + memcpy (out, scanlines->m0, size); } static void gst_deinterlace_simple_method_interpolate_scanline_planar_v (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m1, self->parent.row_stride[2]); + memcpy (out, scanlines->m1, size); } static void gst_deinterlace_simple_method_copy_scanline_planar_v (GstDeinterlaceSimpleMethod - * self, guint8 * out, const GstDeinterlaceScanlineData * scanlines) + * self, guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint + size) { - memcpy (out, scanlines->m0, self->parent.row_stride[2]); + memcpy (out, scanlines->m0, size); } static void gst_deinterlace_simple_method_deinterlace_frame_planar_plane - (GstDeinterlaceSimpleMethod * self, guint8 * dest, const guint8 * field0, - const guint8 * field1, const guint8 * field2, const guint8 * fieldp, - guint cur_field_flags, - gint plane, GstDeinterlaceSimpleMethodFunction copy_scanline, + (GstDeinterlaceSimpleMethod * self, GstVideoFrame * dest, + const GstVideoFrame * frame0, const GstVideoFrame * frame1, + const GstVideoFrame * frame2, const GstVideoFrame * framep, + guint cur_field_flags, gint plane, + GstDeinterlaceSimpleMethodFunction copy_scanline, GstDeinterlaceSimpleMethodFunction interpolate_scanline) { GstDeinterlaceScanlineData scanlines; gint i; - gint frame_height = self->parent.height[plane]; - gint stride = self->parent.row_stride[plane]; + gint frame_height, frame_width; + + frame_height = GST_VIDEO_FRAME_COMP_HEIGHT (dest, plane); + frame_width = GST_VIDEO_FRAME_COMP_WIDTH (dest, plane) * + GST_VIDEO_FRAME_COMP_PSTRIDE (dest, plane); g_assert (interpolate_scanline != NULL); g_assert (copy_scanline != NULL); +#define LINE(x,i) (((guint8*)GST_VIDEO_FRAME_PLANE_DATA((x),plane)) + CLAMP_HI(CLAMP_LOW(i)) * \ + GST_VIDEO_FRAME_PLANE_STRIDE((x),plane)) +#define LINE2(x,i) ((x) ? LINE(x,i) : NULL) + for (i = 0; i < frame_height; i++) { memset (&scanlines, 0, sizeof (scanlines)); scanlines.bottom_field = (cur_field_flags == PICTURE_INTERLACED_BOTTOM); if (!((i & 1) ^ scanlines.bottom_field)) { /* copying */ - scanlines.tp = LINE2 (fieldp, i - 1); - scanlines.bp = LINE2 (fieldp, i + 1); + scanlines.tp = LINE2 (framep, i - 1); + scanlines.bp = LINE2 (framep, i + 1); - scanlines.tt0 = LINE2 (field0, (i - 2 >= 0) ? i - 2 : i); - scanlines.m0 = LINE2 (field0, i); - scanlines.bb0 = LINE2 (field0, (i + 2 < frame_height ? i + 2 : i)); + scanlines.tt0 = LINE2 (frame0, (i - 2 >= 0) ? i - 2 : i); + scanlines.m0 = LINE2 (frame0, i); + scanlines.bb0 = LINE2 (frame0, (i + 2 < frame_height ? i + 2 : i)); - scanlines.t1 = LINE2 (field1, i - 1); - scanlines.b1 = LINE2 (field1, i + 1); + scanlines.t1 = LINE2 (frame1, i - 1); + scanlines.b1 = LINE2 (frame1, i + 1); - scanlines.tt2 = LINE2 (field2, (i - 2 >= 0) ? i - 2 : i); - scanlines.m2 = LINE2 (field2, i); - scanlines.bb2 = LINE2 (field2, (i + 2 < frame_height ? i + 2 : i)); + scanlines.tt2 = LINE2 (frame2, (i - 2 >= 0) ? i - 2 : i); + scanlines.m2 = LINE2 (frame2, i); + scanlines.bb2 = LINE2 (frame2, (i + 2 < frame_height ? i + 2 : i)); - copy_scanline (self, LINE (dest, i), &scanlines); + copy_scanline (self, LINE (dest, i), &scanlines, frame_width); } else { /* interpolating */ - scanlines.ttp = LINE2 (fieldp, (i - 2 >= 0) ? i - 2 : i); - scanlines.mp = LINE2 (fieldp, i); - scanlines.bbp = LINE2 (fieldp, (i + 2 < frame_height ? i + 2 : i)); + scanlines.ttp = LINE2 (framep, (i - 2 >= 0) ? i - 2 : i); + scanlines.mp = LINE2 (framep, i); + scanlines.bbp = LINE2 (framep, (i + 2 < frame_height ? i + 2 : i)); - scanlines.t0 = LINE2 (field0, i - 1); - scanlines.b0 = LINE2 (field0, i + 1); + scanlines.t0 = LINE2 (frame0, i - 1); + scanlines.b0 = LINE2 (frame0, i + 1); - scanlines.tt1 = LINE2 (field1, (i - 2 >= 0) ? i - 2 : i); - scanlines.m1 = LINE2 (field1, i); - scanlines.bb1 = LINE2 (field1, (i + 2 < frame_height ? i + 2 : i)); + scanlines.tt1 = LINE2 (frame1, (i - 2 >= 0) ? i - 2 : i); + scanlines.m1 = LINE2 (frame1, i); + scanlines.bb1 = LINE2 (frame1, (i + 2 < frame_height ? i + 2 : i)); - scanlines.t2 = LINE2 (field2, i - 1); - scanlines.b2 = LINE2 (field2, i + 1); + scanlines.t2 = LINE2 (frame2, i - 1); + scanlines.b2 = LINE2 (frame2, i + 1); - interpolate_scanline (self, LINE (dest, i), &scanlines); + interpolate_scanline (self, LINE (dest, i), &scanlines, frame_width); } +#undef LINE +#undef LINE2 } } @@ -511,8 +520,7 @@ gst_deinterlace_simple_method_deinterlace_frame_planar (GstDeinterlaceMethod * { GstDeinterlaceSimpleMethod *self = GST_DEINTERLACE_SIMPLE_METHOD (method); GstDeinterlaceMethodClass *dm_class = GST_DEINTERLACE_METHOD_GET_CLASS (self); - guint8 *out; - const guint8 *field0, *field1, *field2, *fieldp; + const GstVideoFrame *frame0, *frame1, *frame2, *framep; guint cur_field_flags = history[cur_field_idx].flags; gint i; GstDeinterlaceSimpleMethodFunction copy_scanline; @@ -529,30 +537,22 @@ gst_deinterlace_simple_method_deinterlace_frame_planar (GstDeinterlaceMethod * copy_scanline = self->copy_scanline_planar[i]; interpolate_scanline = self->interpolate_scanline_planar[i]; - out = GST_VIDEO_FRAME_PLANE_DATA (outframe, i); + framep = (cur_field_idx > 0 ? history[cur_field_idx - 1].frame : NULL); - fieldp = NULL; - if (cur_field_idx > 0) { - fieldp = GST_VIDEO_FRAME_PLANE_DATA (history[cur_field_idx - 1].frame, i); - } - - field0 = GST_VIDEO_FRAME_PLANE_DATA (history[cur_field_idx].frame, i); + frame0 = history[cur_field_idx].frame; g_assert (dm_class->fields_required <= 4); - field1 = NULL; - if (cur_field_idx + 1 < history_count) { - field1 = GST_VIDEO_FRAME_PLANE_DATA (history[cur_field_idx + 1].frame, i); - } - - field2 = NULL; - if (cur_field_idx + 2 < history_count) { - field2 = GST_VIDEO_FRAME_PLANE_DATA (history[cur_field_idx + 2].frame, i); - } + frame1 = + (cur_field_idx + 1 < + history_count ? history[cur_field_idx + 1].frame : NULL); + frame2 = + (cur_field_idx + 2 < + history_count ? history[cur_field_idx + 2].frame : NULL); - gst_deinterlace_simple_method_deinterlace_frame_planar_plane (self, out, - field0, field1, field2, fieldp, cur_field_flags, i, copy_scanline, - interpolate_scanline); + gst_deinterlace_simple_method_deinterlace_frame_planar_plane (self, + outframe, frame0, frame1, frame2, framep, cur_field_flags, i, + copy_scanline, interpolate_scanline); } } @@ -563,8 +563,7 @@ gst_deinterlace_simple_method_deinterlace_frame_nv12 (GstDeinterlaceMethod * { GstDeinterlaceSimpleMethod *self = GST_DEINTERLACE_SIMPLE_METHOD (method); GstDeinterlaceMethodClass *dm_class = GST_DEINTERLACE_METHOD_GET_CLASS (self); - guint8 *out; - const guint8 *field0, *field1, *field2, *fieldp; + const GstVideoFrame *frame0, *frame1, *frame2, *framep; guint cur_field_flags = history[cur_field_idx].flags; gint i; @@ -572,29 +571,21 @@ gst_deinterlace_simple_method_deinterlace_frame_nv12 (GstDeinterlaceMethod * g_assert (self->copy_scanline_packed != NULL); for (i = 0; i < 2; i++) { - out = GST_VIDEO_FRAME_PLANE_DATA (outframe, i); + framep = (cur_field_idx > 0 ? history[cur_field_idx - 1].frame : NULL); - fieldp = NULL; - if (cur_field_idx > 0) { - fieldp = GST_VIDEO_FRAME_PLANE_DATA (history[cur_field_idx - 1].frame, i); - } - - field0 = GST_VIDEO_FRAME_PLANE_DATA (history[cur_field_idx].frame, i); + frame0 = history[cur_field_idx].frame; g_assert (dm_class->fields_required <= 4); - field1 = NULL; - if (cur_field_idx + 1 < history_count) { - field1 = GST_VIDEO_FRAME_PLANE_DATA (history[cur_field_idx + 1].frame, i); - } - - field2 = NULL; - if (cur_field_idx + 2 < history_count) { - field2 = GST_VIDEO_FRAME_PLANE_DATA (history[cur_field_idx + 2].frame, i); - } + frame1 = + (cur_field_idx + 1 < + history_count ? history[cur_field_idx + 1].frame : NULL); + frame2 = + (cur_field_idx + 2 < + history_count ? history[cur_field_idx + 2].frame : NULL); - gst_deinterlace_simple_method_deinterlace_frame_planar_plane (self, out, - field0, field1, field2, fieldp, cur_field_flags, i, + gst_deinterlace_simple_method_deinterlace_frame_planar_plane (self, + outframe, frame0, frame1, frame2, framep, cur_field_flags, i, self->copy_scanline_packed, self->interpolate_scanline_packed); } } diff --git a/gst/deinterlace/gstdeinterlacemethod.h b/gst/deinterlace/gstdeinterlacemethod.h index 16d54ba4b6bfdc511cdf44dcdcf70575f0d55d4e..ee646328ee701c13f30d41a1f84cd709641c22b6 100644 --- a/gst/deinterlace/gstdeinterlacemethod.h +++ b/gst/deinterlace/gstdeinterlacemethod.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_DEINTERLACE_METHOD_H__ @@ -68,12 +68,6 @@ struct _GstDeinterlaceMethod { GstObject parent; GstVideoInfo *vinfo; - // FIXME - the stuff below can use vinfo and macros - gint width[4]; - gint height[4]; - gint offset[4]; - gint row_stride[4]; - gint pixel_stride[4]; GstDeinterlaceMethodDeinterlaceFunction deinterlace_frame; }; @@ -166,7 +160,7 @@ struct _GstDeinterlaceScanlineData { * All other values are NULL. */ -typedef void (*GstDeinterlaceSimpleMethodFunction) (GstDeinterlaceSimpleMethod *self, guint8 *out, const GstDeinterlaceScanlineData *scanlines); +typedef void (*GstDeinterlaceSimpleMethodFunction) (GstDeinterlaceSimpleMethod *self, guint8 *out, const GstDeinterlaceScanlineData *scanlines, guint size); struct _GstDeinterlaceSimpleMethod { GstDeinterlaceMethod parent; diff --git a/gst/deinterlace/tvtime-dist.c b/gst/deinterlace/tvtime-dist.c index 8f2b75f3aadf15719e6b65b21ac2b1878b0e95a9..aa4d66e4d30d6b470bcb4ca0680c71a7547fcd13 100644 --- a/gst/deinterlace/tvtime-dist.c +++ b/gst/deinterlace/tvtime-dist.c @@ -173,7 +173,11 @@ deinterlace_line_vfir (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, orc_int8 var37; orc_int8 var38; orc_int8 var39; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var40; +#else orc_union16 var40; +#endif orc_int8 var41; orc_union16 var42; orc_union16 var43; @@ -261,7 +265,11 @@ _backup_deinterlace_line_vfir (OrcExecutor * ORC_RESTRICT ex) orc_int8 var37; orc_int8 var38; orc_int8 var39; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var40; +#else orc_union16 var40; +#endif orc_int8 var41; orc_union16 var42; orc_union16 var43; @@ -347,6 +355,20 @@ deinterlace_line_vfir (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, if (!p_inited) { OrcProgram *p; +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 21, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, + 105, 110, 101, 95, 118, 102, 105, 114, 11, 1, 1, 12, 1, 1, 12, 1, + 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 4, 2, 0, 0, 0, + 14, 4, 1, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 3, 0, + 0, 0, 20, 2, 20, 2, 20, 2, 150, 32, 4, 150, 33, 8, 70, 32, + 32, 33, 150, 33, 5, 150, 34, 7, 70, 33, 33, 34, 93, 33, 33, 16, + 150, 34, 6, 93, 34, 34, 17, 98, 33, 33, 32, 70, 33, 33, 34, 70, + 33, 33, 18, 94, 33, 33, 19, 160, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_deinterlace_line_vfir); +#else p = orc_program_new (); orc_program_set_name (p, "deinterlace_line_vfir"); orc_program_set_backup_function (p, _backup_deinterlace_line_vfir); @@ -392,6 +414,7 @@ deinterlace_line_vfir (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, ORC_VAR_D1); orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1); +#endif orc_program_compile (p); c = orc_program_take_code (p); @@ -494,6 +517,15 @@ deinterlace_line_linear (guint8 * ORC_RESTRICT d1, if (!p_inited) { OrcProgram *p; +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 23, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, + 105, 110, 101, 95, 108, 105, 110, 101, 97, 114, 11, 1, 1, 12, 1, 1, + 12, 1, 1, 39, 0, 4, 5, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_deinterlace_line_linear); +#else p = orc_program_new (); orc_program_set_name (p, "deinterlace_line_linear"); orc_program_set_backup_function (p, _backup_deinterlace_line_linear); @@ -503,6 +535,7 @@ deinterlace_line_linear (guint8 * ORC_RESTRICT d1, orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, ORC_VAR_D1); +#endif orc_program_compile (p); c = orc_program_take_code (p); @@ -540,7 +573,11 @@ deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1, orc_int8 var35; orc_int8 var36; orc_int8 var37; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var38; +#else orc_union16 var38; +#endif orc_int8 var39; orc_union16 var40; orc_union16 var41; @@ -603,7 +640,11 @@ _backup_deinterlace_line_linear_blend (OrcExecutor * ORC_RESTRICT ex) orc_int8 var35; orc_int8 var36; orc_int8 var37; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var38; +#else orc_union16 var38; +#endif orc_int8 var39; orc_union16 var40; orc_union16 var41; @@ -668,6 +709,20 @@ deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1, if (!p_inited) { OrcProgram *p; +#if 1 + 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, + 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, + 16, 94, 32, 32, 16, 160, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_deinterlace_line_linear_blend); +#else p = orc_program_new (); orc_program_set_name (p, "deinterlace_line_linear_blend"); orc_program_set_backup_function (p, @@ -699,6 +754,7 @@ deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1, ORC_VAR_D1); orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1); +#endif orc_program_compile (p); c = orc_program_take_code (p); @@ -736,8 +792,16 @@ deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1, const orc_int8 *ORC_RESTRICT ptr5; const orc_int8 *ORC_RESTRICT ptr6; const orc_int8 *ORC_RESTRICT ptr7; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var44; +#else orc_int8 var44; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var45; +#else orc_int8 var45; +#endif orc_int8 var46; orc_int8 var47; orc_int8 var48; @@ -843,8 +907,16 @@ _backup_deinterlace_line_greedy (OrcExecutor * ORC_RESTRICT ex) const orc_int8 *ORC_RESTRICT ptr5; const orc_int8 *ORC_RESTRICT ptr6; const orc_int8 *ORC_RESTRICT ptr7; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var44; +#else orc_int8 var44; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var45; +#else orc_int8 var45; +#endif orc_int8 var46; orc_int8 var47; orc_int8 var48; @@ -955,6 +1027,23 @@ deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1, if (!p_inited) { OrcProgram *p; +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 23, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, + 105, 110, 101, 95, 103, 114, 101, 101, 100, 121, 11, 1, 1, 12, 1, 1, + 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 4, 128, 0, 0, 0, 16, + 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, + 1, 20, 1, 20, 1, 20, 1, 20, 1, 43, 32, 4, 43, 33, 7, 43, + 34, 6, 43, 35, 5, 39, 36, 35, 34, 53, 39, 32, 36, 55, 40, 32, + 36, 65, 37, 39, 40, 53, 39, 33, 36, 55, 40, 33, 36, 65, 38, 39, + 40, 68, 37, 37, 16, 68, 38, 38, 16, 41, 40, 37, 38, 36, 39, 33, + 40, 37, 40, 40, 32, 59, 41, 39, 40, 53, 43, 35, 34, 55, 42, 35, + 34, 35, 43, 43, 24, 67, 42, 42, 24, 55, 41, 41, 43, 53, 0, 41, + 42, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_deinterlace_line_greedy); +#else p = orc_program_new (); orc_program_set_name (p, "deinterlace_line_greedy"); orc_program_set_backup_function (p, _backup_deinterlace_line_greedy); @@ -1024,6 +1113,7 @@ deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1, ORC_VAR_T12, ORC_VAR_D1); orc_program_append_2 (p, "maxub", 0, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_T11, ORC_VAR_D1); +#endif orc_program_compile (p); c = orc_program_take_code (p); diff --git a/gst/deinterlace/tvtime/greedy.c b/gst/deinterlace/tvtime/greedy.c index 57751326d1bab2ddb87361d5ab36e99de9e78ccc..804ce8b4f459ce3fd3967af18215236da0fe6d98 100644 --- a/gst/deinterlace/tvtime/greedy.c +++ b/gst/deinterlace/tvtime/greedy.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -70,71 +70,67 @@ typedef GstDeinterlaceSimpleMethodClass GstDeinterlaceMethodGreedyLClass; static inline void deinterlace_greedy_interpolate_scanline_orc (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { guint max_comb = GST_DEINTERLACE_METHOD_GREEDY_L (self)->max_comb; if (scanlines->m1 == NULL || scanlines->mp == NULL) { - deinterlace_line_linear (out, scanlines->t0, scanlines->b0, - self->parent.row_stride[0]); + deinterlace_line_linear (out, scanlines->t0, scanlines->b0, size); } else { deinterlace_line_greedy (out, scanlines->m1, scanlines->t0, scanlines->b0, - scanlines->mp ? scanlines->mp : scanlines->m1, - max_comb, self->parent.row_stride[0]); + scanlines->mp ? scanlines->mp : scanlines->m1, max_comb, size); } } static inline void deinterlace_greedy_interpolate_scanline_orc_planar_u (GstDeinterlaceSimpleMethod - * self, guint8 * out, const GstDeinterlaceScanlineData * scanlines) + * self, guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint + size) { guint max_comb = GST_DEINTERLACE_METHOD_GREEDY_L (self)->max_comb; if (scanlines->m1 == NULL || scanlines->mp == NULL) { - deinterlace_line_linear (out, scanlines->t0, scanlines->b0, - self->parent.row_stride[1]); + deinterlace_line_linear (out, scanlines->t0, scanlines->b0, size); } else { deinterlace_line_greedy (out, scanlines->m1, scanlines->t0, scanlines->b0, - scanlines->mp ? scanlines->mp : scanlines->m1, - max_comb, self->parent.row_stride[1]); + scanlines->mp ? scanlines->mp : scanlines->m1, max_comb, size); } } static inline void deinterlace_greedy_interpolate_scanline_orc_planar_v (GstDeinterlaceSimpleMethod - * self, guint8 * out, const GstDeinterlaceScanlineData * scanlines) + * self, guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint + size) { guint max_comb = GST_DEINTERLACE_METHOD_GREEDY_L (self)->max_comb; if (scanlines->m1 == NULL || scanlines->mp == NULL) { - deinterlace_line_linear (out, scanlines->t0, scanlines->b0, - self->parent.row_stride[2]); + deinterlace_line_linear (out, scanlines->t0, scanlines->b0, size); } else { deinterlace_line_greedy (out, scanlines->m1, scanlines->t0, scanlines->b0, - scanlines->mp ? scanlines->mp : scanlines->m1, - max_comb, self->parent.row_stride[2]); + scanlines->mp ? scanlines->mp : scanlines->m1, max_comb, size); } } static void deinterlace_greedy_copy_scanline (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[0]); + memcpy (out, scanlines->m0, size); } static void deinterlace_greedy_copy_scanline_planar_u (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[1]); + memcpy (out, scanlines->m0, size); } static void deinterlace_greedy_copy_scanline_planar_v (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[2]); + memcpy (out, scanlines->m0, size); } G_DEFINE_TYPE (GstDeinterlaceMethodGreedyL, gst_deinterlace_method_greedy_l, diff --git a/gst/deinterlace/tvtime/greedyh.asm b/gst/deinterlace/tvtime/greedyh.asm index c710b4a1f2a8bd467ef9a3abe8fbd8770ae59c61..71a03dfc15e5d5e6b88565ce6315961b72ab2bf3 100644 --- a/gst/deinterlace/tvtime/greedyh.asm +++ b/gst/deinterlace/tvtime/greedyh.asm @@ -16,8 +16,8 @@ * * You should have received a copy of the GNU Library General Public * License aglong with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/deinterlace/tvtime/greedyh.c b/gst/deinterlace/tvtime/greedyh.c index c6bcddafda7189829d3f423e372f772deedc33ef..d769524dab930c9d33dc7f4cc292432a9512dc39 100644 --- a/gst/deinterlace/tvtime/greedyh.c +++ b/gst/deinterlace/tvtime/greedyh.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -726,9 +726,9 @@ deinterlace_frame_di_greedyh_packed (GstDeinterlaceMethod * method, GST_DEINTERLACE_METHOD_GREEDY_H_GET_CLASS (self); gint InfoIsOdd = 0; gint Line; - gint RowStride = method->row_stride[0]; + gint RowStride = GST_VIDEO_FRAME_COMP_STRIDE (outframe, 0); gint FieldHeight = GST_VIDEO_INFO_HEIGHT (method->vinfo) / 2; - gint Pitch = method->row_stride[0] * 2; + gint Pitch = RowStride * 2; const guint8 *L1; // ptr to Line1, of 3 const guint8 *L2; // ptr to Line2, the weave line const guint8 *L3; // ptr to Line3 @@ -912,9 +912,9 @@ deinterlace_frame_di_greedyh_planar (GstDeinterlaceMethod * method, for (i = 0; i < 3; i++) { InfoIsOdd = (history[cur_field_idx - 1].flags == PICTURE_INTERLACED_BOTTOM); - RowStride = method->row_stride[i]; - FieldHeight = method->height[i] / 2; - Pitch = method->row_stride[i] * 2; + RowStride = GST_VIDEO_FRAME_PLANE_STRIDE (outframe, i); + FieldHeight = GST_VIDEO_FRAME_HEIGHT (outframe) / 2; + Pitch = RowStride * 2; if (i == 0) scanline = klass->scanline_planar_y; diff --git a/gst/deinterlace/tvtime/greedyhmacros.h b/gst/deinterlace/tvtime/greedyhmacros.h index 6f7be93e7f6d96b2c03187e79363c1da3f3e7d06..cfeaff53b17666e80fcb31a75ebcbbef6386c911 100644 --- a/gst/deinterlace/tvtime/greedyhmacros.h +++ b/gst/deinterlace/tvtime/greedyhmacros.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/deinterlace/tvtime/linear.c b/gst/deinterlace/tvtime/linear.c index 05dac451de98db5ae578a92300a90aa5367c939b..9c45353e0ba683c93b2c184861478d6dbd7e63b3 100644 --- a/gst/deinterlace/tvtime/linear.c +++ b/gst/deinterlace/tvtime/linear.c @@ -14,8 +14,8 @@ * * You should have received a copy of the GNU Lesser 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -56,34 +56,30 @@ deinterlace_scanline_linear_c (GstDeinterlaceSimpleMethod * self, static void deinterlace_scanline_linear_packed_c (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - deinterlace_scanline_linear_c (self, out, scanlines->t0, scanlines->b0, - self->parent.row_stride[0]); + deinterlace_scanline_linear_c (self, out, scanlines->t0, scanlines->b0, size); } static void deinterlace_scanline_linear_planar_y_c (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - deinterlace_scanline_linear_c (self, out, scanlines->t0, scanlines->b0, - self->parent.row_stride[0]); + deinterlace_scanline_linear_c (self, out, scanlines->t0, scanlines->b0, size); } static void deinterlace_scanline_linear_planar_u_c (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - deinterlace_scanline_linear_c (self, out, scanlines->t0, scanlines->b0, - self->parent.row_stride[1]); + deinterlace_scanline_linear_c (self, out, scanlines->t0, scanlines->b0, size); } static void deinterlace_scanline_linear_planar_v_c (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - deinterlace_scanline_linear_c (self, out, scanlines->t0, scanlines->b0, - self->parent.row_stride[2]); + deinterlace_scanline_linear_c (self, out, scanlines->t0, scanlines->b0, size); } G_DEFINE_TYPE (GstDeinterlaceMethodLinear, gst_deinterlace_method_linear, diff --git a/gst/deinterlace/tvtime/linearblend.c b/gst/deinterlace/tvtime/linearblend.c index 189e1aaa28c9e4320ccacda4aa9529a3f61b8174..c0e4a0b535b5d07addf4922d42085fe73af56275 100644 --- a/gst/deinterlace/tvtime/linearblend.c +++ b/gst/deinterlace/tvtime/linearblend.c @@ -18,8 +18,8 @@ * * You should have received a copy of the GNU Lesser 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -65,34 +65,34 @@ deinterlace_scanline_linear_blend_c (GstDeinterlaceSimpleMethod * self, static void deinterlace_scanline_linear_blend_packed_c (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { deinterlace_scanline_linear_blend_c (self, out, scanlines->t0, scanlines->b0, - scanlines->m1, self->parent.row_stride[0]); + scanlines->m1, size); } static void deinterlace_scanline_linear_blend_planar_y_c (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { deinterlace_scanline_linear_blend_c (self, out, scanlines->t0, scanlines->b0, - scanlines->m1, self->parent.row_stride[0]); + scanlines->m1, size); } static void deinterlace_scanline_linear_blend_planar_u_c (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { deinterlace_scanline_linear_blend_c (self, out, scanlines->t0, scanlines->b0, - scanlines->m1, self->parent.row_stride[1]); + scanlines->m1, size); } static void deinterlace_scanline_linear_blend_planar_v_c (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { deinterlace_scanline_linear_blend_c (self, out, scanlines->t0, scanlines->b0, - scanlines->m1, self->parent.row_stride[2]); + scanlines->m1, size); } static inline void @@ -109,34 +109,37 @@ deinterlace_scanline_linear_blend2_c (GstDeinterlaceSimpleMethod * self, static void deinterlace_scanline_linear_blend2_packed_c (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { deinterlace_scanline_linear_blend2_c (self, out, scanlines->m0, scanlines->t1, - scanlines->b1, self->parent.row_stride[0]); + scanlines->b1, size); } static void deinterlace_scanline_linear_blend2_planar_y_c (GstDeinterlaceSimpleMethod * - self, guint8 * out, const GstDeinterlaceScanlineData * scanlines) + self, guint8 * out, const GstDeinterlaceScanlineData * scanlines, + guint size) { deinterlace_scanline_linear_blend2_c (self, out, scanlines->m0, scanlines->t1, - scanlines->b1, self->parent.row_stride[0]); + scanlines->b1, size); } static void deinterlace_scanline_linear_blend2_planar_u_c (GstDeinterlaceSimpleMethod * - self, guint8 * out, const GstDeinterlaceScanlineData * scanlines) + self, guint8 * out, const GstDeinterlaceScanlineData * scanlines, + guint size) { deinterlace_scanline_linear_blend2_c (self, out, scanlines->m0, scanlines->t1, - scanlines->b1, self->parent.row_stride[1]); + scanlines->b1, size); } static void deinterlace_scanline_linear_blend2_planar_v_c (GstDeinterlaceSimpleMethod * - self, guint8 * out, const GstDeinterlaceScanlineData * scanlines) + self, guint8 * out, const GstDeinterlaceScanlineData * scanlines, + guint size) { deinterlace_scanline_linear_blend2_c (self, out, scanlines->m0, scanlines->t1, - scanlines->b1, self->parent.row_stride[2]); + scanlines->b1, size); } G_DEFINE_TYPE (GstDeinterlaceMethodLinearBlend, diff --git a/gst/deinterlace/tvtime/plugins.h b/gst/deinterlace/tvtime/plugins.h index 8fb01af5c44a352c26a0ce920e72426079def14b..58085b620f947e4882319bfc5655cbd8ac8bcedd 100644 --- a/gst/deinterlace/tvtime/plugins.h +++ b/gst/deinterlace/tvtime/plugins.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/deinterlace/tvtime/scalerbob.c b/gst/deinterlace/tvtime/scalerbob.c index adc285aefedc044cac0fa604d2cdff53a2dbe6e3..ed20bd4c36cdb93ee45b48eca917602902bda48b 100644 --- a/gst/deinterlace/tvtime/scalerbob.c +++ b/gst/deinterlace/tvtime/scalerbob.c @@ -14,8 +14,8 @@ * * You should have received a copy of the GNU Lesser 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -40,30 +40,30 @@ typedef GstDeinterlaceSimpleMethodClass GstDeinterlaceMethodScalerBobClass; static void deinterlace_scanline_scaler_bob_packed (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->t0, self->parent.row_stride[0]); + memcpy (out, scanlines->t0, size); } static void deinterlace_scanline_scaler_bob_planar_y (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->t0, self->parent.row_stride[0]); + memcpy (out, scanlines->t0, size); } static void deinterlace_scanline_scaler_bob_planar_u (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->t0, self->parent.row_stride[1]); + memcpy (out, scanlines->t0, size); } static void deinterlace_scanline_scaler_bob_planar_v (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->t0, self->parent.row_stride[2]); + memcpy (out, scanlines->t0, size); } G_DEFINE_TYPE (GstDeinterlaceMethodScalerBob, gst_deinterlace_method_scaler_bob, diff --git a/gst/deinterlace/tvtime/tomsmocomp.c b/gst/deinterlace/tvtime/tomsmocomp.c index 280abe827b348e70dc46a642f218e0a352f6e4d8..003e72b06b9c60d1d8ea1b903266290ee161ab62 100644 --- a/gst/deinterlace/tvtime/tomsmocomp.c +++ b/gst/deinterlace/tvtime/tomsmocomp.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/deinterlace/tvtime/tomsmocomp/TomsMoCompAll.inc b/gst/deinterlace/tvtime/tomsmocomp/TomsMoCompAll.inc index 9dd06805abca71651525510c95ef0e1b1a065266..be58bba9f51be90326c240f8b65f8cde93a9572f 100644 --- a/gst/deinterlace/tvtime/tomsmocomp/TomsMoCompAll.inc +++ b/gst/deinterlace/tvtime/tomsmocomp/TomsMoCompAll.inc @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -95,23 +95,24 @@ static void FUNCT_NAME(GstDeinterlaceMethod *d_method, } /* double stride do address just every odd/even scanline */ - src_pitch = self->parent.row_stride[0]*2; - dst_pitch = self->parent.row_stride[0]; - rowsize = self->parent.row_stride[0]; + src_pitch = GST_VIDEO_FRAME_PLANE_STRIDE (outframe, 0) * 2; + dst_pitch = GST_VIDEO_FRAME_PLANE_STRIDE (outframe, 0); + rowsize = GST_VIDEO_FRAME_PLANE_STRIDE (outframe, 0); + FldHeight = GST_VIDEO_INFO_HEIGHT (self->parent.vinfo) / 2; pCopySrc = GST_VIDEO_FRAME_PLANE_DATA (history[history_count-1].frame, 0); if (history[history_count - 1].flags & PICTURE_INTERLACED_BOTTOM) - pCopySrc += rowsize; + pCopySrc += GST_VIDEO_FRAME_PLANE_STRIDE (history[history_count-1].frame, 0); pCopySrcP = GST_VIDEO_FRAME_PLANE_DATA (history[history_count-3].frame, 0); if (history[history_count - 3].flags & PICTURE_INTERLACED_BOTTOM) - pCopySrcP += rowsize; + pCopySrcP += GST_VIDEO_FRAME_PLANE_STRIDE (history[history_count-3].frame, 0); pWeaveSrc = GST_VIDEO_FRAME_PLANE_DATA (history[history_count-2].frame, 0); if (history[history_count - 2].flags & PICTURE_INTERLACED_BOTTOM) - pWeaveSrc += rowsize; + pWeaveSrc += GST_VIDEO_FRAME_PLANE_STRIDE (history[history_count-2].frame, 0); pWeaveSrcP = GST_VIDEO_FRAME_PLANE_DATA (history[history_count-4].frame, 0); if (history[history_count - 4].flags & PICTURE_INTERLACED_BOTTOM) - pWeaveSrcP += rowsize; + pWeaveSrcP += GST_VIDEO_FRAME_PLANE_STRIDE (history[history_count-4].frame, 0); /* use bottom field and interlace top field */ if (history[history_count-2].flags == PICTURE_INTERLACED_BOTTOM) { diff --git a/gst/deinterlace/tvtime/vfir.c b/gst/deinterlace/tvtime/vfir.c index 6442a82f80e5377a3643faf4d85907a03c440a77..a0618952c18fc3bf774dc3c28e7df8a644c4f808 100644 --- a/gst/deinterlace/tvtime/vfir.c +++ b/gst/deinterlace/tvtime/vfir.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -77,56 +77,52 @@ deinterlace_c (guint8 * dst, const guint8 * lum_m4, const guint8 * lum_m3, static void deinterlace_line_packed_c (GstDeinterlaceSimpleMethod * self, guint8 * dst, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { const guint8 *lum_m4 = scanlines->tt1; const guint8 *lum_m3 = scanlines->t0; const guint8 *lum_m2 = scanlines->m1; const guint8 *lum_m1 = scanlines->b0; const guint8 *lum = scanlines->bb1; - gint size = self->parent.row_stride[0]; deinterlace_c (dst, lum_m4, lum_m3, lum_m2, lum_m1, lum, size); } static void deinterlace_line_planar_y_c (GstDeinterlaceSimpleMethod * self, guint8 * dst, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { const guint8 *lum_m4 = scanlines->tt1; const guint8 *lum_m3 = scanlines->t0; const guint8 *lum_m2 = scanlines->m1; const guint8 *lum_m1 = scanlines->b0; const guint8 *lum = scanlines->bb1; - gint size = self->parent.row_stride[0]; deinterlace_c (dst, lum_m4, lum_m3, lum_m2, lum_m1, lum, size); } static void deinterlace_line_planar_u_c (GstDeinterlaceSimpleMethod * self, guint8 * dst, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { const guint8 *lum_m4 = scanlines->tt1; const guint8 *lum_m3 = scanlines->t0; const guint8 *lum_m2 = scanlines->m1; const guint8 *lum_m1 = scanlines->b0; const guint8 *lum = scanlines->bb1; - gint size = self->parent.row_stride[1]; deinterlace_c (dst, lum_m4, lum_m3, lum_m2, lum_m1, lum, size); } static void deinterlace_line_planar_v_c (GstDeinterlaceSimpleMethod * self, guint8 * dst, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { const guint8 *lum_m4 = scanlines->tt1; const guint8 *lum_m3 = scanlines->t0; const guint8 *lum_m2 = scanlines->m1; const guint8 *lum_m1 = scanlines->b0; const guint8 *lum = scanlines->bb1; - gint size = self->parent.row_stride[2]; deinterlace_c (dst, lum_m4, lum_m3, lum_m2, lum_m1, lum, size); } diff --git a/gst/deinterlace/tvtime/weave.c b/gst/deinterlace/tvtime/weave.c index 1501b1a2b5646d563c2f0afdf600549ede7eed78..804c889f0710ebf49b02a37d77c8f19f7d8b936c 100644 --- a/gst/deinterlace/tvtime/weave.c +++ b/gst/deinterlace/tvtime/weave.c @@ -15,8 +15,8 @@ * * You should have received a copy of the GNU Lesser 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -46,74 +46,74 @@ typedef GstDeinterlaceSimpleMethodClass GstDeinterlaceMethodWeaveClass; static void deinterlace_scanline_weave_packed (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->t0, self->parent.row_stride[0]); + memcpy (out, scanlines->t0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[0]); + memcpy (out, scanlines->m1, size); } } static void deinterlace_scanline_weave_planar_y (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->t0, self->parent.row_stride[0]); + memcpy (out, scanlines->t0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[0]); + memcpy (out, scanlines->m1, size); } } static void deinterlace_scanline_weave_planar_u (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->t0, self->parent.row_stride[1]); + memcpy (out, scanlines->t0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[1]); + memcpy (out, scanlines->m1, size); } } static void deinterlace_scanline_weave_planar_v (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->t0, self->parent.row_stride[2]); + memcpy (out, scanlines->t0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[2]); + memcpy (out, scanlines->m1, size); } } static void copy_scanline_packed (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[0]); + memcpy (out, scanlines->m0, size); } static void copy_scanline_planar_y (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[0]); + memcpy (out, scanlines->m0, size); } static void copy_scanline_planar_u (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[1]); + memcpy (out, scanlines->m0, size); } static void copy_scanline_planar_v (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[2]); + memcpy (out, scanlines->m0, size); } G_DEFINE_TYPE (GstDeinterlaceMethodWeave, gst_deinterlace_method_weave, diff --git a/gst/deinterlace/tvtime/weavebff.c b/gst/deinterlace/tvtime/weavebff.c index b11395cd8ab37b5c1a38ff62867bf93fecdf8b52..7424e96fed1333648605b87ee6750238101cb500 100644 --- a/gst/deinterlace/tvtime/weavebff.c +++ b/gst/deinterlace/tvtime/weavebff.c @@ -15,8 +15,8 @@ * * You should have received a copy of the GNU Lesser 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -46,74 +46,74 @@ typedef GstDeinterlaceSimpleMethodClass GstDeinterlaceMethodWeaveBFFClass; static void deinterlace_scanline_weave_packed (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->b0, self->parent.row_stride[0]); + memcpy (out, scanlines->b0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[0]); + memcpy (out, scanlines->m1, size); } } static void deinterlace_scanline_weave_planar_y (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->b0, self->parent.row_stride[0]); + memcpy (out, scanlines->b0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[0]); + memcpy (out, scanlines->m1, size); } } static void deinterlace_scanline_weave_planar_u (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->b0, self->parent.row_stride[1]); + memcpy (out, scanlines->b0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[1]); + memcpy (out, scanlines->m1, size); } } static void deinterlace_scanline_weave_planar_v (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->b0, self->parent.row_stride[2]); + memcpy (out, scanlines->b0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[2]); + memcpy (out, scanlines->m1, size); } } static void copy_scanline_packed (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[0]); + memcpy (out, scanlines->m0, size); } static void copy_scanline_planar_y (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[0]); + memcpy (out, scanlines->m0, size); } static void copy_scanline_planar_u (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[1]); + memcpy (out, scanlines->m0, size); } static void copy_scanline_planar_v (GstDeinterlaceSimpleMethod * self, guint8 * out, - const GstDeinterlaceScanlineData * scanlines) + const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[2]); + memcpy (out, scanlines->m0, size); } G_DEFINE_TYPE (GstDeinterlaceMethodWeaveBFF, gst_deinterlace_method_weave_bff, diff --git a/gst/deinterlace/tvtime/weavetff.c b/gst/deinterlace/tvtime/weavetff.c index 3c60613dd70769d358db836216e337b4f79db3aa..f33bb2e5518f9ea0355d16b86c95d21e03c2724f 100644 --- a/gst/deinterlace/tvtime/weavetff.c +++ b/gst/deinterlace/tvtime/weavetff.c @@ -15,8 +15,8 @@ * * You should have received a copy of the GNU Lesser 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -47,74 +47,74 @@ typedef GstDeinterlaceSimpleMethodClass GstDeinterlaceMethodWeaveTFFClass; static void deinterlace_scanline_weave_packed (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->t0, self->parent.row_stride[0]); + memcpy (out, scanlines->t0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[0]); + memcpy (out, scanlines->m1, size); } } static void deinterlace_scanline_weave_planar_y (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->t0, self->parent.row_stride[0]); + memcpy (out, scanlines->t0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[0]); + memcpy (out, scanlines->m1, size); } } static void deinterlace_scanline_weave_planar_u (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->t0, self->parent.row_stride[1]); + memcpy (out, scanlines->t0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[1]); + memcpy (out, scanlines->m1, size); } } static void deinterlace_scanline_weave_planar_v (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { if (scanlines->m1 == NULL) { - memcpy (out, scanlines->t0, self->parent.row_stride[2]); + memcpy (out, scanlines->t0, size); } else { - memcpy (out, scanlines->m1, self->parent.row_stride[2]); + memcpy (out, scanlines->m1, size); } } static void copy_scanline_packed (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[0]); + memcpy (out, scanlines->m0, size); } static void copy_scanline_planar_y (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[0]); + memcpy (out, scanlines->m0, size); } static void copy_scanline_planar_u (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[1]); + memcpy (out, scanlines->m0, size); } static void copy_scanline_planar_v (GstDeinterlaceSimpleMethod * self, - guint8 * out, const GstDeinterlaceScanlineData * scanlines) + guint8 * out, const GstDeinterlaceScanlineData * scanlines, guint size) { - memcpy (out, scanlines->m0, self->parent.row_stride[2]); + memcpy (out, scanlines->m0, size); } G_DEFINE_TYPE (GstDeinterlaceMethodWeaveTFF, gst_deinterlace_method_weave_tff, diff --git a/gst/deinterlace/tvtime/x86-64_macros.inc b/gst/deinterlace/tvtime/x86-64_macros.inc index 2e9df758620db0dd36405e7c8bc36c9cb9b511f5..312e3c749000c03975193eb6d53046c9bf01bb72 100644 --- a/gst/deinterlace/tvtime/x86-64_macros.inc +++ b/gst/deinterlace/tvtime/x86-64_macros.inc @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/dtmf/Makefile.am b/gst/dtmf/Makefile.am new file mode 100644 index 0000000000000000000000000000000000000000..f5d36edd5a0244ac287a805047f52eafec1223dc --- /dev/null +++ b/gst/dtmf/Makefile.am @@ -0,0 +1,31 @@ +plugin_LTLIBRARIES = libgstdtmf.la + +libgstdtmf_la_SOURCES = gstdtmfsrc.c \ + gstrtpdtmfsrc.c \ + gstrtpdtmfdepay.c \ + gstdtmf.c + +noinst_HEADERS = gstdtmfsrc.h \ + gstrtpdtmfsrc.h \ + gstrtpdtmfdepay.h \ + gstdtmfcommon.h + +libgstdtmf_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) +libgstdtmf_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-@GST_API_VERSION@ \ + $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM) +libgstdtmf_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) +libgstdtmf_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) + +Android.mk: Makefile.am $(BUILT_SOURCES) + androgenizer \ + -:PROJECT libgstdtmf -:SHARED libgstdtmf \ + -:TAGS eng debug \ + -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \ + -:SOURCES $(libgstdtmf_la_SOURCES) \ + -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstdtmf_la_CFLAGS) \ + -:LDFLAGS $(libgstdtmf_la_LDFLAGS) \ + $(libgstdtmf_la_LIBADD) \ + -ldl \ + -:PASSTHROUGH LOCAL_ARM_MODE:=arm \ + LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \ + > $@ diff --git a/gst/dtmf/Makefile.in b/gst/dtmf/Makefile.in new file mode 100644 index 0000000000000000000000000000000000000000..402b579f6e9c5699427219372bf39002fa3d2cdc --- /dev/null +++ b/gst/dtmf/Makefile.in @@ -0,0 +1,942 @@ +# Makefile.in generated by automake 1.14 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = gst/dtmf +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ + $(top_srcdir)/common/m4/as-auto-alt.m4 \ + $(top_srcdir)/common/m4/as-compiler-flag.m4 \ + $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ + $(top_srcdir)/common/m4/as-libtool.m4 \ + $(top_srcdir)/common/m4/as-scrub-include.m4 \ + $(top_srcdir)/common/m4/as-version.m4 \ + $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ + $(top_srcdir)/common/m4/gst-arch.m4 \ + $(top_srcdir)/common/m4/gst-args.m4 \ + $(top_srcdir)/common/m4/gst-check.m4 \ + $(top_srcdir)/common/m4/gst-default.m4 \ + $(top_srcdir)/common/m4/gst-dowhile.m4 \ + $(top_srcdir)/common/m4/gst-error.m4 \ + $(top_srcdir)/common/m4/gst-feature.m4 \ + $(top_srcdir)/common/m4/gst-gettext.m4 \ + $(top_srcdir)/common/m4/gst-glib2.m4 \ + $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \ + $(top_srcdir)/common/m4/gst-platform.m4 \ + $(top_srcdir)/common/m4/gst-plugin-docs.m4 \ + $(top_srcdir)/common/m4/gst-plugindir.m4 \ + $(top_srcdir)/common/m4/gst-x11.m4 \ + $(top_srcdir)/common/m4/gst.m4 \ + $(top_srcdir)/common/m4/gtk-doc.m4 \ + $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \ + $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(plugindir)" +LTLIBRARIES = $(plugin_LTLIBRARIES) +am__DEPENDENCIES_1 = +libgstdtmf_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +am_libgstdtmf_la_OBJECTS = libgstdtmf_la-gstdtmfsrc.lo \ + libgstdtmf_la-gstrtpdtmfsrc.lo \ + libgstdtmf_la-gstrtpdtmfdepay.lo libgstdtmf_la-gstdtmf.lo +libgstdtmf_la_OBJECTS = $(am_libgstdtmf_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgstdtmf_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(libgstdtmf_la_CFLAGS) $(CFLAGS) \ + $(libgstdtmf_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgstdtmf_la_SOURCES) +DIST_SOURCES = $(libgstdtmf_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +AALIB_CFLAGS = @AALIB_CFLAGS@ +AALIB_CONFIG = @AALIB_CONFIG@ +AALIB_LIBS = @AALIB_LIBS@ +ACLOCAL = @ACLOCAL@ +ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BZ2_LIBS = @BZ2_LIBS@ +CAIRO_CFLAGS = @CAIRO_CFLAGS@ +CAIRO_LIBS = @CAIRO_LIBS@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@ +DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@ +DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@ +DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@ +DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@ +DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@ +DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@ +DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DV1394_CFLAGS = @DV1394_CFLAGS@ +DV1394_LIBS = @DV1394_LIBS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ERROR_CFLAGS = @ERROR_CFLAGS@ +ERROR_CXXFLAGS = @ERROR_CXXFLAGS@ +ERROR_OBJCFLAGS = @ERROR_OBJCFLAGS@ +EXEEXT = @EXEEXT@ +FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +FLAC_CFLAGS = @FLAC_CFLAGS@ +FLAC_LIBS = @FLAC_LIBS@ +GCOV = @GCOV@ +GCOV_CFLAGS = @GCOV_CFLAGS@ +GCOV_LIBS = @GCOV_LIBS@ +GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ +GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO_CFLAGS = @GIO_CFLAGS@ +GIO_LDFLAGS = @GIO_LDFLAGS@ +GIO_LIBS = @GIO_LIBS@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GLIB_PREFIX = @GLIB_PREFIX@ +GLIB_REQ = @GLIB_REQ@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@ +GSTPB_PREFIX = @GSTPB_PREFIX@ +GST_AGE = @GST_AGE@ +GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@ +GST_API_VERSION = @GST_API_VERSION@ +GST_BASE_CFLAGS = @GST_BASE_CFLAGS@ +GST_BASE_LIBS = @GST_BASE_LIBS@ +GST_CFLAGS = @GST_CFLAGS@ +GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@ +GST_CHECK_LIBS = @GST_CHECK_LIBS@ +GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@ +GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@ +GST_CURRENT = @GST_CURRENT@ +GST_CXXFLAGS = @GST_CXXFLAGS@ +GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@ +GST_LIBS = @GST_LIBS@ +GST_LIBVERSION = @GST_LIBVERSION@ +GST_LICENSE = @GST_LICENSE@ +GST_LT_LDFLAGS = @GST_LT_LDFLAGS@ +GST_NET_CFLAGS = @GST_NET_CFLAGS@ +GST_NET_LIBS = @GST_NET_LIBS@ +GST_OBJCFLAGS = @GST_OBJCFLAGS@ +GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@ +GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@ +GST_OPTION_OBJCFLAGS = @GST_OPTION_OBJCFLAGS@ +GST_PACKAGE_NAME = @GST_PACKAGE_NAME@ +GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@ +GST_PLUGINS_ALL = @GST_PLUGINS_ALL@ +GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@ +GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@ +GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@ +GST_PLUGINS_DIR = @GST_PLUGINS_DIR@ +GST_PLUGINS_NONPORTED = @GST_PLUGINS_NONPORTED@ +GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@ +GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@ +GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@ +GST_PREFIX = @GST_PREFIX@ +GST_REVISION = @GST_REVISION@ +GST_TOOLS_DIR = @GST_TOOLS_DIR@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GTK_X11_CFLAGS = @GTK_X11_CFLAGS@ +GTK_X11_LIBS = @GTK_X11_LIBS@ +GUDEV_CFLAGS = @GUDEV_CFLAGS@ +GUDEV_LIBS = @GUDEV_LIBS@ +HAVE_AVC1394 = @HAVE_AVC1394@ +HAVE_CXX = @HAVE_CXX@ +HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@ +HAVE_ROM1394 = @HAVE_ROM1394@ +HAVE_SPEEX = @HAVE_SPEEX@ +HAVE_X = @HAVE_X@ +HAVE_XSHM = @HAVE_XSHM@ +HAVE_ZLIB = @HAVE_ZLIB@ +HTML_DIR = @HTML_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@ +JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@ +JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@ +JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +JPEG_LIBS = @JPEG_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCACA_CFLAGS = @LIBCACA_CFLAGS@ +LIBCACA_LIBS = @LIBCACA_LIBS@ +LIBDV_CFLAGS = @LIBDV_CFLAGS@ +LIBDV_LIBS = @LIBDV_LIBS@ +LIBICONV = @LIBICONV@ +LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@ +LIBIEC61883_LIBS = @LIBIEC61883_LIBS@ +LIBINTL = @LIBINTL@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ +LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ +LIBV4L2_LIBS = @LIBV4L2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALEDIR = @LOCALEDIR@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJC = @OBJC@ +OBJCDEPMODE = @OBJCDEPMODE@ +OBJCFLAGS = @OBJCFLAGS@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +ORCC = @ORCC@ +ORCC_FLAGS = @ORCC_FLAGS@ +ORC_CFLAGS = @ORC_CFLAGS@ +ORC_LIBS = @ORC_LIBS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@ +PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PLUGINDIR = @PLUGINDIR@ +POSUB = @POSUB@ +PROFILE_CFLAGS = @PROFILE_CFLAGS@ +PULSE_CFLAGS = @PULSE_CFLAGS@ +PULSE_LIBS = @PULSE_LIBS@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RAW1394_CFLAGS = @RAW1394_CFLAGS@ +RAW1394_LIBS = @RAW1394_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHOUT2_CFLAGS = @SHOUT2_CFLAGS@ +SHOUT2_LIBS = @SHOUT2_LIBS@ +SOUP_CFLAGS = @SOUP_CFLAGS@ +SOUP_LIBS = @SOUP_LIBS@ +SPEEX_CFLAGS = @SPEEX_CFLAGS@ +SPEEX_LIBS = @SPEEX_LIBS@ +STRIP = @STRIP@ +TAGLIB_CFLAGS = @TAGLIB_CFLAGS@ +TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@ +TAGLIB_LIBS = @TAGLIB_LIBS@ +USE_NLS = @USE_NLS@ +VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ +VALGRIND_LIBS = @VALGRIND_LIBS@ +VALGRIND_PATH = @VALGRIND_PATH@ +VERSION = @VERSION@ +VPX_CFLAGS = @VPX_CFLAGS@ +VPX_LIBS = @VPX_LIBS@ +WARNING_CFLAGS = @WARNING_CFLAGS@ +WARNING_CXXFLAGS = @WARNING_CXXFLAGS@ +WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@ +WAVPACK_CFLAGS = @WAVPACK_CFLAGS@ +WAVPACK_LIBS = @WAVPACK_LIBS@ +XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@ +XDAMAGE_LIBS = @XDAMAGE_LIBS@ +XFIXES_CFLAGS = @XFIXES_CFLAGS@ +XFIXES_LIBS = @XFIXES_LIBS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +XSHM_LIBS = @XSHM_LIBS@ +XVIDEO_LIBS = @XVIDEO_LIBS@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_OBJC = @ac_ct_OBJC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +plugindir = @plugindir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +plugin_LTLIBRARIES = libgstdtmf.la +libgstdtmf_la_SOURCES = gstdtmfsrc.c \ + gstrtpdtmfsrc.c \ + gstrtpdtmfdepay.c \ + gstdtmf.c + +noinst_HEADERS = gstdtmfsrc.h \ + gstrtpdtmfsrc.h \ + gstrtpdtmfdepay.h \ + gstdtmfcommon.h + +libgstdtmf_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) +libgstdtmf_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-@GST_API_VERSION@ \ + $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM) + +libgstdtmf_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) +libgstdtmf_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/dtmf/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gst/dtmf/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \ + } + +uninstall-pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \ + done + +clean-pluginLTLIBRARIES: + -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgstdtmf.la: $(libgstdtmf_la_OBJECTS) $(libgstdtmf_la_DEPENDENCIES) $(EXTRA_libgstdtmf_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgstdtmf_la_LINK) -rpath $(plugindir) $(libgstdtmf_la_OBJECTS) $(libgstdtmf_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-gstdtmf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libgstdtmf_la-gstdtmfsrc.lo: gstdtmfsrc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmfsrc.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Tpo -c -o libgstdtmf_la-gstdtmfsrc.lo `test -f 'gstdtmfsrc.c' || echo '$(srcdir)/'`gstdtmfsrc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmfsrc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstdtmfsrc.c' object='libgstdtmf_la-gstdtmfsrc.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 $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmfsrc.lo `test -f 'gstdtmfsrc.c' || echo '$(srcdir)/'`gstdtmfsrc.c + +libgstdtmf_la-gstrtpdtmfsrc.lo: gstrtpdtmfsrc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstrtpdtmfsrc.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Tpo -c -o libgstdtmf_la-gstrtpdtmfsrc.lo `test -f 'gstrtpdtmfsrc.c' || echo '$(srcdir)/'`gstrtpdtmfsrc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Tpo $(DEPDIR)/libgstdtmf_la-gstrtpdtmfsrc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpdtmfsrc.c' object='libgstdtmf_la-gstrtpdtmfsrc.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 $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstrtpdtmfsrc.lo `test -f 'gstrtpdtmfsrc.c' || echo '$(srcdir)/'`gstrtpdtmfsrc.c + +libgstdtmf_la-gstrtpdtmfdepay.lo: gstrtpdtmfdepay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstrtpdtmfdepay.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Tpo -c -o libgstdtmf_la-gstrtpdtmfdepay.lo `test -f 'gstrtpdtmfdepay.c' || echo '$(srcdir)/'`gstrtpdtmfdepay.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Tpo $(DEPDIR)/libgstdtmf_la-gstrtpdtmfdepay.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpdtmfdepay.c' object='libgstdtmf_la-gstrtpdtmfdepay.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 $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstrtpdtmfdepay.lo `test -f 'gstrtpdtmfdepay.c' || echo '$(srcdir)/'`gstrtpdtmfdepay.c + +libgstdtmf_la-gstdtmf.lo: gstdtmf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -MT libgstdtmf_la-gstdtmf.lo -MD -MP -MF $(DEPDIR)/libgstdtmf_la-gstdtmf.Tpo -c -o libgstdtmf_la-gstdtmf.lo `test -f 'gstdtmf.c' || echo '$(srcdir)/'`gstdtmf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdtmf_la-gstdtmf.Tpo $(DEPDIR)/libgstdtmf_la-gstdtmf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstdtmf.c' object='libgstdtmf_la-gstdtmf.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 $(libgstdtmf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdtmf_la_CFLAGS) $(CFLAGS) -c -o libgstdtmf_la-gstdtmf.lo `test -f 'gstdtmf.c' || echo '$(srcdir)/'`gstdtmf.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(plugindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pluginLTLIBRARIES + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pluginLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES + + +Android.mk: Makefile.am $(BUILT_SOURCES) + androgenizer \ + -:PROJECT libgstdtmf -:SHARED libgstdtmf \ + -:TAGS eng debug \ + -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \ + -:SOURCES $(libgstdtmf_la_SOURCES) \ + -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstdtmf_la_CFLAGS) \ + -:LDFLAGS $(libgstdtmf_la_LDFLAGS) \ + $(libgstdtmf_la_LIBADD) \ + -ldl \ + -:PASSTHROUGH LOCAL_ARM_MODE:=arm \ + LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \ + > $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gst/dtmf/gstdtmf.c b/gst/dtmf/gstdtmf.c new file mode 100644 index 0000000000000000000000000000000000000000..1dc400149cc0c68e2c4e231df60894fc4972ea43 --- /dev/null +++ b/gst/dtmf/gstdtmf.c @@ -0,0 +1,45 @@ +/* GStreamer DTMF plugin + * + * 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 "gstdtmfsrc.h" +#include "gstrtpdtmfsrc.h" +#include "gstrtpdtmfdepay.h" + +static gboolean +plugin_init (GstPlugin * plugin) +{ + if (!gst_dtmf_src_plugin_init (plugin)) + return FALSE; + + if (!gst_rtp_dtmf_src_plugin_init (plugin)) + return FALSE; + + if (!gst_rtp_dtmf_depay_plugin_init (plugin)) + return FALSE; + + return TRUE; +} + +GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, + GST_VERSION_MINOR, + dtmf, "DTMF plugins", + plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN) diff --git a/gst/dtmf/gstdtmfcommon.h b/gst/dtmf/gstdtmfcommon.h new file mode 100644 index 0000000000000000000000000000000000000000..36f26ccb5c2168ca5bef7d56015d10f0ad81d1eb --- /dev/null +++ b/gst/dtmf/gstdtmfcommon.h @@ -0,0 +1,52 @@ +/* GStreamer DTMF plugin + * + * 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. + */ + +#ifndef __GST_RTP_DTMF_COMMON_H__ +#define __GST_RTP_DTMF_COMMON_H__ + +#include <gst/math-compat.h> + +#define MIN_INTER_DIGIT_INTERVAL 100 /* ms */ +#define MIN_PULSE_DURATION 250 /* ms */ + +#define MIN_VOLUME 0 +#define MAX_VOLUME 36 + +#define MIN_EVENT 0 +#define MAX_EVENT 15 +#define MIN_EVENT_STRING "0" +#define MAX_EVENT_STRING "15" + +typedef struct +{ + unsigned event:8; /* Current DTMF event */ +#if G_BYTE_ORDER == G_LITTLE_ENDIAN + unsigned volume:6; /* power level of the tone, in dBm0 */ + unsigned r:1; /* Reserved-bit */ + unsigned e:1; /* End-bit */ +#elif G_BYTE_ORDER == G_BIG_ENDIAN + unsigned e:1; /* End-bit */ + unsigned r:1; /* Reserved-bit */ + unsigned volume:6; /* power level of the tone, in dBm0 */ +#else +#error "G_BYTE_ORDER should be big or little endian." +#endif + unsigned duration:16; /* Duration of digit, in timestamp units */ +} GstRTPDTMFPayload; + +#endif /* __GST_RTP_DTMF_COMMON_H__ */ diff --git a/gst/dtmf/gstdtmfsrc.c b/gst/dtmf/gstdtmfsrc.c new file mode 100644 index 0000000000000000000000000000000000000000..a77e3ba8b8ae13a13eaac6807a1b06831fef6bd1 --- /dev/null +++ b/gst/dtmf/gstdtmfsrc.c @@ -0,0 +1,969 @@ +/* GStreamer DTMF source + * + * gstdtmfsrc.c: + * + * Copyright (C) <2007> Collabora. + * Contact: Youness Alaoui <youness.alaoui@collabora.co.uk> + * Copyright (C) <2007> Nokia Corporation. + * Contact: Zeeshan Ali <zeeshan.ali@nokia.com> + * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> + * 2000,2005 Wim Taymans <wim@fluendo.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-dtmfsrc + * @see_also: rtpdtmsrc, rtpdtmfmuxx + * + * The DTMFSrc element generates DTMF (ITU-T Q.23 Specification) tone packets on request + * from application. The application communicates the beginning and end of a + * DTMF event using custom upstream gstreamer events. To report a DTMF event, an + * application must send an event of type GST_EVENT_CUSTOM_UPSTREAM, having a + * structure of name "dtmf-event" with fields set according to the following + * table: + * + * <informaltable> + * <tgroup cols='4'> + * <colspec colname='Name' /> + * <colspec colname='Type' /> + * <colspec colname='Possible values' /> + * <colspec colname='Purpose' /> + * <thead> + * <row> + * <entry>Name</entry> + * <entry>GType</entry> + * <entry>Possible values</entry> + * <entry>Purpose</entry> + * </row> + * </thead> + * <tbody> + * <row> + * <entry>type</entry> + * <entry>G_TYPE_INT</entry> + * <entry>0-1</entry> + * <entry>The application uses this field to specify which of the two methods + * specified in RFC 2833 to use. The value should be 0 for tones and 1 for + * named events. Tones are specified by their frequencies and events are specied + * by their number. This element can only take events as input. Do not confuse + * with "method" which specified the output. + * </entry> + * </row> + * <row> + * <entry>number</entry> + * <entry>G_TYPE_INT</entry> + * <entry>0-15</entry> + * <entry>The event number.</entry> + * </row> + * <row> + * <entry>volume</entry> + * <entry>G_TYPE_INT</entry> + * <entry>0-36</entry> + * <entry>This field describes the power level of the tone, expressed in dBm0 + * after dropping the sign. Power levels range from 0 to -63 dBm0. The range of + * valid DTMF is from 0 to -36 dBm0. Can be omitted if start is set to FALSE. + * </entry> + * </row> + * <row> + * <entry>start</entry> + * <entry>G_TYPE_BOOLEAN</entry> + * <entry>True or False</entry> + * <entry>Whether the event is starting or ending.</entry> + * </row> + * <row> + * <entry>method</entry> + * <entry>G_TYPE_INT</entry> + * <entry>2</entry> + * <entry>The method used for sending event, this element will react if this + * field is absent or 2. + * </entry> + * </row> + * </tbody> + * </tgroup> + * </informaltable> + * + * For example, the following code informs the pipeline (and in turn, the + * DTMFSrc element inside the pipeline) about the start of a DTMF named + * event '1' of volume -25 dBm0: + * + * <programlisting> + * structure = gst_structure_new ("dtmf-event", + * "type", G_TYPE_INT, 1, + * "number", G_TYPE_INT, 1, + * "volume", G_TYPE_INT, 25, + * "start", G_TYPE_BOOLEAN, TRUE, NULL); + * + * event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, structure); + * gst_element_send_event (pipeline, event); + * </programlisting> + * + * When a DTMF tone actually starts or stop, a "dtmf-event-processed" + * element #GstMessage with the same fields as the "dtmf-event" + * #GstEvent that was used to request the event. Also, if any event + * has not been processed when the element goes from the PAUSED to the + * READY state, then a "dtmf-event-dropped" message is posted on the + * #GstBus in the order that they were received. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include <glib.h> + +#include "gstdtmfcommon.h" + +#include "gstdtmfsrc.h" + +#include <gst/audio/audio.h> + +#define GST_TONE_DTMF_TYPE_EVENT 1 +#define DEFAULT_PACKET_INTERVAL 50 /* ms */ +#define MIN_PACKET_INTERVAL 10 /* ms */ +#define MAX_PACKET_INTERVAL 50 /* ms */ +#define DEFAULT_SAMPLE_RATE 8000 +#define SAMPLE_SIZE 16 +#define CHANNELS 1 +#define MIN_DUTY_CYCLE (MIN_INTER_DIGIT_INTERVAL + MIN_PULSE_DURATION) + + +typedef struct st_dtmf_key +{ + const char *event_name; + int event_encoding; + float low_frequency; + float high_frequency; +} DTMF_KEY; + +static const DTMF_KEY DTMF_KEYS[] = { + {"DTMF_KEY_EVENT_0", 0, 941, 1336}, + {"DTMF_KEY_EVENT_1", 1, 697, 1209}, + {"DTMF_KEY_EVENT_2", 2, 697, 1336}, + {"DTMF_KEY_EVENT_3", 3, 697, 1477}, + {"DTMF_KEY_EVENT_4", 4, 770, 1209}, + {"DTMF_KEY_EVENT_5", 5, 770, 1336}, + {"DTMF_KEY_EVENT_6", 6, 770, 1477}, + {"DTMF_KEY_EVENT_7", 7, 852, 1209}, + {"DTMF_KEY_EVENT_8", 8, 852, 1336}, + {"DTMF_KEY_EVENT_9", 9, 852, 1477}, + {"DTMF_KEY_EVENT_S", 10, 941, 1209}, + {"DTMF_KEY_EVENT_P", 11, 941, 1477}, + {"DTMF_KEY_EVENT_A", 12, 697, 1633}, + {"DTMF_KEY_EVENT_B", 13, 770, 1633}, + {"DTMF_KEY_EVENT_C", 14, 852, 1633}, + {"DTMF_KEY_EVENT_D", 15, 941, 1633}, +}; + +#define MAX_DTMF_EVENTS 16 + +enum +{ + DTMF_KEY_EVENT_1 = 1, + DTMF_KEY_EVENT_2 = 2, + DTMF_KEY_EVENT_3 = 3, + DTMF_KEY_EVENT_4 = 4, + DTMF_KEY_EVENT_5 = 5, + DTMF_KEY_EVENT_6 = 6, + DTMF_KEY_EVENT_7 = 7, + DTMF_KEY_EVENT_8 = 8, + DTMF_KEY_EVENT_9 = 9, + DTMF_KEY_EVENT_0 = 0, + DTMF_KEY_EVENT_STAR = 10, + DTMF_KEY_EVENT_POUND = 11, + DTMF_KEY_EVENT_A = 12, + DTMF_KEY_EVENT_B = 13, + DTMF_KEY_EVENT_C = 14, + DTMF_KEY_EVENT_D = 15, +}; + +GST_DEBUG_CATEGORY_STATIC (gst_dtmf_src_debug); +#define GST_CAT_DEFAULT gst_dtmf_src_debug + +enum +{ + PROP_0, + PROP_INTERVAL, +}; + +static GstStaticPadTemplate gst_dtmf_src_template = +GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "format = (string) \"" GST_AUDIO_NE (S16) "\", " + "rate = " GST_AUDIO_RATE_RANGE ", " "channels = (int) 1") + ); + +#define parent_class gst_dtmf_src_parent_class +G_DEFINE_TYPE (GstDTMFSrc, gst_dtmf_src, GST_TYPE_BASE_SRC); + +static void gst_dtmf_src_finalize (GObject * object); + +static void gst_dtmf_src_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_dtmf_src_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); +static gboolean gst_dtmf_src_handle_event (GstBaseSrc * src, GstEvent * event); +static gboolean gst_dtmf_src_send_event (GstElement * src, GstEvent * event); +static GstStateChangeReturn gst_dtmf_src_change_state (GstElement * element, + GstStateChange transition); +static GstFlowReturn gst_dtmf_src_create (GstBaseSrc * basesrc, + guint64 offset, guint length, GstBuffer ** buffer); +static void gst_dtmf_src_add_start_event (GstDTMFSrc * dtmfsrc, + gint event_number, gint event_volume); +static void gst_dtmf_src_add_stop_event (GstDTMFSrc * dtmfsrc); + +static gboolean gst_dtmf_src_unlock (GstBaseSrc * src); + +static gboolean gst_dtmf_src_unlock_stop (GstBaseSrc * src); +static gboolean gst_dtmf_src_negotiate (GstBaseSrc * basesrc); + + +static void +gst_dtmf_src_class_init (GstDTMFSrcClass * klass) +{ + GObjectClass *gobject_class; + GstBaseSrcClass *gstbasesrc_class; + GstElementClass *gstelement_class; + + gobject_class = G_OBJECT_CLASS (klass); + gstbasesrc_class = GST_BASE_SRC_CLASS (klass); + gstelement_class = GST_ELEMENT_CLASS (klass); + + + GST_DEBUG_CATEGORY_INIT (gst_dtmf_src_debug, "dtmfsrc", 0, "dtmfsrc element"); + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&gst_dtmf_src_template)); + + gst_element_class_set_static_metadata (gstelement_class, + "DTMF tone generator", "Source/Audio", "Generates DTMF tones", + "Youness Alaoui <youness.alaoui@collabora.co.uk>"); + + + gobject_class->finalize = gst_dtmf_src_finalize; + gobject_class->set_property = gst_dtmf_src_set_property; + gobject_class->get_property = gst_dtmf_src_get_property; + + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_INTERVAL, + g_param_spec_uint ("interval", "Interval between tone packets", + "Interval in ms between two tone packets", MIN_PACKET_INTERVAL, + MAX_PACKET_INTERVAL, DEFAULT_PACKET_INTERVAL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + gstelement_class->change_state = + GST_DEBUG_FUNCPTR (gst_dtmf_src_change_state); + gstelement_class->send_event = GST_DEBUG_FUNCPTR (gst_dtmf_src_send_event); + gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_dtmf_src_unlock); + gstbasesrc_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_dtmf_src_unlock_stop); + + gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_dtmf_src_handle_event); + gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_dtmf_src_create); + gstbasesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_dtmf_src_negotiate); +} + +static void +event_free (GstDTMFSrcEvent * event) +{ + if (event) + g_slice_free (GstDTMFSrcEvent, event); +} + +static void +gst_dtmf_src_init (GstDTMFSrc * dtmfsrc) +{ + /* we operate in time */ + gst_base_src_set_format (GST_BASE_SRC (dtmfsrc), GST_FORMAT_TIME); + gst_base_src_set_live (GST_BASE_SRC (dtmfsrc), TRUE); + + dtmfsrc->interval = DEFAULT_PACKET_INTERVAL; + + dtmfsrc->event_queue = g_async_queue_new_full ((GDestroyNotify) event_free); + dtmfsrc->last_event = NULL; + + dtmfsrc->sample_rate = DEFAULT_SAMPLE_RATE; + + GST_DEBUG_OBJECT (dtmfsrc, "init done"); +} + +static void +gst_dtmf_src_finalize (GObject * object) +{ + GstDTMFSrc *dtmfsrc; + + dtmfsrc = GST_DTMF_SRC (object); + + if (dtmfsrc->event_queue) { + g_async_queue_unref (dtmfsrc->event_queue); + dtmfsrc->event_queue = NULL; + } + + G_OBJECT_CLASS (gst_dtmf_src_parent_class)->finalize (object); +} + +static gboolean +gst_dtmf_src_handle_dtmf_event (GstDTMFSrc * dtmfsrc, GstEvent * event) +{ + const GstStructure *event_structure; + GstStateChangeReturn sret; + GstState state; + gint event_type; + gboolean start; + gint method; + GstClockTime last_stop; + gint event_number; + gint event_volume; + gboolean correct_order; + + sret = gst_element_get_state (GST_ELEMENT (dtmfsrc), &state, NULL, 0); + if (sret != GST_STATE_CHANGE_SUCCESS || state != GST_STATE_PLAYING) { + GST_DEBUG_OBJECT (dtmfsrc, "dtmf-event, but not in PLAYING state"); + goto failure; + } + + event_structure = gst_event_get_structure (event); + + if (!gst_structure_get_int (event_structure, "type", &event_type) || + !gst_structure_get_boolean (event_structure, "start", &start) || + (start == TRUE && event_type != GST_TONE_DTMF_TYPE_EVENT)) + goto failure; + + if (gst_structure_get_int (event_structure, "method", &method)) { + if (method != 2) { + goto failure; + } + } + + if (start) + if (!gst_structure_get_int (event_structure, "number", &event_number) || + !gst_structure_get_int (event_structure, "volume", &event_volume)) + goto failure; + + + GST_OBJECT_LOCK (dtmfsrc); + if (gst_structure_get_clock_time (event_structure, "last-stop", &last_stop)) + dtmfsrc->last_stop = last_stop; + else + dtmfsrc->last_stop = GST_CLOCK_TIME_NONE; + correct_order = (start != dtmfsrc->last_event_was_start); + dtmfsrc->last_event_was_start = start; + GST_OBJECT_UNLOCK (dtmfsrc); + + if (!correct_order) + goto failure; + + if (start) { + GST_DEBUG_OBJECT (dtmfsrc, "Received start event %d with volume %d", + event_number, event_volume); + gst_dtmf_src_add_start_event (dtmfsrc, event_number, event_volume); + } + + else { + GST_DEBUG_OBJECT (dtmfsrc, "Received stop event"); + gst_dtmf_src_add_stop_event (dtmfsrc); + } + + return TRUE; +failure: + return FALSE; +} + +static gboolean +gst_dtmf_src_handle_event (GstBaseSrc * src, GstEvent * event) +{ + GstDTMFSrc *dtmfsrc; + gboolean result = FALSE; + + dtmfsrc = GST_DTMF_SRC (src); + + GST_LOG_OBJECT (dtmfsrc, "Received an %s event on the src pad", + GST_EVENT_TYPE_NAME (event)); + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_CUSTOM_UPSTREAM: + if (gst_event_has_name (event, "dtmf-event")) { + result = gst_dtmf_src_handle_dtmf_event (dtmfsrc, event); + break; + } + /* fall through */ + default: + result = GST_BASE_SRC_CLASS (parent_class)->event (src, event); + break; + } + + return result; +} + + +static gboolean +gst_dtmf_src_send_event (GstElement * element, GstEvent * event) +{ + GstDTMFSrc *dtmfsrc = GST_DTMF_SRC (element); + gboolean ret; + + GST_LOG_OBJECT (dtmfsrc, "Received an %s event via send_event", + GST_EVENT_TYPE_NAME (event)); + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_CUSTOM_BOTH: + case GST_EVENT_CUSTOM_BOTH_OOB: + case GST_EVENT_CUSTOM_UPSTREAM: + case GST_EVENT_CUSTOM_DOWNSTREAM: + case GST_EVENT_CUSTOM_DOWNSTREAM_OOB: + if (gst_event_has_name (event, "dtmf-event")) { + ret = gst_dtmf_src_handle_dtmf_event (dtmfsrc, event); + break; + } + /* fall through */ + default: + ret = GST_ELEMENT_CLASS (parent_class)->send_event (element, event); + break; + } + + return ret; +} + +static void +gst_dtmf_src_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) +{ + GstDTMFSrc *dtmfsrc; + + dtmfsrc = GST_DTMF_SRC (object); + + switch (prop_id) { + case PROP_INTERVAL: + dtmfsrc->interval = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_dtmf_src_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) +{ + GstDTMFSrc *dtmfsrc; + + dtmfsrc = GST_DTMF_SRC (object); + + switch (prop_id) { + case PROP_INTERVAL: + g_value_set_uint (value, dtmfsrc->interval); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_dtmf_prepare_timestamps (GstDTMFSrc * dtmfsrc) +{ + GstClockTime last_stop; + GstClockTime timestamp; + + GST_OBJECT_LOCK (dtmfsrc); + last_stop = dtmfsrc->last_stop; + GST_OBJECT_UNLOCK (dtmfsrc); + + if (GST_CLOCK_TIME_IS_VALID (last_stop)) { + timestamp = last_stop; + } else { + GstClock *clock; + + /* If there is no valid start time, lets use now as the start time */ + + clock = gst_element_get_clock (GST_ELEMENT (dtmfsrc)); + if (clock != NULL) { + timestamp = gst_clock_get_time (clock) + - gst_element_get_base_time (GST_ELEMENT (dtmfsrc)); + gst_object_unref (clock); + } else { + gchar *dtmf_name = gst_element_get_name (dtmfsrc); + GST_ERROR_OBJECT (dtmfsrc, "No clock set for element %s", dtmf_name); + dtmfsrc->timestamp = GST_CLOCK_TIME_NONE; + g_free (dtmf_name); + return; + } + } + + /* Make sure the timestamp always goes forward */ + if (timestamp > dtmfsrc->timestamp) + dtmfsrc->timestamp = timestamp; +} + +static void +gst_dtmf_src_add_start_event (GstDTMFSrc * dtmfsrc, gint event_number, + gint event_volume) +{ + + GstDTMFSrcEvent *event = g_slice_new0 (GstDTMFSrcEvent); + event->event_type = DTMF_EVENT_TYPE_START; + event->sample = 0; + event->event_number = CLAMP (event_number, MIN_EVENT, MAX_EVENT); + event->volume = CLAMP (event_volume, MIN_VOLUME, MAX_VOLUME); + + g_async_queue_push (dtmfsrc->event_queue, event); +} + +static void +gst_dtmf_src_add_stop_event (GstDTMFSrc * dtmfsrc) +{ + + GstDTMFSrcEvent *event = g_slice_new0 (GstDTMFSrcEvent); + event->event_type = DTMF_EVENT_TYPE_STOP; + event->sample = 0; + event->event_number = 0; + event->volume = 0; + + g_async_queue_push (dtmfsrc->event_queue, event); +} + +static GstBuffer * +gst_dtmf_src_generate_silence (float duration, gint sample_rate) +{ + gint buf_size; + + /* Create a buffer with data set to 0 */ + buf_size = ((duration / 1000) * sample_rate * SAMPLE_SIZE * CHANNELS) / 8; + + return gst_buffer_new_wrapped (g_malloc0 (buf_size), buf_size); +} + +static GstBuffer * +gst_dtmf_src_generate_tone (GstDTMFSrcEvent * event, DTMF_KEY key, + float duration, gint sample_rate) +{ + GstBuffer *buffer; + GstMapInfo map; + gint16 *p; + gint tone_size; + double i = 0; + double amplitude, f1, f2; + double volume_factor; + static GstAllocationParams params = { 0, 1, 0, 0, }; + + /* Create a buffer for the tone */ + tone_size = ((duration / 1000) * sample_rate * SAMPLE_SIZE * CHANNELS) / 8; + + buffer = gst_buffer_new_allocate (NULL, tone_size, ¶ms); + + gst_buffer_map (buffer, &map, GST_MAP_READWRITE); + p = (gint16 *) map.data; + + volume_factor = pow (10, (-event->volume) / 20); + + /* + * For each sample point we calculate 'x' as the + * the amplitude value. + */ + for (i = 0; i < (tone_size / (SAMPLE_SIZE / 8)); i++) { + /* + * We add the fundamental frequencies together. + */ + f1 = sin (2 * M_PI * key.low_frequency * (event->sample / sample_rate)); + f2 = sin (2 * M_PI * key.high_frequency * (event->sample / sample_rate)); + + amplitude = (f1 + f2) / 2; + + /* Adjust the volume */ + amplitude *= volume_factor; + + /* Make the [-1:1] interval into a [-32767:32767] interval */ + amplitude *= 32767; + + /* Store it in the data buffer */ + *(p++) = (gint16) amplitude; + + (event->sample)++; + } + + gst_buffer_unmap (buffer, &map); + + return buffer; +} + + + +static GstBuffer * +gst_dtmf_src_create_next_tone_packet (GstDTMFSrc * dtmfsrc, + GstDTMFSrcEvent * event) +{ + GstBuffer *buf = NULL; + gboolean send_silence = FALSE; + + GST_LOG_OBJECT (dtmfsrc, "Creating buffer for tone %s", + DTMF_KEYS[event->event_number].event_name); + + if (event->packet_count * dtmfsrc->interval < MIN_INTER_DIGIT_INTERVAL) { + send_silence = TRUE; + } + + if (send_silence) { + GST_LOG_OBJECT (dtmfsrc, "Generating silence"); + buf = gst_dtmf_src_generate_silence (dtmfsrc->interval, + dtmfsrc->sample_rate); + } else { + GST_LOG_OBJECT (dtmfsrc, "Generating tone"); + buf = gst_dtmf_src_generate_tone (event, DTMF_KEYS[event->event_number], + dtmfsrc->interval, dtmfsrc->sample_rate); + } + event->packet_count++; + + + /* timestamp and duration of GstBuffer */ + GST_BUFFER_DURATION (buf) = dtmfsrc->interval * GST_MSECOND; + GST_BUFFER_TIMESTAMP (buf) = dtmfsrc->timestamp; + + GST_LOG_OBJECT (dtmfsrc, "Creating new buffer with event %u duration " + " gst: %" GST_TIME_FORMAT " at %" GST_TIME_FORMAT, + event->event_number, GST_TIME_ARGS (GST_BUFFER_DURATION (buf)), + GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf))); + + dtmfsrc->timestamp += GST_BUFFER_DURATION (buf); + + return buf; +} + +static void +gst_dtmf_src_post_message (GstDTMFSrc * dtmfsrc, const gchar * message_name, + GstDTMFSrcEvent * event) +{ + GstStructure *s = NULL; + + switch (event->event_type) { + case DTMF_EVENT_TYPE_START: + s = gst_structure_new (message_name, + "type", G_TYPE_INT, 1, + "method", G_TYPE_INT, 2, + "start", G_TYPE_BOOLEAN, TRUE, + "number", G_TYPE_INT, event->event_number, + "volume", G_TYPE_INT, event->volume, NULL); + break; + case DTMF_EVENT_TYPE_STOP: + s = gst_structure_new (message_name, + "type", G_TYPE_INT, 1, "method", G_TYPE_INT, 2, + "start", G_TYPE_BOOLEAN, FALSE, NULL); + break; + case DTMF_EVENT_TYPE_PAUSE_TASK: + return; + } + + if (s) + gst_element_post_message (GST_ELEMENT (dtmfsrc), + gst_message_new_element (GST_OBJECT (dtmfsrc), s)); +} + +static GstFlowReturn +gst_dtmf_src_create (GstBaseSrc * basesrc, guint64 offset, + guint length, GstBuffer ** buffer) +{ + GstBuffer *buf = NULL; + GstDTMFSrcEvent *event; + GstDTMFSrc *dtmfsrc; + GstClock *clock; + GstClockID *clockid; + GstClockReturn clockret; + + dtmfsrc = GST_DTMF_SRC (basesrc); + + do { + + if (dtmfsrc->last_event == NULL) { + GST_DEBUG_OBJECT (dtmfsrc, "popping"); + event = g_async_queue_pop (dtmfsrc->event_queue); + + GST_DEBUG_OBJECT (dtmfsrc, "popped %d", event->event_type); + + switch (event->event_type) { + case DTMF_EVENT_TYPE_STOP: + GST_WARNING_OBJECT (dtmfsrc, + "Received a DTMF stop event when already stopped"); + gst_dtmf_src_post_message (dtmfsrc, "dtmf-event-dropped", event); + break; + case DTMF_EVENT_TYPE_START: + gst_dtmf_prepare_timestamps (dtmfsrc); + + event->packet_count = 0; + dtmfsrc->last_event = event; + event = NULL; + gst_dtmf_src_post_message (dtmfsrc, "dtmf-event-processed", + dtmfsrc->last_event); + break; + case DTMF_EVENT_TYPE_PAUSE_TASK: + /* + * We're pushing it back because it has to stay in there until + * the task is really paused (and the queue will then be flushed) + */ + GST_DEBUG_OBJECT (dtmfsrc, "pushing pause_task..."); + GST_OBJECT_LOCK (dtmfsrc); + if (dtmfsrc->paused) { + g_async_queue_push (dtmfsrc->event_queue, event); + goto paused_locked; + } + GST_OBJECT_UNLOCK (dtmfsrc); + break; + } + if (event) + g_slice_free (GstDTMFSrcEvent, event); + } else if (dtmfsrc->last_event->packet_count * dtmfsrc->interval >= + MIN_DUTY_CYCLE) { + event = g_async_queue_try_pop (dtmfsrc->event_queue); + + if (event != NULL) { + + switch (event->event_type) { + case DTMF_EVENT_TYPE_START: + GST_WARNING_OBJECT (dtmfsrc, + "Received two consecutive DTMF start events"); + gst_dtmf_src_post_message (dtmfsrc, "dtmf-event-dropped", event); + break; + case DTMF_EVENT_TYPE_STOP: + g_slice_free (GstDTMFSrcEvent, dtmfsrc->last_event); + dtmfsrc->last_event = NULL; + gst_dtmf_src_post_message (dtmfsrc, "dtmf-event-processed", event); + break; + case DTMF_EVENT_TYPE_PAUSE_TASK: + /* + * We're pushing it back because it has to stay in there until + * the task is really paused (and the queue will then be flushed) + */ + GST_DEBUG_OBJECT (dtmfsrc, "pushing pause_task..."); + + GST_OBJECT_LOCK (dtmfsrc); + if (dtmfsrc->paused) { + g_async_queue_push (dtmfsrc->event_queue, event); + goto paused_locked; + } + GST_OBJECT_UNLOCK (dtmfsrc); + + break; + } + g_slice_free (GstDTMFSrcEvent, event); + } + } + } while (dtmfsrc->last_event == NULL); + + GST_LOG_OBJECT (dtmfsrc, "end event check, now wait for the proper time"); + + clock = gst_element_get_clock (GST_ELEMENT (basesrc)); + + clockid = gst_clock_new_single_shot_id (clock, dtmfsrc->timestamp + + gst_element_get_base_time (GST_ELEMENT (dtmfsrc))); + gst_object_unref (clock); + + GST_OBJECT_LOCK (dtmfsrc); + if (!dtmfsrc->paused) { + dtmfsrc->clockid = clockid; + GST_OBJECT_UNLOCK (dtmfsrc); + + clockret = gst_clock_id_wait (clockid, NULL); + + GST_OBJECT_LOCK (dtmfsrc); + if (dtmfsrc->paused) + clockret = GST_CLOCK_UNSCHEDULED; + } else { + clockret = GST_CLOCK_UNSCHEDULED; + } + gst_clock_id_unref (clockid); + dtmfsrc->clockid = NULL; + GST_OBJECT_UNLOCK (dtmfsrc); + + if (clockret == GST_CLOCK_UNSCHEDULED) { + goto paused; + } + + buf = gst_dtmf_src_create_next_tone_packet (dtmfsrc, dtmfsrc->last_event); + + GST_LOG_OBJECT (dtmfsrc, "Created buffer of size %" G_GSIZE_FORMAT, + gst_buffer_get_size (buf)); + *buffer = buf; + + return GST_FLOW_OK; + +paused_locked: + GST_OBJECT_UNLOCK (dtmfsrc); + +paused: + + if (dtmfsrc->last_event) { + GST_DEBUG_OBJECT (dtmfsrc, "Stopping current event"); + /* Don't forget to release the stream lock */ + g_slice_free (GstDTMFSrcEvent, dtmfsrc->last_event); + dtmfsrc->last_event = NULL; + } + + return GST_FLOW_FLUSHING; + +} + +static gboolean +gst_dtmf_src_unlock (GstBaseSrc * src) +{ + GstDTMFSrc *dtmfsrc = GST_DTMF_SRC (src); + GstDTMFSrcEvent *event = NULL; + + GST_DEBUG_OBJECT (dtmfsrc, "Called unlock"); + + GST_OBJECT_LOCK (dtmfsrc); + dtmfsrc->paused = TRUE; + if (dtmfsrc->clockid) { + gst_clock_id_unschedule (dtmfsrc->clockid); + } + GST_OBJECT_UNLOCK (dtmfsrc); + + GST_DEBUG_OBJECT (dtmfsrc, "Pushing the PAUSE_TASK event on unlock request"); + event = g_slice_new0 (GstDTMFSrcEvent); + event->event_type = DTMF_EVENT_TYPE_PAUSE_TASK; + g_async_queue_push (dtmfsrc->event_queue, event); + + return TRUE; +} + + +static gboolean +gst_dtmf_src_unlock_stop (GstBaseSrc * src) +{ + GstDTMFSrc *dtmfsrc = GST_DTMF_SRC (src); + + GST_DEBUG_OBJECT (dtmfsrc, "Unlock stopped"); + + GST_OBJECT_LOCK (dtmfsrc); + dtmfsrc->paused = FALSE; + GST_OBJECT_UNLOCK (dtmfsrc); + + return TRUE; +} + + +static gboolean +gst_dtmf_src_negotiate (GstBaseSrc * basesrc) +{ + GstDTMFSrc *dtmfsrc = GST_DTMF_SRC (basesrc); + GstCaps *caps; + GstStructure *s; + gboolean ret; + + caps = gst_pad_get_allowed_caps (GST_BASE_SRC_PAD (basesrc)); + + if (!caps) + caps = gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD (basesrc)); + + if (gst_caps_is_empty (caps)) { + gst_caps_unref (caps); + return FALSE; + } + + caps = gst_caps_truncate (caps); + + caps = gst_caps_make_writable (caps); + s = gst_caps_get_structure (caps, 0); + + gst_structure_fixate_field_nearest_int (s, "rate", DEFAULT_SAMPLE_RATE); + + if (!gst_structure_get_int (s, "rate", &dtmfsrc->sample_rate)) { + GST_ERROR_OBJECT (dtmfsrc, "Could not get rate"); + gst_caps_unref (caps); + return FALSE; + } + + ret = gst_pad_set_caps (GST_BASE_SRC_PAD (basesrc), caps); + + gst_caps_unref (caps); + + return ret; +} + +static GstStateChangeReturn +gst_dtmf_src_change_state (GstElement * element, GstStateChange transition) +{ + GstDTMFSrc *dtmfsrc; + GstStateChangeReturn result; + gboolean no_preroll = FALSE; + GstDTMFSrcEvent *event = NULL; + + dtmfsrc = GST_DTMF_SRC (element); + + switch (transition) { + case GST_STATE_CHANGE_READY_TO_PAUSED: + /* Flushing the event queue */ + event = g_async_queue_try_pop (dtmfsrc->event_queue); + + while (event != NULL) { + gst_dtmf_src_post_message (dtmfsrc, "dtmf-event-dropped", event); + g_slice_free (GstDTMFSrcEvent, event); + event = g_async_queue_try_pop (dtmfsrc->event_queue); + } + dtmfsrc->last_event_was_start = FALSE; + dtmfsrc->timestamp = 0; + no_preroll = TRUE; + break; + default: + break; + } + + if ((result = + GST_ELEMENT_CLASS (gst_dtmf_src_parent_class)->change_state (element, + transition)) == GST_STATE_CHANGE_FAILURE) + goto failure; + + switch (transition) { + case GST_STATE_CHANGE_PLAYING_TO_PAUSED: + no_preroll = TRUE; + break; + case GST_STATE_CHANGE_PAUSED_TO_READY: + GST_DEBUG_OBJECT (dtmfsrc, "Flushing event queue"); + /* Flushing the event queue */ + event = g_async_queue_try_pop (dtmfsrc->event_queue); + + while (event != NULL) { + gst_dtmf_src_post_message (dtmfsrc, "dtmf-event-dropped", event); + g_slice_free (GstDTMFSrcEvent, event); + event = g_async_queue_try_pop (dtmfsrc->event_queue); + } + dtmfsrc->last_event_was_start = FALSE; + + break; + default: + break; + } + + if (no_preroll && result == GST_STATE_CHANGE_SUCCESS) + result = GST_STATE_CHANGE_NO_PREROLL; + + return result; + + /* ERRORS */ +failure: + { + GST_ERROR_OBJECT (dtmfsrc, "parent failed state change"); + return result; + } +} + +gboolean +gst_dtmf_src_plugin_init (GstPlugin * plugin) +{ + return gst_element_register (plugin, "dtmfsrc", + GST_RANK_NONE, GST_TYPE_DTMF_SRC); +} diff --git a/gst/dtmf/gstdtmfsrc.h b/gst/dtmf/gstdtmfsrc.h new file mode 100644 index 0000000000000000000000000000000000000000..04440bc1857ea7c8a5040faf8707d4b327e3e13d --- /dev/null +++ b/gst/dtmf/gstdtmfsrc.h @@ -0,0 +1,101 @@ +/* GStreamer DTMF source + * + * gstdtmfsrc.h: + * + * Copyright (C) <2007> Collabora. + * Contact: Youness Alaoui <youness.alaoui@collabora.co.uk> + * Copyright (C) <2007> Nokia Corporation. + * Contact: Zeeshan Ali <zeeshan.ali@nokia.com> + * Copyright (C) <2005> Wim Taymans <wim@fluendo.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_DTMF_SRC_H__ +#define __GST_DTMF_SRC_H__ + +#include <gst/gst.h> +#include <gst/gstbuffer.h> +#include <gst/base/gstbasesrc.h> + +G_BEGIN_DECLS +#define GST_TYPE_DTMF_SRC (gst_dtmf_src_get_type()) +#define GST_DTMF_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DTMF_SRC,GstDTMFSrc)) +#define GST_DTMF_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DTMF_SRC,GstDTMFSrcClass)) +#define GST_DTMF_SRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_DTMF_SRC, GstDTMFSrcClass)) +#define GST_IS_DTMF_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DTMF_SRC)) +#define GST_IS_DTMF_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DTMF_SRC)) +#define GST_DTMF_SRC_CAST(obj) ((GstDTMFSrc *)(obj)) +typedef struct _GstDTMFSrc GstDTMFSrc; +typedef struct _GstDTMFSrcClass GstDTMFSrcClass; + +enum _GstDTMFEventType +{ + DTMF_EVENT_TYPE_START, + DTMF_EVENT_TYPE_STOP, + DTMF_EVENT_TYPE_PAUSE_TASK +}; + +typedef enum _GstDTMFEventType GstDTMFEventType; + +struct _GstDTMFSrcEvent +{ + GstDTMFEventType event_type; + double sample; + guint16 event_number; + guint16 volume; + guint32 packet_count; +}; + +typedef struct _GstDTMFSrcEvent GstDTMFSrcEvent; + +/** + * GstDTMFSrc: + * @element: the parent element. + * + * The opaque #GstDTMFSrc data structure. + */ +struct _GstDTMFSrc +{ + /*< private >*/ + GstBaseSrc parent; + GAsyncQueue *event_queue; + GstDTMFSrcEvent *last_event; + gboolean last_event_was_start; + + guint16 interval; + GstClockTime timestamp; + + gboolean paused; + GstClockID clockid; + + GstClockTime last_stop; + + gint sample_rate; +}; + + +struct _GstDTMFSrcClass +{ + GstBaseSrcClass parent_class; +}; + +GType gst_dtmf_src_get_type (void); + +gboolean gst_dtmf_src_plugin_init (GstPlugin * plugin); + +G_END_DECLS +#endif /* __GST_DTMF_SRC_H__ */ diff --git a/gst/dtmf/gstrtpdtmfdepay.c b/gst/dtmf/gstrtpdtmfdepay.c new file mode 100644 index 0000000000000000000000000000000000000000..d66f24a24d6335fb1e9b559f6f25bb67cf9f8bc1 --- /dev/null +++ b/gst/dtmf/gstrtpdtmfdepay.c @@ -0,0 +1,543 @@ +/* GstRtpDtmfDepay + * + * Copyright (C) 2008 Collabora Limited + * Copyright (C) 2008 Nokia Corporation + * Contact: Youness Alaoui <youness.alaoui@collabora.co.uk> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ +/** + * SECTION:element-rtpdtmfdepay + * @see_also: rtpdtmfsrc, rtpdtmfmux + * + * This element takes RTP DTMF packets and produces sound. It also emits a + * message on the #GstBus. + * + * The message is called "dtmf-event" and has the following fields + * <informaltable> + * <tgroup cols='4'> + * <colspec colname='Name' /> + * <colspec colname='Type' /> + * <colspec colname='Possible values' /> + * <colspec colname='Purpose' /> + * <thead> + * <row> + * <entry>Name</entry> + * <entry>GType</entry> + * <entry>Possible values</entry> + * <entry>Purpose</entry> + * </row> + * </thead> + * <tbody> + * <row> + * <entry>type</entry> + * <entry>G_TYPE_INT</entry> + * <entry>0-1</entry> + * <entry>Which of the two methods + * specified in RFC 2833 to use. The value should be 0 for tones and 1 for + * named events. Tones are specified by their frequencies and events are specied + * by their number. This element currently only recognizes events. + * Do not confuse with "method" which specified the output. + * </entry> + * </row> + * <row> + * <entry>number</entry> + * <entry>G_TYPE_INT</entry> + * <entry>0-16</entry> + * <entry>The event number.</entry> + * </row> + * <row> + * <entry>volume</entry> + * <entry>G_TYPE_INT</entry> + * <entry>0-36</entry> + * <entry>This field describes the power level of the tone, expressed in dBm0 + * after dropping the sign. Power levels range from 0 to -63 dBm0. The range of + * valid DTMF is from 0 to -36 dBm0. + * </entry> + * </row> + * <row> + * <entry>method</entry> + * <entry>G_TYPE_INT</entry> + * <entry>1</entry> + * <entry>This field will always been 1 (ie RTP event) from this element. + * </entry> + * </row> + * </tbody> + * </tgroup> + * </informaltable> + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "gstrtpdtmfdepay.h" + +#include <string.h> +#include <math.h> + +#include <gst/audio/audio.h> +#include <gst/rtp/gstrtpbuffer.h> + +#define DEFAULT_PACKET_INTERVAL 50 /* ms */ +#define MIN_PACKET_INTERVAL 10 /* ms */ +#define MAX_PACKET_INTERVAL 50 /* ms */ +#define SAMPLE_RATE 8000 +#define SAMPLE_SIZE 16 +#define CHANNELS 1 +#define MIN_DUTY_CYCLE (MIN_INTER_DIGIT_INTERVAL + MIN_PULSE_DURATION) + +#define MIN_UNIT_TIME 0 +#define MAX_UNIT_TIME 1000 +#define DEFAULT_UNIT_TIME 0 + +#define DEFAULT_MAX_DURATION 0 + +typedef struct st_dtmf_key +{ + const char *event_name; + int event_encoding; + float low_frequency; + float high_frequency; +} DTMF_KEY; + +static const DTMF_KEY DTMF_KEYS[] = { + {"DTMF_KEY_EVENT_0", 0, 941, 1336}, + {"DTMF_KEY_EVENT_1", 1, 697, 1209}, + {"DTMF_KEY_EVENT_2", 2, 697, 1336}, + {"DTMF_KEY_EVENT_3", 3, 697, 1477}, + {"DTMF_KEY_EVENT_4", 4, 770, 1209}, + {"DTMF_KEY_EVENT_5", 5, 770, 1336}, + {"DTMF_KEY_EVENT_6", 6, 770, 1477}, + {"DTMF_KEY_EVENT_7", 7, 852, 1209}, + {"DTMF_KEY_EVENT_8", 8, 852, 1336}, + {"DTMF_KEY_EVENT_9", 9, 852, 1477}, + {"DTMF_KEY_EVENT_S", 10, 941, 1209}, + {"DTMF_KEY_EVENT_P", 11, 941, 1477}, + {"DTMF_KEY_EVENT_A", 12, 697, 1633}, + {"DTMF_KEY_EVENT_B", 13, 770, 1633}, + {"DTMF_KEY_EVENT_C", 14, 852, 1633}, + {"DTMF_KEY_EVENT_D", 15, 941, 1633}, +}; + +#define MAX_DTMF_EVENTS 16 + +enum +{ + DTMF_KEY_EVENT_1 = 1, + DTMF_KEY_EVENT_2 = 2, + DTMF_KEY_EVENT_3 = 3, + DTMF_KEY_EVENT_4 = 4, + DTMF_KEY_EVENT_5 = 5, + DTMF_KEY_EVENT_6 = 6, + DTMF_KEY_EVENT_7 = 7, + DTMF_KEY_EVENT_8 = 8, + DTMF_KEY_EVENT_9 = 9, + DTMF_KEY_EVENT_0 = 0, + DTMF_KEY_EVENT_STAR = 10, + DTMF_KEY_EVENT_POUND = 11, + DTMF_KEY_EVENT_A = 12, + DTMF_KEY_EVENT_B = 13, + DTMF_KEY_EVENT_C = 14, + DTMF_KEY_EVENT_D = 15, +}; + +GST_DEBUG_CATEGORY_STATIC (gst_rtp_dtmf_depay_debug); +#define GST_CAT_DEFAULT gst_rtp_dtmf_depay_debug + +enum +{ + + + /* FILL ME */ + LAST_SIGNAL +}; + +enum +{ + PROP_0, + PROP_UNIT_TIME, + PROP_MAX_DURATION +}; + +enum +{ + ARG_0 +}; + +static GstStaticPadTemplate gst_rtp_dtmf_depay_src_template = +GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "format = (string) \"" GST_AUDIO_NE (S16) "\", " + "rate = " GST_AUDIO_RATE_RANGE ", " "channels = (int) 1") + ); + +static GstStaticPadTemplate gst_rtp_dtmf_depay_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp, " + "media = (string) \"audio\", " + "payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING ", " + "clock-rate = (int) [ 0, MAX ], " + "encoding-name = (string) \"TELEPHONE-EVENT\"") + ); + +G_DEFINE_TYPE (GstRtpDTMFDepay, gst_rtp_dtmf_depay, + GST_TYPE_RTP_BASE_DEPAYLOAD); + +static void gst_rtp_dtmf_depay_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_rtp_dtmf_depay_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); +static GstBuffer *gst_rtp_dtmf_depay_process (GstRTPBaseDepayload * depayload, + GstBuffer * buf); +gboolean gst_rtp_dtmf_depay_setcaps (GstRTPBaseDepayload * filter, + GstCaps * caps); + +static void +gst_rtp_dtmf_depay_class_init (GstRtpDTMFDepayClass * klass) +{ + GObjectClass *gobject_class; + GstElementClass *gstelement_class; + GstRTPBaseDepayloadClass *gstrtpbasedepayload_class; + + gobject_class = G_OBJECT_CLASS (klass); + gstelement_class = GST_ELEMENT_CLASS (klass); + gstrtpbasedepayload_class = GST_RTP_BASE_DEPAYLOAD_CLASS (klass); + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&gst_rtp_dtmf_depay_src_template)); + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&gst_rtp_dtmf_depay_sink_template)); + + GST_DEBUG_CATEGORY_INIT (gst_rtp_dtmf_depay_debug, + "rtpdtmfdepay", 0, "rtpdtmfdepay element"); + gst_element_class_set_static_metadata (gstelement_class, + "RTP DTMF packet depayloader", "Codec/Depayloader/Network", + "Generates DTMF Sound from telephone-event RTP packets", + "Youness Alaoui <youness.alaoui@collabora.co.uk>"); + + gobject_class->set_property = + GST_DEBUG_FUNCPTR (gst_rtp_dtmf_depay_set_property); + gobject_class->get_property = + GST_DEBUG_FUNCPTR (gst_rtp_dtmf_depay_get_property); + + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_UNIT_TIME, + g_param_spec_uint ("unit-time", "Duration unittime", + "The smallest unit (ms) the duration must be a multiple of (0 disables it)", + MIN_UNIT_TIME, MAX_UNIT_TIME, DEFAULT_UNIT_TIME, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_MAX_DURATION, + g_param_spec_uint ("max-duration", "Maximum duration", + "The maxumimum duration (ms) of the outgoing soundpacket. " + "(0 = no limit)", 0, G_MAXUINT, DEFAULT_MAX_DURATION, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + gstrtpbasedepayload_class->process = + GST_DEBUG_FUNCPTR (gst_rtp_dtmf_depay_process); + gstrtpbasedepayload_class->set_caps = + GST_DEBUG_FUNCPTR (gst_rtp_dtmf_depay_setcaps); + +} + +static void +gst_rtp_dtmf_depay_init (GstRtpDTMFDepay * rtpdtmfdepay) +{ + rtpdtmfdepay->unit_time = DEFAULT_UNIT_TIME; +} + +static void +gst_rtp_dtmf_depay_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) +{ + GstRtpDTMFDepay *rtpdtmfdepay; + + rtpdtmfdepay = GST_RTP_DTMF_DEPAY (object); + + switch (prop_id) { + case PROP_UNIT_TIME: + rtpdtmfdepay->unit_time = g_value_get_uint (value); + break; + case PROP_MAX_DURATION: + rtpdtmfdepay->max_duration = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_rtp_dtmf_depay_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec) +{ + GstRtpDTMFDepay *rtpdtmfdepay; + + rtpdtmfdepay = GST_RTP_DTMF_DEPAY (object); + + switch (prop_id) { + case PROP_UNIT_TIME: + g_value_set_uint (value, rtpdtmfdepay->unit_time); + break; + case PROP_MAX_DURATION: + g_value_set_uint (value, rtpdtmfdepay->max_duration); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +gboolean +gst_rtp_dtmf_depay_setcaps (GstRTPBaseDepayload * filter, GstCaps * caps) +{ + GstCaps *filtercaps, *srccaps; + GstStructure *structure = gst_caps_get_structure (caps, 0); + gint clock_rate = 8000; /* default */ + + gst_structure_get_int (structure, "clock-rate", &clock_rate); + filter->clock_rate = clock_rate; + + filtercaps = + gst_pad_get_pad_template_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (filter)); + + filtercaps = gst_caps_make_writable (filtercaps); + gst_caps_set_simple (filtercaps, "rate", G_TYPE_INT, clock_rate, NULL); + + srccaps = gst_pad_peer_query_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (filter), + filtercaps); + gst_caps_unref (filtercaps); + + gst_pad_set_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (filter), srccaps); + gst_caps_unref (srccaps); + + return TRUE; +} + +static GstBuffer * +gst_dtmf_src_generate_tone (GstRtpDTMFDepay * rtpdtmfdepay, + GstRTPDTMFPayload payload) +{ + GstBuffer *buf; + GstMapInfo map; + gint16 *p; + gint tone_size; + double i = 0; + double amplitude, f1, f2; + double volume_factor; + DTMF_KEY key = DTMF_KEYS[payload.event]; + guint32 clock_rate = 8000 /* default */ ; + GstRTPBaseDepayload *depayload = GST_RTP_BASE_DEPAYLOAD (rtpdtmfdepay); + gint volume; + static GstAllocationParams params = { 0, 1, 0, 0, }; + + clock_rate = depayload->clock_rate; + + /* Create a buffer for the tone */ + tone_size = (payload.duration * SAMPLE_SIZE * CHANNELS) / 8; + buf = gst_buffer_new_allocate (NULL, tone_size, ¶ms); + GST_BUFFER_DURATION (buf) = payload.duration * GST_SECOND / clock_rate; + volume = payload.volume; + + gst_buffer_map (buf, &map, GST_MAP_WRITE); + p = (gint16 *) map.data; + + volume_factor = pow (10, (-volume) / 20); + + /* + * For each sample point we calculate 'x' as the + * the amplitude value. + */ + for (i = 0; i < (tone_size / (SAMPLE_SIZE / 8)); i++) { + /* + * We add the fundamental frequencies together. + */ + f1 = sin (2 * M_PI * key.low_frequency * (rtpdtmfdepay->sample / + clock_rate)); + f2 = sin (2 * M_PI * key.high_frequency * (rtpdtmfdepay->sample / + clock_rate)); + + amplitude = (f1 + f2) / 2; + + /* Adjust the volume */ + amplitude *= volume_factor; + + /* Make the [-1:1] interval into a [-32767:32767] interval */ + amplitude *= 32767; + + /* Store it in the data buffer */ + *(p++) = (gint16) amplitude; + + (rtpdtmfdepay->sample)++; + } + + gst_buffer_unmap (buf, &map); + + return buf; +} + + +static GstBuffer * +gst_rtp_dtmf_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) +{ + + GstRtpDTMFDepay *rtpdtmfdepay = NULL; + GstBuffer *outbuf = NULL; + gint payload_len; + guint8 *payload = NULL; + guint32 timestamp; + GstRTPDTMFPayload dtmf_payload; + gboolean marker; + GstStructure *structure = NULL; + GstMessage *dtmf_message = NULL; + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + + rtpdtmfdepay = GST_RTP_DTMF_DEPAY (depayload); + + gst_rtp_buffer_map (buf, GST_MAP_READ, &rtpbuffer); + + payload_len = gst_rtp_buffer_get_payload_len (&rtpbuffer); + payload = gst_rtp_buffer_get_payload (&rtpbuffer); + + if (payload_len != sizeof (GstRTPDTMFPayload)) + goto bad_packet; + + memcpy (&dtmf_payload, payload, sizeof (GstRTPDTMFPayload)); + + if (dtmf_payload.event > MAX_EVENT) + goto bad_packet; + + marker = gst_rtp_buffer_get_marker (&rtpbuffer); + + timestamp = gst_rtp_buffer_get_timestamp (&rtpbuffer); + + dtmf_payload.duration = g_ntohs (dtmf_payload.duration); + + /* clip to whole units of unit_time */ + if (rtpdtmfdepay->unit_time) { + guint unit_time_clock = + (rtpdtmfdepay->unit_time * depayload->clock_rate) / 1000; + if (dtmf_payload.duration % unit_time_clock) { + /* Make sure we don't overflow the duration */ + if (dtmf_payload.duration < G_MAXUINT16 - unit_time_clock) + dtmf_payload.duration += unit_time_clock - + (dtmf_payload.duration % unit_time_clock); + else + dtmf_payload.duration -= dtmf_payload.duration % unit_time_clock; + } + } + + /* clip to max duration */ + if (rtpdtmfdepay->max_duration) { + guint max_duration_clock = + (rtpdtmfdepay->max_duration * depayload->clock_rate) / 1000; + + if (max_duration_clock < G_MAXUINT16 && + dtmf_payload.duration > max_duration_clock) + dtmf_payload.duration = max_duration_clock; + } + + GST_DEBUG_OBJECT (depayload, "Received new RTP DTMF packet : " + "marker=%d - timestamp=%u - event=%d - duration=%d", + marker, timestamp, dtmf_payload.event, dtmf_payload.duration); + + GST_DEBUG_OBJECT (depayload, + "Previous information : timestamp=%u - duration=%d", + rtpdtmfdepay->previous_ts, rtpdtmfdepay->previous_duration); + + /* First packet */ + if (marker || rtpdtmfdepay->previous_ts != timestamp) { + rtpdtmfdepay->sample = 0; + rtpdtmfdepay->previous_ts = timestamp; + rtpdtmfdepay->previous_duration = dtmf_payload.duration; + rtpdtmfdepay->first_gst_ts = GST_BUFFER_PTS (buf); + + structure = gst_structure_new ("dtmf-event", + "number", G_TYPE_INT, dtmf_payload.event, + "volume", G_TYPE_INT, dtmf_payload.volume, + "type", G_TYPE_INT, 1, "method", G_TYPE_INT, 1, NULL); + if (structure) { + dtmf_message = + gst_message_new_element (GST_OBJECT (depayload), structure); + if (dtmf_message) { + if (!gst_element_post_message (GST_ELEMENT (depayload), dtmf_message)) { + GST_ERROR_OBJECT (depayload, + "Unable to send dtmf-event message to bus"); + } + } else { + GST_ERROR_OBJECT (depayload, "Unable to create dtmf-event message"); + } + } else { + GST_ERROR_OBJECT (depayload, "Unable to create dtmf-event structure"); + } + } else { + guint16 duration = dtmf_payload.duration; + dtmf_payload.duration -= rtpdtmfdepay->previous_duration; + /* If late buffer, ignore */ + if (duration > rtpdtmfdepay->previous_duration) + rtpdtmfdepay->previous_duration = duration; + } + + GST_DEBUG_OBJECT (depayload, "new previous duration : %d - new duration : %d" + " - diff : %d - clock rate : %d - timestamp : %" G_GUINT64_FORMAT, + rtpdtmfdepay->previous_duration, dtmf_payload.duration, + (rtpdtmfdepay->previous_duration - dtmf_payload.duration), + depayload->clock_rate, GST_BUFFER_TIMESTAMP (buf)); + + /* If late or duplicate packet (like the redundant end packet). Ignore */ + if (dtmf_payload.duration > 0) { + outbuf = gst_dtmf_src_generate_tone (rtpdtmfdepay, dtmf_payload); + + + GST_BUFFER_PTS (outbuf) = rtpdtmfdepay->first_gst_ts + + (rtpdtmfdepay->previous_duration - dtmf_payload.duration) * + GST_SECOND / depayload->clock_rate; + GST_BUFFER_OFFSET (outbuf) = + (rtpdtmfdepay->previous_duration - dtmf_payload.duration) * + GST_SECOND / depayload->clock_rate; + GST_BUFFER_OFFSET_END (outbuf) = rtpdtmfdepay->previous_duration * + GST_SECOND / depayload->clock_rate; + + GST_DEBUG_OBJECT (depayload, + "timestamp : %" G_GUINT64_FORMAT " - time %" GST_TIME_FORMAT, + GST_BUFFER_TIMESTAMP (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf))); + + } + + gst_rtp_buffer_unmap (&rtpbuffer); + + return outbuf; + +bad_packet: + GST_ELEMENT_WARNING (rtpdtmfdepay, STREAM, DECODE, + ("Packet did not validate"), (NULL)); + + if (rtpbuffer.buffer != NULL) + gst_rtp_buffer_unmap (&rtpbuffer); + + return NULL; +} + +gboolean +gst_rtp_dtmf_depay_plugin_init (GstPlugin * plugin) +{ + return gst_element_register (plugin, "rtpdtmfdepay", + GST_RANK_MARGINAL, GST_TYPE_RTP_DTMF_DEPAY); +} diff --git a/gst/dtmf/gstrtpdtmfdepay.h b/gst/dtmf/gstrtpdtmfdepay.h new file mode 100644 index 0000000000000000000000000000000000000000..c5ed189409767e09835f4d7913d8b94bbd60745c --- /dev/null +++ b/gst/dtmf/gstrtpdtmfdepay.h @@ -0,0 +1,68 @@ +/* GstRtpDtmfDepay + * + * Copyright (C) 2008 Collabora Limited + * Copyright (C) 2008 Nokia Corporation + * Contact: Youness Alaoui <youness.alaoui@collabora.co.uk> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_RTP_DTMF_DEPAY_H__ +#define __GST_RTP_DTMF_DEPAY_H__ + +#include <gst/gst.h> +#include <gst/base/gstadapter.h> +#include <gst/rtp/gstrtpbasedepayload.h> + +#include "gstdtmfcommon.h" + +G_BEGIN_DECLS +#define GST_TYPE_RTP_DTMF_DEPAY \ + (gst_rtp_dtmf_depay_get_type()) +#define GST_RTP_DTMF_DEPAY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_DTMF_DEPAY,GstRtpDTMFDepay)) +#define GST_RTP_DTMF_DEPAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_DTMF_DEPAY,GstRtpDTMFDepayClass)) +#define GST_IS_RTP_DTMF_DEPAY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_DTMF_DEPAY)) +#define GST_IS_RTP_DTMF_DEPAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DTMF_DEPAY)) +typedef struct _GstRtpDTMFDepay GstRtpDTMFDepay; +typedef struct _GstRtpDTMFDepayClass GstRtpDTMFDepayClass; + +struct _GstRtpDTMFDepay +{ + /*< private >*/ + GstRTPBaseDepayload depayload; + double sample; + guint32 previous_ts; + guint16 previous_duration; + GstClockTime first_gst_ts; + guint unit_time; + guint max_duration; +}; + +struct _GstRtpDTMFDepayClass +{ + GstRTPBaseDepayloadClass parent_class; +}; + +GType gst_rtp_dtmf_depay_get_type (void); + +gboolean gst_rtp_dtmf_depay_plugin_init (GstPlugin * plugin); + +G_END_DECLS +#endif /* __GST_RTP_DTMF_DEPAY_H__ */ diff --git a/gst/dtmf/gstrtpdtmfsrc.c b/gst/dtmf/gstrtpdtmfsrc.c new file mode 100644 index 0000000000000000000000000000000000000000..2a0b4a3bb454720c6c89b0ef10d236e97a723c18 --- /dev/null +++ b/gst/dtmf/gstrtpdtmfsrc.c @@ -0,0 +1,1156 @@ +/* GStreamer RTP DTMF source + * + * gstrtpdtmfsrc.c: + * + * Copyright (C) <2007> Nokia Corporation. + * Contact: Zeeshan Ali <zeeshan.ali@nokia.com> + * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> + * 2000,2005 Wim Taymans <wim@fluendo.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpdtmfsrc + * @see_also: dtmfsrc, rtpdtmfdepay, rtpdtmfmux + * + * The RTPDTMFSrc element generates RTP DTMF (RFC 2833) event packets on request + * from application. The application communicates the beginning and end of a + * DTMF event using custom upstream gstreamer events. To report a DTMF event, an + * application must send an event of type GST_EVENT_CUSTOM_UPSTREAM, having a + * structure of name "dtmf-event" with fields set according to the following + * table: + * + * <informaltable> + * <tgroup cols='4'> + * <colspec colname='Name' /> + * <colspec colname='Type' /> + * <colspec colname='Possible values' /> + * <colspec colname='Purpose' /> + * <thead> + * <row> + * <entry>Name</entry> + * <entry>GType</entry> + * <entry>Possible values</entry> + * <entry>Purpose</entry> + * </row> + * </thead> + * <tbody> + * <row> + * <entry>type</entry> + * <entry>G_TYPE_INT</entry> + * <entry>0-1</entry> + * <entry>The application uses this field to specify which of the two methods + * specified in RFC 2833 to use. The value should be 0 for tones and 1 for + * named events. Tones are specified by their frequencies and events are specied + * by their number. This element can only take events as input. Do not confuse + * with "method" which specified the output. + * </entry> + * </row> + * <row> + * <entry>number</entry> + * <entry>G_TYPE_INT</entry> + * <entry>0-15</entry> + * <entry>The event number.</entry> + * </row> + * <row> + * <entry>volume</entry> + * <entry>G_TYPE_INT</entry> + * <entry>0-36</entry> + * <entry>This field describes the power level of the tone, expressed in dBm0 + * after dropping the sign. Power levels range from 0 to -63 dBm0. The range of + * valid DTMF is from 0 to -36 dBm0. Can be omitted if start is set to FALSE. + * </entry> + * </row> + * <row> + * <entry>start</entry> + * <entry>G_TYPE_BOOLEAN</entry> + * <entry>True or False</entry> + * <entry>Whether the event is starting or ending.</entry> + * </row> + * <row> + * <entry>method</entry> + * <entry>G_TYPE_INT</entry> + * <entry>1</entry> + * <entry>The method used for sending event, this element will react if this + * field is absent or 1. + * </entry> + * </row> + * </tbody> + * </tgroup> + * </informaltable> + * + * For example, the following code informs the pipeline (and in turn, the + * RTPDTMFSrc element inside the pipeline) about the start of an RTP DTMF named + * event '1' of volume -25 dBm0: + * + * <programlisting> + * structure = gst_structure_new ("dtmf-event", + * "type", G_TYPE_INT, 1, + * "number", G_TYPE_INT, 1, + * "volume", G_TYPE_INT, 25, + * "start", G_TYPE_BOOLEAN, TRUE, NULL); + * + * event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, structure); + * gst_element_send_event (pipeline, event); + * </programlisting> + * + * When a DTMF tone actually starts or stop, a "dtmf-event-processed" + * element #GstMessage with the same fields as the "dtmf-event" + * #GstEvent that was used to request the event. Also, if any event + * has not been processed when the element goes from the PAUSED to the + * READY state, then a "dtmf-event-dropped" message is posted on the + * #GstBus in the order that they were received. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdlib.h> +#include <string.h> + +#include <glib.h> + +#include "gstrtpdtmfsrc.h" + +#define GST_RTP_DTMF_TYPE_EVENT 1 +#define DEFAULT_PTIME 40 /* ms */ +#define DEFAULT_SSRC -1 +#define DEFAULT_PT 96 +#define DEFAULT_TIMESTAMP_OFFSET -1 +#define DEFAULT_SEQNUM_OFFSET -1 +#define DEFAULT_CLOCK_RATE 8000 + +#define DEFAULT_PACKET_REDUNDANCY 1 +#define MIN_PACKET_REDUNDANCY 1 +#define MAX_PACKET_REDUNDANCY 5 + +GST_DEBUG_CATEGORY_STATIC (gst_rtp_dtmf_src_debug); +#define GST_CAT_DEFAULT gst_rtp_dtmf_src_debug + +/* signals and args */ +enum +{ + /* FILL ME */ + LAST_SIGNAL +}; + +enum +{ + PROP_0, + PROP_SSRC, + PROP_TIMESTAMP_OFFSET, + PROP_SEQNUM_OFFSET, + PROP_PT, + PROP_CLOCK_RATE, + PROP_TIMESTAMP, + PROP_SEQNUM, + PROP_REDUNDANCY +}; + +static GstStaticPadTemplate gst_rtp_dtmf_src_template = +GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp, " + "media = (string) \"audio\", " + "payload = (int) [ 96, 127 ], " + "clock-rate = (int) [ 0, MAX ], " + "encoding-name = (string) \"TELEPHONE-EVENT\"") + /* "events = (string) \"0-15\" */ + ); + + +G_DEFINE_TYPE (GstRTPDTMFSrc, gst_rtp_dtmf_src, GST_TYPE_BASE_SRC); + +static void gst_rtp_dtmf_src_finalize (GObject * object); + +static void gst_rtp_dtmf_src_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_rtp_dtmf_src_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); +static gboolean gst_rtp_dtmf_src_handle_event (GstBaseSrc * basesrc, + GstEvent * event); +static GstStateChangeReturn gst_rtp_dtmf_src_change_state (GstElement * element, + GstStateChange transition); +static void gst_rtp_dtmf_src_add_start_event (GstRTPDTMFSrc * dtmfsrc, + gint event_number, gint event_volume); +static void gst_rtp_dtmf_src_add_stop_event (GstRTPDTMFSrc * dtmfsrc); + +static gboolean gst_rtp_dtmf_src_unlock (GstBaseSrc * src); +static gboolean gst_rtp_dtmf_src_unlock_stop (GstBaseSrc * src); +static GstFlowReturn gst_rtp_dtmf_src_create (GstBaseSrc * basesrc, + guint64 offset, guint length, GstBuffer ** buffer); +static gboolean gst_rtp_dtmf_src_negotiate (GstBaseSrc * basesrc); + + +static void +gst_rtp_dtmf_src_class_init (GstRTPDTMFSrcClass * klass) +{ + GObjectClass *gobject_class; + GstBaseSrcClass *gstbasesrc_class; + GstElementClass *gstelement_class; + + gobject_class = G_OBJECT_CLASS (klass); + gstbasesrc_class = GST_BASE_SRC_CLASS (klass); + gstelement_class = GST_ELEMENT_CLASS (klass); + + GST_DEBUG_CATEGORY_INIT (gst_rtp_dtmf_src_debug, + "rtpdtmfsrc", 0, "rtpdtmfsrc element"); + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&gst_rtp_dtmf_src_template)); + + gst_element_class_set_static_metadata (gstelement_class, + "RTP DTMF packet generator", "Source/Network", + "Generates RTP DTMF packets", "Zeeshan Ali <zeeshan.ali@nokia.com>"); + + gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_finalize); + gobject_class->set_property = + GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_set_property); + gobject_class->get_property = + GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_get_property); + + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TIMESTAMP, + g_param_spec_uint ("timestamp", "Timestamp", + "The RTP timestamp of the last processed packet", + 0, G_MAXUINT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM, + g_param_spec_uint ("seqnum", "Sequence number", + "The RTP sequence number of the last processed packet", + 0, G_MAXUINT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (G_OBJECT_CLASS (klass), + PROP_TIMESTAMP_OFFSET, g_param_spec_int ("timestamp-offset", + "Timestamp Offset", + "Offset to add to all outgoing timestamps (-1 = random)", -1, + G_MAXINT, DEFAULT_TIMESTAMP_OFFSET, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM_OFFSET, + g_param_spec_int ("seqnum-offset", "Sequence number Offset", + "Offset to add to all outgoing seqnum (-1 = random)", -1, G_MAXINT, + DEFAULT_SEQNUM_OFFSET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_CLOCK_RATE, + g_param_spec_uint ("clock-rate", "clockrate", + "The clock-rate at which to generate the dtmf packets", + 0, G_MAXUINT, DEFAULT_CLOCK_RATE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SSRC, + g_param_spec_uint ("ssrc", "SSRC", + "The SSRC of the packets (-1 == random)", + 0, G_MAXUINT, DEFAULT_SSRC, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PT, + g_param_spec_uint ("pt", "payload type", + "The payload type of the packets", + 0, 0x80, DEFAULT_PT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_REDUNDANCY, + g_param_spec_uint ("packet-redundancy", "Packet Redundancy", + "Number of packets to send to indicate start and stop dtmf events", + MIN_PACKET_REDUNDANCY, MAX_PACKET_REDUNDANCY, + DEFAULT_PACKET_REDUNDANCY, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + gstelement_class->change_state = + GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_change_state); + + gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_unlock); + gstbasesrc_class->unlock_stop = + GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_unlock_stop); + + gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_handle_event); + gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_create); + gstbasesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_rtp_dtmf_src_negotiate); +} + +static void +gst_rtp_dtmf_src_event_free (GstRTPDTMFSrcEvent * event) +{ + if (event) { + if (event->payload) + g_slice_free (GstRTPDTMFPayload, event->payload); + g_slice_free (GstRTPDTMFSrcEvent, event); + } +} + +static void +gst_rtp_dtmf_src_init (GstRTPDTMFSrc * object) +{ + gst_base_src_set_format (GST_BASE_SRC (object), GST_FORMAT_TIME); + gst_base_src_set_live (GST_BASE_SRC (object), TRUE); + + object->ssrc = DEFAULT_SSRC; + object->seqnum_offset = DEFAULT_SEQNUM_OFFSET; + object->ts_offset = DEFAULT_TIMESTAMP_OFFSET; + object->pt = DEFAULT_PT; + object->clock_rate = DEFAULT_CLOCK_RATE; + object->ptime = DEFAULT_PTIME; + object->packet_redundancy = DEFAULT_PACKET_REDUNDANCY; + + object->event_queue = + g_async_queue_new_full ((GDestroyNotify) gst_rtp_dtmf_src_event_free); + object->payload = NULL; + + GST_DEBUG_OBJECT (object, "init done"); +} + +static void +gst_rtp_dtmf_src_finalize (GObject * object) +{ + GstRTPDTMFSrc *dtmfsrc; + + dtmfsrc = GST_RTP_DTMF_SRC (object); + + if (dtmfsrc->event_queue) { + g_async_queue_unref (dtmfsrc->event_queue); + dtmfsrc->event_queue = NULL; + } + + + G_OBJECT_CLASS (gst_rtp_dtmf_src_parent_class)->finalize (object); +} + +static gboolean +gst_rtp_dtmf_src_handle_dtmf_event (GstRTPDTMFSrc * dtmfsrc, + const GstStructure * event_structure) +{ + gint event_type; + gboolean start; + gint method; + GstClockTime last_stop; + gint event_number; + gint event_volume; + gboolean correct_order; + + if (!gst_structure_get_int (event_structure, "type", &event_type) || + !gst_structure_get_boolean (event_structure, "start", &start) || + event_type != GST_RTP_DTMF_TYPE_EVENT) + goto failure; + + if (gst_structure_get_int (event_structure, "method", &method)) { + if (method != 1) { + goto failure; + } + } + + if (start) + if (!gst_structure_get_int (event_structure, "number", &event_number) || + !gst_structure_get_int (event_structure, "volume", &event_volume)) + goto failure; + + GST_OBJECT_LOCK (dtmfsrc); + if (gst_structure_get_clock_time (event_structure, "last-stop", &last_stop)) + dtmfsrc->last_stop = last_stop; + else + dtmfsrc->last_stop = GST_CLOCK_TIME_NONE; + correct_order = (start != dtmfsrc->last_event_was_start); + dtmfsrc->last_event_was_start = start; + GST_OBJECT_UNLOCK (dtmfsrc); + + if (!correct_order) + goto failure; + + if (start) { + if (!gst_structure_get_int (event_structure, "number", &event_number) || + !gst_structure_get_int (event_structure, "volume", &event_volume)) + goto failure; + + GST_DEBUG_OBJECT (dtmfsrc, "Received start event %d with volume %d", + event_number, event_volume); + gst_rtp_dtmf_src_add_start_event (dtmfsrc, event_number, event_volume); + } + + else { + GST_DEBUG_OBJECT (dtmfsrc, "Received stop event"); + gst_rtp_dtmf_src_add_stop_event (dtmfsrc); + } + + return TRUE; +failure: + return FALSE; +} + +static gboolean +gst_rtp_dtmf_src_handle_custom_upstream (GstRTPDTMFSrc * dtmfsrc, + GstEvent * event) +{ + gboolean result = FALSE; + gchar *struct_str; + const GstStructure *structure; + + GstState state; + GstStateChangeReturn ret; + + ret = gst_element_get_state (GST_ELEMENT (dtmfsrc), &state, NULL, 0); + if (ret != GST_STATE_CHANGE_SUCCESS || state != GST_STATE_PLAYING) { + GST_DEBUG_OBJECT (dtmfsrc, "Received event while not in PLAYING state"); + goto ret; + } + + GST_DEBUG_OBJECT (dtmfsrc, "Received event is of our interest"); + structure = gst_event_get_structure (event); + struct_str = gst_structure_to_string (structure); + GST_DEBUG_OBJECT (dtmfsrc, "Event has structure %s", struct_str); + g_free (struct_str); + if (structure && gst_structure_has_name (structure, "dtmf-event")) + result = gst_rtp_dtmf_src_handle_dtmf_event (dtmfsrc, structure); + +ret: + return result; +} + +static gboolean +gst_rtp_dtmf_src_handle_event (GstBaseSrc * basesrc, GstEvent * event) +{ + GstRTPDTMFSrc *dtmfsrc; + gboolean result = FALSE; + + dtmfsrc = GST_RTP_DTMF_SRC (basesrc); + + GST_DEBUG_OBJECT (dtmfsrc, "Received an event on the src pad"); + if (GST_EVENT_TYPE (event) == GST_EVENT_CUSTOM_UPSTREAM) { + result = gst_rtp_dtmf_src_handle_custom_upstream (dtmfsrc, event); + } + + return result; +} + +static void +gst_rtp_dtmf_src_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) +{ + GstRTPDTMFSrc *dtmfsrc; + + dtmfsrc = GST_RTP_DTMF_SRC (object); + + switch (prop_id) { + case PROP_TIMESTAMP_OFFSET: + dtmfsrc->ts_offset = g_value_get_int (value); + break; + case PROP_SEQNUM_OFFSET: + dtmfsrc->seqnum_offset = g_value_get_int (value); + break; + case PROP_CLOCK_RATE: + dtmfsrc->clock_rate = g_value_get_uint (value); + dtmfsrc->dirty = TRUE; + break; + case PROP_SSRC: + dtmfsrc->ssrc = g_value_get_uint (value); + break; + case PROP_PT: + dtmfsrc->pt = g_value_get_uint (value); + dtmfsrc->dirty = TRUE; + break; + case PROP_REDUNDANCY: + dtmfsrc->packet_redundancy = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_rtp_dtmf_src_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) +{ + GstRTPDTMFSrc *dtmfsrc; + + dtmfsrc = GST_RTP_DTMF_SRC (object); + + switch (prop_id) { + case PROP_TIMESTAMP_OFFSET: + g_value_set_int (value, dtmfsrc->ts_offset); + break; + case PROP_SEQNUM_OFFSET: + g_value_set_int (value, dtmfsrc->seqnum_offset); + break; + case PROP_CLOCK_RATE: + g_value_set_uint (value, dtmfsrc->clock_rate); + break; + case PROP_SSRC: + g_value_set_uint (value, dtmfsrc->ssrc); + break; + case PROP_PT: + g_value_set_uint (value, dtmfsrc->pt); + break; + case PROP_TIMESTAMP: + g_value_set_uint (value, dtmfsrc->rtp_timestamp); + break; + case PROP_SEQNUM: + g_value_set_uint (value, dtmfsrc->seqnum); + break; + case PROP_REDUNDANCY: + g_value_set_uint (value, dtmfsrc->packet_redundancy); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static gboolean +gst_rtp_dtmf_prepare_timestamps (GstRTPDTMFSrc * dtmfsrc) +{ + GstClockTime last_stop; + + GST_OBJECT_LOCK (dtmfsrc); + last_stop = dtmfsrc->last_stop; + GST_OBJECT_UNLOCK (dtmfsrc); + + if (GST_CLOCK_TIME_IS_VALID (last_stop)) { + dtmfsrc->start_timestamp = last_stop; + } else { + GstClock *clock = gst_element_get_clock (GST_ELEMENT (dtmfsrc)); + + if (clock == NULL) + return FALSE; + + dtmfsrc->start_timestamp = gst_clock_get_time (clock) + - gst_element_get_base_time (GST_ELEMENT (dtmfsrc)); + gst_object_unref (clock); + } + + /* If the last stop was in the past, then lets add the buffers together */ + if (dtmfsrc->start_timestamp < dtmfsrc->timestamp) + dtmfsrc->start_timestamp = dtmfsrc->timestamp; + + dtmfsrc->timestamp = dtmfsrc->start_timestamp; + + dtmfsrc->rtp_timestamp = dtmfsrc->ts_base + + gst_util_uint64_scale_int (gst_segment_to_running_time (&GST_BASE_SRC + (dtmfsrc)->segment, GST_FORMAT_TIME, dtmfsrc->timestamp), + dtmfsrc->clock_rate, GST_SECOND); + + return TRUE; +} + + +static void +gst_rtp_dtmf_src_add_start_event (GstRTPDTMFSrc * dtmfsrc, gint event_number, + gint event_volume) +{ + + GstRTPDTMFSrcEvent *event = g_slice_new0 (GstRTPDTMFSrcEvent); + event->event_type = RTP_DTMF_EVENT_TYPE_START; + + event->payload = g_slice_new0 (GstRTPDTMFPayload); + event->payload->event = CLAMP (event_number, MIN_EVENT, MAX_EVENT); + event->payload->volume = CLAMP (event_volume, MIN_VOLUME, MAX_VOLUME); + + g_async_queue_push (dtmfsrc->event_queue, event); +} + +static void +gst_rtp_dtmf_src_add_stop_event (GstRTPDTMFSrc * dtmfsrc) +{ + + GstRTPDTMFSrcEvent *event = g_slice_new0 (GstRTPDTMFSrcEvent); + event->event_type = RTP_DTMF_EVENT_TYPE_STOP; + + g_async_queue_push (dtmfsrc->event_queue, event); +} + + +static void +gst_rtp_dtmf_prepare_rtp_headers (GstRTPDTMFSrc * dtmfsrc, + GstRTPBuffer * rtpbuf) +{ + gst_rtp_buffer_set_ssrc (rtpbuf, dtmfsrc->current_ssrc); + gst_rtp_buffer_set_payload_type (rtpbuf, dtmfsrc->pt); + /* Only the very first packet gets a marker */ + if (dtmfsrc->first_packet) { + gst_rtp_buffer_set_marker (rtpbuf, TRUE); + } else if (dtmfsrc->last_packet) { + dtmfsrc->payload->e = 1; + } + + dtmfsrc->seqnum++; + gst_rtp_buffer_set_seq (rtpbuf, dtmfsrc->seqnum); + + /* timestamp of RTP header */ + gst_rtp_buffer_set_timestamp (rtpbuf, dtmfsrc->rtp_timestamp); +} + +static GstBuffer * +gst_rtp_dtmf_src_create_next_rtp_packet (GstRTPDTMFSrc * dtmfsrc) +{ + GstBuffer *buf; + GstRTPDTMFPayload *payload; + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + + buf = gst_rtp_buffer_new_allocate (sizeof (GstRTPDTMFPayload), 0, 0); + + gst_rtp_buffer_map (buf, GST_MAP_READWRITE, &rtpbuffer); + + gst_rtp_dtmf_prepare_rtp_headers (dtmfsrc, &rtpbuffer); + + /* timestamp and duration of GstBuffer */ + /* Redundant buffer have no duration ... */ + if (dtmfsrc->redundancy_count > 1) + GST_BUFFER_DURATION (buf) = 0; + else + GST_BUFFER_DURATION (buf) = dtmfsrc->ptime * GST_MSECOND; + GST_BUFFER_PTS (buf) = dtmfsrc->timestamp; + + payload = (GstRTPDTMFPayload *) gst_rtp_buffer_get_payload (&rtpbuffer); + + /* copy payload and convert to network-byte order */ + g_memmove (payload, dtmfsrc->payload, sizeof (GstRTPDTMFPayload)); + + payload->duration = g_htons (payload->duration); + + if (dtmfsrc->redundancy_count <= 1 && dtmfsrc->last_packet) { + GstClockTime inter_digit_interval = MIN_INTER_DIGIT_INTERVAL; + + if (inter_digit_interval % dtmfsrc->ptime != 0) + inter_digit_interval += dtmfsrc->ptime - + (MIN_INTER_DIGIT_INTERVAL % dtmfsrc->ptime); + + GST_BUFFER_DURATION (buf) += inter_digit_interval * GST_MSECOND; + } + + GST_LOG_OBJECT (dtmfsrc, "Creating new buffer with event %u duration " + " gst: %" GST_TIME_FORMAT " at %" GST_TIME_FORMAT "(rtp ts:%u dur:%u)", + dtmfsrc->payload->event, GST_TIME_ARGS (GST_BUFFER_DURATION (buf)), + GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)), dtmfsrc->rtp_timestamp, + dtmfsrc->payload->duration); + + /* duration of DTMF payloadfor the NEXT packet */ + /* not updated for redundant packets */ + if (dtmfsrc->redundancy_count <= 1) + dtmfsrc->payload->duration += dtmfsrc->ptime * dtmfsrc->clock_rate / 1000; + + if (GST_CLOCK_TIME_IS_VALID (dtmfsrc->timestamp)) + dtmfsrc->timestamp += GST_BUFFER_DURATION (buf); + + gst_rtp_buffer_unmap (&rtpbuffer); + + return buf; +} + +static GstMessage * +gst_dtmf_src_prepare_message (GstRTPDTMFSrc * dtmfsrc, + const gchar * message_name, GstRTPDTMFSrcEvent * event) +{ + GstStructure *s; + + switch (event->event_type) { + case RTP_DTMF_EVENT_TYPE_START: + s = gst_structure_new (message_name, + "type", G_TYPE_INT, 1, + "method", G_TYPE_INT, 1, + "start", G_TYPE_BOOLEAN, TRUE, + "number", G_TYPE_INT, event->payload->event, + "volume", G_TYPE_INT, event->payload->volume, NULL); + break; + case RTP_DTMF_EVENT_TYPE_STOP: + s = gst_structure_new (message_name, + "type", G_TYPE_INT, 1, "method", G_TYPE_INT, 1, + "start", G_TYPE_BOOLEAN, FALSE, NULL); + break; + case RTP_DTMF_EVENT_TYPE_PAUSE_TASK: + return NULL; + default: + return NULL; + } + + return gst_message_new_element (GST_OBJECT (dtmfsrc), s); +} + +static void +gst_dtmf_src_post_message (GstRTPDTMFSrc * dtmfsrc, const gchar * message_name, + GstRTPDTMFSrcEvent * event) +{ + GstMessage *m = gst_dtmf_src_prepare_message (dtmfsrc, message_name, event); + + + if (m) + gst_element_post_message (GST_ELEMENT (dtmfsrc), m); +} + + +static GstFlowReturn +gst_rtp_dtmf_src_create (GstBaseSrc * basesrc, guint64 offset, + guint length, GstBuffer ** buffer) +{ + GstRTPDTMFSrcEvent *event; + GstRTPDTMFSrc *dtmfsrc; + GstClock *clock; + GstClockID *clockid; + GstClockReturn clockret; + GstMessage *message; + GQueue messages = G_QUEUE_INIT; + + dtmfsrc = GST_RTP_DTMF_SRC (basesrc); + + do { + + if (dtmfsrc->payload == NULL) { + GST_DEBUG_OBJECT (dtmfsrc, "popping"); + event = g_async_queue_pop (dtmfsrc->event_queue); + + GST_DEBUG_OBJECT (dtmfsrc, "popped %d", event->event_type); + + switch (event->event_type) { + case RTP_DTMF_EVENT_TYPE_STOP: + GST_WARNING_OBJECT (dtmfsrc, + "Received a DTMF stop event when already stopped"); + gst_dtmf_src_post_message (dtmfsrc, "dtmf-event-dropped", event); + break; + + case RTP_DTMF_EVENT_TYPE_START: + dtmfsrc->first_packet = TRUE; + dtmfsrc->last_packet = FALSE; + /* Set the redundancy on the first packet */ + dtmfsrc->redundancy_count = dtmfsrc->packet_redundancy; + if (!gst_rtp_dtmf_prepare_timestamps (dtmfsrc)) + goto no_clock; + + g_queue_push_tail (&messages, + gst_dtmf_src_prepare_message (dtmfsrc, "dtmf-event-processed", + event)); + dtmfsrc->payload = event->payload; + dtmfsrc->payload->duration = + dtmfsrc->ptime * dtmfsrc->clock_rate / 1000; + event->payload = NULL; + break; + + case RTP_DTMF_EVENT_TYPE_PAUSE_TASK: + /* + * We're pushing it back because it has to stay in there until + * the task is really paused (and the queue will then be flushed + */ + GST_OBJECT_LOCK (dtmfsrc); + if (dtmfsrc->paused) { + g_async_queue_push (dtmfsrc->event_queue, event); + goto paused_locked; + } + GST_OBJECT_UNLOCK (dtmfsrc); + break; + } + + gst_rtp_dtmf_src_event_free (event); + } else if (!dtmfsrc->first_packet && !dtmfsrc->last_packet && + (dtmfsrc->timestamp - dtmfsrc->start_timestamp) / GST_MSECOND >= + MIN_PULSE_DURATION) { + GST_DEBUG_OBJECT (dtmfsrc, "try popping"); + event = g_async_queue_try_pop (dtmfsrc->event_queue); + + + if (event != NULL) { + GST_DEBUG_OBJECT (dtmfsrc, "try popped %d", event->event_type); + + switch (event->event_type) { + case RTP_DTMF_EVENT_TYPE_START: + GST_WARNING_OBJECT (dtmfsrc, + "Received two consecutive DTMF start events"); + gst_dtmf_src_post_message (dtmfsrc, "dtmf-event-dropped", event); + break; + + case RTP_DTMF_EVENT_TYPE_STOP: + dtmfsrc->first_packet = FALSE; + dtmfsrc->last_packet = TRUE; + /* Set the redundancy on the last packet */ + dtmfsrc->redundancy_count = dtmfsrc->packet_redundancy; + g_queue_push_tail (&messages, + gst_dtmf_src_prepare_message (dtmfsrc, "dtmf-event-processed", + event)); + break; + + case RTP_DTMF_EVENT_TYPE_PAUSE_TASK: + /* + * We're pushing it back because it has to stay in there until + * the task is really paused (and the queue will then be flushed) + */ + GST_DEBUG_OBJECT (dtmfsrc, "pushing pause_task..."); + GST_OBJECT_LOCK (dtmfsrc); + if (dtmfsrc->paused) { + g_async_queue_push (dtmfsrc->event_queue, event); + goto paused_locked; + } + GST_OBJECT_UNLOCK (dtmfsrc); + break; + } + gst_rtp_dtmf_src_event_free (event); + } + } + } while (dtmfsrc->payload == NULL); + + + GST_DEBUG_OBJECT (dtmfsrc, "Processed events, now lets wait on the clock"); + + clock = gst_element_get_clock (GST_ELEMENT (basesrc)); + if (!clock) + goto no_clock; + clockid = gst_clock_new_single_shot_id (clock, dtmfsrc->timestamp + + gst_element_get_base_time (GST_ELEMENT (dtmfsrc))); + gst_object_unref (clock); + + GST_OBJECT_LOCK (dtmfsrc); + if (!dtmfsrc->paused) { + dtmfsrc->clockid = clockid; + GST_OBJECT_UNLOCK (dtmfsrc); + + clockret = gst_clock_id_wait (clockid, NULL); + + GST_OBJECT_LOCK (dtmfsrc); + if (dtmfsrc->paused) + clockret = GST_CLOCK_UNSCHEDULED; + } else { + clockret = GST_CLOCK_UNSCHEDULED; + } + gst_clock_id_unref (clockid); + dtmfsrc->clockid = NULL; + GST_OBJECT_UNLOCK (dtmfsrc); + + while ((message = g_queue_pop_head (&messages)) != NULL) + gst_element_post_message (GST_ELEMENT (dtmfsrc), message); + + if (clockret == GST_CLOCK_UNSCHEDULED) { + goto paused; + } + +send_last: + + if (dtmfsrc->dirty) + if (!gst_rtp_dtmf_src_negotiate (basesrc)) + return GST_FLOW_NOT_NEGOTIATED; + + /* create buffer to hold the payload */ + *buffer = gst_rtp_dtmf_src_create_next_rtp_packet (dtmfsrc); + + if (dtmfsrc->redundancy_count) + dtmfsrc->redundancy_count--; + + /* Only the very first one has a marker */ + dtmfsrc->first_packet = FALSE; + + /* This is the end of the event */ + if (dtmfsrc->last_packet == TRUE && dtmfsrc->redundancy_count == 0) { + + g_slice_free (GstRTPDTMFPayload, dtmfsrc->payload); + dtmfsrc->payload = NULL; + + dtmfsrc->last_packet = FALSE; + } + + return GST_FLOW_OK; + +paused_locked: + + GST_OBJECT_UNLOCK (dtmfsrc); + +paused: + + if (dtmfsrc->payload) { + dtmfsrc->first_packet = FALSE; + dtmfsrc->last_packet = TRUE; + /* Set the redundanc on the last packet */ + dtmfsrc->redundancy_count = dtmfsrc->packet_redundancy; + goto send_last; + } else { + return GST_FLOW_FLUSHING; + } + +no_clock: + GST_ELEMENT_ERROR (dtmfsrc, STREAM, MUX, ("No available clock"), + ("No available clock")); + gst_pad_pause_task (GST_BASE_SRC_PAD (dtmfsrc)); + return GST_FLOW_ERROR; +} + + +static gboolean +gst_rtp_dtmf_src_negotiate (GstBaseSrc * basesrc) +{ + GstCaps *srccaps, *peercaps; + GstRTPDTMFSrc *dtmfsrc = GST_RTP_DTMF_SRC (basesrc); + gboolean ret; + + /* fill in the defaults, there properties cannot be negotiated. */ + srccaps = gst_caps_new_simple ("application/x-rtp", + "media", G_TYPE_STRING, "audio", + "encoding-name", G_TYPE_STRING, "TELEPHONE-EVENT", NULL); + + /* the peer caps can override some of the defaults */ + peercaps = gst_pad_peer_query_caps (GST_BASE_SRC_PAD (basesrc), NULL); + if (peercaps == NULL) { + /* no peer caps, just add the other properties */ + gst_caps_set_simple (srccaps, + "payload", G_TYPE_INT, dtmfsrc->pt, + "ssrc", G_TYPE_UINT, dtmfsrc->current_ssrc, + "clock-base", G_TYPE_UINT, dtmfsrc->ts_base, + "clock-rate", G_TYPE_INT, dtmfsrc->clock_rate, + "seqnum-base", G_TYPE_UINT, dtmfsrc->seqnum_base, NULL); + + GST_DEBUG_OBJECT (dtmfsrc, "no peer caps: %" GST_PTR_FORMAT, srccaps); + } else { + GstCaps *temp; + GstStructure *s; + const GValue *value; + gint pt; + gint clock_rate; + + /* peer provides caps we can use to fixate, intersect. This always returns a + * writable caps. */ + temp = gst_caps_intersect (srccaps, peercaps); + gst_caps_unref (srccaps); + gst_caps_unref (peercaps); + + if (!temp) { + GST_DEBUG_OBJECT (dtmfsrc, "Could not get intersection with peer caps"); + return FALSE; + } + + if (gst_caps_is_empty (temp)) { + GST_DEBUG_OBJECT (dtmfsrc, "Intersection with peer caps is empty"); + gst_caps_unref (temp); + return FALSE; + } + + /* now fixate, start by taking the first caps */ + temp = gst_caps_truncate (temp); + temp = gst_caps_make_writable (temp); + srccaps = temp; + + /* get first structure */ + s = gst_caps_get_structure (srccaps, 0); + + if (gst_structure_get_int (s, "payload", &pt)) { + /* use peer pt */ + dtmfsrc->pt = pt; + GST_LOG_OBJECT (dtmfsrc, "using peer pt %d", pt); + } else { + if (gst_structure_has_field (s, "payload")) { + /* can only fixate if there is a field */ + gst_structure_fixate_field_nearest_int (s, "payload", dtmfsrc->pt); + gst_structure_get_int (s, "payload", &pt); + GST_LOG_OBJECT (dtmfsrc, "using peer pt %d", pt); + } else { + /* no pt field, use the internal pt */ + pt = dtmfsrc->pt; + gst_structure_set (s, "payload", G_TYPE_INT, pt, NULL); + GST_LOG_OBJECT (dtmfsrc, "using internal pt %d", pt); + } + } + + if (gst_structure_get_int (s, "clock-rate", &clock_rate)) { + dtmfsrc->clock_rate = clock_rate; + GST_LOG_OBJECT (dtmfsrc, "using clock-rate from caps %d", + dtmfsrc->clock_rate); + } else { + GST_LOG_OBJECT (dtmfsrc, "using existing clock-rate %d", + dtmfsrc->clock_rate); + } + gst_structure_set (s, "clock-rate", G_TYPE_INT, dtmfsrc->clock_rate, NULL); + + + if (gst_structure_has_field_typed (s, "ssrc", G_TYPE_UINT)) { + value = gst_structure_get_value (s, "ssrc"); + dtmfsrc->current_ssrc = g_value_get_uint (value); + GST_LOG_OBJECT (dtmfsrc, "using peer ssrc %08x", dtmfsrc->current_ssrc); + } else { + /* FIXME, fixate_nearest_uint would be even better */ + gst_structure_set (s, "ssrc", G_TYPE_UINT, dtmfsrc->current_ssrc, NULL); + GST_LOG_OBJECT (dtmfsrc, "using internal ssrc %08x", + dtmfsrc->current_ssrc); + } + + if (gst_structure_has_field_typed (s, "clock-base", G_TYPE_UINT)) { + value = gst_structure_get_value (s, "clock-base"); + dtmfsrc->ts_base = g_value_get_uint (value); + GST_LOG_OBJECT (dtmfsrc, "using peer clock-base %u", dtmfsrc->ts_base); + } else { + /* FIXME, fixate_nearest_uint would be even better */ + gst_structure_set (s, "clock-base", G_TYPE_UINT, dtmfsrc->ts_base, NULL); + GST_LOG_OBJECT (dtmfsrc, "using internal clock-base %u", + dtmfsrc->ts_base); + } + if (gst_structure_has_field_typed (s, "seqnum-base", G_TYPE_UINT)) { + value = gst_structure_get_value (s, "seqnum-base"); + dtmfsrc->seqnum_base = g_value_get_uint (value); + GST_LOG_OBJECT (dtmfsrc, "using peer seqnum-base %u", + dtmfsrc->seqnum_base); + } else { + /* FIXME, fixate_nearest_uint would be even better */ + gst_structure_set (s, "seqnum-base", G_TYPE_UINT, dtmfsrc->seqnum_base, + NULL); + GST_LOG_OBJECT (dtmfsrc, "using internal seqnum-base %u", + dtmfsrc->seqnum_base); + } + + if (gst_structure_has_field_typed (s, "ptime", G_TYPE_UINT)) { + value = gst_structure_get_value (s, "ptime"); + dtmfsrc->ptime = g_value_get_uint (value); + GST_LOG_OBJECT (dtmfsrc, "using peer ptime %u", dtmfsrc->ptime); + } else if (gst_structure_has_field_typed (s, "maxptime", G_TYPE_UINT)) { + value = gst_structure_get_value (s, "maxptime"); + dtmfsrc->ptime = g_value_get_uint (value); + GST_LOG_OBJECT (dtmfsrc, "using peer maxptime as ptime %u", + dtmfsrc->ptime); + } else { + /* FIXME, fixate_nearest_uint would be even better */ + gst_structure_set (s, "ptime", G_TYPE_UINT, dtmfsrc->ptime, NULL); + GST_LOG_OBJECT (dtmfsrc, "using internal ptime %u", dtmfsrc->ptime); + } + + + GST_DEBUG_OBJECT (dtmfsrc, "with peer caps: %" GST_PTR_FORMAT, srccaps); + } + + ret = gst_pad_set_caps (GST_BASE_SRC_PAD (basesrc), srccaps); + gst_caps_unref (srccaps); + + dtmfsrc->dirty = FALSE; + + return ret; + +} + + +static void +gst_rtp_dtmf_src_ready_to_paused (GstRTPDTMFSrc * dtmfsrc) +{ + if (dtmfsrc->ssrc == -1) + dtmfsrc->current_ssrc = g_random_int (); + else + dtmfsrc->current_ssrc = dtmfsrc->ssrc; + + if (dtmfsrc->seqnum_offset == -1) + dtmfsrc->seqnum_base = g_random_int_range (0, G_MAXUINT16); + else + dtmfsrc->seqnum_base = dtmfsrc->seqnum_offset; + dtmfsrc->seqnum = dtmfsrc->seqnum_base; + + if (dtmfsrc->ts_offset == -1) + dtmfsrc->ts_base = g_random_int (); + else + dtmfsrc->ts_base = dtmfsrc->ts_offset; + + dtmfsrc->timestamp = 0; +} + +static GstStateChangeReturn +gst_rtp_dtmf_src_change_state (GstElement * element, GstStateChange transition) +{ + GstRTPDTMFSrc *dtmfsrc; + GstStateChangeReturn result; + gboolean no_preroll = FALSE; + GstRTPDTMFSrcEvent *event = NULL; + + dtmfsrc = GST_RTP_DTMF_SRC (element); + + switch (transition) { + case GST_STATE_CHANGE_READY_TO_PAUSED: + gst_rtp_dtmf_src_ready_to_paused (dtmfsrc); + + /* Flushing the event queue */ + while ((event = g_async_queue_try_pop (dtmfsrc->event_queue)) != NULL) { + gst_dtmf_src_post_message (dtmfsrc, "dtmf-event-dropped", event); + gst_rtp_dtmf_src_event_free (event); + } + dtmfsrc->last_event_was_start = FALSE; + + no_preroll = TRUE; + break; + default: + break; + } + + if ((result = + GST_ELEMENT_CLASS (gst_rtp_dtmf_src_parent_class)->change_state + (element, transition)) == GST_STATE_CHANGE_FAILURE) + goto failure; + + switch (transition) { + case GST_STATE_CHANGE_PLAYING_TO_PAUSED: + no_preroll = TRUE; + break; + case GST_STATE_CHANGE_PAUSED_TO_READY: + + /* Flushing the event queue */ + while ((event = g_async_queue_try_pop (dtmfsrc->event_queue)) != NULL) { + gst_dtmf_src_post_message (dtmfsrc, "dtmf-event-dropped", event); + gst_rtp_dtmf_src_event_free (event); + } + dtmfsrc->last_event_was_start = FALSE; + + /* Indicate that we don't do PRE_ROLL */ + break; + + default: + break; + } + + if (no_preroll && result == GST_STATE_CHANGE_SUCCESS) + result = GST_STATE_CHANGE_NO_PREROLL; + + return result; + + /* ERRORS */ +failure: + { + GST_ERROR_OBJECT (dtmfsrc, "parent failed state change"); + return result; + } +} + + +static gboolean +gst_rtp_dtmf_src_unlock (GstBaseSrc * src) +{ + GstRTPDTMFSrc *dtmfsrc = GST_RTP_DTMF_SRC (src); + GstRTPDTMFSrcEvent *event = NULL; + + GST_DEBUG_OBJECT (dtmfsrc, "Called unlock"); + + GST_OBJECT_LOCK (dtmfsrc); + dtmfsrc->paused = TRUE; + if (dtmfsrc->clockid) { + gst_clock_id_unschedule (dtmfsrc->clockid); + } + GST_OBJECT_UNLOCK (dtmfsrc); + + GST_DEBUG_OBJECT (dtmfsrc, "Pushing the PAUSE_TASK event on unlock request"); + event = g_slice_new0 (GstRTPDTMFSrcEvent); + event->event_type = RTP_DTMF_EVENT_TYPE_PAUSE_TASK; + g_async_queue_push (dtmfsrc->event_queue, event); + + return TRUE; +} + + +static gboolean +gst_rtp_dtmf_src_unlock_stop (GstBaseSrc * src) +{ + GstRTPDTMFSrc *dtmfsrc = GST_RTP_DTMF_SRC (src); + + GST_DEBUG_OBJECT (dtmfsrc, "Unlock stopped"); + + GST_OBJECT_LOCK (dtmfsrc); + dtmfsrc->paused = FALSE; + GST_OBJECT_UNLOCK (dtmfsrc); + + return TRUE; +} + +gboolean +gst_rtp_dtmf_src_plugin_init (GstPlugin * plugin) +{ + return gst_element_register (plugin, "rtpdtmfsrc", + GST_RANK_NONE, GST_TYPE_RTP_DTMF_SRC); +} diff --git a/gst/dtmf/gstrtpdtmfsrc.h b/gst/dtmf/gstrtpdtmfsrc.h new file mode 100644 index 0000000000000000000000000000000000000000..3e9256ce58ed8980f2eba983ff69bd46cedd132f --- /dev/null +++ b/gst/dtmf/gstrtpdtmfsrc.h @@ -0,0 +1,115 @@ +/* GStreamer RTP DTMF source + * + * gstrtpdtmfsrc.h: + * + * Copyright (C) <2007> Nokia Corporation. + * Contact: Zeeshan Ali <zeeshan.ali@nokia.com> + * Copyright (C) <2005> Wim Taymans <wim@fluendo.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_RTP_DTMF_SRC_H__ +#define __GST_RTP_DTMF_SRC_H__ + +#include <gst/gst.h> +#include <gst/base/gstbasesrc.h> +#include <gst/rtp/gstrtpbuffer.h> + +#include "gstdtmfcommon.h" + +G_BEGIN_DECLS +#define GST_TYPE_RTP_DTMF_SRC (gst_rtp_dtmf_src_get_type()) +#define GST_RTP_DTMF_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_DTMF_SRC,GstRTPDTMFSrc)) +#define GST_RTP_DTMF_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_DTMF_SRC,GstRTPDTMFSrcClass)) +#define GST_RTP_DTMF_SRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_RTP_DTMF_SRC, GstRTPDTMFSrcClass)) +#define GST_IS_RTP_DTMF_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_DTMF_SRC)) +#define GST_IS_RTP_DTMF_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DTMF_SRC)) +#define GST_RTP_DTMF_SRC_CAST(obj) ((GstRTPDTMFSrc *)(obj)) +typedef struct _GstRTPDTMFSrc GstRTPDTMFSrc; +typedef struct _GstRTPDTMFSrcClass GstRTPDTMFSrcClass; + + + +enum _GstRTPDTMFEventType +{ + RTP_DTMF_EVENT_TYPE_START, + RTP_DTMF_EVENT_TYPE_STOP, + RTP_DTMF_EVENT_TYPE_PAUSE_TASK +}; + +typedef enum _GstRTPDTMFEventType GstRTPDTMFEventType; + +struct _GstRTPDTMFSrcEvent +{ + GstRTPDTMFEventType event_type; + GstRTPDTMFPayload *payload; +}; + +typedef struct _GstRTPDTMFSrcEvent GstRTPDTMFSrcEvent; + +/** + * GstRTPDTMFSrc: + * @element: the parent element. + * + * The opaque #GstRTPDTMFSrc data structure. + */ +struct _GstRTPDTMFSrc +{ + /*< private >*/ + GstBaseSrc basesrc; + + GAsyncQueue *event_queue; + GstClockID clockid; + gboolean paused; + GstRTPDTMFPayload *payload; + + GstClockTime timestamp; + GstClockTime start_timestamp; + gboolean first_packet; + gboolean last_packet; + guint32 ts_base; + guint16 seqnum_base; + gint16 seqnum_offset; + guint16 seqnum; + gint32 ts_offset; + guint32 rtp_timestamp; + guint pt; + guint ssrc; + guint current_ssrc; + guint16 ptime; + guint16 packet_redundancy; + guint32 clock_rate; + gboolean last_event_was_start; + + GstClockTime last_stop; + + gboolean dirty; + guint16 redundancy_count; +}; + +struct _GstRTPDTMFSrcClass +{ + GstBaseSrcClass parent_class; +}; + +GType gst_rtp_dtmf_src_get_type (void); + +gboolean gst_rtp_dtmf_src_plugin_init (GstPlugin * plugin); + + +G_END_DECLS +#endif /* __GST_RTP_DTMF_SRC_H__ */ diff --git a/gst/effectv/Makefile.in b/gst/effectv/Makefile.in index de981295a7e218460b26ab4b1eb572153e5d672c..6373795ec8e2ae01e09464f486b01a289cdb1bbe 100644 --- a/gst/effectv/Makefile.in +++ b/gst/effectv/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/effectv -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -143,10 +169,23 @@ libgsteffectv_la_OBJECTS = $(am_libgsteffectv_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgsteffectv_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgsteffectv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgsteffectv_la_CFLAGS) $(CFLAGS) \ $(libgsteffectv_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -159,20 +198,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgsteffectv_la_SOURCES) DIST_SOURCES = $(libgsteffectv_la_SOURCES) am__can_run_installinfo = \ @@ -181,6 +216,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -348,6 +400,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -566,6 +619,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -592,12 +646,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgsteffectv.la: $(libgsteffectv_la_OBJECTS) $(libgsteffectv_la_DEPENDENCIES) $(EXTRA_libgsteffectv_la_DEPENDENCIES) $(AM_V_CCLD)$(libgsteffectv_la_LINK) -rpath $(plugindir) $(libgsteffectv_la_OBJECTS) $(libgsteffectv_la_LIBADD) $(LIBS) @@ -622,22 +679,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsteffectv_la-gstwarp.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -739,26 +799,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -770,15 +819,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -787,6 +832,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -931,19 +991,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/effectv/gstaging.c b/gst/effectv/gstaging.c index 3ba5e8d8c6f6f8a71f5ceaa82f0d0d8f89ad90d2..c6bfa11c6d1882581d0ec58c70acbef68a9ef9c1 100644 --- a/gst/effectv/gstaging.c +++ b/gst/effectv/gstaging.c @@ -20,8 +20,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gstaging.h b/gst/effectv/gstaging.h index 604af5d187371750ab7d086a11942c527f9f545e..52466d15e3d39ca1067d0611648cd5656af3cad8 100644 --- a/gst/effectv/gstaging.h +++ b/gst/effectv/gstaging.h @@ -20,8 +20,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_AGING_H__ diff --git a/gst/effectv/gstdice.c b/gst/effectv/gstdice.c index e9e7d0bc466cea7e06467406f566047c0aed6121..7c90b660a4c2701cd0429612ebc4db67d0be8e67 100644 --- a/gst/effectv/gstdice.c +++ b/gst/effectv/gstdice.c @@ -22,8 +22,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gstdice.h b/gst/effectv/gstdice.h index 0a6e5eecf4efaa4a8860179b00f14a57776e848d..4c14c976e642bcafa3885165659e23320b514584 100644 --- a/gst/effectv/gstdice.h +++ b/gst/effectv/gstdice.h @@ -22,8 +22,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_DICE_H__ diff --git a/gst/effectv/gstedge.c b/gst/effectv/gstedge.c index 91047bb84f70e82a3051ae54aa21c4d1b789e06b..d7fe89bab9093d341036bdc1d225afce585aab8b 100644 --- a/gst/effectv/gstedge.c +++ b/gst/effectv/gstedge.c @@ -20,8 +20,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gstedge.h b/gst/effectv/gstedge.h index f906fa3617e26b8067ff35887d5696bd431afd07..290c3128387620763568536e95c7be6f173171dd 100644 --- a/gst/effectv/gstedge.h +++ b/gst/effectv/gstedge.h @@ -20,8 +20,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_EDGE_H__ diff --git a/gst/effectv/gsteffectv.c b/gst/effectv/gsteffectv.c index 51bdaebc3eb30947f567820f7fb96bbcdffaaf3d..0e9ffc05a34ec5762d02efe83d5b46495ef72de6 100644 --- a/gst/effectv/gsteffectv.c +++ b/gst/effectv/gsteffectv.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/effectv/gsteffectv.h b/gst/effectv/gsteffectv.h index a953991900e36e0f258c75595df666f28a96180e..0f00799a545535913e862f089d8424fb3c5b46c8 100644 --- a/gst/effectv/gsteffectv.h +++ b/gst/effectv/gsteffectv.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/gst.h> diff --git a/gst/effectv/gstop.c b/gst/effectv/gstop.c index 119e3f79f7ea47347df4fe7fed45796d1dc83b1a..d91a375f50f7da7dfc88b85e08fe0f6bca570986 100644 --- a/gst/effectv/gstop.c +++ b/gst/effectv/gstop.c @@ -20,8 +20,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gstop.h b/gst/effectv/gstop.h index 4e948686a7e79310f8de310635c56695574d3b26..557240232171f00f8890238ec7492df4b7763b97 100644 --- a/gst/effectv/gstop.h +++ b/gst/effectv/gstop.h @@ -20,8 +20,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_OP_H__ diff --git a/gst/effectv/gstquark.c b/gst/effectv/gstquark.c index 3f7bffa29a9085520bac07f56b63ac20d82abd14..cb02643fe9bc68544fe1f001360bf747f9f8781a 100644 --- a/gst/effectv/gstquark.c +++ b/gst/effectv/gstquark.c @@ -20,8 +20,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gstquark.h b/gst/effectv/gstquark.h index 2b092ed98a04a51de255ba0d47cc17f4fede6da6..5557756830418e8e3700ebf7cf1a056793b1a087 100644 --- a/gst/effectv/gstquark.h +++ b/gst/effectv/gstquark.h @@ -20,8 +20,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_QUARK_H__ diff --git a/gst/effectv/gstradioac.c b/gst/effectv/gstradioac.c index 8280a8d78475beeb9bc25f6a30259d41267bda87..fc2d4090445c2fd5c27d22724bb5fbd10a1cf08a 100644 --- a/gst/effectv/gstradioac.c +++ b/gst/effectv/gstradioac.c @@ -20,8 +20,8 @@ * * You should have received a cradioacy 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gstradioac.h b/gst/effectv/gstradioac.h index 6771289b24d6d31f3d5caab923fcf8cf1d995fbd..c8d7c99e5b910d46021643585d41f1f7eecf63b6 100644 --- a/gst/effectv/gstradioac.h +++ b/gst/effectv/gstradioac.h @@ -20,8 +20,8 @@ * * You should have received a cradioacy 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RADIOAC_H__ diff --git a/gst/effectv/gstrev.c b/gst/effectv/gstrev.c index 23a886646caf99e0b9a1d8bfe568242a1beed282..189e313bfd07d392734870cf624e8e7bf49e872c 100644 --- a/gst/effectv/gstrev.c +++ b/gst/effectv/gstrev.c @@ -36,8 +36,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gstrev.h b/gst/effectv/gstrev.h index fc40d8cc8796286d3f74b04857af8d85e43b1a4f..198311b99b27bd65be9975cd2a55fa378eb0cdbc 100644 --- a/gst/effectv/gstrev.h +++ b/gst/effectv/gstrev.h @@ -36,8 +36,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_REV_H__ diff --git a/gst/effectv/gstripple.c b/gst/effectv/gstripple.c index 2fcf05a14843cbc51694c82c95301e3ddb1d211e..71b9796e14fee2e7ba7435be42a427ef7351d7bd 100644 --- a/gst/effectv/gstripple.c +++ b/gst/effectv/gstripple.c @@ -24,8 +24,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gstripple.h b/gst/effectv/gstripple.h index 12242a230f7a0b75751eff687a28f39bc6da519f..329e54308d250d2e91eacd1b85a86217181b00cd 100644 --- a/gst/effectv/gstripple.h +++ b/gst/effectv/gstripple.h @@ -20,8 +20,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RIPPLE_H__ diff --git a/gst/effectv/gstshagadelic.c b/gst/effectv/gstshagadelic.c index c84876469eb761c816657462cafcd2edb6a0a22e..956e5dd59de2fcfae8c30986de7da5a4fc005454 100644 --- a/gst/effectv/gstshagadelic.c +++ b/gst/effectv/gstshagadelic.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gstshagadelic.h b/gst/effectv/gstshagadelic.h index 43d964dc1579e340baebb3b13592aac6da6cee31..a89cbf43c49b617af5f4bc6e202a0c032f64d7f1 100644 --- a/gst/effectv/gstshagadelic.h +++ b/gst/effectv/gstshagadelic.h @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_SHAGADELIC_H__ diff --git a/gst/effectv/gststreak.c b/gst/effectv/gststreak.c index 3b3c622d024b16a54f94133c18781ffafab0ddaf..6eeb08dc7c7d569a486663958199943a25d144e4 100644 --- a/gst/effectv/gststreak.c +++ b/gst/effectv/gststreak.c @@ -24,8 +24,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gststreak.h b/gst/effectv/gststreak.h index 55198f4ddddd49f4bd32076dfda67a70d8432cb3..5d9362de0e58abb79d58a6251667e043371d0dfa 100644 --- a/gst/effectv/gststreak.h +++ b/gst/effectv/gststreak.h @@ -20,8 +20,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_STREAK_H__ diff --git a/gst/effectv/gstvertigo.c b/gst/effectv/gstvertigo.c index f5aeaf4617cad9dbf706daecdf010298d50c8efb..3e575cbb45acd60eb43a50bb168704643a650aa2 100644 --- a/gst/effectv/gstvertigo.c +++ b/gst/effectv/gstvertigo.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/effectv/gstvertigo.h b/gst/effectv/gstvertigo.h index 0081bf0e4668e1b5cf9a65c097bfc3ea8c86e49b..39c225b355a61b4c71333b2f1e2e4fe16a20ba9e 100644 --- a/gst/effectv/gstvertigo.h +++ b/gst/effectv/gstvertigo.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_VERTIGO_H__ diff --git a/gst/effectv/gstwarp.c b/gst/effectv/gstwarp.c index 5ced810975ec927ea4e2a001063ef8be301235de..327c9de52a12a319fc6b276713a2861614b53c28 100644 --- a/gst/effectv/gstwarp.c +++ b/gst/effectv/gstwarp.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/effectv/gstwarp.h b/gst/effectv/gstwarp.h index 3fe48b34bf6ae14b350fa153dde5cd81c03cb3be..73eeebc0de0c051fad951bf8ccdae4e46114410f 100644 --- a/gst/effectv/gstwarp.h +++ b/gst/effectv/gstwarp.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_WARP_H__ diff --git a/gst/equalizer/Makefile.in b/gst/equalizer/Makefile.in index d1ed7a07713168a8056595a5deb25f833f89d815..e142b9ac6f7f043a5db3ef55178789c55a413586 100644 --- a/gst/equalizer/Makefile.in +++ b/gst/equalizer/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -18,23 +17,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -55,15 +82,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/equalizer -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -140,10 +166,23 @@ libgstequalizer_la_OBJECTS = $(am_libgstequalizer_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstequalizer_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstequalizer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstequalizer_la_CFLAGS) $(CFLAGS) \ $(libgstequalizer_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -156,20 +195,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstequalizer_la_SOURCES) DIST_SOURCES = $(libgstequalizer_la_SOURCES) am__can_run_installinfo = \ @@ -179,6 +214,23 @@ am__can_run_installinfo = \ esac DATA = $(preset_DATA) HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -346,6 +398,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -560,6 +613,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -586,12 +640,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstequalizer.la: $(libgstequalizer_la_OBJECTS) $(libgstequalizer_la_DEPENDENCIES) $(EXTRA_libgstequalizer_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstequalizer_la_LINK) -rpath $(plugindir) $(libgstequalizer_la_OBJECTS) $(libgstequalizer_la_LIBADD) $(LIBS) @@ -607,22 +664,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstequalizer_la-gstiirequalizernbands.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -682,26 +742,15 @@ uninstall-presetDATA: files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(presetdir)'; $(am__uninstall_files_from_dir) -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -713,15 +762,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -730,6 +775,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -874,20 +934,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES uninstall-presetDATA .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-presetDATA install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES \ - uninstall-presetDATA +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-presetDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-pluginLTLIBRARIES uninstall-presetDATA Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/equalizer/gstiirequalizer.c b/gst/equalizer/gstiirequalizer.c index acc827795b7ef432f61acc4da750b3c7110f526f..d278c4c03443f4617fe5c568c5dd288aaa8ee39b 100644 --- a/gst/equalizer/gstiirequalizer.c +++ b/gst/equalizer/gstiirequalizer.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/equalizer/gstiirequalizer.h b/gst/equalizer/gstiirequalizer.h index 98f2200970dbe21a58766a3ea84522c421b81094..3ba70eed6afe2927ae0e4085f911f1339b788229 100644 --- a/gst/equalizer/gstiirequalizer.h +++ b/gst/equalizer/gstiirequalizer.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_IIR_EQUALIZER__ diff --git a/gst/equalizer/gstiirequalizer10bands.c b/gst/equalizer/gstiirequalizer10bands.c index 0f8b56e4524c97683c1d22b3d2c094d38f8642ff..71bbf53ee41eb40d9d24924fee42638017e846e2 100644 --- a/gst/equalizer/gstiirequalizer10bands.c +++ b/gst/equalizer/gstiirequalizer10bands.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/equalizer/gstiirequalizer10bands.h b/gst/equalizer/gstiirequalizer10bands.h index 72bda61ec88faead571e48313308582b5247bb43..7066721fa70d9c059e3e70390ad2afd23c8f84d2 100644 --- a/gst/equalizer/gstiirequalizer10bands.h +++ b/gst/equalizer/gstiirequalizer10bands.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_IIR_EQUALIZER_10BANDS__ diff --git a/gst/equalizer/gstiirequalizer3bands.c b/gst/equalizer/gstiirequalizer3bands.c index 993d2775832402cecb241d3db1be68747a0d350a..02f14ed4a6158c7387c4df7772af4a3ca5732ebc 100644 --- a/gst/equalizer/gstiirequalizer3bands.c +++ b/gst/equalizer/gstiirequalizer3bands.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/equalizer/gstiirequalizer3bands.h b/gst/equalizer/gstiirequalizer3bands.h index a76249a986e1cdf36237bc95f057e5a80040b897..3790fca99e74b93f81bb3927703953ddc6200ddd 100644 --- a/gst/equalizer/gstiirequalizer3bands.h +++ b/gst/equalizer/gstiirequalizer3bands.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_IIR_EQUALIZER_3BANDS__ diff --git a/gst/equalizer/gstiirequalizernbands.c b/gst/equalizer/gstiirequalizernbands.c index 462003a86c34411103307d6fd8e9f326e0357952..ab2c0318ccf9025c85f923eff3b4b71d6b34d425 100644 --- a/gst/equalizer/gstiirequalizernbands.c +++ b/gst/equalizer/gstiirequalizernbands.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/equalizer/gstiirequalizernbands.h b/gst/equalizer/gstiirequalizernbands.h index b0ffa851dbaa70bd99aecff051caa60d5dbb97cf..c119a1ff1a4115b884d4175c7d257fa40ae2d0bd 100644 --- a/gst/equalizer/gstiirequalizernbands.h +++ b/gst/equalizer/gstiirequalizernbands.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_IIR_EQUALIZER_NBANDS__ diff --git a/gst/flv/Makefile.in b/gst/flv/Makefile.in index a59ba8713a5828bd5bead547c6568219ff5dc88c..9393223575dc950cd6283a018d06badf7e8b1a27 100644 --- a/gst/flv/Makefile.in +++ b/gst/flv/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/flv -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,10 +162,23 @@ libgstflv_la_OBJECTS = $(am_libgstflv_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstflv_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstflv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstflv_la_CFLAGS) $(CFLAGS) \ $(libgstflv_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -152,20 +191,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstflv_la_SOURCES) DIST_SOURCES = $(libgstflv_la_SOURCES) am__can_run_installinfo = \ @@ -174,6 +209,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -341,6 +393,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -545,6 +598,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -571,12 +625,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstflv.la: $(libgstflv_la_OBJECTS) $(libgstflv_la_DEPENDENCIES) $(EXTRA_libgstflv_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstflv_la_LINK) -rpath $(plugindir) $(libgstflv_la_OBJECTS) $(libgstflv_la_LIBADD) $(LIBS) @@ -590,22 +647,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstflv_la-gstflvmux.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -630,26 +690,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -661,15 +710,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -678,6 +723,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -822,19 +882,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/flv/amfdefs.h b/gst/flv/amfdefs.h index 00d0c1ae05bc01b2c766bb38a9406ab50bbebc1d..d1e772539ca5f3b537434082215b3c26495e933d 100644 --- a/gst/flv/amfdefs.h +++ b/gst/flv/amfdefs.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __AMFDEFS_H__ diff --git a/gst/flv/gstflvdemux.c b/gst/flv/gstflvdemux.c index 5c4c582507bf362e169d8f3d923dcfa35585a7d0..c058fda21d78e2e0582afaff609dccb6449f3434 100644 --- a/gst/flv/gstflvdemux.c +++ b/gst/flv/gstflvdemux.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -635,6 +635,26 @@ cleanup: return ret; } +static gboolean +have_group_id (GstFlvDemux * demux) +{ + GstEvent *event; + + event = gst_pad_get_sticky_event (demux->sinkpad, GST_EVENT_STREAM_START, 0); + if (event) { + if (gst_event_parse_group_id (event, &demux->group_id)) + demux->have_group_id = TRUE; + else + demux->have_group_id = FALSE; + gst_event_unref (event); + } else if (!demux->have_group_id) { + demux->have_group_id = TRUE; + demux->group_id = gst_util_group_id_next (); + } + + return demux->have_group_id; +} + static gboolean gst_flv_demux_audio_negotiate (GstFlvDemux * demux, guint32 codec_tag, guint32 rate, guint32 channels, guint32 width) @@ -643,6 +663,7 @@ gst_flv_demux_audio_negotiate (GstFlvDemux * demux, guint32 codec_tag, gchar *codec_name = NULL; gboolean ret = FALSE; guint adjusted_rate = rate; + GstEvent *event; gchar *stream_id; switch (codec_tag) { @@ -786,7 +807,11 @@ gst_flv_demux_audio_negotiate (GstFlvDemux * demux, guint32 codec_tag, stream_id = gst_pad_create_stream_id (demux->audio_pad, GST_ELEMENT_CAST (demux), "audio"); - gst_pad_push_event (demux->audio_pad, gst_event_new_stream_start (stream_id)); + + event = gst_event_new_stream_start (stream_id); + if (have_group_id (demux)) + gst_event_set_group_id (event, demux->group_id); + gst_pad_push_event (demux->audio_pad, event); g_free (stream_id); ret = gst_pad_set_caps (demux->audio_pad, caps); @@ -1179,6 +1204,7 @@ gst_flv_demux_video_negotiate (GstFlvDemux * demux, guint32 codec_tag) gboolean ret = FALSE; GstCaps *caps = NULL; gchar *codec_name = NULL; + GstEvent *event; gchar *stream_id; /* Generate caps for that pad */ @@ -1241,9 +1267,12 @@ gst_flv_demux_video_negotiate (GstFlvDemux * demux, guint32 codec_tag) stream_id = gst_pad_create_stream_id (demux->video_pad, GST_ELEMENT_CAST (demux), "video"); - gst_pad_push_event (demux->video_pad, gst_event_new_stream_start (stream_id)); + event = gst_event_new_stream_start (stream_id); g_free (stream_id); + if (have_group_id (demux)) + gst_event_set_group_id (event, demux->group_id); + gst_pad_push_event (demux->video_pad, event); ret = gst_pad_set_caps (demux->video_pad, caps); if (G_LIKELY (ret)) { @@ -1771,6 +1800,9 @@ gst_flv_demux_cleanup (GstFlvDemux * demux) demux->state = FLV_STATE_HEADER; + demux->have_group_id = FALSE; + demux->group_id = G_MAXUINT; + demux->flushing = FALSE; demux->need_header = TRUE; demux->audio_need_segment = TRUE; @@ -3193,6 +3225,25 @@ gst_flv_demux_query (GstPad * pad, GstObject * parent, GstQuery * query) } break; } + case GST_QUERY_SEGMENT: + { + GstFormat format; + gint64 start, stop; + + format = demux->segment.format; + + start = + gst_segment_to_stream_time (&demux->segment, format, + demux->segment.start); + if ((stop = demux->segment.stop) == -1) + stop = demux->segment.duration; + else + stop = gst_segment_to_stream_time (&demux->segment, format, stop); + + gst_query_set_segment (query, demux->segment.rate, format, start, stop); + res = TRUE; + break; + } case GST_QUERY_LATENCY: default: res = gst_pad_query_default (pad, parent, query); diff --git a/gst/flv/gstflvdemux.h b/gst/flv/gstflvdemux.h index c4684ed843452f1c3124bcc507f2c6351567de9d..90953b4a64f483de74c8420c03dd11e1a04683aa 100644 --- a/gst/flv/gstflvdemux.h +++ b/gst/flv/gstflvdemux.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __FLV_DEMUX_H__ @@ -59,6 +59,9 @@ struct _GstFlvDemux GstPad *audio_pad; GstPad *video_pad; + gboolean have_group_id; + guint group_id; + /* <private> */ GstIndex *index; diff --git a/gst/flv/gstflvmux.c b/gst/flv/gstflvmux.c index 52008d39b78ad7d635a37537fffb268dbdf89336..8d7387f4d1a8490a0f28979e252a07e0af2e16fb 100644 --- a/gst/flv/gstflvmux.c +++ b/gst/flv/gstflvmux.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -1141,6 +1141,8 @@ gst_flv_mux_write_header (GstFlvMux * mux) GValue streamheader = { 0 }; GSList *l; GstFlowReturn ret; + GstSegment segment; + gchar s_id[32]; /* if not streaming, check if downstream is seekable */ if (!mux->streamable) { @@ -1216,17 +1218,24 @@ gst_flv_mux_write_header (GstFlvMux * mux) if (audio_codec_data != NULL) gst_flv_mux_put_buffer_in_streamheader (&streamheader, audio_codec_data); + /* stream-start (FIXME: create id based on input ids) */ + g_snprintf (s_id, sizeof (s_id), "flvmux-%08x", g_random_int ()); + gst_pad_push_event (mux->srcpad, gst_event_new_stream_start (s_id)); + /* create the caps and put the streamheader in them */ caps = gst_caps_new_empty_simple ("video/x-flv"); structure = gst_caps_get_structure (caps, 0); gst_structure_set_value (structure, "streamheader", &streamheader); g_value_unset (&streamheader); - if (!gst_pad_has_current_caps (mux->srcpad)) - gst_pad_set_caps (mux->srcpad, caps); + gst_pad_set_caps (mux->srcpad, caps); gst_caps_unref (caps); + /* segment */ + gst_segment_init (&segment, GST_FORMAT_BYTES); + gst_pad_push_event (mux->srcpad, gst_event_new_segment (&segment)); + /* push the header buffer, the metadata and the codec info, if any */ ret = gst_flv_mux_push (mux, header); if (ret != GST_FLOW_OK) @@ -1463,26 +1472,13 @@ gst_flv_mux_handle_buffer (GstCollectPads * pads, GstCollectData * cdata, GstFlowReturn ret; if (mux->state == GST_FLV_MUX_STATE_HEADER) { - GstSegment segment; - gchar s_id[32]; - if (mux->collect->data == NULL) { GST_ELEMENT_ERROR (mux, STREAM, MUX, (NULL), ("No input streams configured")); return GST_FLOW_ERROR; } - /* stream-start (FIXME: create id based on input ids) */ - g_snprintf (s_id, sizeof (s_id), "flvmux-%08x", g_random_int ()); - gst_pad_push_event (mux->srcpad, gst_event_new_stream_start (s_id)); - - /* segment */ - gst_segment_init (&segment, GST_FORMAT_BYTES); - if (gst_pad_push_event (mux->srcpad, gst_event_new_segment (&segment))) - ret = gst_flv_mux_write_header (mux); - else - ret = GST_FLOW_ERROR; - + ret = gst_flv_mux_write_header (mux); if (ret != GST_FLOW_OK) return ret; mux->state = GST_FLV_MUX_STATE_DATA; diff --git a/gst/flv/gstflvmux.h b/gst/flv/gstflvmux.h index ca0b2e12fad401bc01771599e31b70ad4f70d798..cb57fc84e486ded58626767018cb90d4d688d39d 100644 --- a/gst/flv/gstflvmux.h +++ b/gst/flv/gstflvmux.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_FLV_MUX_H__ diff --git a/gst/flv/gstindex.c b/gst/flv/gstindex.c index aff8dc124b9d09ec32cfcd04eafaf7f8bbf4d3c1..d56f3cce720ed886a499255823357eefa60fa6ae 100644 --- a/gst/flv/gstindex.c +++ b/gst/flv/gstindex.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/flv/gstindex.h b/gst/flv/gstindex.h index 653aa18b711e3eaf372a390cf4a64b6e1ee67e82..0a51f9c646e17e4e4a7e75331d06fb6cbe9a1f46 100644 --- a/gst/flv/gstindex.h +++ b/gst/flv/gstindex.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_INDEX_H__ diff --git a/gst/flv/gstmemindex.c b/gst/flv/gstmemindex.c index dfcd35c103cae06d97902d58cc3afe2000653317..eef99c2c584cc563bcac274cf4738d32971711b9 100644 --- a/gst/flv/gstmemindex.c +++ b/gst/flv/gstmemindex.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/gst.h> diff --git a/gst/flx/Makefile.in b/gst/flx/Makefile.in index 39c529c2b224463fbe3ef1645adf3e9bfe2cbbbc..f9c63c74f9f47d6810f7efabca7a763a9fe3ce8c 100644 --- a/gst/flx/Makefile.in +++ b/gst/flx/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/flx -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,10 +162,23 @@ libgstflxdec_la_OBJECTS = $(am_libgstflxdec_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstflxdec_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstflxdec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstflxdec_la_CFLAGS) $(CFLAGS) \ $(libgstflxdec_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -152,20 +191,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstflxdec_la_SOURCES) DIST_SOURCES = $(libgstflxdec_la_SOURCES) am__can_run_installinfo = \ @@ -174,6 +209,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -341,6 +393,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -542,6 +595,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -568,12 +622,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstflxdec.la: $(libgstflxdec_la_OBJECTS) $(libgstflxdec_la_DEPENDENCIES) $(EXTRA_libgstflxdec_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstflxdec_la_LINK) -rpath $(plugindir) $(libgstflxdec_la_OBJECTS) $(libgstflxdec_la_LIBADD) $(LIBS) @@ -587,22 +644,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstflxdec_la-gstflxdec.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -627,26 +687,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -658,15 +707,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -675,6 +720,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -819,19 +879,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/flx/flx_color.c b/gst/flx/flx_color.c index 854010a4e99fa5b01aa3a6fd294f825d76c25a59..047bfdf6decf682d2e854da0eb508fd84185d0fe 100644 --- a/gst/flx/flx_color.c +++ b/gst/flx/flx_color.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/flx/flx_color.h b/gst/flx/flx_color.h index 80378e1de31bc77f03ed3429b5789668aebead40..fd36ab7dc2ce800a93ad18807456cafa4fa0e76f 100644 --- a/gst/flx/flx_color.h +++ b/gst/flx/flx_color.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __FLX_COLOR_H__ diff --git a/gst/flx/flx_fmt.h b/gst/flx/flx_fmt.h index ae0e268b62c8dd8cb861e6e2409b6ed56bac7c34..fbe850bc10897c891e902ab58fc0a71659591d05 100644 --- a/gst/flx/flx_fmt.h +++ b/gst/flx/flx_fmt.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c index bd169528aaa35a3cfc058180c9e6648564d143bc..35e934edb01ee82493a25b164781dc3101e51bfe 100644 --- a/gst/flx/gstflxdec.c +++ b/gst/flx/gstflxdec.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-flxdec @@ -587,6 +587,13 @@ gst_flxdec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) res = gst_pad_push (flxdec->srcpad, out); break; + default: + /* check if we have the complete frame */ + if (avail < flxfh.size) + goto need_more_data; + + gst_adapter_flush (flxdec->adapter, flxfh.size); + break; } if (chunk) diff --git a/gst/flx/gstflxdec.h b/gst/flx/gstflxdec.h index 55f5b7f401634ee65018337023e69a550798cd7f..3f9a0aabe9823138ff13343c4d897e9f561387c1 100644 --- a/gst/flx/gstflxdec.h +++ b/gst/flx/gstflxdec.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_FLX_DECODER_H__ diff --git a/gst/goom/Makefile.in b/gst/goom/Makefile.in index a1707de5aacadea327c3eddb6832b66c92eac121..28382ae849186f181a997a9eeb2c72f930043f6a 100644 --- a/gst/goom/Makefile.in +++ b/gst/goom/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -53,14 +80,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/goom -DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -155,10 +182,23 @@ libgstgoom_la_OBJECTS = $(am_libgstgoom_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstgoom_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstgoom_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstgoom_la_CFLAGS) $(CFLAGS) \ $(libgstgoom_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -171,20 +211,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstgoom_la_SOURCES) DIST_SOURCES = $(am__libgstgoom_la_SOURCES_DIST) am__can_run_installinfo = \ @@ -192,6 +228,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -359,6 +412,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -588,6 +642,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -614,12 +669,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstgoom.la: $(libgstgoom_la_OBJECTS) $(libgstgoom_la_DEPENDENCIES) $(EXTRA_libgstgoom_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstgoom_la_LINK) -rpath $(plugindir) $(libgstgoom_la_OBJECTS) $(libgstgoom_la_LIBADD) $(LIBS) @@ -650,22 +708,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgoom_la-xmmx.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -809,26 +870,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -840,15 +890,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -857,6 +903,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -1001,19 +1062,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES .NOTPARALLEL: diff --git a/gst/goom/config_param.c b/gst/goom/config_param.c index feb501558d12c84c6503402e2b654223e7a5e040..cd1965d7173180e5da732b2f83a59e1c28ac9275 100644 --- a/gst/goom/config_param.c +++ b/gst/goom/config_param.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "goom_config_param.h" diff --git a/gst/goom/convolve_fx.c b/gst/goom/convolve_fx.c index 457b5eb2cde4eb22d8a2a23ca730c2f7d05e298c..980e113a5babb6bdf0f065f19379515d2ddb0668 100644 --- a/gst/goom/convolve_fx.c +++ b/gst/goom/convolve_fx.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "goom_fx.h" #include "goom_plugin_info.h" diff --git a/gst/goom/drawmethods.c b/gst/goom/drawmethods.c index cd8163aa917d66c8fe06f256d87384a0be0eb702..97f0cf1396d40faee5941b529261e207c76e6123 100644 --- a/gst/goom/drawmethods.c +++ b/gst/goom/drawmethods.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "drawmethods.h" diff --git a/gst/goom/drawmethods.h b/gst/goom/drawmethods.h index cdf3d4786888cc5292f4bedbeea016b1b4856127..3f862742415e4a3e96502ed1610328d6f67fe3b6 100644 --- a/gst/goom/drawmethods.h +++ b/gst/goom/drawmethods.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _DRAWMETHODS_H #define _DRAWMETHODS_H diff --git a/gst/goom/filters.c b/gst/goom/filters.c index 8c6dbb103305890613840186732b18e3d0d548f6..aa04960c6ff6ade940aeb807a6ecc28d76fcdcd8 100644 --- a/gst/goom/filters.c +++ b/gst/goom/filters.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ // --- CHUI EN TRAIN DE SUPPRIMER LES EXTERN RESOLX ET C_RESOLY --- diff --git a/gst/goom/flying_stars_fx.c b/gst/goom/flying_stars_fx.c index a0ad8b797f7b4580a3735bc33921aa2c6ad3aef3..de35e7242bc32cd94e19fce0546cc7f3709c79a8 100644 --- a/gst/goom/flying_stars_fx.c +++ b/gst/goom/flying_stars_fx.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "goom_fx.h" #include "goom_plugin_info.h" diff --git a/gst/goom/goom.h b/gst/goom/goom.h index ccfc3f2f3f7ad57e29300ce44faefdb5a307bfb4..02a0936e7dd4c48f2f544398ba1f08ec10e01be3 100644 --- a/gst/goom/goom.h +++ b/gst/goom/goom.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GOOMCORE_H #define _GOOMCORE_H diff --git a/gst/goom/goom_config.h b/gst/goom/goom_config.h index 8daa1d6d8d119e86ed2d2f912450c5e7c0a4780f..7264bfe4ec56c9af7c9fed4ee8c6ba03eeb89931 100644 --- a/gst/goom/goom_config.h +++ b/gst/goom/goom_config.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <glib.h> diff --git a/gst/goom/goom_config_param.h b/gst/goom/goom_config_param.h index 15fd22f189772cb0c8820186568a0abf4176bc1a..ba08da95c511dd39e7c0ddb45933d519ad07bce2 100644 --- a/gst/goom/goom_config_param.h +++ b/gst/goom/goom_config_param.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _CONFIG_PARAM_H #define _CONFIG_PARAM_H diff --git a/gst/goom/goom_core.c b/gst/goom/goom_core.c index 7c2aef1b9b960e1d5605ccd209f5324de44de39c..6f6597ff5f2c73cd2477642ec23e32b566e233fc 100644 --- a/gst/goom/goom_core.c +++ b/gst/goom/goom_core.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/goom/goom_filters.h b/gst/goom/goom_filters.h index 5c6545a020f6c8ba3806f3b95f65069706f07149..13096e270f043998b695b4cb948256906958fe27 100644 --- a/gst/goom/goom_filters.h +++ b/gst/goom/goom_filters.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef FILTERS_H #define FILTERS_H diff --git a/gst/goom/goom_fx.h b/gst/goom/goom_fx.h index b239a38119546887c691dabc28ac5139125808a9..7c82d6cfe2a6b07f6a9f89eb0163ce12c5f1307b 100644 --- a/gst/goom/goom_fx.h +++ b/gst/goom/goom_fx.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GOOM_FX_H #define _GOOM_FX_H diff --git a/gst/goom/goom_graphic.h b/gst/goom/goom_graphic.h index 7632205b438f094d0bd524da8097f942ac7596dc..54dde3765dd387eeceae70cf531090eedcf76eeb 100644 --- a/gst/goom/goom_graphic.h +++ b/gst/goom/goom_graphic.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef GRAPHIC_H #define GRAPHIC_H diff --git a/gst/goom/goom_plugin_info.h b/gst/goom/goom_plugin_info.h index 294afe84f5864aae0c75bb69f4b896b79efc5905..da0e96e58ca7e1337c365c922333b06c217b702d 100644 --- a/gst/goom/goom_plugin_info.h +++ b/gst/goom/goom_plugin_info.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _PLUGIN_INFO_H #define _PLUGIN_INFO_H diff --git a/gst/goom/goom_tools.c b/gst/goom/goom_tools.c index 4f9a6b2bc16a219b8cee9353d593c718eca82ea0..01758fd987c10e81b90f1ccfc17c6f76c609398d 100644 --- a/gst/goom/goom_tools.c +++ b/gst/goom/goom_tools.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "goom_tools.h" #include <stdlib.h> diff --git a/gst/goom/goom_tools.h b/gst/goom/goom_tools.h index caaa219e97a7235e4758ee05aace83c95886585e..34f5240fc4f54a60a309f5dc79ae19e80a37d8ca 100644 --- a/gst/goom/goom_tools.h +++ b/gst/goom/goom_tools.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GOOMTOOLS_H #define _GOOMTOOLS_H diff --git a/gst/goom/goom_typedefs.h b/gst/goom/goom_typedefs.h index 7188b4b82dec1876f900df9aa8b131f33e9cd8fb..d3a33a999b2c0a96a695b3a73c45f5a413ff299b 100644 --- a/gst/goom/goom_typedefs.h +++ b/gst/goom/goom_typedefs.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _GOOM_TYPEDEFS_H #define _GOOM_TYPEDEFS_H diff --git a/gst/goom/goom_visual_fx.h b/gst/goom/goom_visual_fx.h index 6f6f964ac8bc7860e5f31471118acc6463488aec..0bb5a49c29a06ec076448d769599f44fe291e1a6 100644 --- a/gst/goom/goom_visual_fx.h +++ b/gst/goom/goom_visual_fx.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _VISUAL_FX_H #define _VISUAL_FX_H diff --git a/gst/goom/graphic.c b/gst/goom/graphic.c index 64c0223702e90e368cb4c57f3348d217e87a129a..9f3044829df207aa9403dbecf502f7a282036a33 100644 --- a/gst/goom/graphic.c +++ b/gst/goom/graphic.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "goom_graphic.h" diff --git a/gst/goom/gstgoom.c b/gst/goom/gstgoom.c index 4267602f844e9f844dd777547fb6bcd913d23bdf..76b4ee8783239dacd6d1e12f6723d92b6a64110c 100644 --- a/gst/goom/gstgoom.c +++ b/gst/goom/gstgoom.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -111,6 +111,8 @@ static gboolean gst_goom_sink_event (GstPad * pad, GstObject * parent, static gboolean gst_goom_src_query (GstPad * pad, GstObject * parent, GstQuery * query); +static gboolean gst_goom_src_negotiate (GstGoom * goom); + #define gst_goom_parent_class parent_class G_DEFINE_TYPE (GstGoom, gst_goom, GST_TYPE_ELEMENT); @@ -207,7 +209,7 @@ gst_goom_sink_setcaps (GstGoom * goom, GstCaps * caps) goom->bps = goom->channels * sizeof (gint16); - return TRUE; + return gst_goom_src_negotiate (goom); } static gboolean @@ -361,11 +363,11 @@ gst_goom_src_event (GstPad * pad, GstObject * parent, GstEvent * event) goom->earliest_time = timestamp + diff; GST_OBJECT_UNLOCK (goom); - res = gst_pad_push_event (goom->sinkpad, event); + res = gst_pad_event_default (pad, parent, event); break; } default: - res = gst_pad_push_event (goom->sinkpad, event); + res = gst_pad_event_default (pad, parent, event); break; } @@ -390,12 +392,9 @@ gst_goom_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) gst_event_unref (event); break; } - case GST_EVENT_FLUSH_START: - res = gst_pad_push_event (goom->srcpad, event); - break; case GST_EVENT_FLUSH_STOP: gst_goom_reset (goom); - res = gst_pad_push_event (goom->srcpad, event); + res = gst_pad_event_default (pad, parent, event); break; case GST_EVENT_SEGMENT: { @@ -404,11 +403,11 @@ gst_goom_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) * we can do QoS */ gst_event_copy_segment (event, &goom->segment); - res = gst_pad_push_event (goom->srcpad, event); + res = gst_pad_event_default (pad, parent, event); break; } default: - res = gst_pad_push_event (goom->srcpad, event); + res = gst_pad_event_default (pad, parent, event); break; } @@ -477,12 +476,7 @@ gst_goom_src_query (GstPad * pad, GstObject * parent, GstQuery * query) static GstFlowReturn ensure_negotiated (GstGoom * goom) { - gboolean reconfigure; - - reconfigure = gst_pad_check_reconfigure (goom->srcpad); - - /* we don't know an output format yet, pick one */ - if (reconfigure || !gst_pad_has_current_caps (goom->srcpad)) { + if (gst_pad_check_reconfigure (goom->srcpad)) { if (!gst_goom_src_negotiate (goom)) return GST_FLOW_NOT_NEGOTIATED; } @@ -546,7 +540,7 @@ gst_goom_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) GST_DEBUG_OBJECT (goom, "processing buffer"); /* get timestamp of the current adapter byte */ - timestamp = gst_adapter_prev_timestamp (goom->adapter, &dist); + timestamp = gst_adapter_prev_pts (goom->adapter, &dist); if (GST_CLOCK_TIME_IS_VALID (timestamp)) { /* convert bytes to time */ dist /= goom->bps; diff --git a/gst/goom/gstgoom.h b/gst/goom/gstgoom.h index 16e745d93f123f58a7566446297463fa5e6e8356..331e6ab5c8bb3933801a9748d5a02fea74ad3dbe 100644 --- a/gst/goom/gstgoom.h +++ b/gst/goom/gstgoom.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_GOOM_H__ diff --git a/gst/goom/lines.c b/gst/goom/lines.c index 096240cda93b81479fbaf12ff171cb759c896804..a7c1eda914144c4e8124dcf6306f0ee43dfbe213 100644 --- a/gst/goom/lines.c +++ b/gst/goom/lines.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "lines.h" diff --git a/gst/goom/lines.h b/gst/goom/lines.h index 6c2b47cd3b4262fd9b2394a8f922a760d00e03e3..4cd50d87791cbbe9d3611f403d89e76574ea06f7 100644 --- a/gst/goom/lines.h +++ b/gst/goom/lines.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _LINES_H diff --git a/gst/goom/mathtools.c b/gst/goom/mathtools.c index 84d5a964e090547f9d9b8fdc1b32689fc58ccd9d..dd190bf607215453e3c2782189de531a318e9631 100644 --- a/gst/goom/mathtools.c +++ b/gst/goom/mathtools.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "mathtools.h" diff --git a/gst/goom/mathtools.h b/gst/goom/mathtools.h index baf79b0183fc84986d708ba7d7dd813f3d8e4764..5340dab743f495a14dd4259ae36d56442ddfba93 100644 --- a/gst/goom/mathtools.h +++ b/gst/goom/mathtools.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef MATHTOOLS_H diff --git a/gst/goom/motif_goom1.h b/gst/goom/motif_goom1.h index ba5a7d45e032692775d8c7f1744def77c08cb2a7..82f381bdb008a45b3bee1d861f55515cab9a0fab 100644 --- a/gst/goom/motif_goom1.h +++ b/gst/goom/motif_goom1.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ static Motif CONV_MOTIF1 = { {15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, diff --git a/gst/goom/motif_goom2.h b/gst/goom/motif_goom2.h index 1ef1cbe1b11f629e6ee8f8d19283b389746d0361..2de92afa293a7948b78c395fdf7575fe27e3e1c5 100644 --- a/gst/goom/motif_goom2.h +++ b/gst/goom/motif_goom2.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ static Motif CONV_MOTIF2 = { {15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, diff --git a/gst/goom/plugin_info.c b/gst/goom/plugin_info.c index b50c9dd9aba307cf3548de58f9ee5343f1341fda..0952dcafb625aa6b7510542b6bacda68004e22bd 100644 --- a/gst/goom/plugin_info.c +++ b/gst/goom/plugin_info.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/gst/goom/ppc_drawings.h b/gst/goom/ppc_drawings.h index 8dd158d585893fbaf546d606da02c29cec3ead00..d35adf6500a3574f1d12285ccbc93c6348af2bbd 100644 --- a/gst/goom/ppc_drawings.h +++ b/gst/goom/ppc_drawings.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* Generic PowerPC Code */ diff --git a/gst/goom/ppc_drawings.s b/gst/goom/ppc_drawings.s index 4e100b75513f7672edf78b4a141f71563f3764c9..943cce7fdee1e314a3264367fe9cb2a1e042a52f 100644 --- a/gst/goom/ppc_drawings.s +++ b/gst/goom/ppc_drawings.s @@ -12,8 +12,8 @@ ; ; 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. +; Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +; Boston, MA 02110-1301, USA. ; Change log : ; 30 May 2003 : File creation diff --git a/gst/goom/ppc_zoom_ultimate.h b/gst/goom/ppc_zoom_ultimate.h index 6c6a4cccaf1e416db8b75f0d25cddbcbe29ee489..cd2c8a268389284fd798376b2f1420cdce1a40d9 100644 --- a/gst/goom/ppc_zoom_ultimate.h +++ b/gst/goom/ppc_zoom_ultimate.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* Generic PowerPC Code */ diff --git a/gst/goom/ppc_zoom_ultimate.s b/gst/goom/ppc_zoom_ultimate.s index 10c25a5a3fa094a5dbaccc7a348b9f2ca3187709..c37ec503e085a0fa692162fc5c0d03ebf9426178 100644 --- a/gst/goom/ppc_zoom_ultimate.s +++ b/gst/goom/ppc_zoom_ultimate.s @@ -12,8 +12,8 @@ ; ; 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. +; Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +; Boston, MA 02110-1301, USA. ; Change log : ; 21 Dec 2003 : Use of altivec is now determined with a parameter diff --git a/gst/goom/sound_tester.c b/gst/goom/sound_tester.c index c6e16103526c5b220ef5485eebd1e8e488968812..d02f0b51ac5f9e37303df866f5fe90701a97d0d7 100644 --- a/gst/goom/sound_tester.c +++ b/gst/goom/sound_tester.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "sound_tester.h" diff --git a/gst/goom/sound_tester.h b/gst/goom/sound_tester.h index a79bf2c5c09b6c80c312985c880a84f2fe7f09f6..2651d5f9de135a9676e0597c0ccaf593334d2c6b 100644 --- a/gst/goom/sound_tester.h +++ b/gst/goom/sound_tester.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _SOUND_TESTER_H #define _SOUND_TESTER_H diff --git a/gst/goom/surf3d.c b/gst/goom/surf3d.c index 588a5535f994d79ab29fbef25592921059274662..847284b370f3dc90109a0e10d1430da4d19dc61c 100644 --- a/gst/goom/surf3d.c +++ b/gst/goom/surf3d.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "surf3d.h" #include "goom_plugin_info.h" diff --git a/gst/goom/surf3d.h b/gst/goom/surf3d.h index 83caa33d9b1b310691b50962f12083747bdfbfb4..f8a2180d9750c2fbe17fa6e2aa8affa0bbcfd398 100644 --- a/gst/goom/surf3d.h +++ b/gst/goom/surf3d.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _SURF3D_H #define _SURF3D_H diff --git a/gst/goom/tentacle3d.c b/gst/goom/tentacle3d.c index 4c0d1438d17f3a11214b25d90ae56c0abff5e8eb..2abe42fc25dad6556d7eff9bbdb76d67f47d09dd 100644 --- a/gst/goom/tentacle3d.c +++ b/gst/goom/tentacle3d.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <stdlib.h> diff --git a/gst/goom/tentacle3d.h b/gst/goom/tentacle3d.h index 3696dd8d4ece3b11e753ae2a1befbe5b274e77f6..9f3ba923428109b3430fc4654e4c9b0ca54a863d 100644 --- a/gst/goom/tentacle3d.h +++ b/gst/goom/tentacle3d.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _TENTACLE3D_H #define _TENTACLE3D_H diff --git a/gst/goom/v3d.c b/gst/goom/v3d.c index f37141eda7c2da8a2b735c24c7f5fd155aaedfb6..7df4f1388bac2f3cbcddcd117e7cd3a0ddeab90a 100644 --- a/gst/goom/v3d.c +++ b/gst/goom/v3d.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "v3d.h" diff --git a/gst/goom/v3d.h b/gst/goom/v3d.h index 4257ccae6db628fd8afdb8d77b47672157bd867b..fd5f939236281172026c0841e5dda6838f0e8bbe 100644 --- a/gst/goom/v3d.h +++ b/gst/goom/v3d.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef _V3D_H #define _V3D_H diff --git a/gst/goom2k1/Makefile.am b/gst/goom2k1/Makefile.am index 5ff22ba5b17ea0ed54f7b14b0cda450f2064d75a..b32753f74d236d2cdbdd4bb19def951ecb7b847c 100644 --- a/gst/goom2k1/Makefile.am +++ b/gst/goom2k1/Makefile.am @@ -7,7 +7,21 @@ noinst_HEADERS = gstgoom.h filters.h goom_core.h goom_tools.h graphic.h lines.h libgstgoom2k1_la_SOURCES = gstgoom.c goom_core.c $(GOOM_FILTER_FILES) graphic.c lines.c -libgstgoom2k1_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(GOOM_FILTER_CFLAGS) +libgstgoom2k1_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(GOOM_FILTER_CFLAGS) \ + -Dgst_goom_get_type=gst_goom2k1_get_type \ + -Dgoom_init=goom2k1_init \ + -Dgoom_close=goom2k1_close -Dgoom_update=goom2k1_update \ + -Dgoom_set_resolution=goom2k1_set_resolution \ + -Dgoom_lines=goom2k1_lines \ + -DBLACK=GOOM2K1_BLACK -DWHITE=GOOM2K1_WHITE \ + -DRED=GOOM2K1_RED -DBLUE=GOOM2K1_BLUE \ + -DGREEN=GOOM2K1_GREEN -DYELLOW=GOOM2K1_YELLOW \ + -DORANGE=GOOM2K1_ORANGE -DVIOLET=GOOM2K1_VIOLET \ + -DzoomFilterFastRGB=zoomFilterFastRGB2k1 \ + -DpointFilter=pointFilter2k1 \ + -DzoomFilterDestroy=zoomFilterDestroy2k1 \ + -DzoomFilterNew=zoomFilterNew2k1 + libgstgoom2k1_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM) libgstgoom2k1_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstgoom2k1_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) diff --git a/gst/goom2k1/Makefile.in b/gst/goom2k1/Makefile.in index ceb963383fa22dc2734eb3fd76015607e4cc1b21..0b97ed27d49edebd36990bdb148591b65abced3a 100644 --- a/gst/goom2k1/Makefile.in +++ b/gst/goom2k1/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/goom2k1 -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -138,10 +164,23 @@ libgstgoom2k1_la_OBJECTS = $(am_libgstgoom2k1_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstgoom2k1_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstgoom2k1_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstgoom2k1_la_CFLAGS) $(CFLAGS) \ $(libgstgoom2k1_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -154,20 +193,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstgoom2k1_la_SOURCES) DIST_SOURCES = $(libgstgoom2k1_la_SOURCES) am__can_run_installinfo = \ @@ -176,6 +211,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -343,6 +395,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -508,7 +561,21 @@ GOOM_FILTER_FILES = filters.c GOOM_FILTER_CFLAGS = -UMMX -UUSE_ASM noinst_HEADERS = gstgoom.h filters.h goom_core.h goom_tools.h graphic.h lines.h libgstgoom2k1_la_SOURCES = gstgoom.c goom_core.c $(GOOM_FILTER_FILES) graphic.c lines.c -libgstgoom2k1_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(GOOM_FILTER_CFLAGS) +libgstgoom2k1_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(GOOM_FILTER_CFLAGS) \ + -Dgst_goom_get_type=gst_goom2k1_get_type \ + -Dgoom_init=goom2k1_init \ + -Dgoom_close=goom2k1_close -Dgoom_update=goom2k1_update \ + -Dgoom_set_resolution=goom2k1_set_resolution \ + -Dgoom_lines=goom2k1_lines \ + -DBLACK=GOOM2K1_BLACK -DWHITE=GOOM2K1_WHITE \ + -DRED=GOOM2K1_RED -DBLUE=GOOM2K1_BLUE \ + -DGREEN=GOOM2K1_GREEN -DYELLOW=GOOM2K1_YELLOW \ + -DORANGE=GOOM2K1_ORANGE -DVIOLET=GOOM2K1_VIOLET \ + -DzoomFilterFastRGB=zoomFilterFastRGB2k1 \ + -DpointFilter=pointFilter2k1 \ + -DzoomFilterDestroy=zoomFilterDestroy2k1 \ + -DzoomFilterNew=zoomFilterNew2k1 + libgstgoom2k1_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM) libgstgoom2k1_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstgoom2k1_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) @@ -547,6 +614,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -573,12 +641,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstgoom2k1.la: $(libgstgoom2k1_la_OBJECTS) $(libgstgoom2k1_la_DEPENDENCIES) $(EXTRA_libgstgoom2k1_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstgoom2k1_la_LINK) -rpath $(plugindir) $(libgstgoom2k1_la_OBJECTS) $(libgstgoom2k1_la_LIBADD) $(LIBS) @@ -595,22 +666,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgoom2k1_la-lines.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -656,26 +730,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -687,15 +750,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -704,6 +763,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -848,19 +922,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/goom2k1/gstgoom.c b/gst/goom2k1/gstgoom.c index f09d0d4bd8eaf8beb3e64d9f7fd65b832ad3b810..6376d35b260416ebd2a645cf5b4d93c5cd5f68d1 100644 --- a/gst/goom2k1/gstgoom.c +++ b/gst/goom2k1/gstgoom.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -106,6 +106,8 @@ static gboolean gst_goom_sink_event (GstPad * pad, GstObject * parent, static gboolean gst_goom_src_query (GstPad * pad, GstObject * parent, GstQuery * query); +static gboolean gst_goom_src_negotiate (GstGoom * goom); + #define gst_goom_parent_class parent_class typedef GstGoom GstGoom2k1; typedef GstGoomClass GstGoom2k1Class; @@ -203,10 +205,12 @@ gst_goom_sink_setcaps (GstGoom * goom, GstCaps * caps) res = gst_structure_get_int (structure, "channels", &goom->channels); res &= gst_structure_get_int (structure, "rate", &goom->rate); + if (!res) + return FALSE; goom->bps = goom->channels * sizeof (gint16); - return res; + return gst_goom_src_negotiate (goom); } static gboolean @@ -356,11 +360,11 @@ gst_goom_src_event (GstPad * pad, GstObject * parent, GstEvent * event) goom->earliest_time = timestamp + diff; GST_OBJECT_UNLOCK (goom); - res = gst_pad_push_event (goom->sinkpad, event); + res = gst_pad_event_default (pad, parent, event); break; } default: - res = gst_pad_push_event (goom->sinkpad, event); + res = gst_pad_event_default (pad, parent, event); break; } @@ -385,12 +389,9 @@ gst_goom_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) gst_event_unref (event); break; } - case GST_EVENT_FLUSH_START: - res = gst_pad_push_event (goom->srcpad, event); - break; case GST_EVENT_FLUSH_STOP: gst_goom_reset (goom); - res = gst_pad_push_event (goom->srcpad, event); + res = gst_pad_event_default (pad, parent, event); break; case GST_EVENT_SEGMENT: { @@ -399,11 +400,11 @@ gst_goom_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) * we can do QoS */ gst_event_copy_segment (event, &goom->segment); - res = gst_pad_push_event (goom->srcpad, event); + res = gst_pad_event_default (pad, parent, event); break; } default: - res = gst_pad_push_event (goom->srcpad, event); + res = gst_pad_event_default (pad, parent, event); break; } @@ -469,12 +470,7 @@ gst_goom_src_query (GstPad * pad, GstObject * parent, GstQuery * query) static GstFlowReturn ensure_negotiated (GstGoom * goom) { - gboolean reconfigure; - - reconfigure = gst_pad_check_reconfigure (goom->srcpad); - - /* we don't know an output format yet, pick one */ - if (reconfigure || !gst_pad_has_current_caps (goom->srcpad)) { + if (gst_pad_check_reconfigure (goom->srcpad)) { if (!gst_goom_src_negotiate (goom)) return GST_FLOW_NOT_NEGOTIATED; } @@ -541,7 +537,7 @@ gst_goom_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) GST_DEBUG_OBJECT (goom, "processing buffer"); /* get timestamp of the current adapter byte */ - timestamp = gst_adapter_prev_timestamp (goom->adapter, &dist); + timestamp = gst_adapter_prev_pts (goom->adapter, &dist); if (GST_CLOCK_TIME_IS_VALID (timestamp)) { /* convert bytes to time */ dist /= goom->bps; diff --git a/gst/goom2k1/gstgoom.h b/gst/goom2k1/gstgoom.h index 79b3b99a11953ed18af53834dd68e44461ba63eb..d225a8e2a860b3a3afaf027097b10e03932f4719 100644 --- a/gst/goom2k1/gstgoom.h +++ b/gst/goom2k1/gstgoom.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_GOOM_H__ diff --git a/gst/icydemux/Makefile.in b/gst/icydemux/Makefile.in index cebc723e8f41d3a5b5253262543ebf5a1384556e..e2006df769139123611001e1f47284625be07a43 100644 --- a/gst/icydemux/Makefile.in +++ b/gst/icydemux/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/icydemux -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,10 +162,23 @@ libgsticydemux_la_OBJECTS = $(am_libgsticydemux_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgsticydemux_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgsticydemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgsticydemux_la_CFLAGS) $(CFLAGS) \ $(libgsticydemux_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -152,20 +191,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgsticydemux_la_SOURCES) DIST_SOURCES = $(libgsticydemux_la_SOURCES) am__can_run_installinfo = \ @@ -174,6 +209,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -341,6 +393,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -542,6 +595,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -568,12 +622,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgsticydemux.la: $(libgsticydemux_la_OBJECTS) $(libgsticydemux_la_DEPENDENCIES) $(EXTRA_libgsticydemux_la_DEPENDENCIES) $(AM_V_CCLD)$(libgsticydemux_la_LINK) -rpath $(plugindir) $(libgsticydemux_la_OBJECTS) $(libgsticydemux_la_LIBADD) $(LIBS) @@ -586,22 +643,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsticydemux_la-gsticydemux.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -619,26 +679,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -650,15 +699,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -667,6 +712,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -811,19 +871,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/icydemux/gsticydemux.c b/gst/icydemux/gsticydemux.c index d60de27b8074517efa8cc1ef77f6d48d8b963480..40afd0b72d1ceee38924c6c25b68369174801489 100644 --- a/gst/icydemux/gsticydemux.c +++ b/gst/icydemux/gsticydemux.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -207,6 +207,28 @@ gst_icydemux_dispose (GObject * object) G_OBJECT_CLASS (parent_class)->dispose (object); } +typedef struct +{ + GstCaps *caps; + GstPad *pad; +} CopyStickyEventsData; + +static gboolean +copy_sticky_events (GstPad * pad, GstEvent ** event, gpointer user_data) +{ + CopyStickyEventsData *data = user_data; + + if (GST_EVENT_TYPE (*event) >= GST_EVENT_CAPS && data->caps) { + gst_pad_set_caps (data->pad, data->caps); + data->caps = NULL; + } + + if (GST_EVENT_TYPE (*event) != GST_EVENT_CAPS) + gst_pad_push_event (data->pad, gst_event_ref (*event)); + + return TRUE; +} + static gboolean gst_icydemux_add_srcpad (GstICYDemux * icydemux, GstCaps * new_caps) { @@ -225,6 +247,8 @@ gst_icydemux_add_srcpad (GstICYDemux * icydemux, GstCaps * new_caps) } if (icydemux->srcpad == NULL) { + CopyStickyEventsData data; + icydemux->srcpad = gst_pad_new_from_template (gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (icydemux), "src"), "src"); @@ -233,10 +257,12 @@ gst_icydemux_add_srcpad (GstICYDemux * icydemux, GstCaps * new_caps) gst_pad_use_fixed_caps (icydemux->srcpad); gst_pad_set_active (icydemux->srcpad, TRUE); - if (icydemux->src_caps) { - if (!gst_pad_set_caps (icydemux->srcpad, icydemux->src_caps)) - GST_WARNING_OBJECT (icydemux, "Failed to set caps on src pad"); - } + data.pad = icydemux->srcpad; + data.caps = icydemux->src_caps; + gst_pad_sticky_events_foreach (icydemux->sinkpad, copy_sticky_events, + &data); + if (data.caps) + gst_pad_set_caps (data.pad, data.caps); GST_DEBUG_OBJECT (icydemux, "Adding src pad with caps %" GST_PTR_FORMAT, icydemux->src_caps); @@ -383,8 +409,9 @@ gst_icydemux_handle_event (GstPad * pad, GstObject * parent, GstEvent * event) return gst_pad_event_default (pad, parent, event); default: - icydemux->cached_events = g_list_append (icydemux->cached_events, - event); + if (!GST_EVENT_IS_STICKY (event)) + icydemux->cached_events = + g_list_append (icydemux->cached_events, event); return TRUE; } } else { @@ -532,7 +559,12 @@ gst_icydemux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) while (size) { if (icydemux->remaining) { chunk = (size <= icydemux->remaining) ? size : icydemux->remaining; - sub = gst_buffer_copy_region (buf, GST_BUFFER_COPY_ALL, offset, chunk); + if (offset == 0 && chunk == size) { + sub = buf; + buf = NULL; + } else { + sub = gst_buffer_copy_region (buf, GST_BUFFER_COPY_ALL, offset, chunk); + } offset += chunk; icydemux->remaining -= chunk; size -= chunk; @@ -576,7 +608,8 @@ gst_icydemux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) } done: - gst_buffer_unref (buf); + if (buf) + gst_buffer_unref (buf); return ret; diff --git a/gst/icydemux/gsticydemux.h b/gst/icydemux/gsticydemux.h index d48339af2c5c53543a1563d071095e850a2d96bd..3f05218ad58661822494c49008af687e2e0f105d 100644 --- a/gst/icydemux/gsticydemux.h +++ b/gst/icydemux/gsticydemux.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_ICYDEMUX_H__ diff --git a/gst/id3demux/Makefile.in b/gst/id3demux/Makefile.in index bb1a47f60f0b253f988b86a7b29ded0d3a8da5ae..dfa7812570279e255bd465ffd41c992b7e46d15d 100644 --- a/gst/id3demux/Makefile.in +++ b/gst/id3demux/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/id3demux -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -135,10 +161,23 @@ libgstid3demux_la_OBJECTS = $(am_libgstid3demux_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstid3demux_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstid3demux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstid3demux_la_CFLAGS) $(CFLAGS) \ $(libgstid3demux_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -151,20 +190,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstid3demux_la_SOURCES) DIST_SOURCES = $(libgstid3demux_la_SOURCES) am__can_run_installinfo = \ @@ -173,6 +208,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -340,6 +392,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -543,6 +596,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -569,12 +623,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstid3demux.la: $(libgstid3demux_la_OBJECTS) $(libgstid3demux_la_DEPENDENCIES) $(EXTRA_libgstid3demux_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstid3demux_la_LINK) -rpath $(plugindir) $(libgstid3demux_la_OBJECTS) $(libgstid3demux_la_LIBADD) $(LIBS) @@ -587,22 +644,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstid3demux_la-gstid3demux.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -620,26 +680,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -651,15 +700,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -668,6 +713,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -812,19 +872,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/id3demux/gstid3demux.c b/gst/id3demux/gstid3demux.c index 801781643a651cb958cdf47518ed5b359e0992e9..a55832a522467cb8817b90b69a643c106ca9b808 100644 --- a/gst/id3demux/gstid3demux.c +++ b/gst/id3demux/gstid3demux.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/id3demux/gstid3demux.h b/gst/id3demux/gstid3demux.h index a875502b2f017b51d12301255d09ae77f154a708..9561dfdf2db86258f3ee3d758b6be37d6c94d768 100644 --- a/gst/id3demux/gstid3demux.h +++ b/gst/id3demux/gstid3demux.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_ID3DEMUX_H__ diff --git a/gst/imagefreeze/Makefile.in b/gst/imagefreeze/Makefile.in index 6c73f34f9fd4c4b0c613379a0b55738823c184a4..7a87716fc965f25bcf2f0215ce6d413b3e4a6a8e 100644 --- a/gst/imagefreeze/Makefile.in +++ b/gst/imagefreeze/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/imagefreeze -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -135,10 +161,23 @@ libgstimagefreeze_la_OBJECTS = $(am_libgstimagefreeze_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstimagefreeze_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstimagefreeze_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstimagefreeze_la_CFLAGS) $(CFLAGS) \ $(libgstimagefreeze_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -151,20 +190,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstimagefreeze_la_SOURCES) DIST_SOURCES = $(libgstimagefreeze_la_SOURCES) am__can_run_installinfo = \ @@ -173,6 +208,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -340,6 +392,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -541,6 +594,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -567,12 +621,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstimagefreeze.la: $(libgstimagefreeze_la_OBJECTS) $(libgstimagefreeze_la_DEPENDENCIES) $(EXTRA_libgstimagefreeze_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstimagefreeze_la_LINK) -rpath $(plugindir) $(libgstimagefreeze_la_OBJECTS) $(libgstimagefreeze_la_LIBADD) $(LIBS) @@ -585,22 +642,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstimagefreeze_la-gstimagefreeze.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -618,26 +678,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -649,15 +698,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -666,6 +711,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -810,19 +870,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/imagefreeze/gstimagefreeze.c b/gst/imagefreeze/gstimagefreeze.c index 7c56d0e544f4c985aafdac8649bd0dc56836ebf6..63fe84f5a2be70f796611569beef40322bf28e20 100644 --- a/gst/imagefreeze/gstimagefreeze.c +++ b/gst/imagefreeze/gstimagefreeze.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/imagefreeze/gstimagefreeze.h b/gst/imagefreeze/gstimagefreeze.h index 4a00d1cda2316d35530cb3bf61b116d0c474d865..e03528ada2a3c8c2b3691a5362b4537df7c8092f 100644 --- a/gst/imagefreeze/gstimagefreeze.h +++ b/gst/imagefreeze/gstimagefreeze.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_IMAGE_FREEZE_H__ diff --git a/gst/interleave/Makefile.in b/gst/interleave/Makefile.in index 618b9551a43b33381a5d295a5566ddc157946a4b..d0115bf00d87e857372c23c7ca27b864ed1efbfc 100644 --- a/gst/interleave/Makefile.in +++ b/gst/interleave/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/interleave -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,10 +163,23 @@ libgstinterleave_la_OBJECTS = $(am_libgstinterleave_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstinterleave_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstinterleave_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstinterleave_la_CFLAGS) $(CFLAGS) \ $(libgstinterleave_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +192,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstinterleave_la_SOURCES) DIST_SOURCES = $(libgstinterleave_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +210,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +394,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -543,6 +596,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -569,12 +623,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstinterleave.la: $(libgstinterleave_la_OBJECTS) $(libgstinterleave_la_DEPENDENCIES) $(EXTRA_libgstinterleave_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstinterleave_la_LINK) -rpath $(plugindir) $(libgstinterleave_la_OBJECTS) $(libgstinterleave_la_LIBADD) $(LIBS) @@ -589,22 +646,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstinterleave_la-plugin.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -636,26 +696,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -667,15 +716,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -684,6 +729,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -828,19 +888,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/interleave/deinterleave.c b/gst/interleave/deinterleave.c index a98774867dbdd64ae5d20e33524d9fd6cf852ac3..507423122bad211161b04e83724d2ad732495c14 100644 --- a/gst/interleave/deinterleave.c +++ b/gst/interleave/deinterleave.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* TODO: @@ -215,21 +215,42 @@ gst_deinterleave_init (GstDeinterleave * self) gst_element_add_pad (GST_ELEMENT (self), self->sink); } +typedef struct +{ + GstCaps *caps; + GstPad *pad; +} CopyStickyEventsData; + +static gboolean +copy_sticky_events (GstPad * pad, GstEvent ** event, gpointer user_data) +{ + CopyStickyEventsData *data = user_data; + + if (GST_EVENT_TYPE (*event) >= GST_EVENT_CAPS && data->caps) { + gst_pad_set_caps (data->pad, data->caps); + data->caps = NULL; + } + + if (GST_EVENT_TYPE (*event) != GST_EVENT_CAPS) + gst_pad_push_event (data->pad, gst_event_ref (*event)); + + return TRUE; +} + static void gst_deinterleave_add_new_pads (GstDeinterleave * self, GstCaps * caps) { GstPad *pad; - guint i; for (i = 0; i < GST_AUDIO_INFO_CHANNELS (&self->audio_info); i++) { gchar *name = g_strdup_printf ("src_%u", i); - GstCaps *srccaps; GstAudioInfo info; GstAudioFormat format = GST_AUDIO_INFO_FORMAT (&self->audio_info); gint rate = GST_AUDIO_INFO_RATE (&self->audio_info); GstAudioChannelPosition position = GST_AUDIO_CHANNEL_POSITION_MONO; + CopyStickyEventsData data; /* Set channel position if we know it */ if (self->keep_positions) @@ -247,7 +268,12 @@ gst_deinterleave_add_new_pads (GstDeinterleave * self, GstCaps * caps) gst_pad_set_query_function (pad, GST_DEBUG_FUNCPTR (gst_deinterleave_src_query)); gst_pad_set_active (pad, TRUE); - gst_pad_set_caps (pad, srccaps); + + data.pad = pad; + data.caps = srccaps; + gst_pad_sticky_events_foreach (self->sink, copy_sticky_events, &data); + if (data.caps) + gst_pad_set_caps (pad, data.caps); gst_element_add_pad (GST_ELEMENT (self), pad); self->srcpads = g_list_prepend (self->srcpads, gst_object_ref (pad)); @@ -266,9 +292,9 @@ gst_deinterleave_set_pads_caps (GstDeinterleave * self, GstCaps * caps) for (l = self->srcpads, i = 0; l; l = l->next, i++) { GstPad *pad = GST_PAD (l->data); - GstCaps *srccaps; GstAudioInfo info; + gst_audio_info_from_caps (&info, caps); if (self->keep_positions) GST_AUDIO_INFO_POSITION (&info, 0) = @@ -430,7 +456,6 @@ static void __remove_channels (GstCaps * caps) { GstStructure *s; - gint i, size; size = gst_caps_get_size (caps); @@ -445,7 +470,6 @@ static void __set_channels (GstCaps * caps, gint channels) { GstStructure *s; - gint i, size; size = gst_caps_get_size (caps); @@ -463,9 +487,7 @@ gst_deinterleave_sink_getcaps (GstPad * pad, GstObject * parent, GstCaps * filter) { GstDeinterleave *self = GST_DEINTERLEAVE (parent); - GstCaps *ret; - GList *l; GST_OBJECT_LOCK (self); @@ -479,7 +501,6 @@ gst_deinterleave_sink_getcaps (GstPad * pad, GstObject * parent, ret = gst_caps_new_any (); for (l = GST_ELEMENT (self)->pads; l != NULL; l = l->next) { GstPad *ourpad = GST_PAD (l->data); - GstCaps *peercaps = NULL, *ourcaps; ourcaps = gst_caps_copy (gst_pad_get_pad_template_caps (ourpad)); @@ -503,7 +524,6 @@ gst_deinterleave_sink_getcaps (GstPad * pad, GstObject * parent, * otherwise assume that the peer accepts everything */ if (peercaps) { GstCaps *intersection; - GstCaps *oldret = ret; __remove_channels (peercaps); @@ -533,7 +553,6 @@ static gboolean gst_deinterleave_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { GstDeinterleave *self = GST_DEINTERLEAVE (parent); - gboolean ret; GST_DEBUG ("Got %s event on pad %s:%s", GST_EVENT_TYPE_NAME (event), @@ -560,13 +579,14 @@ gst_deinterleave_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) } default: - if (self->srcpads) { - ret = gst_pad_event_default (pad, parent, event); - } else { + if (!self->srcpads && !GST_EVENT_IS_STICKY (event)) { + /* Sticky events are copied when creating a new pad */ GST_OBJECT_LOCK (self); self->pending_events = g_list_append (self->pending_events, event); GST_OBJECT_UNLOCK (self); ret = TRUE; + } else { + ret = gst_pad_event_default (pad, parent, event); } break; } @@ -578,14 +598,12 @@ static gboolean gst_deinterleave_src_query (GstPad * pad, GstObject * parent, GstQuery * query) { GstDeinterleave *self = GST_DEINTERLEAVE (parent); - gboolean res; res = gst_pad_query_default (pad, parent, query); if (res && GST_QUERY_TYPE (query) == GST_QUERY_DURATION) { GstFormat format; - gint64 dur; gst_query_parse_duration (query, &format, &dur); @@ -598,7 +616,6 @@ gst_deinterleave_src_query (GstPad * pad, GstObject * parent, GstQuery * query) dur / GST_AUDIO_INFO_CHANNELS (&self->audio_info)); } else if (res && GST_QUERY_TYPE (query) == GST_QUERY_POSITION) { GstFormat format; - gint64 pos; gst_query_parse_position (query, &format, &pos); @@ -657,49 +674,39 @@ static GstFlowReturn gst_deinterleave_process (GstDeinterleave * self, GstBuffer * buf) { GstFlowReturn ret = GST_FLOW_OK; - guint channels = GST_AUDIO_INFO_CHANNELS (&self->audio_info); - guint pads_pushed = 0, buffers_allocated = 0; - guint nframes = gst_buffer_get_size (buf) / channels / (GST_AUDIO_INFO_WIDTH (&self->audio_info) / 8); - guint bufsize = nframes * (GST_AUDIO_INFO_WIDTH (&self->audio_info) / 8); - guint i; - GList *srcs; - GstBuffer **buffers_out = g_new0 (GstBuffer *, channels); - guint8 *in, *out; - GstMapInfo read_info; - gst_buffer_map (buf, &read_info, GST_MAP_READ); + GList *pending_events, *l; /* Send any pending events to all src pads */ GST_OBJECT_LOCK (self); - if (self->pending_events) { - GList *events; + pending_events = self->pending_events; + self->pending_events = NULL; + GST_OBJECT_UNLOCK (self); + if (pending_events) { GstEvent *event; GST_DEBUG_OBJECT (self, "Sending pending events to all src pads"); - - for (events = self->pending_events; events != NULL; events = events->next) { - event = GST_EVENT (events->data); - + for (l = pending_events; l; l = l->next) { + event = l->data; for (srcs = self->srcpads; srcs != NULL; srcs = srcs->next) gst_pad_push_event (GST_PAD (srcs->data), gst_event_ref (event)); gst_event_unref (event); } - - g_list_free (self->pending_events); - self->pending_events = NULL; + g_list_free (pending_events); } - GST_OBJECT_UNLOCK (self); + + gst_buffer_map (buf, &read_info, GST_MAP_READ); /* Allocate buffers */ for (srcs = self->srcpads, i = 0; srcs; srcs = srcs->next, i++) { @@ -732,16 +739,12 @@ gst_deinterleave_process (GstDeinterleave * self, GstBuffer * buf) GstPad *pad = (GstPad *) srcs->data; GstMapInfo write_info; - in = (guint8 *) read_info.data; in += i * (GST_AUDIO_INFO_WIDTH (&self->audio_info) / 8); if (buffers_out[i]) { gst_buffer_map (buffers_out[i], &write_info, GST_MAP_WRITE); - out = (guint8 *) write_info.data; - self->func (out, in, channels, nframes); - gst_buffer_unmap (buffers_out[i], &write_info); ret = gst_pad_push (pad, buffers_out[i]); @@ -801,7 +804,6 @@ static GstFlowReturn gst_deinterleave_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) { GstDeinterleave *self = GST_DEINTERLEAVE (parent); - GstFlowReturn ret; g_return_val_if_fail (self->func != NULL, GST_FLOW_NOT_NEGOTIATED); diff --git a/gst/interleave/deinterleave.h b/gst/interleave/deinterleave.h index 959fc06499a91b7e517957ca837538114d6efb14..07c1885747ab7a7e07cd1933a9362e72b0368753 100644 --- a/gst/interleave/deinterleave.h +++ b/gst/interleave/deinterleave.h @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __DEINTERLEAVE_H__ diff --git a/gst/interleave/interleave.c b/gst/interleave/interleave.c index 4c46a094f1dff2a6aee0615eabcc9696eccecea7..474e6e8a1d3de6c9afcdc620cce11c4856f2b6d2 100644 --- a/gst/interleave/interleave.c +++ b/gst/interleave/interleave.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* TODO: @@ -296,6 +296,24 @@ gst_interleave_set_channel_positions (GstInterleave * self, GstStructure * s) gst_structure_set (s, "channel-mask", GST_TYPE_BITMASK, channel_mask, NULL); } +static void +gst_interleave_send_stream_start (GstInterleave * self) +{ + GST_OBJECT_LOCK (self); + if (self->send_stream_start) { + gchar s_id[32]; + + self->send_stream_start = FALSE; + GST_OBJECT_UNLOCK (self); + + /* stream-start (FIXME: create id based on input ids) */ + g_snprintf (s_id, sizeof (s_id), "interleave-%08x", g_random_int ()); + gst_pad_push_event (self->src, gst_event_new_stream_start (s_id)); + } else { + GST_OBJECT_UNLOCK (self); + } +} + static void gst_interleave_class_init (GstInterleaveClass * klass) { @@ -386,7 +404,6 @@ gst_interleave_init (GstInterleave * self) gst_pad_set_event_function (self->src, GST_DEBUG_FUNCPTR (gst_interleave_src_event)); - gst_pad_set_active (self->src, TRUE); gst_element_add_pad (GST_ELEMENT (self), self->src); self->collect = gst_collect_pads_new (); @@ -508,8 +525,7 @@ gst_interleave_request_new_pad (GstElement * element, GstPadTemplate * templ, gst_structure_set (s, "channels", G_TYPE_INT, self->channels, NULL); gst_interleave_set_channel_positions (self, s); - /* FIXME: send caps event after stream-start event */ - gst_pad_set_active (self->src, TRUE); + gst_interleave_send_stream_start (self); gst_pad_set_caps (self->src, srccaps); gst_caps_unref (srccaps); @@ -575,7 +591,7 @@ gst_interleave_release_pad (GstElement * element, GstPad * pad) gst_structure_set (s, "channels", G_TYPE_INT, self->channels, NULL); gst_interleave_set_channel_positions (self, s); - gst_pad_set_active (self->src, TRUE); + gst_interleave_send_stream_start (self); gst_pad_set_caps (self->src, srccaps); gst_caps_unref (srccaps); } else { @@ -762,7 +778,7 @@ gst_interleave_sink_setcaps (GstInterleave * self, GstPad * pad, gst_structure_set (s, "channels", G_TYPE_INT, self->channels, NULL); gst_interleave_set_channel_positions (self, s); - gst_pad_set_active (self->src, TRUE); + gst_interleave_send_stream_start (self); res = gst_pad_set_caps (self->src, srccaps); gst_caps_unref (srccaps); @@ -1189,18 +1205,6 @@ gst_interleave_collected (GstCollectPads * pads, GstInterleave * self) GstMapInfo write_info; GstClockTime timestamp = -1; - /* FIXME: send caps and tags after stream-start */ -#if 0 - if (self->send_stream_start) { - gchar s_id[32]; - - /* stream-start (FIXME: create id based on input ids) */ - g_snprintf (s_id, sizeof (s_id), "interleave-%08x", g_random_int ()); - gst_pad_push_event (self->src, gst_event_new_stream_start (s_id)); - self->send_stream_start = FALSE; - } -#endif - size = gst_collect_pads_available (pads); if (size == 0) goto eos; diff --git a/gst/interleave/interleave.h b/gst/interleave/interleave.h index 1e01d3ae4905e7687dd26a7b411dff944a38304e..87a8eedb1d4c598ca921c8a120b54130e73b7ba2 100644 --- a/gst/interleave/interleave.h +++ b/gst/interleave/interleave.h @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __INTERLEAVE_H__ diff --git a/gst/interleave/plugin.c b/gst/interleave/plugin.c index 60b6afaf10acda9f96a4a6adcd169687f602a8da..9eb72905a6420fd260d760d6e1767597bee01f71 100644 --- a/gst/interleave/plugin.c +++ b/gst/interleave/plugin.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/interleave/plugin.h b/gst/interleave/plugin.h index 3e96a7e115977774ff077d920377bde24efe6aca..7956827605d2146f7d0c04e1f1d476b8c5ccb5c7 100644 --- a/gst/interleave/plugin.h +++ b/gst/interleave/plugin.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/isomp4/Makefile.am b/gst/isomp4/Makefile.am index 3e806f9583ae3eef2cc4c0e1924d668d1d0fec41..09887126af547dfaa17ca05145cf9c988967ba11 100644 --- a/gst/isomp4/Makefile.am +++ b/gst/isomp4/Makefile.am @@ -10,7 +10,7 @@ libgstisomp4_la_LIBADD = \ -lgstrtp-@GST_API_VERSION@ \ -lgsttag-@GST_API_VERSION@ \ -lgstpbutils-@GST_API_VERSION@ \ - $(GST_BASE_LIBS) $(GST_LIBS) $(ZLIB_LIBS) + $(GST_BASE_LIBS) $(GST_LIBS) $(ZLIB_LIBS) $(LIBM) libgstisomp4_la_LDFLAGS = ${GST_PLUGIN_LDFLAGS} libgstisomp4_la_SOURCES = isomp4-plugin.c gstrtpxqtdepay.c \ qtdemux.c qtdemux_types.c qtdemux_dump.c qtdemux_lang.c \ diff --git a/gst/isomp4/Makefile.in b/gst/isomp4/Makefile.in index 78c86b06450313b99937d0640414796870a13e8f..0025b175947e07f3c5e78fa8681ea742dbdee474 100644 --- a/gst/isomp4/Makefile.in +++ b/gst/isomp4/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/isomp4 -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -130,7 +156,7 @@ LTLIBRARIES = $(plugin_LTLIBRARIES) am__DEPENDENCIES_1 = libgstisomp4_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_libgstisomp4_la_OBJECTS = libgstisomp4_la-isomp4-plugin.lo \ libgstisomp4_la-gstrtpxqtdepay.lo libgstisomp4_la-qtdemux.lo \ libgstisomp4_la-qtdemux_types.lo \ @@ -144,10 +170,23 @@ libgstisomp4_la_OBJECTS = $(am_libgstisomp4_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstisomp4_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstisomp4_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstisomp4_la_CFLAGS) $(CFLAGS) \ $(libgstisomp4_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -160,20 +199,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstisomp4_la_SOURCES) DIST_SOURCES = $(libgstisomp4_la_SOURCES) am__can_run_installinfo = \ @@ -182,6 +217,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -349,6 +401,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -519,7 +572,7 @@ libgstisomp4_la_LIBADD = \ -lgstrtp-@GST_API_VERSION@ \ -lgsttag-@GST_API_VERSION@ \ -lgstpbutils-@GST_API_VERSION@ \ - $(GST_BASE_LIBS) $(GST_LIBS) $(ZLIB_LIBS) + $(GST_BASE_LIBS) $(GST_LIBS) $(ZLIB_LIBS) $(LIBM) libgstisomp4_la_LDFLAGS = ${GST_PLUGIN_LDFLAGS} libgstisomp4_la_SOURCES = isomp4-plugin.c gstrtpxqtdepay.c \ @@ -585,6 +638,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -611,12 +665,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstisomp4.la: $(libgstisomp4_la_OBJECTS) $(libgstisomp4_la_DEPENDENCIES) $(EXTRA_libgstisomp4_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstisomp4_la_LINK) -rpath $(plugindir) $(libgstisomp4_la_OBJECTS) $(libgstisomp4_la_LIBADD) $(LIBS) @@ -641,22 +698,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstisomp4_la-qtdemux_types.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -758,26 +818,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -789,15 +838,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -806,6 +851,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -950,19 +1010,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/isomp4/atoms.c b/gst/isomp4/atoms.c index 5f02bdb1fefa1742314c8ce68c8e05b420702a8c..f6df24af1ae449bbc7f1ba1c8c296f6005b32c67 100644 --- a/gst/isomp4/atoms.c +++ b/gst/isomp4/atoms.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. @@ -3320,7 +3320,8 @@ atom_trak_set_video_type (AtomTRAK * trak, AtomsContext * context, ste = atom_trak_add_video_entry (trak, context, entry->fourcc); trak->is_video = TRUE; - trak->is_h264 = (entry->fourcc == FOURCC_avc1); + trak->is_h264 = (entry->fourcc == FOURCC_avc1 + || entry->fourcc == FOURCC_avc3); ste->version = entry->version; ste->width = entry->width; diff --git a/gst/isomp4/atoms.h b/gst/isomp4/atoms.h index 0998c7364b12b26c65126868dd33d9fbcba5ca4e..d2568479509aa1bceed0be07e494767fda6f406b 100644 --- a/gst/isomp4/atoms.h +++ b/gst/isomp4/atoms.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. @@ -953,7 +953,7 @@ void atom_moov_add_3gp_tag (AtomMOOV * moov, guint32 fourcc, guint8 * void atom_moov_add_xmp_tags (AtomMOOV * moov, GstBuffer * xmp); -#define GST_QT_MUX_DEFAULT_TAG_LANGUAGE "eng" +#define GST_QT_MUX_DEFAULT_TAG_LANGUAGE "und" /* undefined/unknown */ guint16 language_code (const char * lang); #endif /* __ATOMS_H__ */ diff --git a/gst/isomp4/atomsrecovery.c b/gst/isomp4/atomsrecovery.c index ce6533606439caaee356d5fd96bcae93bca9467f..e3459c91dcf8e3a60f8917a4a69fc92cca09ab43 100644 --- a/gst/isomp4/atomsrecovery.c +++ b/gst/isomp4/atomsrecovery.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/atomsrecovery.h b/gst/isomp4/atomsrecovery.h index 4dffc48d33e627e860da1311a1c3c20c506a5935..808d428b36956e6e93c20441d93602d2facc0a8f 100644 --- a/gst/isomp4/atomsrecovery.h +++ b/gst/isomp4/atomsrecovery.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/descriptors.c b/gst/isomp4/descriptors.c index e7d5a5d42bb9575e548db1edf676b8e7ad687d76..73d54e857889524b876c4158ffdff97a861953e1 100644 --- a/gst/isomp4/descriptors.c +++ b/gst/isomp4/descriptors.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/descriptors.h b/gst/isomp4/descriptors.h index cc633a305b7ea1a749cdcbcf73b4c43bdbe56b69..b472523196b8ec2356a61493e56d35a1d95b699a 100644 --- a/gst/isomp4/descriptors.h +++ b/gst/isomp4/descriptors.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/fourcc.h b/gst/isomp4/fourcc.h index 295d17e918d929625b017662ad13d24197b2cc49..1769c7b45a5c9591bd07a562f3b0e647bd71dbfb 100644 --- a/gst/isomp4/fourcc.h +++ b/gst/isomp4/fourcc.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. @@ -143,6 +143,7 @@ G_BEGIN_DECLS #define FOURCC_qtim GST_MAKE_FOURCC('q','t','i','m') #define FOURCC_drms GST_MAKE_FOURCC('d','r','m','s') #define FOURCC_avc1 GST_MAKE_FOURCC('a','v','c','1') +#define FOURCC_avc3 GST_MAKE_FOURCC('a','v','c','3') #define FOURCC_h263 GST_MAKE_FOURCC('h','2','6','3') #define FOURCC_s263 GST_MAKE_FOURCC('s','2','6','3') #define FOURCC_avcC GST_MAKE_FOURCC('a','v','c','C') diff --git a/gst/isomp4/ftypcc.h b/gst/isomp4/ftypcc.h index 3d31b6dd0b25e86925b72b17e0b2fd18181b4ead..6da9a09062c665bbb7b0c64caccab8e0c6849df7 100644 --- a/gst/isomp4/ftypcc.h +++ b/gst/isomp4/ftypcc.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. @@ -59,10 +59,10 @@ G_BEGIN_DECLS #define FOURCC_3gr6 GST_MAKE_FOURCC('3','g','r','6') #define FOURCC_3gg7 GST_MAKE_FOURCC('3','g','g','7') #define FOURCC_avc1 GST_MAKE_FOURCC('a','v','c','1') +#define FOURCC_avc3 GST_MAKE_FOURCC('a','v','c','3') #define FOURCC_qt__ GST_MAKE_FOURCC('q','t',' ',' ') #define FOURCC_isml GST_MAKE_FOURCC('i','s','m','l') #define FOURCC_piff GST_MAKE_FOURCC('p','i','f','f') G_END_DECLS - #endif /* __FTYP_CC_H__ */ diff --git a/gst/isomp4/gstqtmoovrecover.c b/gst/isomp4/gstqtmoovrecover.c index 07fd35a6fe764a5d617585041de189685e3b573f..70c7466f0cceaaf91680490140d85fb6f04612e7 100644 --- a/gst/isomp4/gstqtmoovrecover.c +++ b/gst/isomp4/gstqtmoovrecover.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/gstqtmoovrecover.h b/gst/isomp4/gstqtmoovrecover.h index c37692179c2782e9978962c4a38af485a1443b59..b86c2233ef659f9e7e33a1b178f7b38663563aab 100644 --- a/gst/isomp4/gstqtmoovrecover.h +++ b/gst/isomp4/gstqtmoovrecover.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/gstqtmux-doc.c b/gst/isomp4/gstqtmux-doc.c index 59807ab744fed96bdfc8bd06a41127cd108b6b68..4c89197267faf499f7ec7ced02b174e9c236e573 100644 --- a/gst/isomp4/gstqtmux-doc.c +++ b/gst/isomp4/gstqtmux-doc.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/gstqtmux-doc.h b/gst/isomp4/gstqtmux-doc.h index 48b5d8c4148bb236f4bb28d92dd395d3967b78b5..bb8129450064fba400097ee5f3afa42e8f0870ff 100644 --- a/gst/isomp4/gstqtmux-doc.h +++ b/gst/isomp4/gstqtmux-doc.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c index 17019839a1063ec639b48f861688a89739b33759..710d0dad647277e9aee139f5acf2f26db77af830 100644 --- a/gst/isomp4/gstqtmux.c +++ b/gst/isomp4/gstqtmux.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. @@ -82,18 +82,6 @@ * <link linkend="GstQTMux--streamable">streamable</link> allows foregoing to add * index metadata (at the end of file). * - * <link linkend="GstQTMux--dts-method">dts-method</link> allows selecting a - * method for managing input timestamps (stay tuned for 0.11 to have this - * automagically settled). The default delta/duration method should handle nice - * (aka perfect streams) just fine, but may experience problems otherwise - * (e.g. input stream with re-ordered B-frames and/or with frame dropping). - * The re-ordering approach re-assigns incoming timestamps in ascending order - * to incoming buffers and offers an alternative in such cases. In cases where - * that might fail, the remaining method can be tried, which is exact and - * according to specs, but might experience playback on not so spec-wise players. - * Note that this latter approach also requires one to enable - * <link linkend="GstQTMux--presentation-timestamp">presentation-timestamp</link>. - * * <refsect2> * <title>Example pipelines</title> * |[ @@ -119,7 +107,6 @@ #include <gst/base/gstcollectpads.h> #include <gst/audio/audio.h> #include <gst/video/video.h> -#include <gst/tag/xmpwriter.h> #include <gst/tag/tag.h> #include <sys/types.h> @@ -144,6 +131,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_qt_mux_debug); #define GST_CAT_DEFAULT gst_qt_mux_debug +#ifndef GST_REMOVE_DEPRECATED enum { DTS_METHOD_DD, @@ -173,6 +161,7 @@ gst_qt_mux_dts_method_get_type (void) #define GST_TYPE_QT_MUX_DTS_METHOD \ (gst_qt_mux_dts_method_get_type ()) +#endif /* QTMux signals and args */ enum @@ -191,13 +180,14 @@ enum PROP_MOOV_RECOV_FILE, PROP_FRAGMENT_DURATION, PROP_STREAMABLE, +#ifndef GST_REMOVE_DEPRECATED PROP_DTS_METHOD, +#endif PROP_DO_CTTS, }; /* some spare for header size as well */ #define MDAT_LARGE_FILE_LIMIT ((guint64) 1024 * 1024 * 1024 * 2) -#define MAX_TOLERATED_LATENESS (GST_SECOND / 10) #define DEFAULT_MOVIE_TIMESCALE 1000 #define DEFAULT_TRAK_TIMESCALE 0 @@ -207,7 +197,9 @@ enum #define DEFAULT_MOOV_RECOV_FILE NULL #define DEFAULT_FRAGMENT_DURATION 0 #define DEFAULT_STREAMABLE FALSE +#ifndef GST_REMOVE_DEPRECATED #define DEFAULT_DTS_METHOD DTS_METHOD_REORDER +#endif static void gst_qt_mux_finalize (GObject * object); @@ -312,11 +304,14 @@ gst_qt_mux_class_init (GstQTMuxClass * klass) "Calculate and include presentation/composition time " "(in addition to decoding time)", DEFAULT_DO_CTTS, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); +#ifndef GST_REMOVE_DEPRECATED g_object_class_install_property (gobject_class, PROP_DTS_METHOD, g_param_spec_enum ("dts-method", "dts-method", - "Method to determine DTS time", + "(DEPRECATED) Method to determine DTS time", GST_TYPE_QT_MUX_DTS_METHOD, DEFAULT_DTS_METHOD, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); + G_PARAM_DEPRECATED | G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); +#endif g_object_class_install_property (gobject_class, PROP_FAST_START, g_param_spec_boolean ("faststart", "Format file to faststart", "If the file should be formatted for faststart (headers first)", @@ -357,8 +352,6 @@ gst_qt_mux_class_init (GstQTMuxClass * klass) static void gst_qt_mux_pad_reset (GstQTPad * qtpad) { - gint i; - qtpad->fourcc = 0; qtpad->is_out_of_order = FALSE; qtpad->have_dts = FALSE; @@ -369,18 +362,11 @@ gst_qt_mux_pad_reset (GstQTPad * qtpad) qtpad->prepare_buf_func = NULL; qtpad->avg_bitrate = 0; qtpad->max_bitrate = 0; - qtpad->ts_n_entries = 0; qtpad->total_duration = 0; qtpad->total_bytes = 0; qtpad->buf_head = 0; qtpad->buf_tail = 0; - for (i = 0; i < G_N_ELEMENTS (qtpad->buf_entries); i++) { - if (qtpad->buf_entries[i]) { - gst_buffer_unref (qtpad->buf_entries[i]); - qtpad->buf_entries[i] = NULL; - } - } if (qtpad->last_buf) gst_buffer_replace (&qtpad->last_buf, NULL); @@ -1905,8 +1891,7 @@ gst_qt_mux_stop_file (GstQTMux * qtmux) guint32 lateness; guint32 duration; - if (GST_CLOCK_TIME_IS_VALID (qtpad->first_ts) && - qtpad->first_ts > first_ts + MAX_TOLERATED_LATENESS) { + if (GST_CLOCK_TIME_IS_VALID (qtpad->first_ts) && qtpad->first_ts > first_ts) { GST_DEBUG_OBJECT (qtmux, "Pad %s is a late stream by %" GST_TIME_FORMAT, GST_PAD_NAME (qtpad->collect.pad), GST_TIME_ARGS (qtpad->first_ts - first_ts)); @@ -1976,7 +1961,7 @@ gst_qt_mux_stop_file (GstQTMux * qtmux) ret = gst_qt_mux_send_buffered_data (qtmux, NULL); if (ret != GST_FLOW_OK) return ret; - } else { + } else if (!qtmux->streamable) { /* mdat needs update iff not using faststart */ GST_DEBUG_OBJECT (qtmux, "updating mdat size"); ret = gst_qt_mux_update_mdat_size (qtmux, qtmux->mdat_pos, @@ -2097,22 +2082,6 @@ init: return ret; } -/* sigh, tiny list helpers to re-order stuff */ -static void -gst_qt_mux_push_ts (GstQTMux * qtmux, GstQTPad * pad, GstClockTime ts) -{ - gint i; - - for (i = 0; (i < QTMUX_NO_OF_TS) && (i < pad->ts_n_entries); i++) { - if (ts > pad->ts_entries[i]) - break; - } - memmove (&pad->ts_entries[i + 1], &pad->ts_entries[i], - sizeof (GstClockTime) * (pad->ts_n_entries - i)); - pad->ts_entries[i] = ts; - pad->ts_n_entries++; -} - static void check_and_subtract_ts (GstQTMux * qtmux, GstClockTime * ts_a, GstClockTime ts_b) { @@ -2127,57 +2096,6 @@ check_and_subtract_ts (GstQTMux * qtmux, GstClockTime * ts_a, GstClockTime ts_b) } } -/* subtract ts from all buffers enqueued on the pad */ -static void -gst_qt_mux_subtract_ts (GstQTMux * qtmux, GstQTPad * pad, GstClockTime ts) -{ - gint i; - - for (i = 0; (i < QTMUX_NO_OF_TS) && (i < pad->ts_n_entries); i++) { - check_and_subtract_ts (qtmux, &pad->ts_entries[i], ts); - } - for (i = 0; i < G_N_ELEMENTS (pad->buf_entries); i++) { - if (pad->buf_entries[i]) { - check_and_subtract_ts (qtmux, &GST_BUFFER_TIMESTAMP (pad->buf_entries[i]), - ts); - check_and_subtract_ts (qtmux, - &GST_BUFFER_OFFSET_END (pad->buf_entries[i]), ts); - } - } -} - -/* takes ownership of @buf */ -static GstBuffer * -gst_qt_mux_get_asc_buffer_ts (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf) -{ - const gint wrap = G_N_ELEMENTS (pad->buf_entries); - GstClockTime ts; - - /* store buffer and ts, latter ordered */ - if (buf) { - pad->buf_entries[pad->buf_tail++] = buf; - pad->buf_tail %= wrap; - gst_qt_mux_push_ts (qtmux, pad, GST_BUFFER_TIMESTAMP (buf)); - } - - if (pad->ts_n_entries && (!buf || pad->ts_n_entries >= QTMUX_NO_OF_TS)) { - ts = pad->ts_entries[--pad->ts_n_entries]; - buf = pad->buf_entries[pad->buf_head]; - pad->buf_entries[pad->buf_head++] = NULL; - pad->buf_head %= wrap; - buf = gst_buffer_make_writable (buf); - /* track original ts (= pts ?) for later */ - GST_BUFFER_OFFSET_END (buf) = GST_BUFFER_TIMESTAMP (buf); - GST_BUFFER_TIMESTAMP (buf) = ts; - GST_DEBUG_OBJECT (qtmux, "next buffer uses reordered ts %" GST_TIME_FORMAT, - GST_TIME_ARGS (ts)); - } else { - buf = NULL; - } - - return buf; -} - /* * Here we push the buffer and update the tables in the track atoms */ @@ -2191,7 +2109,6 @@ gst_qt_mux_add_buffer (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf) gint64 last_dts, scaled_duration; gint64 pts_offset = 0; gboolean sync = FALSE, do_pts = FALSE; - gboolean drain = (buf == NULL); GstFlowReturn ret = GST_FLOW_OK; if (!pad->fourcc) @@ -2205,21 +2122,39 @@ gst_qt_mux_add_buffer (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf) if (G_LIKELY (buf != NULL && GST_CLOCK_TIME_IS_VALID (pad->first_ts) && pad->first_ts != 0)) { buf = gst_buffer_make_writable (buf); - check_and_subtract_ts (qtmux, &GST_BUFFER_TIMESTAMP (buf), pad->first_ts); + check_and_subtract_ts (qtmux, &GST_BUFFER_DTS (buf), pad->first_ts); + check_and_subtract_ts (qtmux, &GST_BUFFER_PTS (buf), pad->first_ts); } - /* when we obtain the first_ts we subtract from all stored buffers we have, - * after that we can subtract on input */ -again: last_buf = pad->last_buf; - if (qtmux->dts_method == DTS_METHOD_REORDER) { - buf = gst_qt_mux_get_asc_buffer_ts (qtmux, pad, buf); - if (!buf && !last_buf) { - GST_DEBUG_OBJECT (qtmux, "no reordered buffer"); - return GST_FLOW_OK; + + /* if buffer has missing DTS, we take either segment start or previous buffer end time, + which ever is later */ + if (buf && pad->have_dts && !GST_BUFFER_DTS_IS_VALID (buf)) { + GstClockTime last_buf_duration = last_buf + && GST_BUFFER_DURATION_IS_VALID (last_buf) ? + GST_BUFFER_DURATION (last_buf) : 0; + + buf = gst_buffer_make_writable (buf); + GST_BUFFER_DTS (buf) = + gst_segment_to_running_time (&pad->collect.segment, GST_FORMAT_TIME, + pad->collect.segment.start); + if (GST_CLOCK_TIME_IS_VALID (pad->first_ts)) + check_and_subtract_ts (qtmux, &GST_BUFFER_DTS (buf), pad->first_ts); + + if (last_buf + && (GST_BUFFER_DTS (last_buf) + last_buf_duration) > + GST_BUFFER_DTS (buf)) { + GST_BUFFER_DTS (buf) = GST_BUFFER_DTS (last_buf) + last_buf_duration; } } + if (last_buf && !buf && !GST_BUFFER_DURATION_IS_VALID (last_buf)) { + /* this is last buffer; there is no next buffer so we need valid number as duration */ + last_buf = gst_buffer_make_writable (last_buf); + GST_BUFFER_DURATION (last_buf) = 0; + } + if (last_buf == NULL) { #ifndef GST_DISABLE_GST_DEBUG if (buf == NULL) { @@ -2237,58 +2172,27 @@ again: } else gst_buffer_ref (last_buf); - /* nasty heuristic mess to guestimate dealing with DTS/PTS, - * while also trying to stay close to input ts to preserve sync, - * so in DTS_METHOD_DD: - * - prefer using input ts where possible - * - if those detected out-of-order (*), mark as out-of-order - * - if in out-of-order, then - * - if duration available, use that as delta - * Also mind to preserve sync between streams, and adding - * durations might drift, so try to resync when we expect - * input ts == (sum of durations), which is at some keyframe input frame. - * - if no duration available, we are actually in serious trouble and need - * to hack around that, so we fail. - * To remedy failure, alternatively, in DTS_METHOD_REORDER: - * - collect some buffers and re-order timestamp, - * then process the oldest buffer with smallest timestamps. - * This should typically compensate for some codec's handywork with ts. - * ... but in case this makes ts end up where not expected, in DTS_METHOD_ASC: - * - keep each ts with its buffer and still keep a list of most recent X ts, - * use the (ascending) minimum of those as DTS (and the difference as ts delta), - * and use this DTS as a basis to obtain a (positive) CTS offset. - * This should yield exact PTS == buffer ts, but it seems not all players - * out there are aware of ctts pts ... - * - * 0.11 Phew, can we (pretty) please please sort out DTS/PTS on buffers ... - */ - if (G_LIKELY (buf) && !pad->is_out_of_order) { - if (G_LIKELY (GST_BUFFER_TIMESTAMP_IS_VALID (last_buf) && - GST_BUFFER_TIMESTAMP_IS_VALID (buf))) { - if ((GST_BUFFER_TIMESTAMP (buf) < GST_BUFFER_TIMESTAMP (last_buf))) { - GST_DEBUG_OBJECT (qtmux, "detected out-of-order input"); - pad->is_out_of_order = TRUE; - } - } else { - /* this is pretty bad */ - GST_WARNING_OBJECT (qtmux, "missing input timestamp"); - /* fall back to durations */ - pad->is_out_of_order = TRUE; - } - } - - /* would have to be some unusual input, but not impossible */ - if (G_UNLIKELY (qtmux->dts_method == DTS_METHOD_REORDER && - pad->is_out_of_order)) { - goto no_order; - } - /* if this is the first buffer, store the timestamp */ if (G_UNLIKELY (pad->first_ts == GST_CLOCK_TIME_NONE) && last_buf) { - if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (last_buf))) { - pad->first_ts = GST_BUFFER_TIMESTAMP (last_buf); + if (pad->have_dts) { + /* first pad always has DTS. If it was not provided by upstream it was set to segment start */ + pad->first_ts = GST_BUFFER_DTS (last_buf); + } else if (GST_BUFFER_PTS_IS_VALID (last_buf)) { + pad->first_ts = GST_BUFFER_PTS (last_buf); + } + + if (GST_CLOCK_TIME_IS_VALID (pad->first_ts)) { + GST_DEBUG ("setting first_ts to %" G_GUINT64_FORMAT, pad->first_ts); + last_buf = gst_buffer_make_writable (last_buf); + check_and_subtract_ts (qtmux, &GST_BUFFER_DTS (last_buf), pad->first_ts); + check_and_subtract_ts (qtmux, &GST_BUFFER_PTS (last_buf), pad->first_ts); + if (buf) { + buf = gst_buffer_make_writable (buf); + check_and_subtract_ts (qtmux, &GST_BUFFER_DTS (buf), pad->first_ts); + check_and_subtract_ts (qtmux, &GST_BUFFER_PTS (buf), pad->first_ts); + } } else { - GST_DEBUG_OBJECT (qtmux, "First buffer for pad %s has no timestamp, " + GST_ERROR_OBJECT (qtmux, "First buffer for pad %s has no timestamp, " "using 0 as first timestamp", GST_PAD_NAME (pad->collect.pad)); pad->first_ts = 0; } @@ -2296,75 +2200,30 @@ again: GST_TIME_FORMAT, GST_PAD_NAME (pad->collect.pad), GST_TIME_ARGS (pad->first_ts)); - gst_qt_mux_subtract_ts (qtmux, pad, pad->first_ts); - - GST_BUFFER_TIMESTAMP (last_buf) = 0; - check_and_subtract_ts (qtmux, &GST_BUFFER_OFFSET_END (last_buf), - pad->first_ts); - if (buf) { - check_and_subtract_ts (qtmux, &GST_BUFFER_TIMESTAMP (buf), pad->first_ts); - check_and_subtract_ts (qtmux, &GST_BUFFER_OFFSET_END (buf), - pad->first_ts); - } } - /* fall back to duration if last buffer or - * out-of-order (determined previously), otherwise use input ts */ - if (buf == NULL || - (pad->is_out_of_order && qtmux->dts_method == DTS_METHOD_DD)) { - if (!GST_BUFFER_DURATION_IS_VALID (last_buf)) { - /* be forgiving for some possibly last upstream flushed buffer */ - if (buf) - goto no_time; - GST_WARNING_OBJECT (qtmux, "no duration for last buffer"); - /* iso spec recommends some small value, try 0 */ - duration = 0; - } else { - duration = GST_BUFFER_DURATION (last_buf); - /* avoid drift in sum timestamps, - * so use input timestamp for suitable keyframe */ - if (buf && !GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT) && - GST_BUFFER_TIMESTAMP (buf) >= pad->last_dts) { - GST_DEBUG_OBJECT (qtmux, "resyncing out-of-order input to ts; " - "replacing %" GST_TIME_FORMAT " by %" GST_TIME_FORMAT, - GST_TIME_ARGS (pad->last_dts + duration), - GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf))); - duration = GST_BUFFER_TIMESTAMP (buf) - pad->last_dts; - } - } - } else if (qtmux->dts_method != DTS_METHOD_ASC) { - duration = GST_BUFFER_TIMESTAMP (buf) - GST_BUFFER_TIMESTAMP (last_buf); - } else { - GstClockTime ts; - - g_assert (qtmux->dts_method == DTS_METHOD_ASC); - if (!qtmux->guess_pts) - goto need_pts; - - /* add timestamp to queue; keeps in descending order */ - gst_qt_mux_push_ts (qtmux, pad, GST_BUFFER_TIMESTAMP (last_buf)); - /* chuck out smallest/last one if we have enough */ - if (G_LIKELY (pad->ts_n_entries > QTMUX_NO_OF_TS)) - pad->ts_n_entries--; - /* peek the now smallest timestamp */ - ts = pad->ts_entries[pad->ts_n_entries - 1]; - /* these tails are expected to be (strictly) ascending with - * large enough history */ - GST_DEBUG_OBJECT (qtmux, "ASC method; base timestamp %" GST_TIME_FORMAT, - GST_TIME_ARGS (ts)); - if (ts >= pad->last_dts) { - duration = ts - pad->last_dts; - } else { - /* fallback to previous value, negative ct offset might handle */ - GST_WARNING_OBJECT (qtmux, "unexpected decrease in timestamp"); - duration = 0; - } - /* arrange for small non-zero duration/delta << expected frame time */ - ts = gst_util_uint64_scale (10, GST_SECOND, - atom_trak_get_timescale (pad->trak)); - duration = MAX (duration, ts); + if (last_buf && buf && GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DTS (buf)) && + GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DTS (last_buf)) && + GST_BUFFER_DTS (buf) < GST_BUFFER_DTS (last_buf)) { + GST_ERROR ("decreasing DTS value %" GST_TIME_FORMAT " < %" GST_TIME_FORMAT, + GST_TIME_ARGS (GST_BUFFER_DTS (buf)), + GST_TIME_ARGS (GST_BUFFER_DTS (last_buf))); + GST_BUFFER_DTS (buf) = GST_BUFFER_DTS (last_buf); } + /* duration actually means time delta between samples, so we calculate + * the duration based on the difference in DTS or PTS, falling back + * to DURATION if the other two don't exist, such as with the last + * sample before EOS. */ + if (last_buf && buf && GST_BUFFER_DTS_IS_VALID (buf) + && GST_BUFFER_DTS_IS_VALID (last_buf)) + duration = GST_BUFFER_DTS (buf) - GST_BUFFER_DTS (last_buf); + else if (last_buf && buf && GST_BUFFER_PTS_IS_VALID (buf) + && GST_BUFFER_PTS_IS_VALID (last_buf)) + duration = GST_BUFFER_PTS (buf) - GST_BUFFER_PTS (last_buf); + else + duration = GST_BUFFER_DURATION (last_buf); + /* for computing the avg bitrate */ if (G_LIKELY (last_buf)) { pad->total_bytes += gst_buffer_get_size (last_buf); @@ -2402,7 +2261,12 @@ again: sample_size = gst_buffer_get_size (last_buf); if (pad->have_dts) { gint64 scaled_dts; - pad->last_dts = GST_BUFFER_OFFSET_END (last_buf); + if (pad->last_buf) { + pad->last_dts = GST_BUFFER_DTS (pad->last_buf); + } else { + pad->last_dts = GST_BUFFER_DTS (last_buf) + + GST_BUFFER_DURATION (last_buf); + } if ((gint64) (pad->last_dts) < 0) { scaled_dts = -gst_util_uint64_scale_round (-pad->last_dts, atom_trak_get_timescale (pad->trak), GST_SECOND); @@ -2440,27 +2304,25 @@ again: sync = TRUE; } - /* optionally calculate ctts entry values - * (if composition-time expected different from decoding-time) */ - /* really not recommended: - * - decoder typically takes care of dts/pts issues - * - in case of out-of-order, dts may only be determined as above - * (e.g. sum of duration), which may be totally different from - * buffer timestamps in case of multiple segment, non-perfect streams - * (and just perhaps maybe with some luck segment_to_running_time - * or segment_to_media_time might get near to it) */ - if ((pad->have_dts || qtmux->guess_pts)) { - guint64 pts; - - pts = qtmux->dts_method == DTS_METHOD_REORDER ? - GST_BUFFER_OFFSET_END (last_buf) : GST_BUFFER_TIMESTAMP (last_buf); - pts = gst_util_uint64_scale_round (pts, + if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DTS (last_buf))) { + do_pts = TRUE; + last_dts = gst_util_uint64_scale_round (GST_BUFFER_DTS (last_buf), atom_trak_get_timescale (pad->trak), GST_SECOND); - pts_offset = (gint64) (pts - last_dts); + pts_offset = + (gint64) (gst_util_uint64_scale_round (GST_BUFFER_PTS (last_buf), + atom_trak_get_timescale (pad->trak), GST_SECOND) - last_dts); + + } else { + pts_offset = 0; do_pts = TRUE; - GST_LOG_OBJECT (qtmux, "Adding ctts entry for pad %s: %" G_GINT64_FORMAT, - GST_PAD_NAME (pad->collect.pad), pts_offset); + last_dts = gst_util_uint64_scale_round (GST_BUFFER_PTS (last_buf), + atom_trak_get_timescale (pad->trak), GST_SECOND); } + GST_DEBUG ("dts: %" GST_TIME_FORMAT " pts: %" GST_TIME_FORMAT + " timebase_dts: %d pts_offset: %d", + GST_TIME_ARGS (GST_BUFFER_DTS (last_buf)), + GST_TIME_ARGS (GST_BUFFER_PTS (last_buf)), + (int) (last_dts), (int) (pts_offset)); /* * Each buffer starts a new chunk, so we can assume the buffer @@ -2501,11 +2363,6 @@ again: } exit: - if (G_UNLIKELY (drain && qtmux->dts_method == DTS_METHOD_REORDER && - ret == GST_FLOW_OK)) { - buf = NULL; - goto again; - } return ret; @@ -2517,25 +2374,6 @@ bail: gst_buffer_unref (last_buf); return GST_FLOW_ERROR; } -no_time: - { - GST_ELEMENT_ERROR (qtmux, STREAM, MUX, (NULL), - ("Received buffer without timestamp/duration. " - "Using e.g. dts-method=reorder might help.")); - goto bail; - } -no_order: - { - GST_ELEMENT_ERROR (qtmux, STREAM, MUX, (NULL), - ("DTS method failed to re-order timestamps.")); - goto bail; - } -need_pts: - { - GST_ELEMENT_ERROR (qtmux, STREAM, MUX, (NULL), - ("Selected DTS method also needs PTS enabled.")); - goto bail; - } fragmented_sample: { GST_ELEMENT_ERROR (qtmux, STREAM, MUX, (NULL), @@ -2577,7 +2415,7 @@ gst_qt_mux_handle_buffer (GstCollectPads * pads, GstCollectData * cdata, /* clipping already converted to running time */ if (best_pad != NULL) { g_assert (buf); - best_time = GST_BUFFER_TIMESTAMP (buf); + best_time = GST_BUFFER_PTS (buf); GST_LOG_OBJECT (qtmux, "selected pad %s with time %" GST_TIME_FORMAT, GST_PAD_NAME (best_pad->collect.pad), GST_TIME_ARGS (best_time)); ret = gst_qt_mux_add_buffer (qtmux, best_pad, buf); @@ -3124,6 +2962,7 @@ gst_qt_mux_video_sink_set_caps (GstPad * pad, GstCaps * caps) ext_atom = build_codec_data_extension (FOURCC_avcC, codec_data); if (ext_atom != NULL) ext_atom_list = g_list_prepend (ext_atom_list, ext_atom); + qtpad->have_dts = TRUE; } else if (strcmp (mimetype, "video/x-svq") == 0) { gint version = 0; const GstBuffer *seqh = NULL; @@ -3480,9 +3319,11 @@ gst_qt_mux_get_property (GObject * object, case PROP_DO_CTTS: g_value_set_boolean (value, qtmux->guess_pts); break; +#ifndef GST_REMOVE_DEPRECATED case PROP_DTS_METHOD: g_value_set_enum (value, qtmux->dts_method); break; +#endif case PROP_FAST_START: g_value_set_boolean (value, qtmux->fast_start); break; @@ -3535,9 +3376,11 @@ gst_qt_mux_set_property (GObject * object, case PROP_DO_CTTS: qtmux->guess_pts = g_value_get_boolean (value); break; +#ifndef GST_REMOVE_DEPRECATED case PROP_DTS_METHOD: qtmux->dts_method = g_value_get_enum (value); break; +#endif case PROP_FAST_START: qtmux->fast_start = g_value_get_boolean (value); break; diff --git a/gst/isomp4/gstqtmux.h b/gst/isomp4/gstqtmux.h index a0d2b53301da31b3027592c6b8fb98c200780e96..e61831d87954cfd6dc6174057ac98d91a55e879d 100644 --- a/gst/isomp4/gstqtmux.h +++ b/gst/isomp4/gstqtmux.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. @@ -108,9 +108,6 @@ struct _GstQTPad /* store the first timestamp for comparing with other streams and * know if there are late streams */ GstClockTime first_ts; - GstClockTime ts_entries[QTMUX_NO_OF_TS + 2]; - guint ts_n_entries; - GstBuffer *buf_entries[QTMUX_NO_OF_TS + 2]; guint buf_head; guint buf_tail; @@ -186,7 +183,9 @@ struct _GstQTMux AtomsTreeFlavor flavor; gboolean fast_start; gboolean guess_pts; +#ifndef GST_REMOVE_DEPRECATED gint dts_method; +#endif gchar *fast_start_file_path; gchar *moov_recov_file_path; guint32 fragment_duration; diff --git a/gst/isomp4/gstqtmuxmap.c b/gst/isomp4/gstqtmuxmap.c index ef703054e65ccebae685fe877a55ae472965c350..b739a7c8be959b2b5ecca6719c17472bb1ebbd2f 100644 --- a/gst/isomp4/gstqtmuxmap.c +++ b/gst/isomp4/gstqtmuxmap.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/gstqtmuxmap.h b/gst/isomp4/gstqtmuxmap.h index f069a2f1dd4524fffc6466cd8b7fea61c34c66f2..1c5829c52a6ff3c9b569eb5f76d3b993ae3bef98 100644 --- a/gst/isomp4/gstqtmuxmap.h +++ b/gst/isomp4/gstqtmuxmap.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/gstrtpxqtdepay.c b/gst/isomp4/gstrtpxqtdepay.c index 5f02eafe9ff71e53ddd2a2c1cfbd2eb54d8f73d2..3bce461bc6514668b7ceda395714b5c3b3c9f037 100644 --- a/gst/isomp4/gstrtpxqtdepay.c +++ b/gst/isomp4/gstrtpxqtdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -58,6 +58,7 @@ #define QT_UINT64(a) ((((guint64)QT_UINT32(a))<<32)|QT_UINT32(((guint8 *)a)+4)) #define FOURCC_avc1 GST_MAKE_FOURCC('a','v','c','1') +#define FOURCC_avc3 GST_MAKE_FOURCC('a','v','c','3') #define FOURCC_avcC GST_MAKE_FOURCC('a','v','c','C') GST_DEBUG_CATEGORY_STATIC (rtpxqtdepay_debug); @@ -179,6 +180,7 @@ gst_rtp_quicktime_parse_sd (GstRtpXQTDepay * rtpxqtdepay, guint8 * data, switch (fourcc) { case FOURCC_avc1: + case FOURCC_avc3: { guint32 chlen; diff --git a/gst/isomp4/gstrtpxqtdepay.h b/gst/isomp4/gstrtpxqtdepay.h index a26ad651259493ce70bba92bc43e27f169ba634f..ca4e41a47c550a9bb5f1544ac9e4161c9d03cf44 100644 --- a/gst/isomp4/gstrtpxqtdepay.h +++ b/gst/isomp4/gstrtpxqtdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_XQT_DEPAY_H__ diff --git a/gst/isomp4/isomp4-plugin.c b/gst/isomp4/isomp4-plugin.c index b0fe3266256882d47b347c16e18a60fd5279d033..7ff78cee7526c5182c819857adfe17bae63d0706 100644 --- a/gst/isomp4/isomp4-plugin.c +++ b/gst/isomp4/isomp4-plugin.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -35,7 +35,6 @@ static gboolean plugin_init (GstPlugin * plugin) { #ifdef ENABLE_NLS - setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif /* ENABLE_NLS */ diff --git a/gst/isomp4/properties.c b/gst/isomp4/properties.c index 8dafb2e2142620e54c4b4555417d517478b0d903..cb43e295e5e775e1f348d1a53e1abcd23df88a75 100644 --- a/gst/isomp4/properties.c +++ b/gst/isomp4/properties.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/properties.h b/gst/isomp4/properties.h index ad67e0da036442688d18c923cf03fd957f49d946..443288c54965dda8860810f710abdb2d0d2c836f 100644 --- a/gst/isomp4/properties.h +++ b/gst/isomp4/properties.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/isomp4/qtatomparser.h b/gst/isomp4/qtatomparser.h index 06bb3447bd5f3e5a83ed54fcf5aee56e3bcd1db2..89bab50d8ea00e354cf8345c5fb17b40033745eb 100644 --- a/gst/isomp4/qtatomparser.h +++ b/gst/isomp4/qtatomparser.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef QT_ATOM_PARSER_H diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index 834ea34d80885aa5180d418c9db935ec15a38c60..d2f3b878e7aad5a358e580f8297eef3494f5cc7f 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -70,6 +70,9 @@ #include <stdlib.h> #include <string.h> +#include <math.h> +#include <gst/math-compat.h> + #ifdef HAVE_ZLIB # include <zlib.h> #endif @@ -86,6 +89,8 @@ #define QTDEMUX_SECONDS_FROM_1904_TO_1970 (((1970 - 1904) * (guint64) 365 + \ QTDEMUX_LEAP_YEARS_FROM_1904_TO_1970) * QTDEMUX_SECONDS_PER_DAY) +#define STREAM_IS_EOS(s) (s->time_position == -1) + GST_DEBUG_CATEGORY (qtdemux_debug); /*typedef struct _QtNode QtNode; */ @@ -199,6 +204,14 @@ struct _QtDemuxStream guint32 subtype; GstCaps *caps; guint32 fourcc; + gboolean sparse; + + gboolean new_caps; + gboolean new_stream; /* signals that a stream_start is required */ + gboolean on_keyframe; /* if this stream last pushed buffer was a + * keyframe. This is important to identify + * where to stop pushing buffers after a + * segment stop time */ /* if the stream has a redirect URI in its headers, we store it here */ gchar *redirect_uri; @@ -219,6 +232,8 @@ struct _QtDemuxStream gboolean all_keyframe; /* TRUE when all samples are keyframes (no stss) */ guint32 min_duration; /* duration in timescale of first sample, used for figuring out the framerate, in timescale units */ + guint32 offset_in_sample; + guint32 max_buffer_size; /* if we use chunks or samples */ gboolean sampled; @@ -237,6 +252,7 @@ struct _QtDemuxStream gint fps_d; guint16 bits_per_sample; guint16 color_table_id; + GstMemory *rgb8_palette; /* audio info */ gdouble rate; @@ -273,6 +289,7 @@ struct _QtDemuxStream /* the Gst segment we are processing out, used for clipping */ GstSegment segment; + guint32 segment_seqnum; /* segment event seqnum obtained from seek */ /* last GstFlowReturn */ GstFlowReturn last_ret; @@ -343,6 +360,10 @@ struct _QtDemuxStream guint32 def_sample_duration; guint32 def_sample_size; guint32 def_sample_flags; + + gboolean disabled; + + GstClockTime elst_offset; /* sample offset from edit list */ }; enum QtDemuxState @@ -413,6 +434,9 @@ static GstFlowReturn gst_qtdemux_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * inbuf); static gboolean gst_qtdemux_handle_sink_event (GstPad * pad, GstObject * parent, GstEvent * event); +static gboolean gst_qtdemux_setcaps (GstQTDemux * qtdemux, GstCaps * caps); +static gboolean gst_qtdemux_configure_stream (GstQTDemux * qtdemux, + QtDemuxStream * stream); static gboolean qtdemux_parse_moov (GstQTDemux * qtdemux, const guint8 * buffer, guint length); @@ -438,6 +462,13 @@ static GstCaps *qtdemux_generic_caps (GstQTDemux * qtdemux, static gboolean qtdemux_parse_samples (GstQTDemux * qtdemux, QtDemuxStream * stream, guint32 n); static GstFlowReturn qtdemux_expose_streams (GstQTDemux * qtdemux); +static void gst_qtdemux_stream_free (GstQTDemux * qtdemux, + QtDemuxStream * stream); +static void gst_qtdemux_stream_clear (QtDemuxStream * stream); +static void gst_qtdemux_remove_stream (GstQTDemux * qtdemux, int index); +static GstFlowReturn qtdemux_prepare_streams (GstQTDemux * qtdemux); +static void qtdemux_do_allocation (GstQTDemux * qtdemux, + QtDemuxStream * stream); static void gst_qtdemux_class_init (GstQTDemuxClass * klass) @@ -500,6 +531,14 @@ gst_qtdemux_init (GstQTDemux * qtdemux) qtdemux->got_moov = FALSE; qtdemux->mdatoffset = GST_CLOCK_TIME_NONE; qtdemux->mdatbuffer = NULL; + qtdemux->fragment_start = -1; + qtdemux->media_caps = NULL; + qtdemux->exposed = FALSE; + qtdemux->mss_mode = FALSE; + qtdemux->pending_newsegment = NULL; + qtdemux->upstream_newsegment = FALSE; + qtdemux->have_group_id = FALSE; + qtdemux->group_id = G_MAXUINT; gst_segment_init (&qtdemux->segment, GST_FORMAT_TIME); GST_OBJECT_FLAG_SET (qtdemux, GST_ELEMENT_FLAG_INDEXABLE); @@ -532,31 +571,11 @@ gst_qtdemux_post_no_playable_stream_error (GstQTDemux * qtdemux) } } -static void -_gst_buffer_copy_into_mem (GstBuffer * dest, gsize offset, const guint8 * src, - gsize size) -{ - gsize bsize; - - g_return_if_fail (gst_buffer_is_writable (dest)); - - bsize = gst_buffer_get_size (dest); - g_return_if_fail (bsize >= offset + size); - - gst_buffer_fill (dest, offset, src, size); -} - static GstBuffer * _gst_buffer_new_wrapped (gpointer mem, gsize size, GFreeFunc free_func) { - GstBuffer *buf; - - buf = gst_buffer_new (); - gst_buffer_append_memory (buf, - gst_memory_new_wrapped (free_func ? 0 : GST_MEMORY_FLAG_READONLY, - mem, size, 0, size, mem, free_func)); - - return buf; + return gst_buffer_new_wrapped_full (free_func ? 0 : GST_MEMORY_FLAG_READONLY, + mem, size, 0, size, mem, free_func); } static GstFlowReturn @@ -696,7 +715,7 @@ gst_qtdemux_get_duration (GstQTDemux * qtdemux, gint64 * duration) if (qtdemux->duration != 0) { if (qtdemux->duration != G_MAXINT64 && qtdemux->timescale != 0) { *duration = gst_util_uint64_scale (qtdemux->duration, - GST_SECOND, qtdemux->timescale); + GST_SECOND, qtdemux->timescale) - qtdemux->min_elst_offset; } } return res; @@ -728,7 +747,6 @@ gst_qtdemux_handle_src_query (GstPad * pad, GstObject * parent, res = gst_pad_query_default (pad, parent, query); if (!res) { gint64 duration = -1; - gst_qtdemux_get_duration (qtdemux, &duration); if (duration > 0) { gst_query_set_duration (query, GST_FORMAT_TIME, duration); @@ -760,26 +778,31 @@ gst_qtdemux_handle_src_query (GstPad * pad, GstObject * parent, GstFormat fmt; gboolean seekable; - gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL); - if (fmt == GST_FORMAT_TIME) { - gint64 duration = -1; - - gst_qtdemux_get_duration (qtdemux, &duration); - seekable = TRUE; - if (!qtdemux->pullbased) { - GstQuery *q; - - /* we might be able with help from upstream */ - seekable = FALSE; - q = gst_query_new_seeking (GST_FORMAT_BYTES); - if (gst_pad_peer_query (qtdemux->sinkpad, q)) { - gst_query_parse_seeking (q, &fmt, &seekable, NULL, NULL); - GST_LOG_OBJECT (qtdemux, "upstream BYTE seekable %d", seekable); + /* try upstream first */ + res = gst_pad_query_default (pad, parent, query); + + if (!res) { + gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL); + if (fmt == GST_FORMAT_TIME) { + gint64 duration = -1; + + gst_qtdemux_get_duration (qtdemux, &duration); + seekable = TRUE; + if (!qtdemux->pullbased) { + GstQuery *q; + + /* we might be able with help from upstream */ + seekable = FALSE; + q = gst_query_new_seeking (GST_FORMAT_BYTES); + if (gst_pad_peer_query (qtdemux->sinkpad, q)) { + gst_query_parse_seeking (q, &fmt, &seekable, NULL, NULL); + GST_LOG_OBJECT (qtdemux, "upstream BYTE seekable %d", seekable); + } + gst_query_unref (q); } - gst_query_unref (q); + gst_query_set_seeking (query, GST_FORMAT_TIME, seekable, 0, duration); + res = TRUE; } - gst_query_set_seeking (query, GST_FORMAT_TIME, seekable, 0, duration); - res = TRUE; } break; } @@ -798,13 +821,6 @@ gst_qtdemux_handle_src_query (GstPad * pad, GstObject * parent, else stop = gst_segment_to_stream_time (&qtdemux->segment, format, stop); - if (qtdemux->segment.rate < 0.0) { - gint64 tmp; - tmp = stop; - stop = start; - start = tmp; - } - gst_query_set_segment (query, qtdemux->segment.rate, format, start, stop); res = TRUE; break; @@ -856,6 +872,7 @@ gst_qtdemux_push_event (GstQTDemux * qtdemux, GstEvent * event) for (n = 0; n < qtdemux->n_streams; n++) { GstPad *pad; QtDemuxStream *stream = qtdemux->streams[n]; + GST_DEBUG_OBJECT (qtdemux, "pushing on pad %i", n); if ((pad = stream->pad)) { has_valid_stream = TRUE; @@ -886,6 +903,7 @@ gst_qtdemux_push_pending_newsegment (GstQTDemux * qtdemux) if (qtdemux->pending_newsegment) { gst_qtdemux_push_event (qtdemux, qtdemux->pending_newsegment); qtdemux->pending_newsegment = NULL; + qtdemux->upstream_newsegment = FALSE; } } @@ -1115,6 +1133,7 @@ gst_qtdemux_move_stream (GstQTDemux * qtdemux, QtDemuxStream * str, /* position changed, we have a discont */ str->sample_index = index; + str->offset_in_sample = 0; /* Each time we move in the stream we store the position where we are * starting from */ str->from_sample = index; @@ -1239,17 +1258,17 @@ gst_qtdemux_do_push_seek (GstQTDemux * qtdemux, GstPad * pad, GstEvent * event) GstFormat format; GstSeekFlags flags; GstSeekType cur_type, stop_type; - gint64 cur, stop; + gint64 cur, stop, key_cur; gboolean res; gint64 byte_cur; + gint64 original_stop; + guint32 seqnum; GST_DEBUG_OBJECT (qtdemux, "doing push-based seek"); gst_event_parse_seek (event, &rate, &format, &flags, &cur_type, &cur, &stop_type, &stop); - - /* FIXME, always play to the end */ - stop = -1; + seqnum = gst_event_get_seqnum (event); /* only forward streaming and seeking is possible */ if (rate <= 0) @@ -1260,10 +1279,16 @@ gst_qtdemux_do_push_seek (GstQTDemux * qtdemux, GstPad * pad, GstEvent * event) stop_type, &stop)) goto no_format; + /* Upstrea seek in bytes will have undefined stop, but qtdemux stores + * the original stop position to use when upstream pushes the new segment + * for this seek */ + original_stop = stop; + stop = -1; + /* find reasonable corresponding BYTE position, * also try to mind about keyframes, since we can not go back a bit for them * later on */ - gst_qtdemux_adjust_seek (qtdemux, cur, NULL, &byte_cur); + gst_qtdemux_adjust_seek (qtdemux, cur, &key_cur, &byte_cur); if (byte_cur == -1) goto abort_seek; @@ -1272,19 +1297,25 @@ gst_qtdemux_do_push_seek (GstQTDemux * qtdemux, GstPad * pad, GstEvent * event) "start %" G_GINT64_FORMAT ", stop %" G_GINT64_FORMAT, rate, byte_cur, stop); + GST_OBJECT_LOCK (qtdemux); + qtdemux->seek_offset = byte_cur; if (!(flags & GST_SEEK_FLAG_KEY_UNIT)) { - GST_DEBUG_OBJECT (qtdemux, - "Requested seek time: %" GST_TIME_FORMAT ", calculated seek offset: %" - G_GUINT64_FORMAT, GST_TIME_ARGS (cur), byte_cur); - GST_OBJECT_LOCK (qtdemux); - qtdemux->requested_seek_time = cur; - qtdemux->seek_offset = byte_cur; - GST_OBJECT_UNLOCK (qtdemux); + qtdemux->push_seek_start = cur; + } else { + qtdemux->push_seek_start = key_cur; } + if (stop_type == GST_SEEK_TYPE_NONE) { + qtdemux->push_seek_stop = qtdemux->segment.stop; + } else { + qtdemux->push_seek_stop = original_stop; + } + GST_OBJECT_UNLOCK (qtdemux); + /* BYTE seek event */ event = gst_event_new_seek (rate, GST_FORMAT_BYTES, flags, cur_type, byte_cur, stop_type, stop); + gst_event_set_seqnum (event, seqnum); res = gst_pad_push_event (qtdemux->sinkpad, event); return res; @@ -1325,7 +1356,8 @@ no_format: * Called with STREAM_LOCK */ static gboolean -gst_qtdemux_perform_seek (GstQTDemux * qtdemux, GstSegment * segment) +gst_qtdemux_perform_seek (GstQTDemux * qtdemux, GstSegment * segment, + guint32 seqnum) { gint64 desired_offset; gint n; @@ -1353,9 +1385,11 @@ gst_qtdemux_perform_seek (GstQTDemux * qtdemux, GstSegment * segment) stream->time_position = desired_offset; stream->sample_index = -1; + stream->offset_in_sample = 0; stream->segment_index = -1; stream->last_ret = GST_FLOW_OK; stream->sent_eos = FALSE; + stream->segment_seqnum = seqnum; if (segment->flags & GST_SEEK_FLAG_FLUSH) gst_segment_init (&stream->segment, GST_FORMAT_TIME); @@ -1383,12 +1417,15 @@ gst_qtdemux_do_seek (GstQTDemux * qtdemux, GstPad * pad, GstEvent * event) gboolean update; GstSegment seeksegment; int i; + guint32 seqnum = 0; + GstEvent *flush_event; if (event) { GST_DEBUG_OBJECT (qtdemux, "doing seek with event"); gst_event_parse_seek (event, &rate, &format, &flags, &cur_type, &cur, &stop_type, &stop); + seqnum = gst_event_get_seqnum (event); /* we have to have a format as the segment format. Try to convert * if not. */ @@ -1406,10 +1443,13 @@ gst_qtdemux_do_seek (GstQTDemux * qtdemux, GstPad * pad, GstEvent * event) /* stop streaming, either by flushing or by pausing the task */ if (flush) { + flush_event = gst_event_new_flush_start (); + if (seqnum) + gst_event_set_seqnum (flush_event, seqnum); /* unlock upstream pull_range */ - gst_pad_push_event (qtdemux->sinkpad, gst_event_new_flush_start ()); + gst_pad_push_event (qtdemux->sinkpad, gst_event_ref (flush_event)); /* make sure out loop function exits */ - gst_qtdemux_push_event (qtdemux, gst_event_new_flush_start ()); + gst_qtdemux_push_event (qtdemux, flush_event); } else { /* non flushing seek, pause the task */ gst_pad_pause_task (qtdemux->sinkpad); @@ -1430,21 +1470,27 @@ gst_qtdemux_do_seek (GstQTDemux * qtdemux, GstPad * pad, GstEvent * event) } /* now do the seek, this actually never returns FALSE */ - gst_qtdemux_perform_seek (qtdemux, &seeksegment); + gst_qtdemux_perform_seek (qtdemux, &seeksegment, seqnum); /* prepare for streaming again */ if (flush) { - gst_pad_push_event (qtdemux->sinkpad, gst_event_new_flush_stop (TRUE)); - gst_qtdemux_push_event (qtdemux, gst_event_new_flush_stop (TRUE)); + flush_event = gst_event_new_flush_stop (TRUE); + if (seqnum) + gst_event_set_seqnum (flush_event, seqnum); + + gst_pad_push_event (qtdemux->sinkpad, gst_event_ref (flush_event)); + gst_qtdemux_push_event (qtdemux, flush_event); } /* commit the new segment */ memcpy (&qtdemux->segment, &seeksegment, sizeof (GstSegment)); if (qtdemux->segment.flags & GST_SEEK_FLAG_SEGMENT) { - gst_element_post_message (GST_ELEMENT_CAST (qtdemux), - gst_message_new_segment_start (GST_OBJECT_CAST (qtdemux), - qtdemux->segment.format, qtdemux->segment.position)); + GstMessage *msg = gst_message_new_segment_start (GST_OBJECT_CAST (qtdemux), + qtdemux->segment.format, qtdemux->segment.position); + if (seqnum) + gst_message_set_seqnum (msg, seqnum); + gst_element_post_message (GST_ELEMENT_CAST (qtdemux), msg); } /* restart streaming, NEWSEGMENT will be sent from the streaming thread. */ @@ -1504,6 +1550,14 @@ gst_qtdemux_handle_src_event (GstPad * pad, GstObject * parent, #ifndef GST_DISABLE_GST_DEBUG GstClockTime ts = gst_util_get_timestamp (); #endif + + if (qtdemux->mss_mode || qtdemux->fragmented) { + /* seek should be handled by upstream, we might need to re-download fragments */ + GST_DEBUG_OBJECT (qtdemux, + "leting upstream handle seek for smoothstreaming"); + goto upstream; + } + /* Build complete index for seeking; * if not a fragmented file at least */ if (!qtdemux->fragmented) @@ -1536,6 +1590,7 @@ gst_qtdemux_handle_src_event (GstPad * pad, GstObject * parent, gst_event_unref (event); break; default: + upstream: res = gst_pad_event_default (pad, parent, event); break; } @@ -1583,17 +1638,25 @@ gst_qtdemux_find_sample (GstQTDemux * qtdemux, gint64 byte_pos, gboolean fw, i = str->n_samples - 1; inc = -1; } + for (; (i >= 0) && (i < str->n_samples); i += inc) { - if (str->samples[i].size && - ((fw && (str->samples[i].offset >= byte_pos)) || - (!fw && - (str->samples[i].offset + str->samples[i].size <= - byte_pos)))) { - /* move stream to first available sample */ - if (set) { - gst_qtdemux_move_stream (qtdemux, str, i); - set_sample = TRUE; - } + if (str->samples[i].size == 0) + continue; + + if (fw && (str->samples[i].offset < byte_pos)) + continue; + + if (!fw && (str->samples[i].offset + str->samples[i].size > byte_pos)) + continue; + + /* move stream to first available sample */ + if (set) { + gst_qtdemux_move_stream (qtdemux, str, i); + set_sample = TRUE; + } + + /* avoid index from sparse streams since they might be far away */ + if (!str->sparse) { /* determine min/max time */ time = str->samples[i].timestamp + str->samples[i].pts_offset; time = gst_util_uint64_scale (time, GST_SECOND, str->timescale); @@ -1601,17 +1664,18 @@ gst_qtdemux_find_sample (GstQTDemux * qtdemux, gint64 byte_pos, gboolean fw, (fw && time < min_time)) { min_time = time; } + /* determine stream with leading sample, to get its position */ - if (!stream || (fw - && (str->samples[i].offset < stream->samples[index].offset)) - || (!fw - && (str->samples[i].offset > stream->samples[index].offset))) { + if (!stream || + (fw && (str->samples[i].offset < stream->samples[index].offset)) || + (!fw && (str->samples[i].offset > stream->samples[index].offset))) { stream = str; index = i; } - break; } + break; } + /* no sample for this stream, mark eos */ if (!set_sample) gst_qtdemux_move_stream (qtdemux, str, str->n_samples); @@ -1625,6 +1689,187 @@ gst_qtdemux_find_sample (GstQTDemux * qtdemux, gint64 byte_pos, gboolean fw, *_index = index; } +static QtDemuxStream * +_create_stream (void) +{ + QtDemuxStream *stream; + + stream = g_new0 (QtDemuxStream, 1); + /* new streams always need a discont */ + stream->discont = TRUE; + /* we enable clipping for raw audio/video streams */ + stream->need_clip = FALSE; + stream->need_process = FALSE; + stream->segment_index = -1; + stream->time_position = 0; + stream->sample_index = -1; + stream->offset_in_sample = 0; + stream->last_ret = GST_FLOW_OK; + stream->new_stream = TRUE; + return stream; +} + +static gboolean +gst_qtdemux_setcaps (GstQTDemux * demux, GstCaps * caps) +{ + GstStructure *structure; + const gchar *variant; + const GstCaps *mediacaps = NULL; + + GST_DEBUG_OBJECT (demux, "Sink set caps: %" GST_PTR_FORMAT, caps); + + structure = gst_caps_get_structure (caps, 0); + variant = gst_structure_get_string (structure, "variant"); + + if (variant && strcmp (variant, "mss-fragmented") == 0) { + QtDemuxStream *stream; + const GValue *value; + + demux->fragmented = TRUE; + demux->mss_mode = TRUE; + + if (demux->n_streams > 1) { + /* can't do this, we can only renegotiate for another mss format */ + return FALSE; + } + + value = gst_structure_get_value (structure, "media-caps"); + /* create stream */ + if (value) { + const GValue *timescale_v; + + /* TODO update when stream changes during playback */ + + if (demux->n_streams == 0) { + stream = _create_stream (); + demux->streams[demux->n_streams] = stream; + demux->n_streams = 1; + } else { + stream = demux->streams[0]; + } + + timescale_v = gst_structure_get_value (structure, "timescale"); + if (timescale_v) { + stream->timescale = g_value_get_uint64 (timescale_v); + } else { + /* default mss timescale */ + stream->timescale = 10000000; + } + demux->timescale = stream->timescale; + + mediacaps = gst_value_get_caps (value); + if (!stream->caps || !gst_caps_is_equal_fixed (mediacaps, stream->caps)) { + GST_DEBUG_OBJECT (demux, "We have a new caps %" GST_PTR_FORMAT, + mediacaps); + stream->new_caps = TRUE; + } + gst_caps_replace (&stream->caps, (GstCaps *) mediacaps); + structure = gst_caps_get_structure (mediacaps, 0); + if (g_str_has_prefix (gst_structure_get_name (structure), "video")) { + stream->subtype = FOURCC_vide; + + gst_structure_get_int (structure, "width", &stream->width); + gst_structure_get_int (structure, "height", &stream->height); + gst_structure_get_fraction (structure, "framerate", &stream->fps_n, + &stream->fps_d); + } else if (g_str_has_prefix (gst_structure_get_name (structure), "audio")) { + gint rate = 0; + stream->subtype = FOURCC_soun; + gst_structure_get_int (structure, "channels", &stream->n_channels); + gst_structure_get_int (structure, "rate", &rate); + stream->rate = rate; + } + } + gst_caps_replace (&demux->media_caps, (GstCaps *) mediacaps); + } + + return TRUE; +} + +static void +gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard) +{ + gint n; + + GST_DEBUG_OBJECT (qtdemux, "Resetting demux"); + gst_pad_stop_task (qtdemux->sinkpad); + + if (hard || qtdemux->mss_mode) { + qtdemux->state = QTDEMUX_STATE_INITIAL; + qtdemux->neededbytes = 16; + qtdemux->todrop = 0; + qtdemux->pullbased = FALSE; + qtdemux->posted_redirect = FALSE; + qtdemux->first_mdat = -1; + qtdemux->header_size = 0; + qtdemux->mdatoffset = GST_CLOCK_TIME_NONE; + if (qtdemux->mdatbuffer) + gst_buffer_unref (qtdemux->mdatbuffer); + qtdemux->mdatbuffer = NULL; + qtdemux->mdatleft = 0; + if (qtdemux->comp_brands) + gst_buffer_unref (qtdemux->comp_brands); + qtdemux->comp_brands = NULL; + if (qtdemux->moov_node) + g_node_destroy (qtdemux->moov_node); + qtdemux->moov_node = NULL; + qtdemux->moov_node_compressed = NULL; + if (qtdemux->tag_list) + gst_mini_object_unref (GST_MINI_OBJECT_CAST (qtdemux->tag_list)); + qtdemux->tag_list = NULL; +#if 0 + if (qtdemux->element_index) + gst_object_unref (qtdemux->element_index); + qtdemux->element_index = NULL; +#endif + qtdemux->major_brand = 0; + if (qtdemux->pending_newsegment) + gst_object_unref (qtdemux->pending_newsegment); + qtdemux->pending_newsegment = NULL; + qtdemux->upstream_newsegment = TRUE; + qtdemux->upstream_seekable = FALSE; + qtdemux->upstream_size = 0; + + qtdemux->fragment_start = -1; + qtdemux->duration = 0; + qtdemux->mfra_offset = 0; + qtdemux->moof_offset = 0; + qtdemux->chapters_track_id = 0; + qtdemux->have_group_id = FALSE; + qtdemux->group_id = G_MAXUINT; + } + qtdemux->offset = 0; + gst_adapter_clear (qtdemux->adapter); + gst_segment_init (&qtdemux->segment, GST_FORMAT_TIME); + + if (hard) { + for (n = 0; n < qtdemux->n_streams; n++) { + gst_qtdemux_stream_free (qtdemux, qtdemux->streams[n]); + qtdemux->streams[n] = NULL; + } + qtdemux->n_streams = 0; + qtdemux->n_video_streams = 0; + qtdemux->n_audio_streams = 0; + qtdemux->n_sub_streams = 0; + qtdemux->exposed = FALSE; + qtdemux->fragmented = FALSE; + qtdemux->mss_mode = FALSE; + gst_caps_replace (&qtdemux->media_caps, NULL); + qtdemux->timescale = 0; + qtdemux->got_moov = FALSE; + } else if (qtdemux->mss_mode) { + for (n = 0; n < qtdemux->n_streams; n++) + gst_qtdemux_stream_clear (qtdemux->streams[n]); + } else { + for (n = 0; n < qtdemux->n_streams; n++) { + qtdemux->streams[n]->last_ret = GST_FLOW_OK; + qtdemux->streams[n]->sent_eos = FALSE; + qtdemux->streams[n]->segment_seqnum = 0; + qtdemux->streams[n]->time_position = 0; + } + } +} + static gboolean gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent, GstEvent * event) @@ -1641,41 +1886,61 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent, QtDemuxStream *stream; gint idx; GstSegment segment; + GstEvent *segment_event; /* some debug output */ gst_event_copy_segment (event, &segment); GST_DEBUG_OBJECT (demux, "received newsegment %" GST_SEGMENT_FORMAT, &segment); + if (segment.format == GST_FORMAT_TIME) { + GST_DEBUG_OBJECT (demux, "new pending_newsegment"); + gst_event_replace (&demux->pending_newsegment, event); + demux->upstream_newsegment = TRUE; + } else { + GST_DEBUG_OBJECT (demux, "Not storing upstream newsegment, " + "not in time format"); + } + /* chain will send initial newsegment after pads have been added */ if (demux->state != QTDEMUX_STATE_MOVIE || !demux->n_streams) { - GST_DEBUG_OBJECT (demux, "still starting, eating event"); - goto exit; + if (!demux->mss_mode) { + GST_DEBUG_OBJECT (demux, "still starting, eating event"); + goto exit; + } + } + + /* check if this matches a time seek we received previously + * FIXME for backwards compatibility reasons we use the + * seek_offset here to compare. In the future we might want to + * change this to use the seqnum as it uniquely should identify + * the segment that corresponds to the seek. */ + GST_DEBUG_OBJECT (demux, "Stored seek offset: %" G_GINT64_FORMAT + ", received segment offset %" G_GINT64_FORMAT, + demux->seek_offset, segment.start); + if (segment.format == GST_FORMAT_BYTES + && demux->seek_offset == segment.start) { + GST_OBJECT_LOCK (demux); + offset = segment.start; + + segment.format = GST_FORMAT_TIME; + segment.start = demux->push_seek_start; + segment.stop = demux->push_seek_stop; + GST_DEBUG_OBJECT (demux, "Replaced segment with stored seek " + "segment %" GST_TIME_FORMAT " - %" GST_TIME_FORMAT, + GST_TIME_ARGS (segment.start), GST_TIME_ARGS (segment.stop)); + GST_OBJECT_UNLOCK (demux); } /* we only expect a BYTE segment, e.g. following a seek */ if (segment.format == GST_FORMAT_BYTES) { if (GST_CLOCK_TIME_IS_VALID (segment.start)) { - gint64 requested_seek_time; - guint64 seek_offset; - offset = segment.start; - GST_OBJECT_LOCK (demux); - requested_seek_time = demux->requested_seek_time; - seek_offset = demux->seek_offset; - demux->requested_seek_time = -1; - demux->seek_offset = -1; - GST_OBJECT_UNLOCK (demux); - - if (offset == seek_offset) { - segment.start = requested_seek_time; - } else { - gst_qtdemux_find_sample (demux, segment.start, TRUE, FALSE, NULL, - NULL, (gint64 *) & segment.start); - if ((gint64) segment.start < 0) - segment.start = 0; - } + gst_qtdemux_find_sample (demux, segment.start, TRUE, FALSE, NULL, + NULL, (gint64 *) & segment.start); + if ((gint64) segment.start < 0) + segment.start = 0; } if (GST_CLOCK_TIME_IS_VALID (segment.stop)) { gst_qtdemux_find_sample (demux, segment.stop, FALSE, FALSE, NULL, @@ -1684,6 +1949,17 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent, * but make sure in other rare cases */ segment.stop = MAX (segment.stop, segment.start); } + } else if (segment.format == GST_FORMAT_TIME) { + /* NOP */ +#if 0 + gst_qtdemux_push_event (demux, gst_event_ref (event)); + gst_event_new_new_segment_full (segment.update, segment.rate, + segment.arate, GST_FORMAT_TIME, segment.start, segment.stop, + segment.start); + gst_adapter_clear (demux->adapter); + demux->neededbytes = 16; + goto exit; +#endif } else { GST_DEBUG_OBJECT (demux, "unsupported segment format, ignoring"); goto exit; @@ -1698,7 +1974,9 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent, gst_segment_copy_into (&segment, &demux->segment); GST_DEBUG_OBJECT (demux, "Pushing newseg %" GST_SEGMENT_FORMAT, &segment); - gst_qtdemux_push_event (demux, gst_event_new_segment (&segment)); + segment_event = gst_event_new_segment (&segment); + gst_event_set_seqnum (segment_event, gst_event_get_seqnum (event)); + gst_qtdemux_push_event (demux, segment_event); /* clear leftover in current segment, if any */ gst_adapter_clear (demux->adapter); @@ -1710,7 +1988,11 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent, demux->neededbytes = demux->todrop + stream->samples[idx].size; } else { /* set up for EOS */ - demux->neededbytes = -1; + if (demux->mss_mode) { + demux->neededbytes = 16; + } else { + demux->neededbytes = -1; + } demux->todrop = 0; } exit: @@ -1721,20 +2003,10 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent, } case GST_EVENT_FLUSH_STOP: { - gint i; - GstClockTime dur; + guint64 dur; - /* clean up, force EOS if no more info follows */ - gst_adapter_clear (demux->adapter); - demux->offset = 0; - demux->neededbytes = -1; - /* reset flow return, e.g. following seek */ - for (i = 0; i < demux->n_streams; i++) { - demux->streams[i]->last_ret = GST_FLOW_OK; - demux->streams[i]->sent_eos = FALSE; - } dur = demux->segment.duration; - gst_segment_init (&demux->segment, GST_FORMAT_TIME); + gst_qtdemux_reset (demux, FALSE); demux->segment.duration = dur; break; } @@ -1754,6 +2026,16 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent, gst_qtdemux_post_no_playable_stream_error (demux); } break; + case GST_EVENT_CAPS:{ + GstCaps *caps = NULL; + + gst_event_parse_caps (event, &caps); + gst_qtdemux_setcaps (demux, caps); + res = TRUE; + gst_event_unref (event); + goto drop; + break; + } default: break; } @@ -1823,7 +2105,7 @@ gst_qtdemux_stbl_free (QtDemuxStream * stream) } static void -gst_qtdemux_stream_free (GstQTDemux * qtdemux, QtDemuxStream * stream) +gst_qtdemux_stream_clear (QtDemuxStream * stream) { if (stream->allocator) gst_object_unref (stream->allocator); @@ -1831,20 +2113,55 @@ gst_qtdemux_stream_free (GstQTDemux * qtdemux, QtDemuxStream * stream) gst_buffer_unref (GST_BUFFER_CAST (stream->buffers->data)); stream->buffers = g_slist_delete_link (stream->buffers, stream->buffers); } - if (stream->pad) - gst_element_remove_pad (GST_ELEMENT_CAST (qtdemux), stream->pad); + if (stream->rgb8_palette) { + gst_memory_unref (stream->rgb8_palette); + stream->rgb8_palette = NULL; + } g_free (stream->samples); - if (stream->caps) - gst_caps_unref (stream->caps); + stream->samples = NULL; g_free (stream->segments); + stream->segments = NULL; if (stream->pending_tags) gst_tag_list_unref (stream->pending_tags); + stream->pending_tags = NULL; g_free (stream->redirect_uri); + stream->redirect_uri = NULL; /* free stbl sub-atoms */ gst_qtdemux_stbl_free (stream); + + stream->last_ret = GST_FLOW_OK; + stream->sent_eos = FALSE; + stream->segment_index = -1; + stream->time_position = 0; + stream->sample_index = -1; + stream->stbl_index = -1; + stream->n_samples = 0; + stream->sparse = FALSE; +} + +static void +gst_qtdemux_stream_free (GstQTDemux * qtdemux, QtDemuxStream * stream) +{ + gst_qtdemux_stream_clear (stream); + if (stream->caps) + gst_caps_unref (stream->caps); + stream->caps = NULL; + if (stream->pad) + gst_element_remove_pad (GST_ELEMENT_CAST (qtdemux), stream->pad); g_free (stream); } +static void +gst_qtdemux_remove_stream (GstQTDemux * qtdemux, int i) +{ + g_assert (i >= 0 && i < qtdemux->n_streams && qtdemux->streams[i] != NULL); + + gst_qtdemux_stream_free (qtdemux, qtdemux->streams[i]); + qtdemux->streams[i] = qtdemux->streams[qtdemux->n_streams - 1]; + qtdemux->streams[qtdemux->n_streams - 1] = NULL; + qtdemux->n_streams--; +} + static GstStateChangeReturn gst_qtdemux_change_state (GstElement * element, GstStateChange transition) { @@ -1862,47 +2179,7 @@ gst_qtdemux_change_state (GstElement * element, GstStateChange transition) switch (transition) { case GST_STATE_CHANGE_PAUSED_TO_READY:{ - gint n; - - qtdemux->state = QTDEMUX_STATE_INITIAL; - qtdemux->neededbytes = 16; - qtdemux->todrop = 0; - qtdemux->pullbased = FALSE; - qtdemux->posted_redirect = FALSE; - qtdemux->offset = 0; - qtdemux->first_mdat = -1; - qtdemux->header_size = 0; - qtdemux->got_moov = FALSE; - qtdemux->mdatoffset = GST_CLOCK_TIME_NONE; - if (qtdemux->mdatbuffer) - gst_buffer_unref (qtdemux->mdatbuffer); - qtdemux->mdatbuffer = NULL; - if (qtdemux->comp_brands) - gst_buffer_unref (qtdemux->comp_brands); - qtdemux->comp_brands = NULL; - if (qtdemux->tag_list) - gst_tag_list_unref (qtdemux->tag_list); - qtdemux->tag_list = NULL; -#if 0 - if (qtdemux->element_index) - gst_object_unref (qtdemux->element_index); - qtdemux->element_index = NULL; -#endif - gst_adapter_clear (qtdemux->adapter); - for (n = 0; n < qtdemux->n_streams; n++) { - gst_qtdemux_stream_free (qtdemux, qtdemux->streams[n]); - qtdemux->streams[n] = NULL; - } - qtdemux->major_brand = 0; - qtdemux->n_streams = 0; - qtdemux->n_video_streams = 0; - qtdemux->n_audio_streams = 0; - qtdemux->n_sub_streams = 0; - gst_segment_init (&qtdemux->segment, GST_FORMAT_TIME); - qtdemux->requested_seek_time = GST_CLOCK_TIME_NONE; - qtdemux->seek_offset = 0; - qtdemux->upstream_seekable = FALSE; - qtdemux->upstream_size = 0; + gst_qtdemux_reset (qtdemux, TRUE); break; } default: @@ -1926,7 +2203,7 @@ qtdemux_parse_ftyp (GstQTDemux * qtdemux, const guint8 * buffer, gint length) GST_DEBUG_OBJECT (qtdemux, "major brand: %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (qtdemux->major_brand)); buf = qtdemux->comp_brands = gst_buffer_new_and_alloc (length - 16); - _gst_buffer_copy_into_mem (buf, 0, buffer + 16, length - 16); + gst_buffer_fill (buf, 0, buffer + 16, length - 16); } } @@ -1956,6 +2233,10 @@ qtdemux_parse_uuid (GstQTDemux * qtdemux, const guint8 * buffer, gint length) 0x9C, 0x71, 0x99, 0x94, 0x91, 0xE3, 0xAF, 0xAC }; + static guint8 playready_uuid[] = { + 0xd0, 0x8a, 0x4f, 0x18, 0x10, 0xf3, 0x4a, 0x82, + 0xb6, 0xc8, 0x32, 0xd8, 0xab, 0xa1, 0x83, 0xd3 + }; guint offset; /* counts as header data */ @@ -1979,8 +2260,27 @@ qtdemux_parse_uuid (GstQTDemux * qtdemux, const guint8 * buffer, gint length) qtdemux_handle_xmp_taglist (qtdemux, taglist); + } else if (memcmp (buffer + offset, playready_uuid, 16) == 0) { + int len; + const gunichar2 *s_utf16; + char *contents; + + len = GST_READ_UINT16_LE (buffer + offset + 0x30); + s_utf16 = (const gunichar2 *) (buffer + offset + 0x32); + contents = g_utf16_to_utf8 (s_utf16, len / 2, NULL, NULL, NULL); + GST_ERROR_OBJECT (qtdemux, "contents: %s", contents); + + g_free (contents); + + GST_ELEMENT_ERROR (qtdemux, STREAM, DECRYPT, + (_("Cannot play stream because it is encrypted with PlayReady DRM.")), + (NULL)); } else { - GST_DEBUG_OBJECT (qtdemux, "Ignoring unknown uuid"); + GST_DEBUG_OBJECT (qtdemux, "Ignoring unknown uuid: %08x-%08x-%08x-%08x", + GST_READ_UINT32_LE (buffer + offset), + GST_READ_UINT32_LE (buffer + offset + 4), + GST_READ_UINT32_LE (buffer + offset + 8), + GST_READ_UINT32_LE (buffer + offset + 12)); } } @@ -2231,15 +2531,21 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun, if (stream->samples == NULL) goto out_of_memory; - if (G_UNLIKELY (stream->n_samples == 0)) { - /* the timestamp of the first sample is also provided by the tfra entry - * but we shouldn't rely on it as it is at the end of files */ - timestamp = 0; + if (qtdemux->fragment_start != -1) { + timestamp = gst_util_uint64_scale_int (qtdemux->fragment_start, + stream->timescale, GST_SECOND); + qtdemux->fragment_start = -1; } else { - /* subsequent fragments extend stream */ - timestamp = - stream->samples[stream->n_samples - 1].timestamp + - stream->samples[stream->n_samples - 1].duration; + if (G_UNLIKELY (stream->n_samples == 0)) { + /* the timestamp of the first sample is also provided by the tfra entry + * but we shouldn't rely on it as it is at the end of files */ + timestamp = 0; + } else { + /* subsequent fragments extend stream */ + timestamp = + stream->samples[stream->n_samples - 1].timestamp + + stream->samples[stream->n_samples - 1].duration; + } } sample = stream->samples + stream->n_samples; for (i = 0; i < samples_count; i++) { @@ -2278,7 +2584,9 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun, sample->offset = *running_offset; sample->pts_offset = ct; sample->size = size; - sample->timestamp = timestamp; + sample->timestamp = + timestamp + gst_util_uint64_scale (stream->elst_offset, + stream->timescale, GST_SECOND); sample->duration = dur; /* sample-is-difference-sample */ /* ismv seems to use 0x40 for keyframe, 0xc0 for non-keyframe, @@ -2339,6 +2647,10 @@ qtdemux_find_stream (GstQTDemux * qtdemux, guint32 id) if (stream->track_id == id) return stream; } + if (qtdemux->mss_mode) { + /* mss should have only 1 stream anyway */ + return qtdemux->streams[0]; + } return NULL; } @@ -2467,19 +2779,18 @@ qtdemux_parse_moof (GstQTDemux * qtdemux, const guint8 * buffer, guint length, &tfdt_data); if (tfdt_node) { guint64 decode_time = 0; + GstClockTime decode_time_ts; + qtdemux_parse_tfdt (qtdemux, &tfdt_data, &decode_time); - /* If there is a new segment pending, update the time/position */ - if (qtdemux->pending_newsegment) { - GstSegment segment; - - gst_segment_init (&segment, GST_FORMAT_TIME); - segment.time = gst_util_uint64_scale (decode_time, - GST_SECOND, stream->timescale); - gst_event_replace (&qtdemux->pending_newsegment, - gst_event_new_segment (&segment)); - /* ref added when replaced, release the original _new one */ - gst_event_unref (qtdemux->pending_newsegment); - } + + /* FIXME, we can use decode_time to interpolate timestamps + * in case the input timestamps are missing */ + decode_time_ts = gst_util_uint64_scale (decode_time, GST_SECOND, + stream->timescale); + + GST_DEBUG_OBJECT (qtdemux, "decode time %" G_GUINT64_FORMAT + " (%" GST_TIME_FORMAT ")", decode_time, + GST_TIME_ARGS (decode_time_ts)); } if (G_UNLIKELY (!stream)) { @@ -2793,12 +3104,12 @@ gst_qtdemux_loop_state_header (GstQTDemux * qtdemux) /* Ok, we've found that special case. Allocate a new buffer with * that free atom actually present. */ GstBuffer *newmoov = gst_buffer_new_and_alloc (length); - gst_buffer_copy_into (newmoov, moov, 0, 0, map.size); + gst_buffer_fill (newmoov, 0, map.data, map.size); + gst_buffer_memset (newmoov, map.size, 0, final_length - 8); gst_buffer_unmap (moov, &map); - gst_buffer_map (newmoov, &map, GST_MAP_WRITE); - memset (map.data + length - final_length + 8, 0, final_length - 8); gst_buffer_unref (moov); moov = newmoov; + gst_buffer_map (moov, &map, GST_MAP_READ); } } } @@ -2879,8 +3190,9 @@ gst_qtdemux_loop_state_header (GstQTDemux * qtdemux) } beach: - if (ret == GST_FLOW_EOS && qtdemux->got_moov) { + if (ret == GST_FLOW_EOS && (qtdemux->got_moov || qtdemux->media_caps)) { /* digested all data, show what we have */ + qtdemux_prepare_streams (qtdemux); ret = qtdemux_expose_streams (qtdemux); qtdemux->state = QTDEMUX_STATE_MOVIE; @@ -3160,10 +3472,15 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, stream->segment.start = start; stream->segment.stop = stop; stream->segment.time = time; + stream->segment.position = start; /* now prepare and send the segment */ if (stream->pad) { event = gst_event_new_segment (&stream->segment); + if (stream->segment_seqnum) { + gst_event_set_seqnum (event, stream->segment_seqnum); + stream->segment_seqnum = 0; + } gst_pad_push_event (stream->pad, event); /* assume we can send more data now */ stream->last_ret = GST_FLOW_OK; @@ -3328,6 +3645,7 @@ gst_qtdemux_advance_sample (GstQTDemux * qtdemux, QtDemuxStream * stream) /* move to next sample */ stream->sample_index++; + stream->offset_in_sample = 0; /* get current segment */ segment = &stream->segments[stream->segment_index]; @@ -3410,7 +3728,7 @@ gst_qtdemux_sync_streams (GstQTDemux * demux) if (demux->pullbased) { /* loop mode is sample time based */ - if (stream->time_position != -1) + if (!STREAM_IS_EOS (stream)) continue; } else { /* push mode is byte position based */ @@ -3483,13 +3801,15 @@ done: } /* the input buffer metadata must be writable. Returns NULL when the buffer is - * completely cliped */ + * completely cliped + * + * Should be used only with raw buffers */ static GstBuffer * gst_qtdemux_clip_buffer (GstQTDemux * qtdemux, QtDemuxStream * stream, GstBuffer * buf) { guint64 start, stop, cstart, cstop, diff; - GstClockTime pts, dts, duration; + GstClockTime pts, duration; gsize size, osize; gint num_rate, denom_rate; gint frame_size; @@ -3518,7 +3838,6 @@ gst_qtdemux_clip_buffer (GstQTDemux * qtdemux, QtDemuxStream * stream, if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (pts))) goto no_pts; - dts = GST_BUFFER_DTS (buf); duration = GST_BUFFER_DURATION (buf); if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (duration))) { @@ -3537,7 +3856,6 @@ gst_qtdemux_clip_buffer (GstQTDemux * qtdemux, QtDemuxStream * stream, diff = cstart - start; if (diff > 0) { pts += diff; - dts += diff; duration -= diff; if (clip_data) { @@ -3571,7 +3889,7 @@ gst_qtdemux_clip_buffer (GstQTDemux * qtdemux, QtDemuxStream * stream, if (offset != 0 || size != osize) gst_buffer_resize (buf, offset, size); - GST_BUFFER_DTS (buf) = dts; + GST_BUFFER_DTS (buf) = GST_CLOCK_TIME_NONE; GST_BUFFER_PTS (buf) = pts; GST_BUFFER_DURATION (buf) = duration; @@ -3616,17 +3934,23 @@ gst_qtdemux_process_buffer (GstQTDemux * qtdemux, QtDemuxStream * stream, stream->need_process = FALSE; } - if (G_UNLIKELY (stream->subtype != FOURCC_text)) { + if (G_UNLIKELY (stream->subtype != FOURCC_text + && stream->subtype != FOURCC_sbtl)) { return buf; } gst_buffer_map (buf, &map, GST_MAP_READ); - if (G_LIKELY (map.size >= 2)) { - nsize = GST_READ_UINT16_BE (map.data); - nsize = MIN (nsize, map.size - 2); + /* empty buffer is sent to terminate previous subtitle */ + if (map.size <= 2) { + gst_buffer_unmap (buf, &map); + gst_buffer_unref (buf); + return NULL; } + nsize = GST_READ_UINT16_BE (map.data); + nsize = MIN (nsize, map.size - 2); + GST_LOG_OBJECT (qtdemux, "3GPP timed text subtitle: %d/%" G_GSIZE_FORMAT "", nsize, map.size); @@ -3638,8 +3962,9 @@ gst_qtdemux_process_buffer (GstQTDemux * qtdemux, QtDemuxStream * stream, gst_buffer_unref (buf); buf = _gst_buffer_new_wrapped (str, strlen (str), g_free); } else { - /* may be 0-size subtitle, which is also sent to keep pipeline going */ - gst_buffer_resize (buf, 2, nsize); + /* this should not really happen unless the subtitle is corrupted */ + gst_buffer_unref (buf); + buf = NULL; } /* FIXME ? convert optional subsequent style info to markup */ @@ -3651,7 +3976,7 @@ gst_qtdemux_process_buffer (GstQTDemux * qtdemux, QtDemuxStream * stream, * Also checks for additional actions and custom processing that may * need to be done first. */ -static gboolean +static GstFlowReturn gst_qtdemux_decorate_and_push_buffer (GstQTDemux * qtdemux, QtDemuxStream * stream, GstBuffer * buf, guint64 dts, guint64 pts, guint64 duration, gboolean keyframe, @@ -3659,6 +3984,8 @@ gst_qtdemux_decorate_and_push_buffer (GstQTDemux * qtdemux, { GstFlowReturn ret = GST_FLOW_OK; + /* offset the timestamps according to the edit list */ + if (G_UNLIKELY (stream->fourcc == FOURCC_rtsp)) { gchar *url; GstMapInfo map; @@ -3715,12 +4042,19 @@ gst_qtdemux_decorate_and_push_buffer (GstQTDemux * qtdemux, if (G_UNLIKELY (stream->need_process)) buf = gst_qtdemux_process_buffer (qtdemux, stream, buf); + if (!buf) { + goto exit; + } + GST_BUFFER_DTS (buf) = dts; GST_BUFFER_PTS (buf) = pts; GST_BUFFER_DURATION (buf) = duration; GST_BUFFER_OFFSET (buf) = -1; GST_BUFFER_OFFSET_END (buf) = -1; + if (G_UNLIKELY (stream->rgb8_palette)) + gst_buffer_append_memory (buf, gst_memory_ref (stream->rgb8_palette)); + if (G_UNLIKELY (stream->padding)) { gst_buffer_resize (buf, stream->padding, -1); } @@ -3758,8 +4092,13 @@ gst_qtdemux_decorate_and_push_buffer (GstQTDemux * qtdemux, GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT); } - if (!keyframe) + if (!keyframe) { GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT); + stream->on_keyframe = FALSE; + } else { + stream->on_keyframe = TRUE; + } + GST_LOG_OBJECT (qtdemux, "Pushing buffer with dts %" GST_TIME_FORMAT ", pts %" GST_TIME_FORMAT @@ -3769,6 +4108,11 @@ gst_qtdemux_decorate_and_push_buffer (GstQTDemux * qtdemux, ret = gst_pad_push (stream->pad, buf); + if (GST_CLOCK_TIME_IS_VALID (pts) && GST_CLOCK_TIME_IS_VALID (duration)) { + /* mark position in stream, we'll need this to know when to send GAP event */ + stream->segment.position = pts + duration; + } + exit: return ret; } @@ -3785,7 +4129,8 @@ gst_qtdemux_loop_state_movie (GstQTDemux * qtdemux) guint64 pts = GST_CLOCK_TIME_NONE; guint64 duration = 0; gboolean keyframe = FALSE; - guint size = 0; + guint sample_size = 0; + guint size; gint index; gint i; @@ -3815,32 +4160,67 @@ gst_qtdemux_loop_state_movie (GstQTDemux * qtdemux) /* check for segment end */ if (G_UNLIKELY (qtdemux->segment.stop != -1 - && qtdemux->segment.stop < min_time)) { + && qtdemux->segment.stop <= min_time + && qtdemux->streams[index]->on_keyframe)) { GST_DEBUG_OBJECT (qtdemux, "we reached the end of our segment."); - goto eos; + qtdemux->streams[index]->time_position = -1; + goto eos_stream; + } + + /* gap events for subtitle streams */ + for (i = 0; i < qtdemux->n_streams; i++) { + stream = qtdemux->streams[i]; + if (stream->pad && (stream->subtype == FOURCC_subp + || stream->subtype == FOURCC_text + || stream->subtype == FOURCC_sbtl)) { + /* send one second gap events until the stream catches up */ + /* gaps can only be sent after segment is activated (segment.stop is no longer -1) */ + while (GST_CLOCK_TIME_IS_VALID (stream->segment.stop) && + GST_CLOCK_TIME_IS_VALID (stream->segment.position) && + stream->segment.position + GST_SECOND < min_time) { + GstEvent *gap = + gst_event_new_gap (stream->segment.position, GST_SECOND); + gst_pad_push_event (stream->pad, gap); + stream->segment.position += GST_SECOND; + } + } } stream = qtdemux->streams[index]; + if (stream->new_caps) { + gst_qtdemux_configure_stream (qtdemux, stream); + qtdemux_do_allocation (qtdemux, stream); + } /* fetch info for the current sample of this stream */ if (G_UNLIKELY (!gst_qtdemux_prepare_current_sample (qtdemux, stream, &offset, - &size, &dts, &pts, &duration, &keyframe))) + &sample_size, &dts, &pts, &duration, &keyframe))) goto eos_stream; - GST_LOG_OBJECT (qtdemux, + GST_DEBUG_OBJECT (qtdemux, "pushing from stream %d, offset %" G_GUINT64_FORMAT ", size %d, dts=%" GST_TIME_FORMAT ", pts=%" GST_TIME_FORMAT - ", duration %" GST_TIME_FORMAT, index, offset, size, + ", duration %" GST_TIME_FORMAT, index, offset, sample_size, GST_TIME_ARGS (dts), GST_TIME_ARGS (pts), GST_TIME_ARGS (duration)); /* hmm, empty sample, skip and move to next sample */ - if (G_UNLIKELY (size <= 0)) + if (G_UNLIKELY (sample_size <= 0)) goto next; /* last pushed sample was out of boundary, goto next sample */ if (G_UNLIKELY (stream->last_ret == GST_FLOW_EOS)) goto next; + if (stream->max_buffer_size == 0 || sample_size <= stream->max_buffer_size) { + size = sample_size; + } else { + GST_DEBUG_OBJECT (qtdemux, + "size %d larger than stream max_buffer_size %d, trimming", + sample_size, stream->max_buffer_size); + size = + MIN (sample_size - stream->offset_in_sample, stream->max_buffer_size); + } + GST_LOG_OBJECT (qtdemux, "reading %d bytes @ %" G_GUINT64_FORMAT, size, offset); @@ -3849,13 +4229,43 @@ gst_qtdemux_loop_state_movie (GstQTDemux * qtdemux) buf = gst_buffer_new_allocate (stream->allocator, size, &stream->params); } - ret = gst_qtdemux_pull_atom (qtdemux, offset, size, &buf); + ret = gst_qtdemux_pull_atom (qtdemux, offset + stream->offset_in_sample, + size, &buf); if (G_UNLIKELY (ret != GST_FLOW_OK)) goto beach; + if (size != sample_size) { + pts += gst_util_uint64_scale_int (GST_SECOND, + stream->offset_in_sample / stream->bytes_per_frame, stream->timescale); + dts += gst_util_uint64_scale_int (GST_SECOND, + stream->offset_in_sample / stream->bytes_per_frame, stream->timescale); + duration = gst_util_uint64_scale_int (GST_SECOND, + size / stream->bytes_per_frame, stream->timescale); + } + ret = gst_qtdemux_decorate_and_push_buffer (qtdemux, stream, buf, dts, pts, duration, keyframe, min_time, offset); + if (size != sample_size) { + QtDemuxSample *sample = &stream->samples[stream->sample_index]; + QtDemuxSegment *segment = &stream->segments[stream->segment_index]; + + GstClockTime time_position = gst_util_uint64_scale (sample->timestamp + + stream->offset_in_sample / stream->bytes_per_frame, GST_SECOND, + stream->timescale); + if (time_position >= segment->media_start) { + /* inside the segment, update time_position, looks very familiar to + * GStreamer segments, doesn't it? */ + stream->time_position = (time_position - segment->media_start) + + segment->time; + } else { + /* not yet in segment, time does not yet increment. This means + * that we are still prerolling keyframes to the decoder so it can + * decode the first sample of the segment. */ + stream->time_position = segment->time; + } + } + /* combine flows */ ret = gst_qtdemux_combine_flows (qtdemux, stream, ret); /* ignore unlinked, we will not push on the pad anymore and we will EOS when @@ -3863,6 +4273,12 @@ gst_qtdemux_loop_state_movie (GstQTDemux * qtdemux) if (ret == GST_FLOW_EOS) ret = GST_FLOW_OK; + stream->offset_in_sample += size; + if (stream->offset_in_sample >= sample_size) { + gst_qtdemux_advance_sample (qtdemux, stream); + } + goto beach; + next: gst_qtdemux_advance_sample (qtdemux, stream); @@ -4003,8 +4419,10 @@ next_entry_size (GstQTDemux * demux) for (i = 0; i < demux->n_streams; i++) { stream = demux->streams[i]; - if (stream->sample_index == -1) + if (stream->sample_index == -1) { stream->sample_index = 0; + stream->offset_in_sample = 0; + } if (stream->sample_index >= stream->n_samples) { GST_LOG_OBJECT (demux, "stream %d samples exhausted", i); @@ -4126,14 +4544,24 @@ gst_qtdemux_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * inbuf) { GstQTDemux *demux; GstFlowReturn ret = GST_FLOW_OK; + GstClockTime timestamp; demux = GST_QTDEMUX (parent); + timestamp = GST_BUFFER_TIMESTAMP (inbuf); + + if (G_UNLIKELY (GST_CLOCK_TIME_IS_VALID (timestamp))) { + demux->fragment_start = timestamp; + GST_DEBUG_OBJECT (demux, "got fragment_start %" GST_TIME_FORMAT, + GST_TIME_ARGS (timestamp)); + } + gst_adapter_push (demux->adapter, inbuf); /* we never really mean to buffer that much */ - if (demux->neededbytes == -1) + if (demux->neededbytes == -1) { goto eos; + } GST_DEBUG_OBJECT (demux, "pushing in inbuf %p, neededbytes:%u, available:%" G_GSIZE_FORMAT, inbuf, @@ -4260,30 +4688,50 @@ gst_qtdemux_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * inbuf) if (fourcc == FOURCC_moov) { /* in usual fragmented setup we could try to scan for more * and end up at the the moov (after mdat) again */ - if (demux->got_moov && demux->n_streams > 0) { + if (demux->got_moov && demux->n_streams > 0 && !demux->fragmented) { GST_DEBUG_OBJECT (demux, "Skipping moov atom as we have one already"); } else { GST_DEBUG_OBJECT (demux, "Parsing [moov]"); - demux->got_moov = TRUE; - - /* prepare newsegment to send when streaming actually starts */ - if (!demux->pending_newsegment) - demux->pending_newsegment = - gst_event_new_segment (&demux->segment); + if (demux->got_moov && demux->fragmented) { + GST_DEBUG_OBJECT (demux, + "Got a second moov, clean up data from old one"); + if (demux->moov_node) + g_node_destroy (demux->moov_node); + demux->moov_node = NULL; + demux->moov_node_compressed = NULL; + } else { + /* prepare newsegment to send when streaming actually starts */ + if (!demux->pending_newsegment) + demux->pending_newsegment = + gst_event_new_segment (&demux->segment); + } qtdemux_parse_moov (demux, data, demux->neededbytes); qtdemux_node_dump (demux, demux->moov_node); qtdemux_parse_tree (demux); - qtdemux_expose_streams (demux); + qtdemux_prepare_streams (demux); + if (!demux->got_moov) + qtdemux_expose_streams (demux); + else { + gint n; + + for (n = 0; n < demux->n_streams; n++) { + QtDemuxStream *stream = demux->streams[n]; + + gst_qtdemux_configure_stream (demux, stream); + } + } + + demux->got_moov = TRUE; g_node_destroy (demux->moov_node); demux->moov_node = NULL; GST_DEBUG_OBJECT (demux, "Finished parsing the header"); } } else if (fourcc == FOURCC_moof) { - if (demux->got_moov && demux->fragmented) { + if ((demux->got_moov || demux->media_caps) && demux->fragmented) { GST_DEBUG_OBJECT (demux, "Parsing [moof]"); if (!qtdemux_parse_moof (demux, data, demux->neededbytes, demux->offset, NULL)) { @@ -4291,6 +4739,16 @@ gst_qtdemux_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * inbuf) ret = GST_FLOW_ERROR; goto done; } + /* in MSS we need to expose the pads after the first moof as we won't get a moov */ + if (demux->mss_mode && !demux->exposed) { + if (!demux->pending_newsegment) { + GstSegment segment; + gst_segment_init (&segment, GST_FORMAT_TIME); + GST_DEBUG_OBJECT (demux, "new pending_newsegment"); + demux->pending_newsegment = gst_event_new_segment (&segment); + } + qtdemux_expose_streams (demux); + } } else { GST_DEBUG_OBJECT (demux, "Discarding [moof]"); } @@ -4416,15 +4874,21 @@ gst_qtdemux_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * inbuf) /* initial newsegment sent here after having added pads, * possible others in sink_event */ if (G_UNLIKELY (demux->pending_newsegment)) { - gst_qtdemux_push_event (demux, demux->pending_newsegment); - demux->pending_newsegment = NULL; + gst_qtdemux_push_pending_newsegment (demux); /* clear to send tags on all streams */ for (i = 0; i < demux->n_streams; i++) { - gst_qtdemux_push_tags (demux, demux->streams[i]); + stream = demux->streams[i]; + gst_qtdemux_push_tags (demux, stream); + if (stream->sparse) { + GST_INFO_OBJECT (demux, "Sending gap event on stream %d", i); + gst_pad_push_event (stream->pad, + gst_event_new_gap (stream->segment.position, + GST_CLOCK_TIME_NONE)); + } } } - /* Figure out which stream this is packet belongs to */ + /* Figure out which stream this packet belongs to */ for (i = 0; i < demux->n_streams; i++) { stream = demux->streams[i]; if (stream->sample_index >= stream->n_samples) @@ -4442,27 +4906,58 @@ gst_qtdemux_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * inbuf) if (G_UNLIKELY (stream == NULL || i == demux->n_streams)) goto unknown_stream; - /* Put data in a buffer, set timestamps, caps, ... */ - outbuf = gst_adapter_take_buffer (demux->adapter, demux->neededbytes); - GST_DEBUG_OBJECT (demux, "stream : %" GST_FOURCC_FORMAT, - GST_FOURCC_ARGS (stream->fourcc)); - - g_return_val_if_fail (outbuf != NULL, GST_FLOW_ERROR); + if (stream->new_caps) { + gst_qtdemux_configure_stream (demux, stream); + } + /* Put data in a buffer, set timestamps, caps, ... */ sample = &stream->samples[stream->sample_index]; - dts = QTSAMPLE_DTS (stream, sample); - pts = QTSAMPLE_PTS (stream, sample); - duration = QTSAMPLE_DUR_DTS (stream, sample, dts); - keyframe = QTSAMPLE_KEYFRAME (stream, sample); + if (G_LIKELY (!(STREAM_IS_EOS (stream)))) { + outbuf = gst_adapter_take_buffer (demux->adapter, demux->neededbytes); + GST_DEBUG_OBJECT (demux, "stream : %" GST_FOURCC_FORMAT, + GST_FOURCC_ARGS (stream->fourcc)); + + g_return_val_if_fail (outbuf != NULL, GST_FLOW_ERROR); + + dts = QTSAMPLE_DTS (stream, sample); + pts = QTSAMPLE_PTS (stream, sample); + duration = QTSAMPLE_DUR_DTS (stream, sample, dts); + keyframe = QTSAMPLE_KEYFRAME (stream, sample); + + /* check for segment end */ + if (G_UNLIKELY (demux->segment.stop != -1 + && demux->segment.stop <= pts && stream->on_keyframe)) { + GST_DEBUG_OBJECT (demux, "we reached the end of our segment."); + stream->time_position = -1; /* this means EOS */ + + /* check if all streams are eos */ + ret = GST_FLOW_EOS; + for (i = 0; i < demux->n_streams; i++) { + if (!STREAM_IS_EOS (demux->streams[i])) { + ret = GST_FLOW_OK; + break; + } + } - ret = gst_qtdemux_decorate_and_push_buffer (demux, stream, outbuf, - dts, pts, duration, keyframe, dts, demux->offset); + if (ret == GST_FLOW_EOS) { + GST_DEBUG_OBJECT (demux, "All streams are EOS, signal upstream"); + goto eos; + } + } else { + ret = gst_qtdemux_decorate_and_push_buffer (demux, stream, outbuf, + dts, pts, duration, keyframe, dts, demux->offset); + } - /* combine flows */ - ret = gst_qtdemux_combine_flows (demux, stream, ret); + /* combine flows */ + ret = gst_qtdemux_combine_flows (demux, stream, ret); + } else { + /* skip this data, stream is EOS */ + gst_adapter_flush (demux->adapter, demux->neededbytes); + } stream->sample_index++; + stream->offset_in_sample = 0; /* update current offset and figure out size of next buffer */ GST_LOG_OBJECT (demux, "increasing offset %" G_GUINT64_FORMAT " by %u", @@ -4770,19 +5265,19 @@ qtdemux_parse_theora_extension (GstQTDemux * qtdemux, QtDemuxStream * stream, switch (type) { case FOURCC_tCtH: buffer = gst_buffer_new_and_alloc (size); - _gst_buffer_copy_into_mem (buffer, 0, buf, size); + gst_buffer_fill (buffer, 0, buf, size); stream->buffers = g_slist_append (stream->buffers, buffer); GST_LOG_OBJECT (qtdemux, "parsing theora header"); break; case FOURCC_tCt_: buffer = gst_buffer_new_and_alloc (size); - _gst_buffer_copy_into_mem (buffer, 0, buf, size); + gst_buffer_fill (buffer, 0, buf, size); stream->buffers = g_slist_append (stream->buffers, buffer); GST_LOG_OBJECT (qtdemux, "parsing theora comment"); break; case FOURCC_tCtC: buffer = gst_buffer_new_and_alloc (size); - _gst_buffer_copy_into_mem (buffer, 0, buf, size); + gst_buffer_fill (buffer, 0, buf, size); stream->buffers = g_slist_append (stream->buffers, buffer); GST_LOG_OBJECT (qtdemux, "parsing theora codebook"); break; @@ -4913,6 +5408,9 @@ qtdemux_parse_node (GstQTDemux * qtdemux, GNode * node, const guint8 * buffer, guint32 version; int tlen; + /* codec_data is contained inside these atoms, which all have + * the same format. */ + GST_DEBUG_OBJECT (qtdemux, "parsing in %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc)); version = QT_UINT32 (buffer + 16); @@ -4938,12 +5436,24 @@ qtdemux_parse_node (GstQTDemux * qtdemux, GNode * node, const guint8 * buffer, } break; } + case FOURCC_H264: + { + GST_MEMDUMP_OBJECT (qtdemux, "H264", buffer, end - buffer); + qtdemux_parse_container (qtdemux, node, buffer + 0x56, end); + break; + } case FOURCC_avc1: { GST_MEMDUMP_OBJECT (qtdemux, "avc1", buffer, end - buffer); qtdemux_parse_container (qtdemux, node, buffer + 0x56, end); break; } + case FOURCC_avc3: + { + GST_MEMDUMP_OBJECT (qtdemux, "avc3", buffer, end - buffer); + qtdemux_parse_container (qtdemux, node, buffer + 0x56, end); + break; + } case FOURCC_mjp2: { qtdemux_parse_container (qtdemux, node, buffer + 86, end); @@ -4981,6 +5491,11 @@ qtdemux_parse_node (GstQTDemux * qtdemux, GNode * node, const guint8 * buffer, qtdemux_parse_container (qtdemux, node, buffer + 0x34, end); break; } + case FOURCC_uuid: + { + qtdemux_parse_uuid (qtdemux, buffer, end - buffer); + break; + } default: if (!strcmp (type->name, "unknown")) GST_MEMDUMP ("Unknown tag", buffer + 4, end - buffer - 4); @@ -5093,6 +5608,14 @@ qtdemux_tree_get_sibling_by_type (GNode * node, guint32 fourcc) static void qtdemux_do_allocation (GstQTDemux * qtdemux, QtDemuxStream * stream) { +/* FIXME: This can only reliably work if demuxers have a + * separate streaming thread per srcpad. This should be + * done in a demuxer base class, which integrates parts + * of multiqueue + * + * https://bugzilla.gnome.org/show_bug.cgi?id=701856 + */ +#if 0 GstQuery *query; query = gst_query_new_allocation (stream->caps, FALSE); @@ -5116,22 +5639,13 @@ qtdemux_do_allocation (GstQTDemux * qtdemux, QtDemuxStream * stream) stream->use_allocator = FALSE; } gst_query_unref (query); +#endif } static gboolean -gst_qtdemux_add_stream (GstQTDemux * qtdemux, - QtDemuxStream * stream, GstTagList * list) +gst_qtdemux_configure_stream (GstQTDemux * qtdemux, QtDemuxStream * stream) { - /* consistent default for push based mode */ - gst_segment_init (&stream->segment, GST_FORMAT_TIME); - if (stream->subtype == FOURCC_vide) { - gchar *name = g_strdup_printf ("video_%u", qtdemux->n_video_streams); - - stream->pad = - gst_pad_new_from_static_template (&gst_qtdemux_videosrc_template, name); - g_free (name); - /* fps is calculated base on the duration of the first frames since * qt does not have a fixed framerate. */ if ((stream->n_samples == 1) && (stream->min_duration == 0)) { @@ -5139,17 +5653,23 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux, stream->fps_n = 0; stream->fps_d = 1; } else { - stream->fps_n = stream->timescale; - if (stream->min_duration == 0) - stream->fps_d = 1; + /* we might need to scale the timescale to get precise framerate */ + const int required_scale = rint (log (10000) / 2.303); /* divide to get log10 */ + int current_scale = rint (log (stream->timescale) / 2.303); + int factor = pow (10.0, MAX (0, required_scale - current_scale)); + + stream->fps_n = stream->timescale * factor; + + if (stream->duration == 0 || stream->n_samples == 0) + stream->fps_d = factor; else - stream->fps_d = stream->min_duration; + stream->fps_d = + gst_util_uint64_scale_int_round (stream->duration, factor, + stream->n_samples); } if (stream->caps) { - gboolean gray; - gint depth, palette_count; - const guint32 *palette_data = NULL; + stream->caps = gst_caps_make_writable (stream->caps); gst_caps_set_simple (stream->caps, "width", G_TYPE_INT, stream->width, @@ -5181,65 +5701,91 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux, gst_caps_set_simple (stream->caps, "pixel-aspect-ratio", GST_TYPE_FRACTION, stream->par_w, stream->par_h, NULL); } + } + } else if (stream->subtype == FOURCC_soun) { + if (stream->caps) { + stream->caps = gst_caps_make_writable (stream->caps); + if (stream->rate > 0) + gst_caps_set_simple (stream->caps, + "rate", G_TYPE_INT, (int) stream->rate, NULL); + if (stream->n_channels > 0) + gst_caps_set_simple (stream->caps, + "channels", G_TYPE_INT, stream->n_channels, NULL); + if (stream->n_channels > 2) { + /* FIXME: Need to parse the 'chan' atom to get channel layouts + * correctly; this is just the minimum we can do - assume + * we don't actually have any channel positions. */ + gst_caps_set_simple (stream->caps, + "channel-mask", GST_TYPE_BITMASK, G_GUINT64_CONSTANT (0), NULL); + } + } + } - depth = stream->bits_per_sample; - - /* more than 32 bits means grayscale */ - gray = (depth > 32); - /* low 32 bits specify the depth */ - depth &= 0x1F; + if (stream->pad) { + GST_PAD_ELEMENT_PRIVATE (stream->pad) = stream; + gst_pad_set_event_function (stream->pad, gst_qtdemux_handle_src_event); + gst_pad_set_query_function (stream->pad, gst_qtdemux_handle_src_query); + gst_pad_set_active (stream->pad, TRUE); - /* different number of palette entries is determined by depth. */ - palette_count = 0; - if ((depth == 1) || (depth == 2) || (depth == 4) || (depth == 8)) - palette_count = (1 << depth); + gst_pad_use_fixed_caps (stream->pad); - switch (palette_count) { - case 0: - break; - case 2: - palette_data = ff_qt_default_palette_2; - break; - case 4: - palette_data = ff_qt_default_palette_4; - break; - case 16: - if (gray) - palette_data = ff_qt_grayscale_palette_16; - else - palette_data = ff_qt_default_palette_16; - break; - case 256: - if (gray) - palette_data = ff_qt_grayscale_palette_256; - else - palette_data = ff_qt_default_palette_256; - break; - default: - GST_ELEMENT_WARNING (qtdemux, STREAM, DEMUX, - (_("The video in this file might not play correctly.")), - ("unsupported palette depth %d", depth)); - break; + GST_DEBUG_OBJECT (qtdemux, "setting caps %" GST_PTR_FORMAT, stream->caps); + if (stream->new_stream) { + gchar *stream_id; + GstEvent *event; + GstStreamFlags stream_flags; + + event = + gst_pad_get_sticky_event (qtdemux->sinkpad, GST_EVENT_STREAM_START, + 0); + if (event) { + if (gst_event_parse_group_id (event, &qtdemux->group_id)) + qtdemux->have_group_id = TRUE; + else + qtdemux->have_group_id = FALSE; + gst_event_unref (event); + } else if (!qtdemux->have_group_id) { + qtdemux->have_group_id = TRUE; + qtdemux->group_id = gst_util_group_id_next (); } - if (palette_data) { - GstBuffer *palette; - /* make sure it's not writable. We leave MALLOCDATA to NULL so that we - * don't free any of the buffer data. */ - palette = _gst_buffer_new_wrapped ((gpointer) palette_data, - palette_count * 4, NULL); + stream->new_stream = FALSE; + stream_id = + gst_pad_create_stream_id_printf (stream->pad, + GST_ELEMENT_CAST (qtdemux), "%03u", stream->track_id); + event = gst_event_new_stream_start (stream_id); + if (qtdemux->have_group_id) + gst_event_set_group_id (event, qtdemux->group_id); + stream_flags = GST_STREAM_FLAG_NONE; + if (stream->disabled) + stream_flags |= GST_STREAM_FLAG_UNSELECT; + if (stream->sparse) + stream_flags |= GST_STREAM_FLAG_SPARSE; + gst_event_set_stream_flags (event, stream_flags); + gst_pad_push_event (stream->pad, event); + g_free (stream_id); + } + gst_pad_set_caps (stream->pad, stream->caps); + stream->new_caps = FALSE; + } + return TRUE; +} + +static gboolean +gst_qtdemux_add_stream (GstQTDemux * qtdemux, + QtDemuxStream * stream, GstTagList * list) +{ + /* consistent default for push based mode */ + gst_segment_init (&stream->segment, GST_FORMAT_TIME); + + if (stream->subtype == FOURCC_vide) { + gchar *name = g_strdup_printf ("video_%u", qtdemux->n_video_streams); - gst_caps_set_simple (stream->caps, "palette_data", - GST_TYPE_BUFFER, palette, NULL); - gst_buffer_unref (palette); - } else if (palette_count != 0) { - GST_ELEMENT_WARNING (qtdemux, STREAM, NOT_IMPLEMENTED, - (NULL), ("Unsupported palette depth %d. Ignoring stream.", depth)); + stream->pad = + gst_pad_new_from_static_template (&gst_qtdemux_videosrc_template, name); + g_free (name); - gst_object_unref (stream->pad); - stream->pad = NULL; - } - } + gst_qtdemux_configure_stream (qtdemux, stream); qtdemux->n_video_streams++; } else if (stream->subtype == FOURCC_soun) { gchar *name = g_strdup_printf ("audio_%u", qtdemux->n_audio_streams); @@ -5247,28 +5793,18 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux, stream->pad = gst_pad_new_from_static_template (&gst_qtdemux_audiosrc_template, name); g_free (name); - if (stream->caps) { - gst_caps_set_simple (stream->caps, - "rate", G_TYPE_INT, (int) stream->rate, - "channels", G_TYPE_INT, stream->n_channels, NULL); - - if (stream->n_channels > 2) { - /* FIXME: Need to parse the 'chan' atom to get channel layouts - * correctly; this is just the minimum we can do - assume - * we don't actually have any channel positions. */ - gst_caps_set_simple (stream->caps, - "channel-mask", GST_TYPE_BITMASK, G_GUINT64_CONSTANT (0), NULL); - } - } + gst_qtdemux_configure_stream (qtdemux, stream); qtdemux->n_audio_streams++; } else if (stream->subtype == FOURCC_strm) { GST_DEBUG_OBJECT (qtdemux, "stream type, not creating pad"); - } else if (stream->subtype == FOURCC_subp || stream->subtype == FOURCC_text) { + } else if (stream->subtype == FOURCC_subp || stream->subtype == FOURCC_text + || stream->subtype == FOURCC_sbtl) { gchar *name = g_strdup_printf ("subtitle_%u", qtdemux->n_sub_streams); stream->pad = gst_pad_new_from_static_template (&gst_qtdemux_subsrc_template, name); g_free (name); + gst_qtdemux_configure_stream (qtdemux, stream); qtdemux->n_sub_streams++; } else if (stream->caps) { gchar *name = g_strdup_printf ("video_%u", qtdemux->n_video_streams); @@ -5276,6 +5812,7 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux, stream->pad = gst_pad_new_from_static_template (&gst_qtdemux_videosrc_template, name); g_free (name); + gst_qtdemux_configure_stream (qtdemux, stream); qtdemux->n_video_streams++; } else { GST_DEBUG_OBJECT (qtdemux, "unknown stream type"); @@ -5283,23 +5820,6 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux, } if (stream->pad) { - gchar *stream_id; - - GST_PAD_ELEMENT_PRIVATE (stream->pad) = stream; - - gst_pad_use_fixed_caps (stream->pad); - gst_pad_set_event_function (stream->pad, gst_qtdemux_handle_src_event); - gst_pad_set_query_function (stream->pad, gst_qtdemux_handle_src_query); - gst_pad_set_active (stream->pad, TRUE); - - GST_DEBUG_OBJECT (qtdemux, "setting caps %" GST_PTR_FORMAT, stream->caps); - stream_id = - gst_pad_create_stream_id_printf (stream->pad, - GST_ELEMENT_CAST (qtdemux), "%u", stream->track_id); - gst_pad_push_event (stream->pad, gst_event_new_stream_start (stream_id)); - g_free (stream_id); - gst_pad_set_caps (stream->pad, stream->caps); - GST_DEBUG_OBJECT (qtdemux, "adding pad %s %p to qtdemux %p", GST_OBJECT_NAME (stream->pad), stream->pad, qtdemux); gst_element_add_pad (GST_ELEMENT_CAST (qtdemux), stream->pad); @@ -5309,8 +5829,6 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux, stream->pending_tags = list; /* global tags go on each pad anyway */ stream->send_global_tags = TRUE; - - qtdemux_do_allocation (qtdemux, stream); } done: return TRUE; @@ -5455,6 +5973,7 @@ static gboolean qtdemux_stbl_init (GstQTDemux * qtdemux, QtDemuxStream * stream, GNode * stbl) { stream->stbl_index = -1; /* no samples have yet been parsed */ + stream->sample_index = -1; /* time-to-sample atom */ if (!qtdemux_tree_get_child_by_type_full (stbl, FOURCC_stts, &stream->stts)) @@ -5795,7 +6314,8 @@ qtdemux_parse_samples (GstQTDemux * qtdemux, QtDemuxStream * stream, guint32 n) for (k = stream->stsc_sample_index; k < samples_per_chunk; k++) { GST_LOG_OBJECT (qtdemux, "Creating entry %d with offset %" - G_GUINT64_FORMAT, (guint) (cur - samples), stream->chunk_offset); + G_GUINT64_FORMAT "and size %d", + (guint) (cur - samples), stream->chunk_offset, cur->size); cur->offset = chunk_offset; chunk_offset += cur->size; @@ -5842,7 +6362,10 @@ qtdemux_parse_samples (GstQTDemux * qtdemux, QtDemuxStream * stream, guint32 n) j, GST_TIME_ARGS (gst_util_uint64_scale (stream->stco_sample_index, GST_SECOND, stream->timescale)), cur->size); - cur->timestamp = stream->stco_sample_index; + cur->timestamp = + stream->stco_sample_index + + gst_util_uint64_scale (stream->elst_offset, stream->timescale, + GST_SECOND); cur->duration = stream->samples_per_chunk; cur->keyframe = TRUE; cur++; @@ -5859,9 +6382,13 @@ qtdemux_parse_samples (GstQTDemux * qtdemux, QtDemuxStream * stream, guint32 n) done2: { guint32 n_sample_times; + gint64 elst_offset; n_sample_times = stream->n_sample_times; cur = first; + elst_offset = + gst_util_uint64_scale (stream->elst_offset, stream->timescale, + GST_SECOND); for (i = stream->stts_index; i < n_sample_times; i++) { guint32 stts_samples; @@ -5893,7 +6420,7 @@ done2: GST_TIME_ARGS (gst_util_uint64_scale (stts_time, GST_SECOND, stream->timescale))); - cur->timestamp = stts_time; + cur->timestamp = stts_time + elst_offset; cur->duration = stts_duration; /* avoid 32-bit wrap-around, @@ -5922,7 +6449,7 @@ done2: (guint) (cur - samples), GST_TIME_ARGS (gst_util_uint64_scale (stream->stts_time, GST_SECOND, stream->timescale))); - cur->timestamp = stream->stts_time; + cur->timestamp = stream->stts_time + elst_offset; cur->duration = -1; } } @@ -6121,12 +6648,17 @@ qtdemux_parse_segments (GstQTDemux * qtdemux, QtDemuxStream * stream, guint32 rate_int; media_time = QT_UINT32 (buffer + 20 + i * 12); + duration = QT_UINT32 (buffer + 16 + i * 12); /* -1 media time is an empty segment, just ignore it */ - if (media_time == G_MAXUINT32) + if (media_time == G_MAXUINT32) { + if (i == 0) { + /* first empty segment specifies sample offset (if movie timescale) */ + stream->elst_offset = + gst_util_uint64_scale (duration, GST_SECOND, qtdemux->timescale); + } continue; - - duration = QT_UINT32 (buffer + 16 + i * 12); + } segment = &stream->segments[count++]; @@ -6255,7 +6787,7 @@ qtdemux_parse_svq3_stsd_data (GstQTDemux * qtdemux, GNode * stsd, seqh_size = QT_UINT32 (data + 4); if (seqh_size > 0) { _seqh = gst_buffer_new_and_alloc (seqh_size); - _gst_buffer_copy_into_mem (_seqh, 0, data + 8, seqh_size); + gst_buffer_fill (_seqh, 0, data + 8, seqh_size); } } } @@ -6474,7 +7006,9 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) GNode *wave; GNode *esds; GNode *pasp; - QtDemuxStream *stream; + GNode *tref; + + QtDemuxStream *stream = NULL; GstTagList *list = NULL; gchar *codec = NULL; const guint8 *stsd_data; @@ -6483,33 +7017,38 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) guint32 tkhd_flags = 0; guint8 tkhd_version = 0; guint32 fourcc; - guint value_size, len; + guint value_size, stsd_len, len; + guint32 track_id; - stream = g_new0 (QtDemuxStream, 1); - /* new streams always need a discont */ - stream->discont = TRUE; - /* we enable clipping for raw audio/video streams */ - stream->need_clip = FALSE; - stream->need_process = FALSE; - stream->segment_index = -1; - stream->time_position = 0; - stream->sample_index = -1; - stream->last_ret = GST_FLOW_OK; + GST_DEBUG_OBJECT (qtdemux, "parse_trak"); if (!qtdemux_tree_get_child_by_type_full (trak, FOURCC_tkhd, &tkhd) || !gst_byte_reader_get_uint8 (&tkhd, &tkhd_version) || !gst_byte_reader_get_uint24_be (&tkhd, &tkhd_flags)) goto corrupt_file; - if ((tkhd_flags & 1) == 0) - goto track_disabled; - /* pick between 64 or 32 bits */ value_size = tkhd_version == 1 ? 8 : 4; if (!gst_byte_reader_skip (&tkhd, value_size * 2) || - !gst_byte_reader_get_uint32_be (&tkhd, &stream->track_id)) + !gst_byte_reader_get_uint32_be (&tkhd, &track_id)) goto corrupt_file; + if (!qtdemux->got_moov) { + if (qtdemux_find_stream (qtdemux, track_id)) + goto existing_stream; + stream = _create_stream (); + stream->track_id = track_id; + } else { + stream = qtdemux_find_stream (qtdemux, track_id); + if (!stream) { + GST_WARNING_OBJECT (qtdemux, "Stream not found, going to ignore it"); + goto skip_track; + } + } + + if ((tkhd_flags & 1) == 0) + stream->disabled = TRUE; + GST_LOG_OBJECT (qtdemux, "track[tkhd] version/flags/id: 0x%02x/%06x/%u", tkhd_version, tkhd_flags, stream->track_id); @@ -6559,6 +7098,21 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) if (G_UNLIKELY (stream->timescale == 0 || qtdemux->timescale == 0)) goto corrupt_file; + if ((tref = qtdemux_tree_get_child_by_type (trak, FOURCC_tref))) { + /* chapters track reference */ + GNode *chap = qtdemux_tree_get_child_by_type (tref, FOURCC_chap); + if (chap) { + gsize length = GST_READ_UINT32_BE (chap->data); + if (qtdemux->chapters_track_id) + GST_FIXME_OBJECT (qtdemux, "Multiple CHAP tracks"); + + if (length >= 12) { + qtdemux->chapters_track_id = + GST_READ_UINT32_BE ((gint8 *) chap->data + 8); + } + } + } + /* fragmented files may have bogus duration in moov */ if (!qtdemux->fragmented && qtdemux->duration != G_MAXINT64 && stream->duration != G_MAXINT32) { @@ -6608,19 +7162,28 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) stsd_data = (const guint8 *) stsd->data; /* stsd should at least have one entry */ - len = QT_UINT32 (stsd_data); - if (len < 24) - goto corrupt_file; + stsd_len = QT_UINT32 (stsd_data); + if (stsd_len < 24) { + /* .. but skip stream with empty stsd produced by some Vivotek cameras */ + if (stream->subtype == FOURCC_vivo) { + g_free (stream); + return TRUE; + } else { + goto corrupt_file; + } + } + + GST_LOG_OBJECT (qtdemux, "stsd len: %d", stsd_len); /* and that entry should fit within stsd */ len = QT_UINT32 (stsd_data + 16); - if (len > QT_UINT32 (stsd_data) + 16) + if (len > stsd_len + 16) goto corrupt_file; - GST_LOG_OBJECT (qtdemux, "stsd len: %d", len); stream->fourcc = fourcc = QT_FOURCC (stsd_data + 16 + 4); GST_LOG_OBJECT (qtdemux, "stsd type: %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (stream->fourcc)); + GST_LOG_OBJECT (qtdemux, "stsd type len: %d", len); if ((fourcc == FOURCC_drms) || (fourcc == FOURCC_drmi) || ((fourcc & 0xFFFFFF00) == GST_MAKE_FOURCC ('e', 'n', 'c', 0))) @@ -6628,6 +7191,9 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) if (stream->subtype == FOURCC_vide) { guint32 w = 0, h = 0; + gboolean gray; + gint depth, palette_size, palette_count; + guint32 *palette_data = NULL; stream->sampled = TRUE; @@ -6651,8 +7217,89 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) stream->bits_per_sample = QT_UINT16 (stsd_data + offset + 82); stream->color_table_id = QT_UINT16 (stsd_data + offset + 84); - GST_LOG_OBJECT (qtdemux, "frame count: %u", - QT_UINT16 (stsd_data + offset + 48)); + GST_LOG_OBJECT (qtdemux, "width %d, height %d, bps %d, color table id %d", + stream->width, stream->height, stream->bits_per_sample, + stream->color_table_id); + + depth = stream->bits_per_sample; + + /* more than 32 bits means grayscale */ + gray = (depth > 32); + /* low 32 bits specify the depth */ + depth &= 0x1F; + + /* different number of palette entries is determined by depth. */ + palette_count = 0; + if ((depth == 1) || (depth == 2) || (depth == 4) || (depth == 8)) + palette_count = (1 << depth); + palette_size = palette_count * 4; + + if (stream->color_table_id) { + switch (palette_count) { + case 0: + break; + case 2: + palette_data = g_memdup (ff_qt_default_palette_2, palette_size); + break; + case 4: + palette_data = g_memdup (ff_qt_default_palette_4, palette_size); + break; + case 16: + if (gray) + palette_data = g_memdup (ff_qt_grayscale_palette_16, palette_size); + else + palette_data = g_memdup (ff_qt_default_palette_16, palette_size); + break; + case 256: + if (gray) + palette_data = g_memdup (ff_qt_grayscale_palette_256, palette_size); + else + palette_data = g_memdup (ff_qt_default_palette_256, palette_size); + break; + default: + GST_ELEMENT_WARNING (qtdemux, STREAM, DEMUX, + (_("The video in this file might not play correctly.")), + ("unsupported palette depth %d", depth)); + break; + } + } else { + gint i, j, start, end; + + if (len < 94) + goto corrupt_file; + + /* read table */ + start = QT_UINT32 (stsd_data + offset + 86); + palette_count = QT_UINT16 (stsd_data + offset + 90); + end = QT_UINT16 (stsd_data + offset + 92); + + GST_LOG_OBJECT (qtdemux, "start %d, end %d, palette_count %d", + start, end, palette_count); + + if (end > 255) + end = 255; + if (start > end) + start = end; + + if (len < 94 + (end - start) * 8) + goto corrupt_file; + + /* palette is always the same size */ + palette_data = g_malloc0 (256 * 4); + palette_size = 256 * 4; + + for (j = 0, i = start; i <= end; j++, i++) { + guint32 a, r, g, b; + + a = QT_UINT16 (stsd_data + offset + 94 + (j * 8)); + r = QT_UINT16 (stsd_data + offset + 96 + (j * 8)); + g = QT_UINT16 (stsd_data + offset + 98 + (j * 8)); + b = QT_UINT16 (stsd_data + offset + 100 + (j * 8)); + + palette_data[i] = ((a & 0xff00) << 16) | ((r & 0xff00) << 8) | + (g & 0xff00) | (b >> 8); + } + } stream->caps = qtdemux_video_caps (qtdemux, stream, fourcc, stsd_data, &codec); @@ -6664,6 +7311,39 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) codec = NULL; } + + if (palette_data) { + GstStructure *s; + + if (stream->rgb8_palette) + gst_memory_unref (stream->rgb8_palette); + stream->rgb8_palette = gst_memory_new_wrapped (GST_MEMORY_FLAG_READONLY, + palette_data, palette_size, 0, palette_size, palette_data, g_free); + + s = gst_caps_get_structure (stream->caps, 0); + + /* non-raw video has a palette_data property. raw video has the palette as + * an extra plane that we append to the output buffers before we push + * them*/ + if (!gst_structure_has_name (s, "video/x-raw")) { + GstBuffer *palette; + + palette = gst_buffer_new (); + gst_buffer_append_memory (palette, stream->rgb8_palette); + stream->rgb8_palette = NULL; + + gst_caps_set_simple (stream->caps, "palette_data", + GST_TYPE_BUFFER, palette, NULL); + gst_buffer_unref (palette); + } + } else if (palette_count != 0) { + GST_ELEMENT_WARNING (qtdemux, STREAM, NOT_IMPLEMENTED, + (NULL), ("Unsupported palette depth %d", depth)); + } + + GST_LOG_OBJECT (qtdemux, "frame count: %u", + QT_UINT16 (stsd_data + offset + 48)); + esds = NULL; pasp = NULL; /* pick 'the' stsd child */ @@ -6687,7 +7367,9 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) gst_qtdemux_handle_esds (qtdemux, stream, esds, list); } else { switch (fourcc) { + case FOURCC_H264: case FOURCC_avc1: + case FOURCC_avc3: { gint len = QT_UINT32 (stsd_data) - 0x66; const guint8 *avc_data = stsd_data + 0x66; @@ -6720,13 +7402,37 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) avc_data + 8 + 1, size - 1); buf = gst_buffer_new_and_alloc (size); - _gst_buffer_copy_into_mem (buf, 0, avc_data + 0x8, size); + gst_buffer_fill (buf, 0, avc_data + 0x8, size); gst_caps_set_simple (stream->caps, "codec_data", GST_TYPE_BUFFER, buf, NULL); gst_buffer_unref (buf); break; } + case FOURCC_strf: + { + GstBuffer *buf; + + GST_DEBUG_OBJECT (qtdemux, "found strf codec_data in stsd"); + + /* First 4 bytes are the length of the atom, the next 4 bytes + * are the fourcc, next 40 bytes are BITMAPINFOHEADER, + * next 1 byte is the version, and the + * subsequent bytes are sequence parameter set like data. */ + + size -= 40; /* we'll be skipping BITMAPINFOHEADER */ + if (size > 1) { + gst_codec_utils_h264_caps_set_level_and_profile (stream->caps, + avc_data + 8 + 40 + 1, size - 1); + + buf = gst_buffer_new_and_alloc (size); + gst_buffer_fill (buf, 0, avc_data + 8 + 40, size); + gst_caps_set_simple (stream->caps, + "codec_data", GST_TYPE_BUFFER, buf, NULL); + gst_buffer_unref (buf); + } + break; + } case FOURCC_btrt: { guint avg_bitrate, max_bitrate; @@ -6799,7 +7505,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) if (len > 0x8) { len -= 0x8; buf = gst_buffer_new_and_alloc (len); - _gst_buffer_copy_into_mem (buf, 0, data + 8, len); + gst_buffer_fill (buf, 0, data + 8, len); gst_caps_set_simple (stream->caps, "codec_data", GST_TYPE_BUFFER, buf, NULL); gst_buffer_unref (buf); @@ -6983,7 +7689,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) if (len > 0x8) { len -= 0x8; buf = gst_buffer_new_and_alloc (len); - _gst_buffer_copy_into_mem (buf, 0, data + 8, len); + gst_buffer_fill (buf, 0, data + 8, len); gst_caps_set_simple (stream->caps, "codec_data", GST_TYPE_BUFFER, buf, NULL); gst_buffer_unref (buf); @@ -7013,13 +7719,14 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) GST_DEBUG_OBJECT (qtdemux, "found codec_data in stsd"); buf = gst_buffer_new_and_alloc (len); - _gst_buffer_copy_into_mem (buf, 0, stsd_data, len); + gst_buffer_fill (buf, 0, stsd_data, len); gst_caps_set_simple (stream->caps, "codec_data", GST_TYPE_BUFFER, buf, NULL); gst_buffer_unref (buf); break; } case FOURCC_rle_: + case FOURCC_WRLE: { gst_caps_set_simple (stream->caps, "depth", G_TYPE_INT, QT_UINT16 (stsd_data + offset + 82), NULL); @@ -7062,7 +7769,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) break; } buf = gst_buffer_new_and_alloc (ovc1_len - 198); - _gst_buffer_copy_into_mem (buf, 0, ovc1_data + 198, ovc1_len - 198); + gst_buffer_fill (buf, 0, ovc1_data + 198, ovc1_len - 198); gst_caps_set_simple (stream->caps, "codec_data", GST_TYPE_BUFFER, buf, NULL); gst_buffer_unref (buf); @@ -7083,6 +7790,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) gboolean amrwb = FALSE; offset = 32; + /* sample description entry (16) + sound sample description v0 (20) */ if (len < 36) goto corrupt_file; @@ -7166,6 +7874,10 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) } if (version == 0x00010000) { + /* sample description entry (16) + sound sample description v1 (20+16) */ + if (len < 52) + goto corrupt_file; + switch (fourcc) { case FOURCC_twos: case FOURCC_sowt: @@ -7204,22 +7916,31 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) guint64 val; } qtfp; - stream->samples_per_packet = QT_UINT32 (stsd_data + offset); + /* sample description entry (16) + sound sample description v2 (56) */ + if (len < 72) + goto corrupt_file; + qtfp.val = QT_UINT64 (stsd_data + offset + 4); stream->rate = qtfp.fp; stream->n_channels = QT_UINT32 (stsd_data + offset + 12); - GST_LOG_OBJECT (qtdemux, "samples/packet: %d", - stream->samples_per_packet); - GST_LOG_OBJECT (qtdemux, "sample rate: %g", stream->rate); - GST_LOG_OBJECT (qtdemux, "n_channels: %d", stream->n_channels); - + GST_LOG_OBJECT (qtdemux, "Sound sample description Version 2"); + GST_LOG_OBJECT (qtdemux, "sample rate: %g", stream->rate); + GST_LOG_OBJECT (qtdemux, "n_channels: %d", stream->n_channels); + GST_LOG_OBJECT (qtdemux, "bits/channel: %d", + QT_UINT32 (stsd_data + offset + 20)); + GST_LOG_OBJECT (qtdemux, "format flags: %X", + QT_UINT32 (stsd_data + offset + 24)); + GST_LOG_OBJECT (qtdemux, "bytes/packet: %d", + QT_UINT32 (stsd_data + offset + 28)); + GST_LOG_OBJECT (qtdemux, "LPCM frames/packet: %d", + QT_UINT32 (stsd_data + offset + 32)); } else { GST_WARNING_OBJECT (qtdemux, "unknown version %08x", version); } - stream->caps = qtdemux_audio_caps (qtdemux, stream, fourcc, NULL, 0, - &codec); + stream->caps = qtdemux_audio_caps (qtdemux, stream, fourcc, + stsd_data + 32, len - 16, &codec); switch (fourcc) { case FOURCC_in24: @@ -7277,7 +7998,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) } wfex = (WAVEFORMATEX *) (owma_data + 36); buf = gst_buffer_new_and_alloc (owma_len - 54); - _gst_buffer_copy_into_mem (buf, 0, owma_data + 54, owma_len - 54); + gst_buffer_fill (buf, 0, owma_data + 54, owma_len - 54); if (wfex->wFormatTag == 0x0161) { codec_name = "Windows Media Audio"; version = 2; @@ -7376,7 +8097,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) headerlen -= 8; headerbuf = gst_buffer_new_and_alloc (headerlen); - _gst_buffer_copy_into_mem (headerbuf, 0, waveheader, headerlen); + gst_buffer_fill (headerbuf, 0, waveheader, headerlen); if (gst_riff_parse_strf_auds (GST_ELEMENT_CAST (qtdemux), headerbuf, &header, &extra)) { @@ -7416,7 +8137,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) if (len > 0x4C) { GstBuffer *buf = gst_buffer_new_and_alloc (len - 0x4C); - _gst_buffer_copy_into_mem (buf, 0, stsd_data + 0x4C, len - 0x4C); + gst_buffer_fill (buf, 0, stsd_data + 0x4C, len - 0x4C); gst_caps_set_simple (stream->caps, "codec_data", GST_TYPE_BUFFER, buf, NULL); gst_buffer_unref (buf); @@ -7452,7 +8173,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) /* codec-data contains alac atom size and prefix, * ffmpeg likes it that way, not quite gst-ish though ...*/ buf = gst_buffer_new_and_alloc (len); - _gst_buffer_copy_into_mem (buf, 0, alac->data, len); + gst_buffer_fill (buf, 0, alac->data, len); gst_caps_set_simple (stream->caps, "codec_data", GST_TYPE_BUFFER, buf, NULL); gst_buffer_unref (buf); @@ -7477,7 +8198,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) GstBuffer *buf = gst_buffer_new_and_alloc (len - 0x34); guint bitrate; - _gst_buffer_copy_into_mem (buf, 0, stsd_data + 0x34, len - 0x34); + gst_buffer_fill (buf, 0, stsd_data + 0x34, len - 0x34); /* If we have enough data, let's try to get the 'damr' atom. See * the 3GPP container spec (26.244) for more details. */ @@ -7512,9 +8233,11 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) goto unknown_stream; } stream->sampled = TRUE; - } else if (stream->subtype == FOURCC_subp || stream->subtype == FOURCC_text) { + } else if (stream->subtype == FOURCC_subp || stream->subtype == FOURCC_text + || stream->subtype == FOURCC_sbtl) { stream->sampled = TRUE; + stream->sparse = TRUE; offset = 16; @@ -7577,6 +8300,10 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) default: break; } + GST_INFO_OBJECT (qtdemux, + "type %" GST_FOURCC_FORMAT " caps %" GST_PTR_FORMAT, + GST_FOURCC_ARGS (fourcc), stream->caps); + } else { /* everything in 1 sample */ stream->sampled = TRUE; @@ -7660,15 +8387,17 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) if (qtdemux->n_streams >= GST_QTDEMUX_MAX_STREAMS) goto too_many_streams; - stream->pending_tags = list; - qtdemux->streams[qtdemux->n_streams] = stream; - qtdemux->n_streams++; - GST_DEBUG_OBJECT (qtdemux, "n_streams is now %d", qtdemux->n_streams); + if (!qtdemux->got_moov) { + stream->pending_tags = list; + qtdemux->streams[qtdemux->n_streams] = stream; + qtdemux->n_streams++; + GST_DEBUG_OBJECT (qtdemux, "n_streams is now %d", qtdemux->n_streams); + } return TRUE; /* ERRORS */ -track_disabled: +skip_track: { GST_INFO_OBJECT (qtdemux, "skip disabled track"); g_free (stream); @@ -7696,6 +8425,14 @@ segments_failed: g_free (stream); return FALSE; } +existing_stream: + { + GST_INFO_OBJECT (qtdemux, "stream with track id %i already exists", + track_id); + if (stream) + g_free (stream); + return TRUE; + } unknown_stream: { GST_INFO_OBJECT (qtdemux, "unknown subtype %" GST_FOURCC_FORMAT, @@ -7808,19 +8545,18 @@ gst_qtdemux_guess_bitrate (GstQTDemux * qtdemux) } static GstFlowReturn -qtdemux_expose_streams (GstQTDemux * qtdemux) +qtdemux_prepare_streams (GstQTDemux * qtdemux) { gint i; GstFlowReturn ret = GST_FLOW_OK; - GST_DEBUG_OBJECT (qtdemux, "exposing streams"); + GST_DEBUG_OBJECT (qtdemux, "prepare streams"); for (i = 0; ret == GST_FLOW_OK && i < qtdemux->n_streams; i++) { QtDemuxStream *stream = qtdemux->streams[i]; guint32 sample_num = 0; guint samples = 20; GArray *durations; - GstTagList *list; GST_DEBUG_OBJECT (qtdemux, "stream %d, id %d, fourcc %" GST_FOURCC_FORMAT, i, stream->track_id, GST_FOURCC_ARGS (stream->fourcc)); @@ -7846,11 +8582,7 @@ qtdemux_expose_streams (GstQTDemux * qtdemux) * in push mode, we'll just have to deal with it */ if (G_UNLIKELY (qtdemux->pullbased && !stream->n_samples)) { GST_DEBUG_OBJECT (qtdemux, "no samples for stream; discarding"); - gst_qtdemux_stream_free (qtdemux, stream); - memmove (&(qtdemux->streams[i]), &(qtdemux->streams[i + 1]), - sizeof (QtDemuxStream *) * (GST_QTDEMUX_MAX_STREAMS - i - 1)); - qtdemux->streams[GST_QTDEMUX_MAX_STREAMS - 1] = NULL; - qtdemux->n_streams--; + gst_qtdemux_remove_stream (qtdemux, i); i--; continue; } @@ -7875,10 +8607,43 @@ qtdemux_expose_streams (GstQTDemux * qtdemux) stream->min_duration = g_array_index (durations, guint32, samples / 2); g_array_free (durations, TRUE); } + } + + return ret; +} + +static GstFlowReturn +qtdemux_expose_streams (GstQTDemux * qtdemux) +{ + gint i; + GstFlowReturn ret = GST_FLOW_OK; + GSList *oldpads = NULL; + GSList *iter; + + GST_DEBUG_OBJECT (qtdemux, "exposing streams"); + + for (i = 0; ret == GST_FLOW_OK && i < qtdemux->n_streams; i++) { + QtDemuxStream *stream = qtdemux->streams[i]; + GstPad *oldpad = stream->pad; + GstTagList *list; + + GST_DEBUG_OBJECT (qtdemux, "stream %d, id %d, fourcc %" GST_FOURCC_FORMAT, + i, stream->track_id, GST_FOURCC_ARGS (stream->fourcc)); + + if ((stream->subtype == FOURCC_text || stream->subtype == FOURCC_sbtl) && + stream->track_id == qtdemux->chapters_track_id) { + /* TODO - parse chapters track and expose it as GstToc; For now just ignore it + so that it doesn't look like a subtitle track */ + gst_qtdemux_remove_stream (qtdemux, i); + i--; + continue; + } /* now we have all info and can expose */ list = stream->pending_tags; stream->pending_tags = NULL; + if (oldpad) + oldpads = g_slist_prepend (oldpads, oldpad); gst_qtdemux_add_stream (qtdemux, stream, list); } @@ -7886,6 +8651,15 @@ qtdemux_expose_streams (GstQTDemux * qtdemux) gst_element_no_more_pads (GST_ELEMENT_CAST (qtdemux)); + for (iter = oldpads; iter; iter = g_slist_next (iter)) { + GstPad *oldpad = iter->data; + + gst_pad_push_event (oldpad, gst_event_new_eos ()); + gst_pad_set_active (oldpad, FALSE); + gst_element_remove_pad (GST_ELEMENT (qtdemux), oldpad); + gst_object_unref (oldpad); + } + /* check if we should post a redirect in case there is a single trak * and it is a redirecting trak */ if (qtdemux->n_streams == 1 && qtdemux->streams[0]->redirect_uri != NULL) { @@ -7901,6 +8675,13 @@ qtdemux_expose_streams (GstQTDemux * qtdemux) qtdemux->posted_redirect = TRUE; } + for (i = 0; i < qtdemux->n_streams; i++) { + QtDemuxStream *stream = qtdemux->streams[i]; + + qtdemux_do_allocation (qtdemux, stream); + } + + qtdemux->exposed = TRUE; return ret; } @@ -8706,7 +9487,7 @@ qtdemux_tag_add_blob (GNode * node, GstQTDemux * demux) data = node->data; len = QT_UINT32 (data); buf = gst_buffer_new_and_alloc (len); - _gst_buffer_copy_into_mem (buf, 0, data, len); + gst_buffer_fill (buf, 0, data, len); /* heuristic to determine style of tag */ if (QT_FOURCC (data + 4) == FOURCC_____ || @@ -8770,6 +9551,8 @@ qtdemux_parse_udta (GstQTDemux * qtdemux, GNode * udta) if (!qtdemux->tag_list) { qtdemux->tag_list = gst_tag_list_new_empty (); gst_tag_list_set_scope (qtdemux->tag_list, GST_TAG_SCOPE_GLOBAL); + } else { + qtdemux->tag_list = gst_tag_list_make_writable (qtdemux->tag_list); } i = 0; @@ -9027,6 +9810,15 @@ qtdemux_parse_tree (GstQTDemux * qtdemux) guint64 creation_time; GstDateTime *datetime = NULL; gint version; + int i; + + /* make sure we have a usable taglist */ + if (!qtdemux->tag_list) { + qtdemux->tag_list = gst_tag_list_new_empty (); + gst_tag_list_set_scope (qtdemux->tag_list, GST_TAG_SCOPE_GLOBAL); + } else { + qtdemux->tag_list = gst_tag_list_make_writable (qtdemux->tag_list); + } mvhd = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_mvhd); if (mvhd == NULL) { @@ -9067,11 +9859,6 @@ qtdemux_parse_tree (GstQTDemux * qtdemux) } } if (datetime) { - if (!qtdemux->tag_list) { - qtdemux->tag_list = gst_tag_list_new_empty (); - gst_tag_list_set_scope (qtdemux->tag_list, GST_TAG_SCOPE_GLOBAL); - } - /* Use KEEP as explicit tags should have a higher priority than mvhd tag */ gst_tag_list_add (qtdemux->tag_list, GST_TAG_MERGE_KEEP, GST_TAG_DATE_TIME, datetime, NULL); @@ -9096,6 +9883,31 @@ qtdemux_parse_tree (GstQTDemux * qtdemux) qtdemux_parse_mehd (qtdemux, &mehd_data); } + /* parse all traks */ + trak = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_trak); + while (trak) { + qtdemux_parse_trak (qtdemux, trak); + /* iterate all siblings */ + trak = qtdemux_tree_get_sibling_by_type (trak, FOURCC_trak); + } + + /* make sure we don't offset samples more than we have to */ + qtdemux->min_elst_offset = GST_CLOCK_TIME_NONE; + for (i = 0; i < qtdemux->n_streams; ++i) { + QtDemuxStream *stream = qtdemux->streams[i]; + if (!GST_CLOCK_TIME_IS_VALID (qtdemux->min_elst_offset) + || stream->elst_offset < qtdemux->min_elst_offset) { + qtdemux->min_elst_offset = stream->elst_offset; + } + } + if (!GST_CLOCK_TIME_IS_VALID (qtdemux->min_elst_offset)) { + qtdemux->min_elst_offset = 0; + } + for (i = 0; i < qtdemux->n_streams; ++i) { + QtDemuxStream *stream = qtdemux->streams[i]; + stream->elst_offset -= qtdemux->min_elst_offset; + } + /* set duration in the segment info */ gst_qtdemux_get_duration (qtdemux, &duration); if (duration) { @@ -9106,14 +9918,6 @@ qtdemux_parse_tree (GstQTDemux * qtdemux) qtdemux->segment.stop = duration; } - /* parse all traks */ - trak = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_trak); - while (trak) { - qtdemux_parse_trak (qtdemux, trak); - /* iterate all siblings */ - trak = qtdemux_tree_get_sibling_by_type (trak, FOURCC_trak); - } - /* find tags */ udta = qtdemux_tree_get_child_by_type (qtdemux->moov_node, FOURCC_udta); if (udta) { @@ -9282,24 +10086,19 @@ gst_qtdemux_handle_esds (GstQTDemux * qtdemux, QtDemuxStream * stream, case 0x64: case 0x65: codec_name = "MPEG-2 video"; - - gst_caps_unref (stream->caps); - stream->caps = gst_caps_new_simple ("video/mpeg", + caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 2, "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); break; - case 0x69: /* MP3 has two different values, accept either */ - case 0x6B: - /* change to mpeg1 layer 3 audio */ - gst_caps_set_simple (stream->caps, "layer", G_TYPE_INT, 3, - "mpegversion", G_TYPE_INT, 1, NULL); - codec_name = "MPEG-1 layer 3"; + case 0x69: /* MPEG-2 BC audio */ + case 0x6B: /* MPEG-1 audio */ + caps = gst_caps_new_simple ("audio/mpeg", + "mpegversion", G_TYPE_INT, 1, "parsed", G_TYPE_BOOLEAN, TRUE, NULL); + codec_name = "MPEG-1 audio"; break; case 0x6A: /* MPEG-1 */ codec_name = "MPEG-1 video"; - - gst_caps_unref (stream->caps); - stream->caps = gst_caps_new_simple ("video/mpeg", + caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1, "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); break; @@ -9349,7 +10148,7 @@ gst_qtdemux_handle_esds (GstQTDemux * qtdemux, QtDemuxStream * stream, GstBuffer *buffer; buffer = gst_buffer_new_and_alloc (data_len); - _gst_buffer_copy_into_mem (buffer, 0, data_ptr, data_len); + gst_buffer_fill (buffer, 0, data_ptr, data_len); GST_DEBUG_OBJECT (qtdemux, "setting codec_data from esds"); GST_MEMDUMP_OBJECT (qtdemux, "codec_data from esds", data_ptr, data_len); @@ -9413,6 +10212,11 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, caps = gst_caps_new_simple ("video/x-svq", "svqversion", G_TYPE_INT, 1, NULL); break; + case GST_MAKE_FOURCC ('W', 'R', 'A', 'W'): + caps = gst_caps_new_empty_simple ("video/x-raw"); + gst_caps_set_simple (caps, "format", G_TYPE_STRING, "RGB8P", NULL); + _codec ("Windows Raw RGB"); + break; case GST_MAKE_FOURCC ('r', 'a', 'w', ' '): { guint16 bps; @@ -9477,15 +10281,46 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, case GST_MAKE_FOURCC ('h', 'd', 'v', '1'): /* HDV 720p30 */ case GST_MAKE_FOURCC ('h', 'd', 'v', '2'): /* HDV 1080i60 */ case GST_MAKE_FOURCC ('h', 'd', 'v', '3'): /* HDV 1080i50 */ + case GST_MAKE_FOURCC ('h', 'd', 'v', '4'): /* HDV 720p24 */ case GST_MAKE_FOURCC ('h', 'd', 'v', '5'): /* HDV 720p25 */ - case GST_MAKE_FOURCC ('h', 'd', 'v', '6'): /* HDV 1080i60 */ + case GST_MAKE_FOURCC ('h', 'd', 'v', '6'): /* HDV 1080p24 */ + case GST_MAKE_FOURCC ('h', 'd', 'v', '7'): /* HDV 1080p25 */ + case GST_MAKE_FOURCC ('h', 'd', 'v', '8'): /* HDV 1080p30 */ + case GST_MAKE_FOURCC ('h', 'd', 'v', '9'): /* HDV 720p60 */ + case GST_MAKE_FOURCC ('h', 'd', 'v', 'a'): /* HDV 720p50 */ case GST_MAKE_FOURCC ('m', 'x', '5', 'n'): /* MPEG2 IMX NTSC 525/60 50mb/s produced by FCP */ case GST_MAKE_FOURCC ('m', 'x', '5', 'p'): /* MPEG2 IMX PAL 625/60 50mb/s produced by FCP */ case GST_MAKE_FOURCC ('m', 'x', '4', 'n'): /* MPEG2 IMX NTSC 525/60 40mb/s produced by FCP */ case GST_MAKE_FOURCC ('m', 'x', '4', 'p'): /* MPEG2 IMX PAL 625/60 40mb/s produced by FCP */ case GST_MAKE_FOURCC ('m', 'x', '3', 'n'): /* MPEG2 IMX NTSC 525/60 30mb/s produced by FCP */ case GST_MAKE_FOURCC ('m', 'x', '3', 'p'): /* MPEG2 IMX PAL 625/50 30mb/s produced by FCP */ - case GST_MAKE_FOURCC ('x', 'd', 'v', '2'): /* XDCAM HD 1080i60 */ + case GST_MAKE_FOURCC ('x', 'd', 'v', '1'): /* XDCAM HD 720p30 35Mb/s */ + case GST_MAKE_FOURCC ('x', 'd', 'v', '2'): /* XDCAM HD 1080i60 35Mb/s */ + case GST_MAKE_FOURCC ('x', 'd', 'v', '3'): /* XDCAM HD 1080i50 35Mb/s */ + case GST_MAKE_FOURCC ('x', 'd', 'v', '4'): /* XDCAM HD 720p24 35Mb/s */ + case GST_MAKE_FOURCC ('x', 'd', 'v', '5'): /* XDCAM HD 720p25 35Mb/s */ + case GST_MAKE_FOURCC ('x', 'd', 'v', '6'): /* XDCAM HD 1080p24 35Mb/s */ + case GST_MAKE_FOURCC ('x', 'd', 'v', '7'): /* XDCAM HD 1080p25 35Mb/s */ + case GST_MAKE_FOURCC ('x', 'd', 'v', '8'): /* XDCAM HD 1080p30 35Mb/s */ + case GST_MAKE_FOURCC ('x', 'd', 'v', '9'): /* XDCAM HD 720p60 35Mb/s */ + case GST_MAKE_FOURCC ('x', 'd', 'v', 'a'): /* XDCAM HD 720p50 35Mb/s */ + case GST_MAKE_FOURCC ('x', 'd', 'v', 'b'): /* XDCAM EX 1080i60 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', 'v', 'c'): /* XDCAM EX 1080i50 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', 'v', 'd'): /* XDCAM HD 1080p24 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', 'v', 'e'): /* XDCAM HD 1080p25 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', 'v', 'f'): /* XDCAM HD 1080p30 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', '5', '1'): /* XDCAM HD422 720p30 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', '5', '4'): /* XDCAM HD422 720p24 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', '5', '5'): /* XDCAM HD422 720p25 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', '5', '9'): /* XDCAM HD422 720p60 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', '5', 'a'): /* XDCAM HD422 720p50 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', '5', 'b'): /* XDCAM HD422 1080i50 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', '5', 'c'): /* XDCAM HD422 1080i50 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', '5', 'd'): /* XDCAM HD422 1080p24 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', '5', 'e'): /* XDCAM HD422 1080p25 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', '5', 'f'): /* XDCAM HD422 1080p30 50Mb/s CBR */ + case GST_MAKE_FOURCC ('x', 'd', 'h', 'd'): /* XDCAM HD 540p */ + case GST_MAKE_FOURCC ('x', 'd', 'h', '2'): /* XDCAM HD422 540p */ case GST_MAKE_FOURCC ('A', 'V', 'm', 'p'): /* AVID IMX PAL */ case GST_MAKE_FOURCC ('m', 'p', 'g', '2'): /* AVID IMX PAL */ _codec ("MPEG-2 video"); @@ -9558,17 +10393,29 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, _codec ("Apple video"); caps = gst_caps_new_empty_simple ("video/x-apple-video"); break; + case GST_MAKE_FOURCC ('H', '2', '6', '4'): case GST_MAKE_FOURCC ('a', 'v', 'c', '1'): _codec ("H.264 / AVC"); caps = gst_caps_new_simple ("video/x-h264", "stream-format", G_TYPE_STRING, "avc", "alignment", G_TYPE_STRING, "au", NULL); break; + case GST_MAKE_FOURCC ('a', 'v', 'c', '3'): + _codec ("H.264 / AVC"); + caps = gst_caps_new_simple ("video/x-h264", + "stream-format", G_TYPE_STRING, "avc3", + "alignment", G_TYPE_STRING, "au", NULL); + break; case GST_MAKE_FOURCC ('r', 'l', 'e', ' '): _codec ("Run-length encoding"); caps = gst_caps_new_simple ("video/x-rle", "layout", G_TYPE_STRING, "quicktime", NULL); break; + case GST_MAKE_FOURCC ('W', 'R', 'L', 'E'): + _codec ("Run-length encoding"); + caps = gst_caps_new_simple ("video/x-rle", + "layout", G_TYPE_STRING, "microsoft", NULL); + break; case GST_MAKE_FOURCC ('I', 'V', '3', '2'): case GST_MAKE_FOURCC ('i', 'v', '3', '2'): _codec ("Indeo Video 3"); @@ -9613,6 +10460,10 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, _codec ("VP3"); caps = gst_caps_new_empty_simple ("video/x-vp3"); break; + case GST_MAKE_FOURCC ('V', 'P', '6', 'F'): + _codec ("VP6 Flash"); + caps = gst_caps_new_empty_simple ("video/x-vp6-flash"); + break; case GST_MAKE_FOURCC ('X', 'i', 'T', 'h'): _codec ("Theora"); caps = gst_caps_new_empty_simple ("video/x-theora"); @@ -9846,7 +10697,7 @@ qtdemux_audio_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, case GST_MAKE_FOURCC ('Q', 'D', 'M', '2'): _codec ("QDesign Music v.2"); /* FIXME: QDesign music version 2 (no constant) */ - if (data) { + if (FALSE && data) { caps = gst_caps_new_simple ("audio/x-qdm2", "framesize", G_TYPE_INT, QT_UINT32 (data + 52), "bitrate", G_TYPE_INT, QT_UINT32 (data + 40), @@ -9884,6 +10735,63 @@ qtdemux_audio_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, _codec ("WMA"); caps = gst_caps_new_empty_simple ("audio/x-wma"); break; + case GST_MAKE_FOURCC ('l', 'p', 'c', 'm'): + { + guint32 flags = 0; + guint32 depth = 0; + guint32 width = 0; + GstAudioFormat format; + enum + { + FLAG_IS_FLOAT = 0x1, + FLAG_IS_BIG_ENDIAN = 0x2, + FLAG_IS_SIGNED = 0x4, + FLAG_IS_PACKED = 0x8, + FLAG_IS_ALIGNED_HIGH = 0x10, + FLAG_IS_NON_INTERLEAVED = 0x20 + }; + _codec ("Raw LPCM audio"); + + if (data && len >= 56) { + depth = QT_UINT32 (data + 40); + flags = QT_UINT32 (data + 44); + width = QT_UINT32 (data + 48) * 8 / stream->n_channels; + } + if ((flags & FLAG_IS_FLOAT) == 0) { + if (depth == 0) + depth = 16; + if (width == 0) + width = 16; + format = gst_audio_format_build_integer ((flags & FLAG_IS_SIGNED) ? + TRUE : FALSE, (flags & FLAG_IS_BIG_ENDIAN) ? + G_BIG_ENDIAN : G_LITTLE_ENDIAN, width, depth); + caps = gst_caps_new_simple ("audio/x-raw", + "format", G_TYPE_STRING, gst_audio_format_to_string (format), + "layout", G_TYPE_STRING, (flags & FLAG_IS_NON_INTERLEAVED) ? + "non-interleaved" : "interleaved", NULL); + } else { + if (depth == 0) + depth = 32; + if (width == 0) + width = 32; + if (width == 64) { + if (flags & FLAG_IS_BIG_ENDIAN) + format = GST_AUDIO_FORMAT_F64BE; + else + format = GST_AUDIO_FORMAT_F64LE; + } else { + if (flags & FLAG_IS_BIG_ENDIAN) + format = GST_AUDIO_FORMAT_F32BE; + else + format = GST_AUDIO_FORMAT_F32LE; + } + caps = gst_caps_new_simple ("audio/x-raw", + "format", G_TYPE_STRING, gst_audio_format_to_string (format), + "layout", G_TYPE_STRING, (flags & FLAG_IS_NON_INTERLEAVED) ? + "non-interleaved" : "interleaved", NULL); + } + break; + } case GST_MAKE_FOURCC ('q', 't', 'v', 'r'): /* ? */ default: @@ -9911,6 +10819,8 @@ qtdemux_audio_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, name = gst_structure_get_name (s); if (g_str_has_prefix (name, "audio/x-raw")) { stream->need_clip = TRUE; + stream->max_buffer_size = 4096 * stream->bytes_per_frame; + GST_DEBUG ("setting max buffer size to %d", stream->max_buffer_size); } return caps; } diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h index a9e50ab53834a77c72e6e2c1cf34012ba194288a..d27134c9b3dface63f5f4fda9f1c17e57bc842c4 100644 --- a/gst/isomp4/qtdemux.h +++ b/gst/isomp4/qtdemux.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ @@ -64,6 +64,9 @@ struct _GstQTDemux { gint n_audio_streams; gint n_sub_streams; + gboolean have_group_id; + guint group_id; + guint major_brand; GstBuffer *comp_brands; GNode *moov_node; @@ -101,6 +104,10 @@ struct _GstQTDemux { /* configured playback region */ GstSegment segment; GstEvent *pending_newsegment; + gboolean upstream_newsegment; + gint64 seek_offset; + gint64 push_seek_start; + gint64 push_seek_stop; #if 0 /* gst index support */ @@ -108,11 +115,19 @@ struct _GstQTDemux { gint index_id; #endif - gint64 requested_seek_time; - guint64 seek_offset; - gboolean upstream_seekable; gint64 upstream_size; + + /* MSS streams have a single media that is unspecified at the atoms, so + * upstream provides it at the caps */ + GstCaps *media_caps; + gboolean exposed; + gboolean mss_mode; /* flag to indicate that we're working with a smoothstreaming fragment */ + guint64 fragment_start; + + gint64 chapters_track_id; + + GstClockTime min_elst_offset; }; struct _GstQTDemuxClass { diff --git a/gst/isomp4/qtdemux_dump.c b/gst/isomp4/qtdemux_dump.c index 952b0c78daf7c9e26672977969d34a415d957336..b62ef174bbe8003f9401e062ba322be41509e076 100644 --- a/gst/isomp4/qtdemux_dump.c +++ b/gst/isomp4/qtdemux_dump.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "qtdemux_types.h" diff --git a/gst/isomp4/qtdemux_dump.h b/gst/isomp4/qtdemux_dump.h index d5486eebf0f6c7c2dddcb8b567362cf485c6eab3..0003ac1350b9ca962bfd35efed598c26fa3ba1c7 100644 --- a/gst/isomp4/qtdemux_dump.h +++ b/gst/isomp4/qtdemux_dump.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_QTDEMUX_DUMP_H__ diff --git a/gst/isomp4/qtdemux_fourcc.h b/gst/isomp4/qtdemux_fourcc.h index b14f91a26d8d506ebe5018f092441544781b5207..6b8bd062efa241f0f30285b886fdf93e5bc261a0 100644 --- a/gst/isomp4/qtdemux_fourcc.h +++ b/gst/isomp4/qtdemux_fourcc.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_QTDEMUX_FOURCC_H__ @@ -65,6 +65,7 @@ G_BEGIN_DECLS #define FOURCC_vide GST_MAKE_FOURCC('v','i','d','e') #define FOURCC_soun GST_MAKE_FOURCC('s','o','u','n') #define FOURCC_subp GST_MAKE_FOURCC('s','u','b','p') +#define FOURCC_sbtl GST_MAKE_FOURCC('s','b','t','l') #define FOURCC_strm GST_MAKE_FOURCC('s','t','r','m') #define FOURCC_rtsp GST_MAKE_FOURCC('r','t','s','p') #define FOURCC_co64 GST_MAKE_FOURCC('c','o','6','4') @@ -138,11 +139,15 @@ G_BEGIN_DECLS #define FOURCC_qtim GST_MAKE_FOURCC('q','t','i','m') #define FOURCC_drms GST_MAKE_FOURCC('d','r','m','s') #define FOURCC_drmi GST_MAKE_FOURCC('d','r','m','i') +#define FOURCC_H264 GST_MAKE_FOURCC('H','2','6','4') +#define FOURCC_strf GST_MAKE_FOURCC('s','t','r','f') #define FOURCC_avc1 GST_MAKE_FOURCC('a','v','c','1') +#define FOURCC_avc3 GST_MAKE_FOURCC('a','v','c','3') #define FOURCC_avcC GST_MAKE_FOURCC('a','v','c','C') #define FOURCC_btrt GST_MAKE_FOURCC('b','t','r','t') #define FOURCC_VP31 GST_MAKE_FOURCC('V','P','3','1') #define FOURCC_rle_ GST_MAKE_FOURCC('r','l','e',' ') +#define FOURCC_WRLE GST_MAKE_FOURCC('W','R','L','E') #define FOURCC_MAC6 GST_MAKE_FOURCC('M','A','C','6') #define FOURCC_MAC3 GST_MAKE_FOURCC('M','A','C','3') #define FOURCC_ima4 GST_MAKE_FOURCC('i','m','a','4') @@ -179,6 +184,7 @@ G_BEGIN_DECLS #define FOURCC_apco GST_MAKE_FOURCC('a','p','c','o') #define FOURCC_ap4h GST_MAKE_FOURCC('a','p','4','h') #define FOURCC_m1v GST_MAKE_FOURCC('m','1','v',' ') +#define FOURCC_vivo GST_MAKE_FOURCC('v','i','v','o') /* SVQ3 fourcc */ #define FOURCC_SEQH GST_MAKE_FOURCC('S','E','Q','H') @@ -239,6 +245,9 @@ G_BEGIN_DECLS /* MPEG DASH */ #define FOURCC_tfdt GST_MAKE_FOURCC('t','f','d','t') +/* Chapters reference */ +#define FOURCC_chap GST_MAKE_FOURCC('c','h','a','p') + G_END_DECLS #endif /* __GST_QTDEMUX_FOURCC_H__ */ diff --git a/gst/isomp4/qtdemux_lang.c b/gst/isomp4/qtdemux_lang.c index 9a46d9075eb3b4fe32946b40783bab352c2f8e66..0c7a5d9f52563eba246eeef4328ec958024ed2c3 100644 --- a/gst/isomp4/qtdemux_lang.c +++ b/gst/isomp4/qtdemux_lang.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "qtdemux.h" diff --git a/gst/isomp4/qtdemux_lang.h b/gst/isomp4/qtdemux_lang.h index a5fdec0fdbc6b8b2ad6ef421ac85ab5deda94c84..707c5f72137b19410d6b8ff0f6ec77ad298d4653 100644 --- a/gst/isomp4/qtdemux_lang.h +++ b/gst/isomp4/qtdemux_lang.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_QTDEMUX_LANG_H__ diff --git a/gst/isomp4/qtdemux_types.c b/gst/isomp4/qtdemux_types.c index 65afc8e2a8e612a9d4a674b731def8385f13b1e8..e9f32cc5b696f42c6f228a02b2428a2b80fd5caa 100644 --- a/gst/isomp4/qtdemux_types.c +++ b/gst/isomp4/qtdemux_types.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "qtdemux_types.h" @@ -171,7 +171,11 @@ static const QtNodeType qt_node_types[] = { qtdemux_dump_mehd}, {FOURCC_ovc1, "ovc1", 0}, {FOURCC_owma, "owma", 0}, + {FOURCC_avcC, "AV codec configuration container", 0}, + {FOURCC_avc1, "AV codec configuration v1", 0}, + {FOURCC_avc3, "AV codec configuration v3", 0}, {FOURCC_tfdt, "Track fragment decode time", 0, qtdemux_dump_tfdt}, + {FOURCC_chap, "Chapter Reference"}, {0, "unknown", 0,}, }; diff --git a/gst/isomp4/qtdemux_types.h b/gst/isomp4/qtdemux_types.h index a22efb8bfcd56a92db3c848c8015f05f64ffe853..57ab4f096805ed7f06075eab4e8878fa0e046d0c 100644 --- a/gst/isomp4/qtdemux_types.h +++ b/gst/isomp4/qtdemux_types.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_QTDEMUX_TYPES_H__ diff --git a/gst/isomp4/qtpalette.h b/gst/isomp4/qtpalette.h index 80ece2aea43826fff0dfd85042be6aae36be1f76..a41e9911cc2062bd6eba9364cf7e30a8c8dac3bb 100644 --- a/gst/isomp4/qtpalette.h +++ b/gst/isomp4/qtpalette.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/law/Makefile.in b/gst/law/Makefile.in index e3a6826a2720e6b29693b5bde984d20abe6acb71..dacde30b778a63bab57174c5154f1fb9daad7a83 100644 --- a/gst/law/Makefile.in +++ b/gst/law/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/law -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,6 +162,7 @@ libgstalaw_la_OBJECTS = $(am_libgstalaw_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstalaw_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstalaw_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstalaw_la_CFLAGS) $(CFLAGS) \ @@ -150,6 +177,18 @@ libgstmulaw_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstmulaw_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstmulaw_la_CFLAGS) $(CFLAGS) \ $(libgstmulaw_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -162,20 +201,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstalaw_la_SOURCES) $(libgstmulaw_la_SOURCES) DIST_SOURCES = $(libgstalaw_la_SOURCES) $(libgstmulaw_la_SOURCES) am__can_run_installinfo = \ @@ -184,6 +219,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -351,6 +403,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -561,6 +614,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -587,14 +641,18 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstalaw.la: $(libgstalaw_la_OBJECTS) $(libgstalaw_la_DEPENDENCIES) $(EXTRA_libgstalaw_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstalaw_la_LINK) -rpath $(plugindir) $(libgstalaw_la_OBJECTS) $(libgstalaw_la_LIBADD) $(LIBS) + libgstmulaw.la: $(libgstmulaw_la_OBJECTS) $(libgstmulaw_la_DEPENDENCIES) $(EXTRA_libgstmulaw_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstmulaw_la_LINK) -rpath $(plugindir) $(libgstmulaw_la_OBJECTS) $(libgstmulaw_la_LIBADD) $(LIBS) @@ -613,22 +671,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmulaw_la-mulaw.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -688,26 +749,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -719,15 +769,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -736,6 +782,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -880,19 +941,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/law/alaw-decode.c b/gst/law/alaw-decode.c index 7b5d936ed2e579be8b82ac9d290c46edac9010ad..e08dc57b0668b934509ff8f54228c9b6cc317f7e 100644 --- a/gst/law/alaw-decode.c +++ b/gst/law/alaw-decode.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-alawdec diff --git a/gst/law/alaw-decode.h b/gst/law/alaw-decode.h index b2d331d56929137e33f6c22abd7e6350afa03f8e..0680f5039c43afe8fc5e3725d1f67971e5b2e455 100644 --- a/gst/law/alaw-decode.h +++ b/gst/law/alaw-decode.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_ALAW_DECODE_H__ diff --git a/gst/law/alaw-encode.c b/gst/law/alaw-encode.c index d286ecf9a5bb38f40429b734fa1b8e4629eac72f..6bcd35e9695acfed64fc814521e1374fc9beeb72 100644 --- a/gst/law/alaw-encode.c +++ b/gst/law/alaw-encode.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-alawenc diff --git a/gst/law/alaw-encode.h b/gst/law/alaw-encode.h index 3ca53a63fcc034cf7ccd0b07c5ca30dd6daef70e..16a61ddd57dc00df543d6750ff510eec26e88c3a 100644 --- a/gst/law/alaw-encode.h +++ b/gst/law/alaw-encode.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/law/alaw.c b/gst/law/alaw.c index 047c0776f7b744887b07431421167c12dfdde1e8..64f7e069f8d63a66ed8e779c3712f88cf4d8a38d 100644 --- a/gst/law/alaw.c +++ b/gst/law/alaw.c @@ -12,8 +12,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/law/mulaw-decode.c b/gst/law/mulaw-decode.c index ba0d4f940057e18407d42f4e5bfa9761edce3c46..a26a34dfc751a2479ca32ee5090b57fec3408576 100644 --- a/gst/law/mulaw-decode.c +++ b/gst/law/mulaw-decode.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-mulawdec @@ -33,6 +33,11 @@ extern GstStaticPadTemplate mulaw_dec_src_factory; extern GstStaticPadTemplate mulaw_dec_sink_factory; +static gboolean gst_mulawdec_set_format (GstAudioDecoder * dec, GstCaps * caps); +static GstFlowReturn gst_mulawdec_handle_frame (GstAudioDecoder * dec, + GstBuffer * buffer); + + /* Stereo signals and args */ enum { @@ -45,278 +50,113 @@ enum ARG_0 }; -static GstStateChangeReturn -gst_mulawdec_change_state (GstElement * element, GstStateChange transition); - -static gboolean gst_mulawdec_event (GstPad * pad, GstObject * parent, - GstEvent * event); -static GstFlowReturn gst_mulawdec_chain (GstPad * pad, GstObject * parent, - GstBuffer * buffer); - #define gst_mulawdec_parent_class parent_class -G_DEFINE_TYPE (GstMuLawDec, gst_mulawdec, GST_TYPE_ELEMENT); +G_DEFINE_TYPE (GstMuLawDec, gst_mulawdec, GST_TYPE_AUDIO_DECODER); static gboolean -mulawdec_setcaps (GstMuLawDec * mulawdec, GstCaps * caps) +gst_mulawdec_set_format (GstAudioDecoder * dec, GstCaps * caps) { + GstMuLawDec *mulawdec = GST_MULAWDEC (dec); GstStructure *structure; int rate, channels; - gboolean ret; - GstCaps *outcaps; GstAudioInfo info; structure = gst_caps_get_structure (caps, 0); - ret = gst_structure_get_int (structure, "rate", &rate); - ret = ret && gst_structure_get_int (structure, "channels", &channels); - if (!ret) - return FALSE; - - gst_audio_info_init (&info); - gst_audio_info_set_format (&info, GST_AUDIO_FORMAT_S16, rate, channels, NULL); - - outcaps = gst_audio_info_to_caps (&info); - ret = gst_pad_set_caps (mulawdec->srcpad, outcaps); - gst_caps_unref (outcaps); - - if (ret) { - GST_DEBUG_OBJECT (mulawdec, "rate=%d, channels=%d", rate, channels); - mulawdec->info = info; + if (!structure) { + GST_ERROR ("failed to get structure from caps"); + goto error_failed_get_structure; } - return ret; -} -static GstCaps * -mulawdec_getcaps (GstPad * pad, GstCaps * filter) -{ - GstMuLawDec *mulawdec; - GstPad *otherpad; - GstCaps *othercaps, *result; - GstCaps *templ; - const gchar *name; - gint i; - - mulawdec = GST_MULAWDEC (GST_PAD_PARENT (pad)); - - /* figure out the name of the caps we are going to return */ - if (pad == mulawdec->srcpad) { - name = "audio/x-raw"; - otherpad = mulawdec->sinkpad; - } else { - name = "audio/x-mulaw"; - otherpad = mulawdec->srcpad; - } - /* get caps from the peer, this can return NULL when there is no peer */ - othercaps = gst_pad_peer_query_caps (otherpad, NULL); - - /* get the template caps to make sure we return something acceptable */ - templ = gst_pad_get_pad_template_caps (pad); - - if (othercaps) { - /* there was a peer */ - othercaps = gst_caps_make_writable (othercaps); - - /* go through the caps and remove the fields we don't want */ - for (i = 0; i < gst_caps_get_size (othercaps); i++) { - GstStructure *structure; - - structure = gst_caps_get_structure (othercaps, i); - - /* adjust the name */ - gst_structure_set_name (structure, name); - - if (pad == mulawdec->sinkpad) { - /* remove the fields we don't want */ - gst_structure_remove_fields (structure, "format", "layout", NULL); - } else { - /* add fixed fields */ - gst_structure_set (structure, "format", G_TYPE_STRING, - GST_AUDIO_NE (S16), "layout", G_TYPE_STRING, "interleaved", NULL); - } - } - /* filter against the allowed caps of the pad to return our result */ - result = gst_caps_intersect (othercaps, templ); - gst_caps_unref (othercaps); - gst_caps_unref (templ); - } else { - /* there was no peer, return the template caps */ - result = templ; + if (!gst_structure_get_int (structure, "rate", &rate)) { + GST_ERROR ("failed to find field rate in input caps"); + goto error_failed_find_rate; } - if (filter && result) { - GstCaps *temp; - temp = gst_caps_intersect (result, filter); - gst_caps_unref (result); - result = temp; + if (!gst_structure_get_int (structure, "channels", &channels)) { + GST_ERROR ("failed to find field channels in input caps"); + goto error_failed_find_channel; } - return result; -} -static gboolean -gst_mulawdec_query (GstPad * pad, GstObject * parent, GstQuery * query) -{ - gboolean res; - - switch (GST_QUERY_TYPE (query)) { - case GST_QUERY_CAPS: - { - GstCaps *filter, *caps; - - gst_query_parse_caps (query, &filter); - caps = mulawdec_getcaps (pad, filter); - gst_query_set_caps_result (query, caps); - gst_caps_unref (caps); - - res = TRUE; - break; - } - default: - res = gst_pad_query_default (pad, parent, query); - break; - } - return res; -} - -static void -gst_mulawdec_class_init (GstMuLawDecClass * klass) -{ - GstElementClass *element_class = (GstElementClass *) klass; - - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&mulaw_dec_src_factory)); - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&mulaw_dec_sink_factory)); - - gst_element_class_set_static_metadata (element_class, "Mu Law audio decoder", - "Codec/Decoder/Audio", - "Convert 8bit mu law to 16bit PCM", - "Zaheer Abbas Merali <zaheerabbas at merali dot org>"); + gst_audio_info_init (&info); + gst_audio_info_set_format (&info, GST_AUDIO_FORMAT_S16, rate, channels, NULL); - element_class->change_state = GST_DEBUG_FUNCPTR (gst_mulawdec_change_state); -} + GST_DEBUG_OBJECT (mulawdec, "rate=%d, channels=%d", rate, channels); -static void -gst_mulawdec_init (GstMuLawDec * mulawdec) -{ - mulawdec->sinkpad = - gst_pad_new_from_static_template (&mulaw_dec_sink_factory, "sink"); - gst_pad_set_query_function (mulawdec->sinkpad, gst_mulawdec_query); - gst_pad_set_event_function (mulawdec->sinkpad, gst_mulawdec_event); - gst_pad_set_chain_function (mulawdec->sinkpad, gst_mulawdec_chain); - gst_element_add_pad (GST_ELEMENT (mulawdec), mulawdec->sinkpad); - - mulawdec->srcpad = - gst_pad_new_from_static_template (&mulaw_dec_src_factory, "src"); - gst_pad_set_query_function (mulawdec->srcpad, gst_mulawdec_query); - gst_element_add_pad (GST_ELEMENT (mulawdec), mulawdec->srcpad); -} + return gst_audio_decoder_set_output_format (dec, &info); -static gboolean -gst_mulawdec_event (GstPad * pad, GstObject * parent, GstEvent * event) -{ - GstMuLawDec *mulawdec; - gboolean res; - - mulawdec = GST_MULAWDEC (parent); - - switch (GST_EVENT_TYPE (event)) { - case GST_EVENT_CAPS: - { - GstCaps *caps; - - gst_event_parse_caps (event, &caps); - mulawdec_setcaps (mulawdec, caps); - gst_event_unref (event); - - res = TRUE; - break; - } - default: - res = gst_pad_event_default (pad, parent, event); - break; - } - return res; +error_failed_find_channel: +error_failed_find_rate: +error_failed_get_structure: + return FALSE; } static GstFlowReturn -gst_mulawdec_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) +gst_mulawdec_handle_frame (GstAudioDecoder * dec, GstBuffer * buffer) { - GstMuLawDec *mulawdec; GstMapInfo inmap, outmap; gint16 *linear_data; guint8 *mulaw_data; gsize mulaw_size, linear_size; GstBuffer *outbuf; - GstFlowReturn ret; - mulawdec = GST_MULAWDEC (parent); + if (!buffer) { + return GST_FLOW_OK; + } - if (G_UNLIKELY (!GST_AUDIO_INFO_IS_VALID (&mulawdec->info))) - goto not_negotiated; + if (!gst_buffer_map (buffer, &inmap, GST_MAP_READ)) { + GST_ERROR ("failed to map input buffer"); + goto error_failed_map_input_buffer; + } - gst_buffer_map (buffer, &inmap, GST_MAP_READ); mulaw_data = inmap.data; mulaw_size = inmap.size; linear_size = mulaw_size * 2; - outbuf = gst_buffer_new_allocate (NULL, linear_size, NULL); - gst_buffer_map (outbuf, &outmap, GST_MAP_WRITE); - linear_data = (gint16 *) outmap.data; - - /* copy discont flag */ - if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); - - GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buffer); - if (GST_BUFFER_DURATION_IS_VALID (buffer)) { - GST_BUFFER_DURATION (outbuf) = GST_BUFFER_DURATION (buffer); - } else { - GST_BUFFER_DURATION (outbuf) = gst_util_uint64_scale_int (GST_SECOND, - linear_size, GST_AUDIO_INFO_RATE (&mulawdec->info) * - GST_AUDIO_INFO_BPF (&mulawdec->info)); + outbuf = gst_audio_decoder_allocate_output_buffer (dec, linear_size); + if (!gst_buffer_map (outbuf, &outmap, GST_MAP_WRITE)) { + GST_ERROR ("failed to map input buffer"); + goto error_failed_map_output_buffer; } + linear_data = (gint16 *) outmap.data; + mulaw_decode (mulaw_data, linear_data, mulaw_size); gst_buffer_unmap (outbuf, &outmap); gst_buffer_unmap (buffer, &inmap); - gst_buffer_unref (buffer); - ret = gst_pad_push (mulawdec->srcpad, outbuf); + return gst_audio_decoder_finish_frame (dec, outbuf, -1); - return ret; +error_failed_map_output_buffer: + gst_buffer_unref (outbuf); - /* ERRORS */ -not_negotiated: - { - GST_WARNING_OBJECT (mulawdec, "no input format set: not-negotiated"); - gst_buffer_unref (buffer); - return GST_FLOW_NOT_NEGOTIATED; - } +error_failed_map_input_buffer: + return GST_FLOW_ERROR; } -static GstStateChangeReturn -gst_mulawdec_change_state (GstElement * element, GstStateChange transition) +static void +gst_mulawdec_class_init (GstMuLawDecClass * klass) { - GstStateChangeReturn ret; - GstMuLawDec *dec = GST_MULAWDEC (element); + GstElementClass *element_class = (GstElementClass *) klass; + GstAudioDecoderClass *audiodec_class = GST_AUDIO_DECODER_CLASS (klass); - switch (transition) { - default: - break; - } + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&mulaw_dec_src_factory)); + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&mulaw_dec_sink_factory)); - ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); - if (ret != GST_STATE_CHANGE_SUCCESS) - return ret; - switch (transition) { - case GST_STATE_CHANGE_PAUSED_TO_READY: - gst_audio_info_init (&dec->info); - break; - default: - break; - } + audiodec_class->set_format = GST_DEBUG_FUNCPTR (gst_mulawdec_set_format); + audiodec_class->handle_frame = GST_DEBUG_FUNCPTR (gst_mulawdec_handle_frame); - return ret; + gst_element_class_set_static_metadata (element_class, "Mu Law audio decoder", + "Codec/Decoder/Audio", + "Convert 8bit mu law to 16bit PCM", + "Zaheer Abbas Merali <zaheerabbas at merali dot org>"); +} + +static void +gst_mulawdec_init (GstMuLawDec * mulawdec) +{ } diff --git a/gst/law/mulaw-decode.h b/gst/law/mulaw-decode.h index 03f0c1569fe41c0667c1ee317bef830da2676312..bed62fa097cc8dce3482e54a74082c52cf02968a 100644 --- a/gst/law/mulaw-decode.h +++ b/gst/law/mulaw-decode.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MULAWDECODE_H__ @@ -22,9 +22,9 @@ #include <gst/gst.h> #include <gst/audio/audio.h> +#include <gst/audio/gstaudiodecoder.h> G_BEGIN_DECLS - #define GST_TYPE_MULAWDEC \ (gst_mulawdec_get_type()) #define GST_MULAWDEC(obj) \ @@ -35,24 +35,20 @@ G_BEGIN_DECLS (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MULAWDEC)) #define GST_IS_MULAWDEC_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MULAWDEC)) - typedef struct _GstMuLawDec GstMuLawDec; typedef struct _GstMuLawDecClass GstMuLawDecClass; -struct _GstMuLawDec { - GstElement element; - - GstPad *sinkpad,*srcpad; - - GstAudioInfo info; +struct _GstMuLawDec +{ + GstAudioDecoder element; }; -struct _GstMuLawDecClass { - GstElementClass parent_class; +struct _GstMuLawDecClass +{ + GstAudioDecoderClass parent_class; }; -GType gst_mulawdec_get_type(void); +GType gst_mulawdec_get_type (void); G_END_DECLS - #endif /* __GST_STEREO_H__ */ diff --git a/gst/law/mulaw-encode.c b/gst/law/mulaw-encode.c index b244c21c706cb1bd83cfb667247b91ccd6001bd9..ed943af52815538d56ce652ad7ba919755f3be9b 100644 --- a/gst/law/mulaw-encode.c +++ b/gst/law/mulaw-encode.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-mulawenc @@ -46,199 +46,88 @@ enum ARG_0 }; -static gboolean gst_mulawenc_event (GstPad * pad, GstObject * parent, - GstEvent * event); -static GstFlowReturn gst_mulawenc_chain (GstPad * pad, GstObject * parent, +static gboolean gst_mulawenc_start (GstAudioEncoder * audioenc); +static gboolean gst_mulawenc_set_format (GstAudioEncoder * enc, + GstAudioInfo * info); +static GstFlowReturn gst_mulawenc_handle_frame (GstAudioEncoder * enc, GstBuffer * buffer); +static void gst_mulawenc_set_tags (GstMuLawEnc * mulawenc); + #define gst_mulawenc_parent_class parent_class -G_DEFINE_TYPE (GstMuLawEnc, gst_mulawenc, GST_TYPE_ELEMENT); +G_DEFINE_TYPE (GstMuLawEnc, gst_mulawenc, GST_TYPE_AUDIO_ENCODER); /*static guint gst_stereo_signals[LAST_SIGNAL] = { 0 }; */ -static GstCaps * -mulawenc_getcaps (GstPad * pad, GstCaps * filter) +static gboolean +gst_mulawenc_start (GstAudioEncoder * audioenc) { - GstMuLawEnc *mulawenc; - GstPad *otherpad; - GstCaps *othercaps, *result; - GstCaps *templ; - const gchar *name; - gint i; - - mulawenc = GST_MULAWENC (GST_PAD_PARENT (pad)); - - /* figure out the name of the caps we are going to return */ - if (pad == mulawenc->srcpad) { - name = "audio/x-mulaw"; - otherpad = mulawenc->sinkpad; - } else { - name = "audio/x-raw"; - otherpad = mulawenc->srcpad; - } - /* get caps from the peer, this can return NULL when there is no peer */ - othercaps = gst_pad_peer_query_caps (otherpad, NULL); - - /* get the template caps to make sure we return something acceptable */ - templ = gst_pad_get_pad_template_caps (pad); - - if (othercaps) { - /* there was a peer */ - othercaps = gst_caps_make_writable (othercaps); - - /* go through the caps and remove the fields we don't want */ - for (i = 0; i < gst_caps_get_size (othercaps); i++) { - GstStructure *structure; - - structure = gst_caps_get_structure (othercaps, i); - - /* adjust the name */ - gst_structure_set_name (structure, name); - - if (pad == mulawenc->srcpad) { - /* remove the fields we don't want */ - gst_structure_remove_fields (structure, "format", NULL); - } else { - /* add fixed fields */ - gst_structure_set (structure, "format", G_TYPE_STRING, - GST_AUDIO_NE (S16), NULL); - } - } - /* filter against the allowed caps of the pad to return our result */ - result = gst_caps_intersect (othercaps, templ); - gst_caps_unref (othercaps); - gst_caps_unref (templ); - } else { - /* there was no peer, return the template caps */ - result = templ; - } - if (filter && result) { - GstCaps *temp; + GstMuLawEnc *mulawenc = GST_MULAWENC (audioenc); - temp = gst_caps_intersect (result, filter); - gst_caps_unref (result); - result = temp; - } + mulawenc->channels = 0; + mulawenc->rate = 0; - return result; + return TRUE; } -static gboolean -gst_mulawenc_query (GstPad * pad, GstObject * parent, GstQuery * query) + +static void +gst_mulawenc_set_tags (GstMuLawEnc * mulawenc) { - gboolean res; - - switch (GST_QUERY_TYPE (query)) { - case GST_QUERY_CAPS: - { - GstCaps *filter, *caps; - - gst_query_parse_caps (query, &filter); - caps = mulawenc_getcaps (pad, filter); - gst_query_set_caps_result (query, caps); - gst_caps_unref (caps); - - res = TRUE; - break; - } - default: - res = gst_pad_query_default (pad, parent, query); - break; - } - return res; + GstTagList *taglist; + guint bitrate; + + /* bitrate of mulaw is 8 bits/sample * sample rate * number of channels */ + bitrate = 8 * mulawenc->rate * mulawenc->channels; + + taglist = gst_tag_list_new_empty (); + gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, + GST_TAG_MAXIMUM_BITRATE, bitrate, NULL); + gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, + GST_TAG_MINIMUM_BITRATE, bitrate, NULL); + gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, + GST_TAG_BITRATE, bitrate, NULL); + + gst_audio_encoder_merge_tags (GST_AUDIO_ENCODER (mulawenc), + taglist, GST_TAG_MERGE_REPLACE); + + gst_tag_list_unref (taglist); } static gboolean -mulawenc_setcaps (GstMuLawEnc * mulawenc, GstCaps * caps) +gst_mulawenc_set_format (GstAudioEncoder * audioenc, GstAudioInfo * info) { - GstStructure *structure; GstCaps *base_caps; + GstStructure *structure; + GstMuLawEnc *mulawenc = GST_MULAWENC (audioenc); + gboolean ret; - structure = gst_caps_get_structure (caps, 0); - gst_structure_get_int (structure, "channels", &mulawenc->channels); - gst_structure_get_int (structure, "rate", &mulawenc->rate); + mulawenc->rate = info->rate; + mulawenc->channels = info->channels; - base_caps = gst_pad_get_pad_template_caps (mulawenc->srcpad); + base_caps = + gst_pad_get_pad_template_caps (GST_AUDIO_ENCODER_SRC_PAD (audioenc)); + g_assert (base_caps); base_caps = gst_caps_make_writable (base_caps); + g_assert (base_caps); structure = gst_caps_get_structure (base_caps, 0); + g_assert (structure); gst_structure_set (structure, "rate", G_TYPE_INT, mulawenc->rate, NULL); gst_structure_set (structure, "channels", G_TYPE_INT, mulawenc->channels, NULL); - gst_pad_set_caps (mulawenc->srcpad, base_caps); + gst_mulawenc_set_tags (mulawenc); + ret = gst_audio_encoder_set_output_format (audioenc, base_caps); gst_caps_unref (base_caps); - return TRUE; -} - -static void -gst_mulawenc_class_init (GstMuLawEncClass * klass) -{ - GstElementClass *element_class = GST_ELEMENT_CLASS (klass); - - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&mulaw_enc_src_factory)); - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&mulaw_enc_sink_factory)); - - gst_element_class_set_static_metadata (element_class, "Mu Law audio encoder", - "Codec/Encoder/Audio", - "Convert 16bit PCM to 8bit mu law", - "Zaheer Abbas Merali <zaheerabbas at merali dot org>"); -} - -static void -gst_mulawenc_init (GstMuLawEnc * mulawenc) -{ - mulawenc->sinkpad = - gst_pad_new_from_static_template (&mulaw_enc_sink_factory, "sink"); - gst_pad_set_query_function (mulawenc->sinkpad, gst_mulawenc_query); - gst_pad_set_event_function (mulawenc->sinkpad, gst_mulawenc_event); - gst_pad_set_chain_function (mulawenc->sinkpad, gst_mulawenc_chain); - gst_element_add_pad (GST_ELEMENT (mulawenc), mulawenc->sinkpad); - - mulawenc->srcpad = - gst_pad_new_from_static_template (&mulaw_enc_src_factory, "src"); - gst_pad_set_query_function (mulawenc->srcpad, gst_mulawenc_query); - gst_element_add_pad (GST_ELEMENT (mulawenc), mulawenc->srcpad); - - /* init rest */ - mulawenc->channels = 0; - mulawenc->rate = 0; -} - -static gboolean -gst_mulawenc_event (GstPad * pad, GstObject * parent, GstEvent * event) -{ - GstMuLawEnc *mulawenc; - gboolean res; - - mulawenc = GST_MULAWENC (parent); - - switch (GST_EVENT_TYPE (event)) { - case GST_EVENT_CAPS: - { - GstCaps *caps; - - gst_event_parse_caps (event, &caps); - mulawenc_setcaps (mulawenc, caps); - gst_event_unref (event); - - res = TRUE; - break; - } - default: - res = gst_pad_event_default (pad, parent, event); - break; - } - return res; + return ret; } static GstFlowReturn -gst_mulawenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) +gst_mulawenc_handle_frame (GstAudioEncoder * audioenc, GstBuffer * buffer) { GstMuLawEnc *mulawenc; GstMapInfo inmap, outmap; @@ -248,9 +137,13 @@ gst_mulawenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) guint mulaw_size; GstBuffer *outbuf; GstFlowReturn ret; - GstClockTime timestamp, duration; - mulawenc = GST_MULAWENC (parent); + if (!buffer) { + ret = GST_FLOW_OK; + goto done; + } + + mulawenc = GST_MULAWENC (audioenc); if (!mulawenc->rate || !mulawenc->channels) goto not_negotiated; @@ -261,33 +154,19 @@ gst_mulawenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) mulaw_size = linear_size / 2; - timestamp = GST_BUFFER_TIMESTAMP (buffer); - duration = GST_BUFFER_DURATION (buffer); + outbuf = gst_audio_encoder_allocate_output_buffer (audioenc, mulaw_size); - outbuf = gst_buffer_new_allocate (NULL, mulaw_size, NULL); - - if (duration == -1) { - duration = gst_util_uint64_scale_int (mulaw_size, - GST_SECOND, mulawenc->rate * mulawenc->channels); - } + g_assert (outbuf); gst_buffer_map (outbuf, &outmap, GST_MAP_WRITE); mulaw_data = outmap.data; - /* copy discont flag */ - if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); - - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; - GST_BUFFER_DURATION (outbuf) = duration; - mulaw_encode (linear_data, mulaw_data, mulaw_size); gst_buffer_unmap (outbuf, &outmap); gst_buffer_unmap (buffer, &inmap); - gst_buffer_unref (buffer); - ret = gst_pad_push (mulawenc->srcpad, outbuf); + ret = gst_audio_encoder_finish_frame (audioenc, outbuf, -1); done: @@ -297,7 +176,36 @@ not_negotiated: { GST_DEBUG_OBJECT (mulawenc, "no format negotiated"); ret = GST_FLOW_NOT_NEGOTIATED; - gst_buffer_unref (buffer); goto done; } } + + + +static void +gst_mulawenc_class_init (GstMuLawEncClass * klass) +{ + GstElementClass *element_class = GST_ELEMENT_CLASS (klass); + GstAudioEncoderClass *audio_encoder_class = GST_AUDIO_ENCODER_CLASS (klass); + + audio_encoder_class->start = GST_DEBUG_FUNCPTR (gst_mulawenc_start); + audio_encoder_class->set_format = GST_DEBUG_FUNCPTR (gst_mulawenc_set_format); + audio_encoder_class->handle_frame = + GST_DEBUG_FUNCPTR (gst_mulawenc_handle_frame); + + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&mulaw_enc_src_factory)); + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&mulaw_enc_sink_factory)); + + gst_element_class_set_static_metadata (element_class, "Mu Law audio encoder", + "Codec/Encoder/Audio", + "Convert 16bit PCM to 8bit mu law", + "Zaheer Abbas Merali <zaheerabbas at merali dot org>"); +} + +static void +gst_mulawenc_init (GstMuLawEnc * mulawenc) +{ + +} diff --git a/gst/law/mulaw-encode.h b/gst/law/mulaw-encode.h index f428c3c5096868a52c443a06bae8fda9aedacae0..c5ade39c1ec2bb555cee5e6aa741bc878b89a1f7 100644 --- a/gst/law/mulaw-encode.h +++ b/gst/law/mulaw-encode.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ @@ -22,9 +22,9 @@ #define __GST_MULAWENCODE_H__ #include <gst/gst.h> +#include <gst/audio/gstaudioencoder.h> G_BEGIN_DECLS - #define GST_TYPE_MULAWENC \ (gst_mulawenc_get_type()) #define GST_MULAWENC(obj) \ @@ -35,25 +35,23 @@ G_BEGIN_DECLS (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MULAWENC)) #define GST_IS_MULAWENC_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MULAWENC)) - typedef struct _GstMuLawEnc GstMuLawEnc; typedef struct _GstMuLawEncClass GstMuLawEncClass; -struct _GstMuLawEnc { - GstElement element; - - GstPad *sinkpad,*srcpad; +struct _GstMuLawEnc +{ + GstAudioEncoder element; gint channels; gint rate; }; -struct _GstMuLawEncClass { - GstElementClass parent_class; +struct _GstMuLawEncClass +{ + GstAudioEncoderClass parent_class; }; -GType gst_mulawenc_get_type(void); +GType gst_mulawenc_get_type (void); G_END_DECLS - #endif /* __GST_STEREO_H__ */ diff --git a/gst/law/mulaw.c b/gst/law/mulaw.c index ad143be4872a7ee4d8c4af9d854052af5ca4060b..a2e614df7dccd26887136cbfdc43f0adf7545059 100644 --- a/gst/law/mulaw.c +++ b/gst/law/mulaw.c @@ -12,8 +12,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/level/Makefile.in b/gst/level/Makefile.in index d4ffd863a5a560004781608a371848ffd3bc9a21..ec3c0038296b9248b29c26df505033ba4cfa3ece 100644 --- a/gst/level/Makefile.in +++ b/gst/level/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/level -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -135,10 +161,23 @@ libgstlevel_la_OBJECTS = $(am_libgstlevel_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstlevel_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstlevel_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstlevel_la_CFLAGS) $(CFLAGS) \ $(libgstlevel_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -151,20 +190,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstlevel_la_SOURCES) DIST_SOURCES = $(libgstlevel_la_SOURCES) am__can_run_installinfo = \ @@ -173,6 +208,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -340,6 +392,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -541,6 +594,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -567,12 +621,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstlevel.la: $(libgstlevel_la_OBJECTS) $(libgstlevel_la_DEPENDENCIES) $(EXTRA_libgstlevel_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstlevel_la_LINK) -rpath $(plugindir) $(libgstlevel_la_OBJECTS) $(libgstlevel_la_LIBADD) $(LIBS) @@ -585,22 +642,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlevel_la-gstlevel.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -618,26 +678,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -649,15 +698,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -666,6 +711,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -810,19 +870,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/level/gstlevel.c b/gst/level/gstlevel.c index 19e02bceef7e93ae3dff68639c9aafd267ae1be0..59943d488e3e7506bd3273a72c43abb83217de3d 100644 --- a/gst/level/gstlevel.c +++ b/gst/level/gstlevel.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -146,8 +146,9 @@ GST_STATIC_PAD_TEMPLATE ("src", enum { PROP_0, - PROP_SIGNAL_LEVEL, - PROP_SIGNAL_INTERVAL, + PROP_POST_MESSAGES, + PROP_MESSAGE, + PROP_INTERVAL, PROP_PEAK_TTL, PROP_PEAK_FALLOFF }; @@ -182,11 +183,30 @@ gst_level_class_init (GstLevelClass * klass) gobject_class->get_property = gst_level_get_property; gobject_class->finalize = gst_level_finalize; - g_object_class_install_property (gobject_class, PROP_SIGNAL_LEVEL, + /** + * GstLevel:post-messages + * + * Post messages on the bus with level information. + * + * Since: 1.1.0 + */ + g_object_class_install_property (gobject_class, PROP_POST_MESSAGES, + g_param_spec_boolean ("post-messages", "Post Messages", + "Whether to post a 'level' element message on the bus for each " + "passed interval", TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /* FIXME(2.0): remove this property */ + /** + * GstLevel:post-messages + * + * Post messages on the bus with level information. + * + * Deprecated: use the #GstLevel:post-messages property + */ + g_object_class_install_property (gobject_class, PROP_MESSAGE, g_param_spec_boolean ("message", "message", - "Post a level message for each passed interval", + "Post a 'level' message for each passed interval (deprecated)", TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - g_object_class_install_property (gobject_class, PROP_SIGNAL_INTERVAL, + g_object_class_install_property (gobject_class, PROP_INTERVAL, g_param_spec_uint64 ("interval", "Interval", "Interval of time between message posts (in nanoseconds)", 1, G_MAXUINT64, GST_SECOND / 10, @@ -224,6 +244,10 @@ gst_level_init (GstLevel * filter) { filter->CS = NULL; filter->peak = NULL; + filter->last_peak = NULL; + filter->decay_peak = NULL; + filter->decay_peak_base = NULL; + filter->decay_peak_age = NULL; gst_audio_info_init (&filter->info); @@ -231,7 +255,7 @@ gst_level_init (GstLevel * filter) filter->decay_peak_ttl = GST_SECOND / 10 * 3; filter->decay_peak_falloff = 10.0; /* dB falloff (/sec) */ - filter->message = TRUE; + filter->post_messages = TRUE; filter->process = NULL; @@ -267,10 +291,12 @@ gst_level_set_property (GObject * object, guint prop_id, GstLevel *filter = GST_LEVEL (object); switch (prop_id) { - case PROP_SIGNAL_LEVEL: - filter->message = g_value_get_boolean (value); + case PROP_POST_MESSAGES: + /* fall-through */ + case PROP_MESSAGE: + filter->post_messages = g_value_get_boolean (value); break; - case PROP_SIGNAL_INTERVAL: + case PROP_INTERVAL: filter->interval = g_value_get_uint64 (value); if (GST_AUDIO_INFO_RATE (&filter->info)) { filter->interval_frames = @@ -298,10 +324,12 @@ gst_level_get_property (GObject * object, guint prop_id, GstLevel *filter = GST_LEVEL (object); switch (prop_id) { - case PROP_SIGNAL_LEVEL: - g_value_set_boolean (value, filter->message); + case PROP_POST_MESSAGES: + /* fall-through */ + case PROP_MESSAGE: + g_value_set_boolean (value, filter->post_messages); break; - case PROP_SIGNAL_INTERVAL: + case PROP_INTERVAL: g_value_set_uint64 (value, filter->interval); break; case PROP_PEAK_TTL: @@ -326,11 +354,11 @@ gst_level_get_property (GObject * object, guint prop_id, * * caller must assure num is a multiple of channels * samples for multiple channels are interleaved - * input sample data enters in *in_data as 8 or 16 bit data + * input sample data enters in *in_data and is not modified * this filter only accepts signed audio data, so mid level is always 0 * - * for 16 bit, this code considers the non-existant 32768 value to be - * full-scale; so 32767 will not map to 1.0 + * for integers, this code considers the non-existant positive max value to be + * full-scale; so max-1 will not map to 1.0 */ #define DEFINE_INT_LEVEL_CALCULATOR(TYPE, RESOLUTION) \ @@ -340,23 +368,21 @@ gst_level_calculate_##TYPE (gpointer data, guint num, guint channels, \ { \ TYPE * in = (TYPE *)data; \ register guint j; \ - gdouble squaresum = 0.0; /* square sum of the integer samples */ \ + gdouble squaresum = 0.0; /* square sum of the input samples */ \ register gdouble square = 0.0; /* Square */ \ register gdouble peaksquare = 0.0; /* Peak Square Sample */ \ - gdouble normalizer; /* divisor to get a [-1.0, 1.0] range */ \ + gdouble normalizer; /* divisor to get a [-1.0, 1.0] range */ \ \ /* *NCS = 0.0; Normalized Cumulative Square */ \ - /* *NPS = 0.0; Normalized Peask Square */ \ + /* *NPS = 0.0; Normalized Peak Square */ \ \ - normalizer = (gdouble) (G_GINT64_CONSTANT(1) << (RESOLUTION * 2)); \ - \ - for (j = 0; j < num; j += channels) \ - { \ + for (j = 0; j < num; j += channels) { \ square = ((gdouble) in[j]) * in[j]; \ if (square > peaksquare) peaksquare = square; \ squaresum += square; \ } \ \ + normalizer = (gdouble) (G_GINT64_CONSTANT(1) << (RESOLUTION * 2)); \ *NCS = squaresum / normalizer; \ *NPS = peaksquare / normalizer; \ } @@ -373,16 +399,15 @@ gst_level_calculate_##TYPE (gpointer data, guint num, guint channels, \ { \ TYPE * in = (TYPE *)data; \ register guint j; \ - gdouble squaresum = 0.0; /* square sum of the integer samples */ \ + gdouble squaresum = 0.0; /* square sum of the input samples */ \ register gdouble square = 0.0; /* Square */ \ register gdouble peaksquare = 0.0; /* Peak Square Sample */ \ \ /* *NCS = 0.0; Normalized Cumulative Square */ \ - /* *NPS = 0.0; Normalized Peask Square */ \ + /* *NPS = 0.0; Normalized Peak Square */ \ \ /* orc_level_squaresum_f64(&squaresum,in,num); */ \ - for (j = 0; j < num; j += channels) \ - { \ + for (j = 0; j < num; j += channels) { \ square = ((gdouble) in[j]) * in[j]; \ if (square > peaksquare) peaksquare = square; \ squaresum += square; \ @@ -474,6 +499,7 @@ gst_level_start (GstBaseTransform * trans) GstLevel *filter = GST_LEVEL (trans); filter->num_frames = 0; + filter->message_ts = GST_CLOCK_TIME_NONE; return TRUE; } @@ -556,9 +582,11 @@ gst_level_transform_ip (GstBaseTransform * trans, GstBuffer * in) gsize in_size; gdouble CS; guint i; - guint num_frames = 0; + guint num_frames; guint num_int_samples = 0; /* number of interleaved samples * ie. total count for all channels combined */ + guint block_size, block_int_size; /* we subdivide buffers to not skip message + * intervals */ GstClockTimeDiff falloff_time; gint channels, rate, bps; @@ -579,75 +607,87 @@ gst_level_transform_ip (GstBaseTransform * trans, GstBuffer * in) g_return_val_if_fail (num_int_samples % channels == 0, GST_FLOW_ERROR); + if (GST_BUFFER_FLAG_IS_SET (in, GST_BUFFER_FLAG_DISCONT)) { + filter->message_ts = GST_BUFFER_TIMESTAMP (in); + filter->num_frames = 0; + } + if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (filter->message_ts))) { + filter->message_ts = GST_BUFFER_TIMESTAMP (in); + } + num_frames = num_int_samples / channels; + while (num_frames > 0) { + block_size = filter->interval_frames - filter->num_frames; + block_size = MIN (block_size, num_frames); + block_int_size = block_size * channels; - for (i = 0; i < channels; ++i) { - if (!GST_BUFFER_FLAG_IS_SET (in, GST_BUFFER_FLAG_GAP)) { - filter->process (in_data, num_int_samples, channels, &CS, - &filter->peak[i]); - GST_LOG_OBJECT (filter, - "channel %d, cumulative sum %f, peak %f, over %d samples/%d channels", - i, CS, filter->peak[i], num_int_samples, channels); - filter->CS[i] += CS; - } else { - filter->peak[i] = 0.0; - } - in_data += bps; - - filter->decay_peak_age[i] += GST_FRAMES_TO_CLOCK_TIME (num_frames, rate); - GST_LOG_OBJECT (filter, "filter peak info [%d]: decay peak %f, age %" - GST_TIME_FORMAT, i, - filter->decay_peak[i], GST_TIME_ARGS (filter->decay_peak_age[i])); - - /* update running peak */ - if (filter->peak[i] > filter->last_peak[i]) - filter->last_peak[i] = filter->peak[i]; - - /* make decay peak fall off if too old */ - falloff_time = - GST_CLOCK_DIFF (gst_gdouble_to_guint64 (filter->decay_peak_ttl), - filter->decay_peak_age[i]); - if (falloff_time > 0) { - gdouble falloff_dB; - gdouble falloff; - gdouble length; /* length of falloff time in seconds */ - - length = (gdouble) falloff_time / (gdouble) GST_SECOND; - falloff_dB = filter->decay_peak_falloff * length; - falloff = pow (10, falloff_dB / -20.0); + for (i = 0; i < channels; ++i) { + if (!GST_BUFFER_FLAG_IS_SET (in, GST_BUFFER_FLAG_GAP)) { + filter->process (in_data, block_int_size, channels, &CS, + &filter->peak[i]); + GST_LOG_OBJECT (filter, + "[%d]: cumulative squares %lf, over %d samples/%d channels", + i, CS, block_int_size, channels); + filter->CS[i] += CS; + } else { + filter->peak[i] = 0.0; + } + in_data += bps; + filter->decay_peak_age[i] += GST_FRAMES_TO_CLOCK_TIME (num_frames, rate); GST_LOG_OBJECT (filter, - "falloff: current %f, base %f, interval %" GST_TIME_FORMAT - ", dB falloff %f, factor %e", - filter->decay_peak[i], filter->decay_peak_base[i], - GST_TIME_ARGS (falloff_time), falloff_dB, falloff); - filter->decay_peak[i] = filter->decay_peak_base[i] * falloff; - GST_LOG_OBJECT (filter, - "peak is %" GST_TIME_FORMAT " old, decayed with factor %e to %f", - GST_TIME_ARGS (filter->decay_peak_age[i]), falloff, - filter->decay_peak[i]); - } else { - GST_LOG_OBJECT (filter, "peak not old enough, not decaying"); - } + "[%d]: peak %f, last peak %f, decay peak %f, age %" GST_TIME_FORMAT, + i, filter->peak[i], filter->last_peak[i], filter->decay_peak[i], + GST_TIME_ARGS (filter->decay_peak_age[i])); + + /* update running peak */ + if (filter->peak[i] > filter->last_peak[i]) + filter->last_peak[i] = filter->peak[i]; + + /* make decay peak fall off if too old */ + falloff_time = + GST_CLOCK_DIFF (gst_gdouble_to_guint64 (filter->decay_peak_ttl), + filter->decay_peak_age[i]); + if (falloff_time > 0) { + gdouble falloff_dB; + gdouble falloff; + gdouble length; /* length of falloff time in seconds */ + + length = (gdouble) falloff_time / (gdouble) GST_SECOND; + falloff_dB = filter->decay_peak_falloff * length; + falloff = pow (10, falloff_dB / -20.0); + + GST_LOG_OBJECT (filter, + "falloff: current %f, base %f, interval %" GST_TIME_FORMAT + ", dB falloff %f, factor %e", + filter->decay_peak[i], filter->decay_peak_base[i], + GST_TIME_ARGS (falloff_time), falloff_dB, falloff); + filter->decay_peak[i] = filter->decay_peak_base[i] * falloff; + GST_LOG_OBJECT (filter, + "peak is %" GST_TIME_FORMAT " old, decayed with factor %e to %f", + GST_TIME_ARGS (filter->decay_peak_age[i]), falloff, + filter->decay_peak[i]); + } else { + GST_LOG_OBJECT (filter, "peak not old enough, not decaying"); + } - /* if the peak of this run is higher, the decay peak gets reset */ - if (filter->peak[i] >= filter->decay_peak[i]) { - GST_LOG_OBJECT (filter, "new peak, %f", filter->peak[i]); - filter->decay_peak[i] = filter->peak[i]; - filter->decay_peak_base[i] = filter->peak[i]; - filter->decay_peak_age[i] = G_GINT64_CONSTANT (0); + /* if the peak of this run is higher, the decay peak gets reset */ + if (filter->peak[i] >= filter->decay_peak[i]) { + GST_LOG_OBJECT (filter, "new peak, %f", filter->peak[i]); + filter->decay_peak[i] = filter->peak[i]; + filter->decay_peak_base[i] = filter->peak[i]; + filter->decay_peak_age[i] = G_GINT64_CONSTANT (0); + } } - } + in_data += ((block_int_size * bps) - bps); - if (G_UNLIKELY (!filter->num_frames)) { - /* remember start timestamp for message */ - filter->message_ts = GST_BUFFER_TIMESTAMP (in); - } - filter->num_frames += num_frames; + filter->num_frames += block_size; + num_frames -= block_size; - /* do we need to message ? */ - if (filter->num_frames >= filter->interval_frames) { - gst_level_post_message (filter); + /* do we need to message ? */ + if (filter->num_frames >= filter->interval_frames) { + gst_level_post_message (filter); + } } gst_buffer_unmap (in, &map); @@ -659,37 +699,36 @@ static void gst_level_post_message (GstLevel * filter) { guint i; - gint channels, rate; + gint channels, rate, frames = filter->num_frames; + GstClockTime duration; channels = GST_AUDIO_INFO_CHANNELS (&filter->info); rate = GST_AUDIO_INFO_RATE (&filter->info); + duration = GST_FRAMES_TO_CLOCK_TIME (frames, rate); - - if (filter->message) { - GstMessage *m; - GstClockTime duration = GST_FRAMES_TO_CLOCK_TIME (filter->num_frames, rate); - - m = gst_level_message_new (filter, filter->message_ts, duration); + if (filter->post_messages) { + GstMessage *m = + gst_level_message_new (filter, filter->message_ts, duration); GST_LOG_OBJECT (filter, - "message: ts %" GST_TIME_FORMAT ", num_frames %d", - GST_TIME_ARGS (filter->message_ts), filter->num_frames); + "message: ts %" GST_TIME_FORMAT ", duration %" GST_TIME_FORMAT + ", num_frames %d", GST_TIME_ARGS (filter->message_ts), + GST_TIME_ARGS (duration), frames); for (i = 0; i < channels; ++i) { gdouble RMS; - gdouble RMSdB, lastdB, decaydB; + gdouble RMSdB, peakdB, decaydB; - RMS = sqrt (filter->CS[i] / filter->num_frames); + RMS = sqrt (filter->CS[i] / frames); GST_LOG_OBJECT (filter, - "message: channel %d, CS %f, num_frames %d, RMS %f", - i, filter->CS[i], filter->num_frames, RMS); + "message: channel %d, CS %f, RMS %f", i, filter->CS[i], RMS); GST_LOG_OBJECT (filter, "message: last_peak: %f, decay_peak: %f", filter->last_peak[i], filter->decay_peak[i]); /* RMS values are calculated in amplitude, so 20 * log 10 */ RMSdB = 20 * log10 (RMS + EPSILON); /* peak values are square sums, ie. power, so 10 * log 10 */ - lastdB = 10 * log10 (filter->last_peak[i] + EPSILON); + peakdB = 10 * log10 (filter->last_peak[i] + EPSILON); decaydB = 10 * log10 (filter->decay_peak[i] + EPSILON); if (filter->decay_peak[i] < filter->last_peak[i]) { @@ -697,14 +736,14 @@ gst_level_post_message (GstLevel * filter) * the last peak is between decay_peak and decay_peak_base */ GST_DEBUG_OBJECT (filter, "message: decay peak dB %f smaller than last peak dB %f, copying", - decaydB, lastdB); + decaydB, peakdB); filter->decay_peak[i] = filter->last_peak[i]; } GST_LOG_OBJECT (filter, "message: RMS %f dB, peak %f dB, decay %f dB", - RMSdB, lastdB, decaydB); + RMSdB, peakdB, decaydB); - gst_level_message_append_channel (m, RMSdB, lastdB, decaydB); + gst_level_message_append_channel (m, RMSdB, peakdB, decaydB); /* reset cumulative and normal peak */ filter->CS[i] = 0.0; @@ -712,8 +751,10 @@ gst_level_post_message (GstLevel * filter) } gst_element_post_message (GST_ELEMENT (filter), m); + } - filter->num_frames = 0; + filter->num_frames -= frames; + filter->message_ts += duration; } diff --git a/gst/level/gstlevel.h b/gst/level/gstlevel.h index ae9ba3a946a08e5a1774a6031e4be23cc57398d7..e6d927ae6dad0a1f76848a197fa23c0a3f742664 100644 --- a/gst/level/gstlevel.h +++ b/gst/level/gstlevel.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ @@ -56,13 +56,13 @@ typedef struct _GstLevelClass GstLevelClass; struct _GstLevel { GstBaseTransform element; - gboolean message; /* whether or not to post messages */ - guint64 interval; /* how many seconds between emits */ + /* properties */ + gboolean post_messages; /* whether or not to post messages */ + guint64 interval; /* how many nanoseconds between emits */ + gdouble decay_peak_ttl; /* time to live for peak in nanoseconds */ + gdouble decay_peak_falloff; /* falloff in dB/sec */ GstAudioInfo info; - - gdouble decay_peak_ttl; /* time to live for peak in seconds */ - gdouble decay_peak_falloff; /* falloff in dB/sec */ gint num_frames; /* frame count (1 sample per channel) * since last emit */ gint interval_frames; /* after how many frame to sent a message */ @@ -74,8 +74,6 @@ struct _GstLevel { gdouble *last_peak; /* last normalized Peak value over interval */ gdouble *decay_peak; /* running decaying normalized Peak */ gdouble *decay_peak_base; /* value of last peak we are decaying from */ - gdouble *MS; /* normalized Mean Square of buffer */ - gdouble *RMS_dB; /* RMS in dB to emit */ GstClockTime *decay_peak_age; /* age of last peak */ void (*process)(gpointer, guint, guint, gdouble*, gdouble*); diff --git a/gst/matroska/Makefile.in b/gst/matroska/Makefile.in index 0437ace31d334768f0e78f65abd3b79b8b259628..1ffcb8e5376c0c2501b8362d8f736207c5e74a7d 100644 --- a/gst/matroska/Makefile.in +++ b/gst/matroska/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/matroska -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -144,10 +170,23 @@ libgstmatroska_la_OBJECTS = $(am_libgstmatroska_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstmatroska_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstmatroska_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstmatroska_la_CFLAGS) $(CFLAGS) \ $(libgstmatroska_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -160,20 +199,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstmatroska_la_SOURCES) DIST_SOURCES = $(libgstmatroska_la_SOURCES) am__can_run_installinfo = \ @@ -182,6 +217,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -349,6 +401,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -587,6 +640,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -613,12 +667,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstmatroska.la: $(libgstmatroska_la_OBJECTS) $(libgstmatroska_la_DEPENDENCIES) $(EXTRA_libgstmatroska_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstmatroska_la_LINK) -rpath $(plugindir) $(libgstmatroska_la_OBJECTS) $(libgstmatroska_la_LIBADD) $(LIBS) @@ -640,22 +697,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmatroska_la-webm-mux.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -736,26 +796,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -767,15 +816,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -784,6 +829,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -928,19 +988,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/matroska/ebml-ids.h b/gst/matroska/ebml-ids.h index 14edf74fdfeda870573088fb11afd67d8e20fed1..ef2e6cb5d6f2bd0a4cd3c1749d6e4d54910a23e5 100644 --- a/gst/matroska/ebml-ids.h +++ b/gst/matroska/ebml-ids.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_EBML_IDS_H__ diff --git a/gst/matroska/ebml-read.c b/gst/matroska/ebml-read.c index 42a06fe82c6838c90624ba14fffc333a7b8c06c3..a23947fea11ab6216bbf6759d177749cdcc56f7a 100644 --- a/gst/matroska/ebml-read.c +++ b/gst/matroska/ebml-read.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -137,7 +137,10 @@ gst_ebml_peek_id_length (guint32 * _id, guint64 * _length, guint * _needed, /* ERRORS */ peek_error: { - GST_WARNING_OBJECT (el, "peek failed, ret = %d", ret); + if (ret != GST_FLOW_FLUSHING) + GST_WARNING_OBJECT (el, "peek failed, ret = %s", gst_flow_get_name (ret)); + else + GST_DEBUG_OBJECT (el, "peek failed, ret = %s", gst_flow_get_name (ret)); *_needed = needed; return ret; } diff --git a/gst/matroska/ebml-read.h b/gst/matroska/ebml-read.h index b5c9aa208be1c2c3bc6d808ab04d66569038974c..ce894da7f77b42f5e4646323a7aeda14b4a8279f 100644 --- a/gst/matroska/ebml-read.h +++ b/gst/matroska/ebml-read.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_EBML_READ_H__ diff --git a/gst/matroska/ebml-write.c b/gst/matroska/ebml-write.c index 0c7584e12fdfa1b4a0f99c95c0d8e1bfadfd4719..4596c2f20090deb77943f8f2ebcfbdda1807570f 100644 --- a/gst/matroska/ebml-write.c +++ b/gst/matroska/ebml-write.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/matroska/ebml-write.h b/gst/matroska/ebml-write.h index 4d0293d460d72e0607c0e3a7817fa9781c6e7785..2dbe350f1e1724d234f6c50c979e97c576ee9fe6 100644 --- a/gst/matroska/ebml-write.h +++ b/gst/matroska/ebml-write.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_EBML_WRITE_H__ diff --git a/gst/matroska/lzo.c b/gst/matroska/lzo.c index 995638f83f0c8dc4d916af171443a96ef28c5370..3c564bbdf657fa9aeeeccc5c1a245a20182b0d4b 100644 --- a/gst/matroska/lzo.c +++ b/gst/matroska/lzo.c @@ -18,6 +18,9 @@ * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include <gst/gst.h> #include <stdlib.h> diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index c899fe1a31606a9084b51907ce1a5daf718eeec4..d5d705eae717a1551a3980f7f2a6eac34b9382b5 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* TODO: check CRC32 if present @@ -171,7 +171,7 @@ static GstCaps /* stream methods */ static void gst_matroska_demux_reset (GstElement * element); static gboolean perform_seek_to_offset (GstMatroskaDemux * demux, - gdouble rate, guint64 offset); + gdouble rate, guint64 offset, guint32 seqnum); /* gobject functions */ static void gst_matroska_demux_set_property (GObject * object, @@ -314,6 +314,9 @@ gst_matroska_track_free (GstMatroskaTrackContext * track) if (track->index_table) g_array_free (track->index_table, TRUE); + if (track->stream_headers) + gst_buffer_list_unref (track->stream_headers); + g_free (track); } @@ -394,6 +397,9 @@ gst_matroska_demux_reset (GstElement * element) demux->num_t_streams = 0; demux->num_v_streams = 0; + demux->have_group_id = FALSE; + demux->group_id = G_MAXUINT; + /* reset media info */ g_free (demux->common.writing_app); demux->common.writing_app = NULL; @@ -445,6 +451,7 @@ gst_matroska_demux_reset (GstElement * element) demux->index_offset = 0; demux->seekable = FALSE; demux->need_segment = FALSE; + demux->segment_seqnum = 0; demux->requested_seek_time = GST_CLOCK_TIME_NONE; demux->seek_offset = -1; demux->building_index = FALSE; @@ -522,18 +529,45 @@ gst_matroska_decode_buffer (GstMatroskaTrackContext * context, GstBuffer * buf) } } +static void +gst_matroska_demux_add_stream_headers_to_caps (GstMatroskaDemux * demux, + GstBufferList * list, GstCaps * caps) +{ + GstStructure *s; + GValue arr_val = G_VALUE_INIT; + GValue buf_val = G_VALUE_INIT; + gint i, num; + + g_assert (gst_caps_is_writable (caps)); + + g_value_init (&arr_val, GST_TYPE_ARRAY); + g_value_init (&buf_val, GST_TYPE_BUFFER); + + num = gst_buffer_list_length (list); + for (i = 0; i < num; ++i) { + g_value_set_boxed (&buf_val, gst_buffer_list_get (list, i)); + gst_value_array_append_value (&arr_val, &buf_val); + } + + s = gst_caps_get_structure (caps, 0); + gst_structure_take_value (s, "streamheader", &arr_val); + g_value_unset (&buf_val); +} + static GstFlowReturn gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml) { GstElementClass *klass = GST_ELEMENT_GET_CLASS (demux); GstMatroskaTrackContext *context; GstPadTemplate *templ = NULL; + GstStreamFlags stream_flags; GstCaps *caps = NULL; gchar *padname = NULL; GstFlowReturn ret; guint32 id, riff_fourcc = 0; guint16 riff_audio_fmt = 0; GstTagList *list = NULL; + GstEvent *stream_start; gchar *codec = NULL; gchar *stream_id; @@ -1081,7 +1115,7 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml) context->flags &= ~GST_MATROSKA_TRACK_DEFAULT; GST_DEBUG_OBJECT (demux, "TrackDefault: %d", - (context->flags & GST_MATROSKA_TRACK_ENABLED) ? 1 : 0); + (context->flags & GST_MATROSKA_TRACK_DEFAULT) ? 1 : 0); break; } @@ -1098,7 +1132,7 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml) context->flags &= ~GST_MATROSKA_TRACK_FORCED; GST_DEBUG_OBJECT (demux, "TrackForced: %d", - (context->flags & GST_MATROSKA_TRACK_ENABLED) ? 1 : 0); + (context->flags & GST_MATROSKA_TRACK_FORCED) ? 1 : 0); break; } @@ -1116,7 +1150,7 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml) context->flags &= ~GST_MATROSKA_TRACK_LACING; GST_DEBUG_OBJECT (demux, "TrackLacing: %d", - (context->flags & GST_MATROSKA_TRACK_ENABLED) ? 1 : 0); + (context->flags & GST_MATROSKA_TRACK_LACING) ? 1 : 0); break; } @@ -1316,6 +1350,9 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml) gst_caps_set_simple (caps, "fourcc", G_TYPE_STRING, fstr, NULL); g_free (fstr); } + } else if (context->stream_headers != NULL) { + gst_matroska_demux_add_stream_headers_to_caps (demux, + context->stream_headers, caps); } /* the pad in here */ @@ -1339,9 +1376,32 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml) stream_id = gst_pad_create_stream_id_printf (context->pad, GST_ELEMENT_CAST (demux), - "%u", context->uid); - gst_pad_push_event (context->pad, gst_event_new_stream_start (stream_id)); + "%03u", context->uid); + stream_start = + gst_pad_get_sticky_event (demux->common.sinkpad, GST_EVENT_STREAM_START, + 0); + if (stream_start) { + if (gst_event_parse_group_id (stream_start, &demux->group_id)) + demux->have_group_id = TRUE; + else + demux->have_group_id = FALSE; + gst_event_unref (stream_start); + } else if (!demux->have_group_id) { + demux->have_group_id = TRUE; + demux->group_id = gst_util_group_id_next (); + } + + stream_start = gst_event_new_stream_start (stream_id); g_free (stream_id); + if (demux->have_group_id) + gst_event_set_group_id (stream_start, demux->group_id); + stream_flags = GST_STREAM_FLAG_NONE; + if (context->type == GST_MATROSKA_TRACK_TYPE_SUBTITLE) + stream_flags |= GST_STREAM_FLAG_SPARSE; + if (context->flags & GST_MATROSKA_TRACK_DEFAULT) + stream_flags |= GST_STREAM_FLAG_SELECT; + gst_event_set_stream_flags (stream_start, stream_flags); + gst_pad_push_event (context->pad, stream_start); gst_pad_set_caps (context->pad, context->caps); gst_element_add_pad (GST_ELEMENT (demux), context->pad); @@ -1445,6 +1505,27 @@ gst_matroska_demux_query (GstMatroskaDemux * demux, GstPad * pad, GST_OBJECT_UNLOCK (demux); break; } + case GST_QUERY_SEGMENT: + { + GstFormat format; + gint64 start, stop; + + format = demux->common.segment.format; + + start = + gst_segment_to_stream_time (&demux->common.segment, format, + demux->common.segment.start); + if ((stop = demux->common.segment.stop) == -1) + stop = demux->common.segment.duration; + else + stop = + gst_segment_to_stream_time (&demux->common.segment, format, stop); + + gst_query_set_segment (query, demux->common.segment.rate, format, start, + stop); + res = TRUE; + break; + } default: if (pad) res = gst_pad_query_default (pad, (GstObject *) demux, query); @@ -1940,12 +2021,14 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux, GstSegment seeksegment = { 0, }; gboolean update = TRUE; gboolean pad_locked = FALSE; + guint32 seqnum; if (pad) track = gst_pad_get_element_private (pad); gst_event_parse_seek (event, &rate, &format, &flags, &cur_type, &cur, &stop_type, &stop); + seqnum = gst_event_get_seqnum (event); /* we can only seek on time */ if (format != GST_FORMAT_TIME) { @@ -2042,9 +2125,11 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux, next: if (flush) { + GstEvent *flush_event = gst_event_new_flush_start (); + gst_event_set_seqnum (flush_event, seqnum); GST_DEBUG_OBJECT (demux, "Starting flush"); - gst_pad_push_event (demux->common.sinkpad, gst_event_new_flush_start ()); - gst_matroska_demux_send_event (demux, gst_event_new_flush_start ()); + gst_pad_push_event (demux->common.sinkpad, gst_event_ref (flush_event)); + gst_matroska_demux_send_event (demux, flush_event); } else { GST_DEBUG_OBJECT (demux, "Non-flushing seek, pausing task"); gst_pad_pause_task (demux->common.sinkpad); @@ -2065,10 +2150,14 @@ next: /* pull mode without index can do some scanning */ if (!demux->streaming && !entry) { + GstEvent *flush_event; + /* need to stop flushing upstream as we need it next */ - if (flush) - gst_pad_push_event (demux->common.sinkpad, - gst_event_new_flush_stop (TRUE)); + if (flush) { + flush_event = gst_event_new_flush_stop (TRUE); + gst_event_set_seqnum (flush_event, seqnum); + gst_pad_push_event (demux->common.sinkpad, flush_event); + } entry = gst_matroska_demux_search_pos (demux, seeksegment.position); /* keep local copy */ if (entry) { @@ -2077,8 +2166,11 @@ next: entry = &scan_entry; } else { GST_DEBUG_OBJECT (demux, "Scan failed to find matching position"); - if (flush) - gst_matroska_demux_send_event (demux, gst_event_new_flush_stop (TRUE)); + if (flush) { + flush_event = gst_event_new_flush_stop (TRUE); + gst_event_set_seqnum (flush_event, seqnum); + gst_matroska_demux_send_event (demux, flush_event); + } goto seek_error; } } @@ -2104,14 +2196,16 @@ finish: /* upstream takes care of flushing and all that * ... and newsegment event handling takes care of the rest */ return perform_seek_to_offset (demux, rate, - entry->pos + demux->common.ebml_segment_start); + entry->pos + demux->common.ebml_segment_start, seqnum); } exit: if (flush) { + GstEvent *flush_event = gst_event_new_flush_stop (TRUE); + gst_event_set_seqnum (flush_event, seqnum); GST_DEBUG_OBJECT (demux, "Stopping flush"); - gst_pad_push_event (demux->common.sinkpad, gst_event_new_flush_stop (TRUE)); - gst_matroska_demux_send_event (demux, gst_event_new_flush_stop (TRUE)); + gst_pad_push_event (demux->common.sinkpad, gst_event_ref (flush_event)); + gst_matroska_demux_send_event (demux, flush_event); } GST_OBJECT_LOCK (demux); @@ -2130,6 +2224,7 @@ exit: msg = gst_message_new_segment_start (GST_OBJECT (demux), GST_FORMAT_TIME, demux->common.segment.start); + gst_message_set_seqnum (msg, seqnum); gst_element_post_message (GST_ELEMENT (demux), msg); } @@ -2139,6 +2234,7 @@ exit: /* On port from 0.10, discarded !update (for segment.update) here, FIXME? */ demux->new_segment = gst_event_new_segment (&demux->common.segment); + gst_event_set_seqnum (demux->new_segment, seqnum); if (demux->common.segment.rate < 0 && demux->common.segment.stop == -1) demux->to_time = demux->common.segment.position; else @@ -2240,7 +2336,8 @@ gst_matroska_demux_handle_seek_push (GstMatroskaDemux * demux, GstPad * pad, if (!building_index) { /* seek to the first subindex or legacy index */ GST_INFO_OBJECT (demux, "Seeking to Cues at %" G_GUINT64_FORMAT, offset); - return perform_seek_to_offset (demux, rate, offset); + return perform_seek_to_offset (demux, rate, offset, + gst_event_get_seqnum (event)); } /* well, we are handling it already */ @@ -2556,163 +2653,40 @@ gst_matroska_demux_sync_streams (GstMatroskaDemux * demux) } static GstFlowReturn -gst_matroska_demux_push_hdr_buf (GstMatroskaDemux * demux, - GstMatroskaTrackContext * stream, guint8 * data, guint len) -{ - GstFlowReturn ret, cret; - GstBuffer *header_buf; - - header_buf = gst_buffer_new_wrapped (g_memdup (data, len), len); - - if (stream->set_discont) { - GST_BUFFER_FLAG_SET (header_buf, GST_BUFFER_FLAG_DISCONT); - stream->set_discont = FALSE; - } else { - GST_BUFFER_FLAG_UNSET (header_buf, GST_BUFFER_FLAG_DISCONT); - } - - ret = gst_pad_push (stream->pad, header_buf); - - /* combine flows */ - cret = gst_matroska_demux_combine_flows (demux, stream, ret); - - return cret; -} - -static GstFlowReturn -gst_matroska_demux_push_flac_codec_priv_data (GstMatroskaDemux * demux, - GstMatroskaTrackContext * stream) -{ - GstFlowReturn ret; - guint8 *pdata; - guint off, len; - - GST_LOG_OBJECT (demux, "priv data size = %" G_GSIZE_FORMAT, - stream->codec_priv_size); - - pdata = (guint8 *) stream->codec_priv; - - /* need at least 'fLaC' marker + STREAMINFO metadata block */ - if (stream->codec_priv_size < ((4) + (4 + 34))) { - GST_WARNING_OBJECT (demux, "not enough codec priv data for flac headers"); - return GST_FLOW_ERROR; - } - - if (memcmp (pdata, "fLaC", 4) != 0) { - GST_WARNING_OBJECT (demux, "no flac marker at start of stream headers"); - return GST_FLOW_ERROR; - } - - ret = gst_matroska_demux_push_hdr_buf (demux, stream, pdata, 4); - if (ret != GST_FLOW_OK) - return ret; - - off = 4; /* skip fLaC marker */ - while (off < stream->codec_priv_size) { - len = GST_READ_UINT8 (pdata + off + 1) << 16; - len |= GST_READ_UINT8 (pdata + off + 2) << 8; - len |= GST_READ_UINT8 (pdata + off + 3); - - GST_DEBUG_OBJECT (demux, "header packet: len=%u bytes, flags=0x%02x", - len, (guint) pdata[off]); - - ret = gst_matroska_demux_push_hdr_buf (demux, stream, pdata + off, len + 4); - if (ret != GST_FLOW_OK) - return ret; - - off += 4 + len; - } - return GST_FLOW_OK; -} - -static GstFlowReturn -gst_matroska_demux_push_speex_codec_priv_data (GstMatroskaDemux * demux, +gst_matroska_demux_push_stream_headers (GstMatroskaDemux * demux, GstMatroskaTrackContext * stream) { - GstFlowReturn ret; - guint8 *pdata = stream->codec_priv; - - GST_LOG_OBJECT (demux, "priv data size = %" G_GSIZE_FORMAT, - stream->codec_priv_size); - - /* need at least 'fLaC' marker + STREAMINFO metadata block */ - if (stream->codec_priv_size < 80) { - GST_WARNING_OBJECT (demux, "not enough codec priv data for speex headers"); - return GST_FLOW_ERROR; - } - - if (memcmp (pdata, "Speex ", 8) != 0) { - GST_WARNING_OBJECT (demux, "no Speex marker at start of stream headers"); - return GST_FLOW_ERROR; - } - - ret = gst_matroska_demux_push_hdr_buf (demux, stream, pdata, 80); - if (ret != GST_FLOW_OK) - return ret; + GstFlowReturn ret = GST_FLOW_OK; + gint i, num; - if (stream->codec_priv_size == 80) - return ret; - else - return gst_matroska_demux_push_hdr_buf (demux, stream, pdata + 80, - stream->codec_priv_size - 80); -} + num = gst_buffer_list_length (stream->stream_headers); + for (i = 0; i < num; ++i) { + GstBuffer *buf; -static GstFlowReturn -gst_matroska_demux_push_xiph_codec_priv_data (GstMatroskaDemux * demux, - GstMatroskaTrackContext * stream) -{ - GstFlowReturn ret; - guint8 *p = stream->codec_priv; - gint i, offset, num_packets; - guint *length, last; + buf = gst_buffer_list_get (stream->stream_headers, i); + buf = gst_buffer_copy (buf); - if (stream->codec_priv == NULL || stream->codec_priv_size == 0) { - GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL), - ("Missing codec private data for xiph headers, broken file")); - return GST_FLOW_ERROR; - } + GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_HEADER); - /* start of the stream and vorbis audio or theora video, need to - * send the codec_priv data as first three packets */ - num_packets = p[0] + 1; - GST_DEBUG_OBJECT (demux, - "%u stream headers, total length=%" G_GSIZE_FORMAT " bytes", - (guint) num_packets, stream->codec_priv_size); - - length = g_alloca (num_packets * sizeof (guint)); - last = 0; - offset = 1; - - /* first packets, read length values */ - for (i = 0; i < num_packets - 1; i++) { - length[i] = 0; - while (offset < stream->codec_priv_size) { - length[i] += p[offset]; - if (p[offset++] != 0xff) - break; + if (stream->set_discont) { + GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT); + stream->set_discont = FALSE; + } else { + GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT); } - last += length[i]; - } - if (offset + last > stream->codec_priv_size) - return GST_FLOW_ERROR; - /* last packet is the remaining size */ - length[i] = stream->codec_priv_size - offset - last; + /* push out all headers in one go and use last flow return */ + ret = gst_pad_push (stream->pad, buf); + } - for (i = 0; i < num_packets; i++) { - GST_DEBUG_OBJECT (demux, "buffer %d: length=%u bytes", i, - (guint) length[i]); - if (offset + length[i] > stream->codec_priv_size) - return GST_FLOW_ERROR; + /* don't need these any longer */ + gst_buffer_list_unref (stream->stream_headers); + stream->stream_headers = NULL; - ret = - gst_matroska_demux_push_hdr_buf (demux, stream, p + offset, length[i]); - if (ret != GST_FLOW_OK) - return ret; + /* combine flows */ + ret = gst_matroska_demux_combine_flows (demux, stream, ret); - offset += length[i]; - } - return GST_FLOW_OK; + return ret; } static void @@ -3033,11 +3007,12 @@ gst_matroska_demux_check_subtitle_buffer (GstElement * element, return GST_FLOW_OK; if (!sub_stream->invalid_utf8) { - if (g_utf8_validate ((gchar *) map.data, map.size, NULL)) { + if (g_utf8_validate ((gchar *) map.data, map.size - 1, NULL)) { goto next; } - GST_WARNING_OBJECT (element, "subtitle stream %d is not valid UTF-8, this " - "is broken according to the matroska specification", stream->num); + GST_WARNING_OBJECT (element, "subtitle stream %" G_GUINT64_FORMAT + " is not valid UTF-8, this is broken according to the matroska" + " specification", stream->num); sub_stream->invalid_utf8 = TRUE; } @@ -3339,27 +3314,6 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, break; } - if (stream->send_xiph_headers) { - ret = gst_matroska_demux_push_xiph_codec_priv_data (demux, stream); - stream->send_xiph_headers = FALSE; - } - - if (stream->send_flac_headers) { - ret = gst_matroska_demux_push_flac_codec_priv_data (demux, stream); - stream->send_flac_headers = FALSE; - } - - if (stream->send_speex_headers) { - ret = gst_matroska_demux_push_speex_codec_priv_data (demux, stream); - stream->send_speex_headers = FALSE; - } - - if (stream->send_dvd_event) { - gst_matroska_demux_push_dvd_clut_change_event (demux, stream); - /* FIXME: should we send this event again after (flushing) seek ? */ - stream->send_dvd_event = FALSE; - } - if (ret != GST_FLOW_OK) break; @@ -3440,9 +3394,10 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, goto data_error; if (ret == GST_FLOW_OK && readblock) { + gboolean invisible_frame = FALSE; + gboolean delta_unit = FALSE; guint64 duration = 0; gint64 lace_time = 0; - gboolean delta_unit; stream = g_ptr_array_index (demux->common.src, stream_num); @@ -3467,6 +3422,7 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, if (GST_CLOCK_TIME_IS_VALID (lace_time) && demux->need_segment) { GstSegment *segment = &demux->common.segment; guint64 clace_time; + GstEvent *segment_event; if (!GST_CLOCK_TIME_IS_VALID (demux->stream_start_time)) { demux->stream_start_time = lace_time; @@ -3491,8 +3447,29 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, "generated segment starting at %" GST_TIME_FORMAT ": %" GST_SEGMENT_FORMAT, GST_TIME_ARGS (lace_time), segment); /* now convey our segment notion downstream */ + segment_event = gst_event_new_segment (segment); + if (demux->segment_seqnum) + gst_event_set_seqnum (segment_event, demux->segment_seqnum); gst_matroska_demux_send_event (demux, gst_event_new_segment (segment)); demux->need_segment = FALSE; + demux->segment_seqnum = 0; + } + + if (stream->send_stream_headers) { + if (stream->stream_headers != NULL) { + ret = gst_matroska_demux_push_stream_headers (demux, stream); + } else { + /* FIXME: perhaps we can just disable and skip this stream then */ + GST_ELEMENT_ERROR (demux, STREAM, DECODE, (NULL), + ("Failed to extract stream headers from codec private data")); + } + stream->send_stream_headers = FALSE; + } + + if (stream->send_dvd_event) { + gst_matroska_demux_push_dvd_clut_change_event (demux, stream); + /* FIXME: should we send this event again after (flushing) seek ? */ + stream->send_dvd_event = FALSE; } if (block_duration != -1) { @@ -3512,8 +3489,14 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, /* For SimpleBlock, look at the keyframe bit in flags. Otherwise, a ReferenceBlock implies that this is not a keyframe. In either case, it only makes sense for video streams. */ - delta_unit = stream->type == GST_MATROSKA_TRACK_TYPE_VIDEO && - ((is_simpleblock && !(flags & 0x80)) || referenceblock); + if (stream->type == GST_MATROSKA_TRACK_TYPE_VIDEO) { + if ((is_simpleblock && !(flags & 0x80)) || referenceblock) { + delta_unit = TRUE; + invisible_frame = ((flags & 0x08)) && + (!strcmp (stream->codec_id, GST_MATROSKA_CODEC_ID_VIDEO_VP8) || + !strcmp (stream->codec_id, GST_MATROSKA_CODEC_ID_VIDEO_VP9)); + } + } if (delta_unit && stream->set_discont) { /* When doing seeks or such, we need to restart on key frames or @@ -3578,6 +3561,9 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, else GST_BUFFER_FLAG_UNSET (sub, GST_BUFFER_FLAG_DELTA_UNIT); + if (invisible_frame) + GST_BUFFER_FLAG_SET (sub, GST_BUFFER_FLAG_DECODE_ONLY); + if (stream->encodings != NULL && stream->encodings->len > 0) sub = gst_matroska_decode_buffer (stream, sub); @@ -4540,9 +4526,11 @@ gst_matroska_demux_loop (GstPad * pad) ret = gst_matroska_read_common_peek_id_length_pull (&demux->common, GST_ELEMENT_CAST (demux), &id, &length, &needed); - if (ret == GST_FLOW_EOS) + if (ret == GST_FLOW_EOS) { goto eos; - if (ret != GST_FLOW_OK) { + } else if (ret == GST_FLOW_FLUSHING) { + goto pause; + } else if (ret != GST_FLOW_OK) { if (gst_matroska_demux_check_parse_error (demux)) goto pause; else @@ -4677,7 +4665,8 @@ pause: * Create and push a flushing seek event upstream */ static gboolean -perform_seek_to_offset (GstMatroskaDemux * demux, gdouble rate, guint64 offset) +perform_seek_to_offset (GstMatroskaDemux * demux, gdouble rate, guint64 offset, + guint32 seqnum) { GstEvent *event; gboolean res = 0; @@ -4688,6 +4677,7 @@ perform_seek_to_offset (GstMatroskaDemux * demux, gdouble rate, guint64 offset) gst_event_new_seek (rate, GST_FORMAT_BYTES, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_SET, offset, GST_SEEK_TYPE_NONE, -1); + gst_event_set_seqnum (event, seqnum); res = gst_pad_push_event (demux->common.sinkpad, event); @@ -4792,6 +4782,7 @@ gst_matroska_demux_handle_sink_event (GstPad * pad, GstObject * parent, demux->cluster_time = GST_CLOCK_TIME_NONE; demux->cluster_offset = 0; demux->need_segment = TRUE; + demux->segment_seqnum = gst_event_get_seqnum (event); /* but keep some of the upstream segment */ demux->common.segment.rate = segment->rate; /* also check if need to keep some of the requested seek position */ @@ -4933,10 +4924,6 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext * g_assert (videocontext != NULL); g_assert (codec_name != NULL); - context->send_xiph_headers = FALSE; - context->send_flac_headers = FALSE; - context->send_speex_headers = FALSE; - if (riff_fourcc) *riff_fourcc = 0; @@ -5052,6 +5039,8 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext * priv = gst_buffer_new_wrapped (g_memdup (data, size), size); gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER, priv, NULL); gst_buffer_unref (priv); + + gst_codec_utils_mpeg4video_caps_set_level_and_profile (caps, data, size); } if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_ASP)) *codec_name = g_strdup ("MPEG-4 advanced simple profile"); @@ -5145,13 +5134,20 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext * *codec_name = g_strdup_printf ("RealVideo %d.0", rmversion); } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_THEORA)) { caps = gst_caps_new_empty_simple ("video/x-theora"); - context->send_xiph_headers = TRUE; + context->stream_headers = + gst_matroska_parse_xiph_stream_headers (context->codec_priv, + context->codec_priv_size); + /* FIXME: mark stream as broken and skip if there are no stream headers */ + context->send_stream_headers = TRUE; } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_DIRAC)) { caps = gst_caps_new_empty_simple ("video/x-dirac"); *codec_name = g_strdup_printf ("Dirac"); } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_VP8)) { caps = gst_caps_new_empty_simple ("video/x-vp8"); *codec_name = g_strdup_printf ("On2 VP8"); + } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_VP9)) { + caps = gst_caps_new_empty_simple ("video/x-vp9"); + *codec_name = g_strdup_printf ("On2 VP9"); } else { GST_WARNING ("Unknown codec '%s', cannot build Caps", codec_id); return NULL; @@ -5309,10 +5305,6 @@ gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext * if (riff_audio_fmt) *riff_audio_fmt = 0; - context->send_xiph_headers = FALSE; - context->send_flac_headers = FALSE; - context->send_speex_headers = FALSE; - /* TODO: check if we have all codec types from matroska-ids.h * check if we have to do more special things with codec_private * check if we need bitdepth in different places too @@ -5394,14 +5386,25 @@ gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext * *codec_name = g_strdup ("DTS audio"); } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_VORBIS)) { caps = gst_caps_new_empty_simple ("audio/x-vorbis"); - context->send_xiph_headers = TRUE; - /* vorbis decoder does tags */ + context->stream_headers = + gst_matroska_parse_xiph_stream_headers (context->codec_priv, + context->codec_priv_size); + /* FIXME: mark stream as broken and skip if there are no stream headers */ + context->send_stream_headers = TRUE; } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_FLAC)) { caps = gst_caps_new_empty_simple ("audio/x-flac"); - context->send_flac_headers = TRUE; + context->stream_headers = + gst_matroska_parse_flac_stream_headers (context->codec_priv, + context->codec_priv_size); + /* FIXME: mark stream as broken and skip if there are no stream headers */ + context->send_stream_headers = TRUE; } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_SPEEX)) { caps = gst_caps_new_empty_simple ("audio/x-speex"); - context->send_speex_headers = TRUE; + context->stream_headers = + gst_matroska_parse_speex_stream_headers (context->codec_priv, + context->codec_priv_size); + /* FIXME: mark stream as broken and skip if there are no stream headers */ + context->send_stream_headers = TRUE; } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_AUDIO_ACM)) { gst_riff_strf_auds auds; @@ -5517,6 +5520,9 @@ gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext * "framed", G_TYPE_BOOLEAN, TRUE, "stream-format", G_TYPE_STRING, "raw", NULL); gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER, priv, NULL); + if (context->codec_priv && context->codec_priv_size > 0) + gst_codec_utils_aac_caps_set_level_and_profile (caps, + context->codec_priv, context->codec_priv_size); *codec_name = g_strdup_printf ("MPEG-%d AAC audio", mpegversion); gst_buffer_unref (priv); } @@ -5659,7 +5665,11 @@ gst_matroska_demux_subtitle_caps (GstMatroskaTrackSubtitleContext * caps = gst_caps_new_empty_simple ("subpicture/x-pgs"); } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_SUBTITLE_KATE)) { caps = gst_caps_new_empty_simple ("subtitle/x-kate"); - context->send_xiph_headers = TRUE; + context->stream_headers = + gst_matroska_parse_xiph_stream_headers (context->codec_priv, + context->codec_priv_size); + /* FIXME: mark stream as broken and skip if there are no stream headers */ + context->send_stream_headers = TRUE; } else { GST_DEBUG ("Unknown subtitle stream: codec_id='%s'", codec_id); caps = gst_caps_new_empty_simple ("application/x-subtitle-unknown"); diff --git a/gst/matroska/matroska-demux.h b/gst/matroska/matroska-demux.h index 0376c8aacc686a5fcdec746041f6bdd34254cd3e..4453fe8f56065bf83083a649991f2cd638e3810d 100644 --- a/gst/matroska/matroska-demux.h +++ b/gst/matroska/matroska-demux.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MATROSKA_DEMUX_H__ @@ -55,6 +55,9 @@ typedef struct _GstMatroskaDemux { guint num_a_streams; guint num_t_streams; + guint group_id; + gboolean have_group_id; + /* state */ gboolean streaming; guint level_up; @@ -90,6 +93,7 @@ typedef struct _GstMatroskaDemux { guint64 index_offset; GstEvent *seek_event; gboolean need_segment; + guint32 segment_seqnum; /* reverse playback */ GArray *seek_index; diff --git a/gst/matroska/matroska-ids.c b/gst/matroska/matroska-ids.c index 8e6239594aed1a5fae50b646bf1289ce1b8b18be..da8f82bda1fbd957c475a5e5531bfb6d4904bf7c 100644 --- a/gst/matroska/matroska-ids.c +++ b/gst/matroska/matroska-ids.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -26,6 +26,8 @@ #include "matroska-ids.h" +#include <string.h> + gboolean gst_matroska_track_init_video_context (GstMatroskaTrackContext ** p_context) { @@ -116,3 +118,151 @@ gst_matroska_register_tags (void) { /* TODO: register other custom tags */ } + +GstBufferList * +gst_matroska_parse_xiph_stream_headers (gpointer codec_data, + gsize codec_data_size) +{ + GstBufferList *list = NULL; + guint8 *p = codec_data; + gint i, offset, num_packets; + guint *length, last; + + GST_MEMDUMP ("xiph codec data", codec_data, codec_data_size); + + if (codec_data == NULL || codec_data_size == 0) + goto error; + + /* start of the stream and vorbis audio or theora video, need to + * send the codec_priv data as first three packets */ + num_packets = p[0] + 1; + GST_DEBUG ("%u stream headers, total length=%" G_GSIZE_FORMAT " bytes", + (guint) num_packets, codec_data_size); + + length = g_alloca (num_packets * sizeof (guint)); + last = 0; + offset = 1; + + /* first packets, read length values */ + for (i = 0; i < num_packets - 1; i++) { + length[i] = 0; + while (offset < codec_data_size) { + length[i] += p[offset]; + if (p[offset++] != 0xff) + break; + } + last += length[i]; + } + if (offset + last > codec_data_size) + goto error; + + /* last packet is the remaining size */ + length[i] = codec_data_size - offset - last; + + list = gst_buffer_list_new (); + + for (i = 0; i < num_packets; i++) { + GstBuffer *hdr; + + GST_DEBUG ("buffer %d: %u bytes", i, (guint) length[i]); + + if (offset + length[i] > codec_data_size) + goto error; + + hdr = gst_buffer_new_wrapped (g_memdup (p + offset, length[i]), length[i]); + gst_buffer_list_add (list, hdr); + + offset += length[i]; + } + + return list; + +/* ERRORS */ +error: + { + if (list != NULL) + gst_buffer_list_unref (list); + return NULL; + } +} + +GstBufferList * +gst_matroska_parse_speex_stream_headers (gpointer codec_data, + gsize codec_data_size) +{ + GstBufferList *list = NULL; + GstBuffer *hdr; + guint8 *pdata = codec_data; + + GST_MEMDUMP ("speex codec data", codec_data, codec_data_size); + + if (codec_data == NULL || codec_data_size < 80) { + GST_WARNING ("not enough codec priv data for speex headers"); + return NULL; + } + + if (memcmp (pdata, "Speex ", 8) != 0) { + GST_WARNING ("no Speex marker at start of stream headers"); + return NULL; + } + + list = gst_buffer_list_new (); + + hdr = gst_buffer_new_wrapped (g_memdup (pdata, 80), 80); + gst_buffer_list_add (list, hdr); + + if (codec_data_size > 80) { + hdr = gst_buffer_new_wrapped (g_memdup (pdata + 80, codec_data_size - 80), + codec_data_size - 80); + gst_buffer_list_add (list, hdr); + } + + return list; +} + +GstBufferList * +gst_matroska_parse_flac_stream_headers (gpointer codec_data, + gsize codec_data_size) +{ + GstBufferList *list = NULL; + GstBuffer *hdr; + guint8 *pdata = codec_data; + guint len, off; + + GST_MEMDUMP ("flac codec data", codec_data, codec_data_size); + + /* need at least 'fLaC' marker + STREAMINFO metadata block */ + if (codec_data == NULL || codec_data_size < ((4) + (4 + 34))) { + GST_WARNING ("not enough codec priv data for flac headers"); + return NULL; + } + + if (memcmp (pdata, "fLaC", 4) != 0) { + GST_WARNING ("no flac marker at start of stream headers"); + return NULL; + } + + list = gst_buffer_list_new (); + + hdr = gst_buffer_new_wrapped (g_memdup (pdata, 4), 4); + gst_buffer_list_add (list, hdr); + + /* skip fLaC marker */ + off = 4; + + /* FIXME: check size remaining */ + while (off < codec_data_size) { + len = GST_READ_UINT8 (pdata + off + 1) << 16; + len |= GST_READ_UINT8 (pdata + off + 2) << 8; + len |= GST_READ_UINT8 (pdata + off + 3); + + GST_DEBUG ("header packet: len=%u bytes, flags=0x%02x", len, pdata[off]); + + /* FIXME: check size remaining */ + hdr = gst_buffer_new_wrapped (g_memdup (pdata + off, len + 4), len + 4); + gst_buffer_list_add (list, hdr); + + off += 4 + len; + } + return list; +} diff --git a/gst/matroska/matroska-ids.h b/gst/matroska/matroska-ids.h index 6dbbfd5f2b296b0e40b6f009684366e5561e46ec..f19a6d2f588b236fc81aa65e9a46df4b42d098fb 100644 --- a/gst/matroska/matroska-ids.h +++ b/gst/matroska/matroska-ids.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MATROSKA_IDS_H__ @@ -210,7 +210,7 @@ #define GST_MATROSKA_ID_TARGETTYPEVALUE 0x68CA #define GST_MATROSKA_ID_TARGETTYPE 0x63CA #define GST_MATROSKA_ID_TARGETTRACKUID 0x63C5 -#define GST_MATROSKA_ID_TARGETEDITIONUID 0x63C5 +#define GST_MATROSKA_ID_TARGETEDITIONUID 0x63C9 #define GST_MATROSKA_ID_TARGETCHAPTERUID 0x63C4 #define GST_MATROSKA_ID_TARGETATTACHMENTUID 0x63C6 @@ -345,6 +345,7 @@ #define GST_MATROSKA_CODEC_ID_VIDEO_SNOW "V_SNOW" #define GST_MATROSKA_CODEC_ID_VIDEO_DIRAC "V_DIRAC" #define GST_MATROSKA_CODEC_ID_VIDEO_VP8 "V_VP8" +#define GST_MATROSKA_CODEC_ID_VIDEO_VP9 "V_VP9" #define GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L1 "A_MPEG/L1" #define GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L2 "A_MPEG/L2" @@ -399,10 +400,10 @@ #define GST_MATROSKA_TAG_ID_ARTIST "ARTIST" #define GST_MATROSKA_TAG_ID_ALBUM "ALBUM" #define GST_MATROSKA_TAG_ID_COMMENTS "COMMENTS" +#define GST_MATROSKA_TAG_ID_COMMENT "COMMENT" #define GST_MATROSKA_TAG_ID_BITSPS "BITSPS" #define GST_MATROSKA_TAG_ID_BPS "BPS" #define GST_MATROSKA_TAG_ID_ENCODER "ENCODER" -#define GST_MATROSKA_TAG_ID_DATE "DATE" #define GST_MATROSKA_TAG_ID_ISRC "ISRC" #define GST_MATROSKA_TAG_ID_COPYRIGHT "COPYRIGHT" #define GST_MATROSKA_TAG_ID_BPM "BPM" @@ -411,6 +412,25 @@ #define GST_MATROSKA_TAG_ID_COMPOSER "COMPOSER" #define GST_MATROSKA_TAG_ID_LEAD_PERFORMER "LEAD_PERFOMER" #define GST_MATROSKA_TAG_ID_GENRE "GENRE" +#define GST_MATROSKA_TAG_ID_TOTAL_PARTS "TOTAL_PARTS" +#define GST_MATROSKA_TAG_ID_PART_NUMBER "PART_NUMBER" +#define GST_MATROSKA_TAG_ID_SUBTITLE "SUBTITLE" +#define GST_MATROSKA_TAG_ID_ACCOMPANIMENT "ACCOMPANIMENT" +#define GST_MATROSKA_TAG_ID_LYRICS "LYRICS" +#define GST_MATROSKA_TAG_ID_CONDUCTOR "CONDUCTOR" +#define GST_MATROSKA_TAG_ID_ENCODED_BY "ENCODED_BY" +#define GST_MATROSKA_TAG_ID_DESCRIPTION "DESCRIPTION" +#define GST_MATROSKA_TAG_ID_KEYWORDS "KEYWORDS" +#define GST_MATROSKA_TAG_ID_DATE_RELEASED "DATE_RELEASED" +#define GST_MATROSKA_TAG_ID_DATE_RECORDED "DATE_RECORDED" +#define GST_MATROSKA_TAG_ID_DATE_ENCODED "DATE_ENCODED" +#define GST_MATROSKA_TAG_ID_DATE_TAGGED "DATE_TAGGED" +#define GST_MATROSKA_TAG_ID_DATE_DIGITIZED "DATE_DIGITIZED" +#define GST_MATROSKA_TAG_ID_DATE_WRITTEN "DATE_WRITTEN" +#define GST_MATROSKA_TAG_ID_DATE_PURCHASED "DATE_PURCHASED" +#define GST_MATROSKA_TAG_ID_RECORDING_LOCATION "RECORDING_LOCATION" +#define GST_MATROSKA_TAG_ID_PRODUCTION_COPYRIGHT "PRODUCTION_COPYRIGHT" +#define GST_MATROSKA_TAG_ID_LICENSE "LICENSE" /* * TODO: add this tag & mappings @@ -492,7 +512,7 @@ struct _GstMatroskaTrackContext { gpointer codec_state; gsize codec_state_size; GstMatroskaTrackType type; - guint uid, num; + guint64 uid, num; GstMatroskaTrackFlags flags; guint64 default_duration; guint64 pos; @@ -500,20 +520,9 @@ struct _GstMatroskaTrackContext { gboolean set_discont; /* TRUE = set DISCONT flag on next buffer */ - /* Special flag for Vorbis and Theora, for which we need to send - * codec_priv first before sending any data, and just testing - * for time == 0 is not enough to detect that. Used by demuxer */ - gboolean send_xiph_headers; - - /* Special flag for Flac, for which we need to reconstruct the header - * buffer from the codec_priv data before sending any data, and just - * testing for time == 0 is not enough to detect that. Used by demuxer */ - gboolean send_flac_headers; - - /* Special flag for Speex, for which we need to reconstruct the header - * buffer from the codec_priv data before sending any data, and just - * testing for time == 0 is not enough to detect that. Used by demuxer */ - gboolean send_speex_headers; + /* Stream header buffer, to put into caps and send before any other buffers */ + GstBufferList * stream_headers; + gboolean send_stream_headers; /* Special flag for VobSub, for which we have to send colour table info * (if available) first before sending any data, and just testing @@ -624,4 +633,13 @@ gboolean gst_matroska_track_init_subtitle_context (GstMatroskaTrackContext ** p_ void gst_matroska_register_tags (void); +GstBufferList * gst_matroska_parse_xiph_stream_headers (gpointer codec_data, + gsize codec_data_size); + +GstBufferList * gst_matroska_parse_speex_stream_headers (gpointer codec_data, + gsize codec_data_size); + +GstBufferList * gst_matroska_parse_flac_stream_headers (gpointer codec_data, + gsize codec_data_size); + #endif /* __GST_MATROSKA_IDS_H__ */ diff --git a/gst/matroska/matroska-mux.c b/gst/matroska/matroska-mux.c index 380f72de677a7ae88b5b88467af91e776da8a483..d535fd3b6bea166e337795f518c063d6f4cb7f49 100644 --- a/gst/matroska/matroska-mux.c +++ b/gst/matroska/matroska-mux.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* TODO: - check everywhere that we don't write invalid values @@ -34,7 +34,7 @@ * <refsect2> * <title>Example launch line</title> * |[ - * gst-launch-1.0 -v filesrc location=/path/to/mp3 ! mp3parse ! matroskamux name=mux ! filesink location=test.mkv filesrc location=/path/to/theora.ogg ! oggdemux ! theoraparse ! mux. + * gst-launch-1.0 -v filesrc location=/path/to/mp3 ! mpegaudioparse ! matroskamux name=mux ! filesink location=test.mkv filesrc location=/path/to/theora.ogg ! oggdemux ! theoraparse ! mux. * ]| This pipeline muxes an MP3 file and a Ogg Theora video into a Matroska file. * |[ * gst-launch-1.0 -v audiotestsrc num-buffers=100 ! audioconvert ! vorbisenc ! matroskamux ! filesink location=test.mka @@ -86,11 +86,6 @@ static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src", ); #define COMMON_VIDEO_CAPS \ - "width = (int) [ 16, 4096 ], " \ - "height = (int) [ 16, 4096 ], " \ - "framerate = (fraction) [ 0, MAX ]" - -#define COMMON_VIDEO_CAPS_NO_FRAMERATE \ "width = (int) [ 16, 4096 ], " \ "height = (int) [ 16, 4096 ] " @@ -119,7 +114,7 @@ static GstStaticPadTemplate videosink_templ = "video/x-msmpeg, " COMMON_VIDEO_CAPS "; " "image/jpeg, " - COMMON_VIDEO_CAPS_NO_FRAMERATE "; " + COMMON_VIDEO_CAPS "; " "video/x-theora; " "video/x-dirac, " COMMON_VIDEO_CAPS "; " @@ -961,7 +956,8 @@ gst_matroska_mux_video_pad_setcaps (GstPad * pad, GstCaps * caps) /* set vp8 defaults or let user override it */ if (GST_MATROSKAMUX_PAD_CAST (pad)->frame_duration_user == FALSE - && (!strcmp (mimetype, "video/x-vp8"))) + && (!strcmp (mimetype, "video/x-vp8") + || !strcmp (mimetype, "video/x-vp9"))) GST_MATROSKAMUX_PAD_CAST (pad)->frame_duration = DEFAULT_PAD_FRAME_DURATION_VP8; @@ -1136,6 +1132,8 @@ skip_details: gst_matroska_mux_set_codec_id (context, GST_MATROSKA_CODEC_ID_VIDEO_DIRAC); } else if (!strcmp (mimetype, "video/x-vp8")) { gst_matroska_mux_set_codec_id (context, GST_MATROSKA_CODEC_ID_VIDEO_VP8); + } else if (!strcmp (mimetype, "video/x-vp9")) { + gst_matroska_mux_set_codec_id (context, GST_MATROSKA_CODEC_ID_VIDEO_VP9); } else if (!strcmp (mimetype, "video/mpeg")) { gint mpegversion; @@ -3218,7 +3216,9 @@ gst_matroska_mux_write_data (GstMatroskaMux * mux, GstMatroskaPad * collect_pad, gint64 relative_timestamp64; guint64 block_duration; gboolean is_video_keyframe = FALSE; + gboolean is_video_invisible = FALSE; GstMatroskamuxPad *pad; + gint flags = 0; /* write data */ pad = GST_MATROSKAMUX_PAD_CAST (collect_pad->collect.pad); @@ -3254,11 +3254,20 @@ gst_matroska_mux_write_data (GstMatroskaMux * mux, GstMatroskaPad * collect_pad, /* set the timestamp for outgoing buffers */ ebml->timestamp = GST_BUFFER_TIMESTAMP (buf); - if (collect_pad->track->type == GST_MATROSKA_TRACK_TYPE_VIDEO && - !GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT)) { - GST_LOG_OBJECT (mux, "have video keyframe, ts=%" GST_TIME_FORMAT, - GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf))); - is_video_keyframe = TRUE; + if (collect_pad->track->type == GST_MATROSKA_TRACK_TYPE_VIDEO) { + if (!GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT)) { + GST_LOG_OBJECT (mux, "have video keyframe, ts=%" GST_TIME_FORMAT, + GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf))); + is_video_keyframe = TRUE; + } else if (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DECODE_ONLY) && + (!strcmp (collect_pad->track->codec_id, GST_MATROSKA_CODEC_ID_VIDEO_VP8) + || !strcmp (collect_pad->track->codec_id, + GST_MATROSKA_CODEC_ID_VIDEO_VP9))) { + GST_LOG_OBJECT (mux, + "have VP8 video invisible frame, " "ts=%" GST_TIME_FORMAT, + GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf))); + is_video_invisible = TRUE; + } } if (mux->cluster) { @@ -3373,9 +3382,13 @@ gst_matroska_mux_write_data (GstMatroskaMux * mux, GstMatroskaPad * collect_pad, } relative_timestamp = gst_util_uint64_scale (relative_timestamp64, 1, mux->time_scale); + + if (is_video_invisible) + flags |= 0x08; + if (mux->doctype_version > 1 && !write_duration) { - int flags = - GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT) ? 0 : 0x80; + if (is_video_keyframe) + flags |= 0x80; hdr = gst_matroska_mux_create_buffer_header (collect_pad->track, @@ -3395,7 +3408,7 @@ gst_matroska_mux_write_data (GstMatroskaMux * mux, GstMatroskaPad * collect_pad, blockgroup = gst_ebml_write_master_start (ebml, GST_MATROSKA_ID_BLOCKGROUP); hdr = gst_matroska_mux_create_buffer_header (collect_pad->track, - relative_timestamp, 0); + relative_timestamp, flags); if (write_duration) gst_ebml_write_uint (ebml, GST_MATROSKA_ID_BLOCKDURATION, block_duration); gst_ebml_write_buffer_header (ebml, GST_MATROSKA_ID_BLOCK, diff --git a/gst/matroska/matroska-mux.h b/gst/matroska/matroska-mux.h index 2df0ec94c4a0e52ceb4ab256794c3de3c8a1c8e1..7fea78dd203a63d6716328c865b342616703527a 100644 --- a/gst/matroska/matroska-mux.h +++ b/gst/matroska/matroska-mux.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MATROSKA_MUX_H__ diff --git a/gst/matroska/matroska-parse.c b/gst/matroska/matroska-parse.c index dce4898353e8e5b98754ce6dd06d4a520e861adc..83b0d6384508c56ec748362297d37d357f6f2870 100644 --- a/gst/matroska/matroska-parse.c +++ b/gst/matroska/matroska-parse.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* TODO: check CRC32 if present @@ -342,7 +342,7 @@ gst_matroska_parse_reset (GstElement * element) parse->next_cluster_offset = 0; parse->index_offset = 0; parse->seekable = FALSE; - parse->need_newsegment = FALSE; + parse->need_newsegment = TRUE; parse->building_index = FALSE; if (parse->seek_event) { gst_event_unref (parse->seek_event); @@ -2546,6 +2546,12 @@ gst_matroska_parse_output (GstMatroskaParse * parse, GstBuffer * buffer, //gst_caps_replace (parse->caps, caps); gst_pad_set_caps (parse->srcpad, caps); + if (parse->need_newsegment) { + gst_pad_push_event (parse->srcpad, + gst_event_new_segment (&parse->common.segment)); + parse->need_newsegment = FALSE; + } + buf = gst_buffer_copy (parse->streamheader); gst_caps_unref (caps); diff --git a/gst/matroska/matroska-parse.h b/gst/matroska/matroska-parse.h index a447e776cd0fb1a8bf989461ad712a6d988a1b7a..0d61ba521b325c5d18bfe5c890f6f98f7342e8ee 100644 --- a/gst/matroska/matroska-parse.h +++ b/gst/matroska/matroska-parse.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MATROSKA_PARSE_H__ diff --git a/gst/matroska/matroska-read-common.c b/gst/matroska/matroska-read-common.c index cd4d535e13789f70849319de3f30efe8c8d95046..bfbe02aaa4e7ba900afb3cb656921ba7d3744379 100644 --- a/gst/matroska/matroska-read-common.c +++ b/gst/matroska/matroska-read-common.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -60,6 +60,15 @@ GST_DEBUG_CATEGORY (matroskareadcommon_debug); #define GST_MATROSKA_TOC_UID_EDITION "edition" #define GST_MATROSKA_TOC_UID_EMPTY "empty" +typedef struct +{ + GstTagList *result; + guint64 target_type_value; + gchar *target_type; + gboolean audio_only; +} TargetTypeContext; + + static gboolean gst_matroska_decompress_data (GstMatroskaTrackEncoding * enc, gpointer * data_out, gsize * size_out, @@ -649,6 +658,9 @@ gst_matroska_read_common_parse_attached_file (GstMatroskaReadCommon * common, tagsample = gst_sample_new (tagbuffer, caps, NULL, info); + gst_buffer_unref (tagbuffer); + gst_caps_unref (caps); + GST_DEBUG_OBJECT (common, "Created attachment sample: %" GST_PTR_FORMAT, tagsample); @@ -763,14 +775,20 @@ gst_matroska_read_common_parse_toc_tag (GstTocEntry * entry, static GstFlowReturn gst_matroska_read_common_parse_metadata_targets (GstMatroskaReadCommon * common, - GstEbmlRead * ebml, GArray * edition_targets, GArray * chapter_targets) + GstEbmlRead * ebml, GArray * edition_targets, GArray * chapter_targets, + GArray * track_targets, guint64 * target_type_value, gchar ** target_type) { GstFlowReturn ret = GST_FLOW_OK; guint32 id; guint64 uid; + guint64 tmp; + gchar *str; DEBUG_ELEMENT_START (common, ebml, "TagTargets"); + *target_type_value = 50; + *target_type = NULL; + if ((ret = gst_ebml_read_master (ebml, &id)) != GST_FLOW_OK) { DEBUG_ELEMENT_STOP (common, ebml, "TagTargets", ret); return ret; @@ -791,6 +809,24 @@ gst_matroska_read_common_parse_metadata_targets (GstMatroskaReadCommon * common, g_array_append_val (edition_targets, uid); break; + case GST_MATROSKA_ID_TARGETTRACKUID: + if ((ret = gst_ebml_read_uint (ebml, &id, &uid)) == GST_FLOW_OK) + g_array_append_val (track_targets, uid); + break; + + case GST_MATROSKA_ID_TARGETTYPEVALUE: + if ((ret = gst_ebml_read_uint (ebml, &id, &tmp)) == GST_FLOW_OK) + *target_type_value = tmp; + break; + + case GST_MATROSKA_ID_TARGETTYPE: + if ((ret = gst_ebml_read_ascii (ebml, &id, &str)) == GST_FLOW_OK) { + if (*target_type != NULL) + g_free (*target_type); + *target_type = str; + } + break; + default: ret = gst_matroska_read_common_parse_skip (common, ebml, "TagTargets", @@ -1746,7 +1782,7 @@ gst_matroska_read_common_parse_info (GstMatroskaReadCommon * common, static GstFlowReturn gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * - common, GstEbmlRead * ebml, GstTagList ** p_taglist) + common, GstEbmlRead * ebml, GstTagList ** p_taglist, gchar * parent) { /* FIXME: check if there are more useful mappings */ static const struct @@ -1756,27 +1792,165 @@ gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * } tag_conv[] = { { + /* The following list has the _same_ order as the one in Matroska spec. Please, don't mess it up. */ + /* TODO: Nesting information: + ORIGINAL A special tag that is meant to have other tags inside (using nested tags) to describe the original work of art that this item is based on. All tags in this list can be used "under" the ORIGINAL tag like LYRICIST, PERFORMER, etc. + SAMPLE A tag that contains other tags to describe a sample used in the targeted item taken from another work of art. All tags in this list can be used "under" the SAMPLE tag like TITLE, ARTIST, DATE_RELEASED, etc. + COUNTRY The name of the country (biblio ISO-639-2) that is meant to have other tags inside (using nested tags) to country specific information about the item. All tags in this list can be used "under" the COUNTRY_SPECIFIC tag like LABEL, PUBLISH_RATING, etc. + */ + + /* Organizational Information */ + GST_MATROSKA_TAG_ID_TOTAL_PARTS, GST_TAG_TRACK_COUNT}, { + GST_MATROSKA_TAG_ID_PART_NUMBER, GST_TAG_TRACK_NUMBER}, { + /* TODO: PART_OFFSET A number to add to PART_NUMBER when the parts at that level don't start at 1. (e.g. if TargetType is TRACK, the track number of the second audio CD) */ + + /* Titles */ + GST_MATROSKA_TAG_ID_SUBTITLE, GST_TAG_TITLE}, { /* Sub Title of the entity. Since we're concat'ing all title-like entities anyway, might as well add the sub-title. */ GST_MATROSKA_TAG_ID_TITLE, GST_TAG_TITLE}, { + GST_MATROSKA_TAG_ID_ALBUM, GST_TAG_ALBUM}, { /* Matroska spec does NOT have this tag! Dunno what it was doing here, probably for compatibility. */ + + /* TODO: Nested Information: + URL URL corresponding to the tag it's included in. + SORT_WITH A child element to indicate what alternative value the parent tag can have to be sorted, for example "Pet Shop Boys" instead of "The Pet Shop Boys". Or "Marley Bob" and "Marley Ziggy" (no comma needed). + INSTRUMENTS The instruments that are being used/played, separated by a comma. It should be a child of the following tags: ARTIST, LEAD_PERFORMER or ACCOMPANIMENT. + EMAIL Email corresponding to the tag it's included in. + ADDRESS The physical address of the entity. The address should include a country code. It can be useful for a recording label. + FAX The fax number corresponding to the tag it's included in. It can be useful for a recording label. + PHONE The phone number corresponding to the tag it's included in. It can be useful for a recording label. + */ + + /* Entities */ GST_MATROSKA_TAG_ID_ARTIST, GST_TAG_ARTIST}, { + GST_MATROSKA_TAG_ID_LEAD_PERFORMER, GST_TAG_PERFORMER}, { + GST_MATROSKA_TAG_ID_ACCOMPANIMENT, GST_TAG_PERFORMER}, { /* Band/orchestra/accompaniment/musician. This is akin to the TPE2 tag in ID3. */ + GST_MATROSKA_TAG_ID_COMPOSER, GST_TAG_COMPOSER}, { + /* ARRANGER The person who arranged the piece, e.g., Ravel. */ + GST_MATROSKA_TAG_ID_LYRICS, GST_TAG_LYRICS}, { /* The lyrics corresponding to a song (in case audio synchronization is not known or as a doublon to a subtitle track). Editing this value when subtitles are found should also result in editing the subtitle track for more consistency. */ + /* LYRICIST The person who wrote the lyrics for a musical item. This is akin to the TEXT tag in ID3. */ + GST_MATROSKA_TAG_ID_CONDUCTOR, GST_TAG_PERFORMER}, { /* Conductor/performer refinement. This is akin to the TPE3 tag in ID3. */ + /* DIRECTOR This is akin to the IART tag in RIFF. */ GST_MATROSKA_TAG_ID_AUTHOR, GST_TAG_ARTIST}, { - GST_MATROSKA_TAG_ID_ALBUM, GST_TAG_ALBUM}, { - GST_MATROSKA_TAG_ID_COMMENTS, GST_TAG_COMMENT}, { - GST_MATROSKA_TAG_ID_BITSPS, GST_TAG_BITRATE}, { - GST_MATROSKA_TAG_ID_BPS, GST_TAG_BITRATE}, { + /* ASSISTANT_DIRECTOR The name of the assistant director. */ + /* DIRECTOR_OF_PHOTOGRAPHY The name of the director of photography, also known as cinematographer. This is akin to the ICNM tag in Extended RIFF. */ + /* SOUND_ENGINEER The name of the sound engineer or sound recordist. */ + /* ART_DIRECTOR The person who oversees the artists and craftspeople who build the sets. */ + /* PRODUCTION_DESIGNER Artist responsible for designing the overall visual appearance of a movie. */ + /* CHOREGRAPHER The name of the choregrapher */ + /* COSTUME_DESIGNER The name of the costume designer */ + /* ACTOR An actor or actress playing a role in this movie. This is the person's real name, not the character's name the person is playing. */ + /* CHARACTER The name of the character an actor or actress plays in this movie. This should be a sub-tag of an ACTOR tag in order not to cause ambiguities. */ + /* WRITTEN_BY The author of the story or script (used for movies and TV shows). */ + /* SCREENPLAY_BY The author of the screenplay or scenario (used for movies and TV shows). */ + /* EDITED_BY This is akin to the IEDT tag in Extended RIFF. */ + /* PRODUCER Produced by. This is akin to the IPRO tag in Extended RIFF. */ + /* COPRODUCER The name of a co-producer. */ + /* EXECUTIVE_PRODUCER The name of an executive producer. */ + /* DISTRIBUTED_BY This is akin to the IDST tag in Extended RIFF. */ + /* MASTERED_BY The engineer who mastered the content for a physical medium or for digital distribution. */ + GST_MATROSKA_TAG_ID_ENCODED_BY, GST_TAG_ENCODED_BY}, { /* This is akin to the TENC tag in ID3. */ + /* MIXED_BY DJ mix by the artist specified */ + /* REMIXED_BY Interpreted, remixed, or otherwise modified by. This is akin to the TPE4 tag in ID3. */ + /* PRODUCTION_STUDIO This is akin to the ISTD tag in Extended RIFF. */ + /* THANKS_TO A very general tag for everyone else that wants to be listed. */ + /* PUBLISHER This is akin to the TPUB tag in ID3. */ + /* LABEL The record label or imprint on the disc. */ + /* Search / Classification */ + GST_MATROSKA_TAG_ID_GENRE, GST_TAG_GENRE}, { + /* MOOD Intended to reflect the mood of the item with a few keywords, e.g. "Romantic", "Sad" or "Uplifting". The format follows that of the TMOO tag in ID3. */ + /* ORIGINAL_MEDIA_TYPE Describes the original type of the media, such as, "DVD", "CD", "computer image," "drawing," "lithograph," and so forth. This is akin to the TMED tag in ID3. */ + /* CONTENT_TYPE The type of the item. e.g. Documentary, Feature Film, Cartoon, Music Video, Music, Sound FX, ... */ + /* SUBJECT Describes the topic of the file, such as "Aerial view of Seattle." */ + GST_MATROSKA_TAG_ID_DESCRIPTION, GST_TAG_DESCRIPTION}, { /* A short description of the content, such as "Two birds flying." */ + GST_MATROSKA_TAG_ID_KEYWORDS, GST_TAG_KEYWORDS}, { /* Keywords to the item separated by a comma, used for searching. */ + /* SUMMARY A plot outline or a summary of the story. */ + /* SYNOPSIS A description of the story line of the item. */ + /* INITIAL_KEY The initial key that a musical track starts in. The format is identical to ID3. */ + /* PERIOD Describes the period that the piece is from or about. For example, "Renaissance". */ + /* LAW_RATING Depending on the country it's the format of the rating of a movie (P, R, X in the USA, an age in other countries or a URI defining a logo). */ + /* ICRA The ICRA content rating for parental control. (Previously RSACi) */ + + /* Temporal Information */ + GST_MATROSKA_TAG_ID_DATE_RELEASED, GST_TAG_DATE}, { /* The time that the item was originaly released. This is akin to the TDRL tag in ID3. */ + GST_MATROSKA_TAG_ID_DATE_RECORDED, GST_TAG_DATE}, { /* The time that the recording began. This is akin to the TDRC tag in ID3. */ + GST_MATROSKA_TAG_ID_DATE_ENCODED, GST_TAG_DATE}, { /* The time that the encoding of this item was completed began. This is akin to the TDEN tag in ID3. */ + GST_MATROSKA_TAG_ID_DATE_TAGGED, GST_TAG_DATE}, { /* The time that the tags were done for this item. This is akin to the TDTG tag in ID3. */ + GST_MATROSKA_TAG_ID_DATE_DIGITIZED, GST_TAG_DATE}, { /* The time that the item was tranfered to a digital medium. This is akin to the IDIT tag in RIFF. */ + GST_MATROSKA_TAG_ID_DATE_WRITTEN, GST_TAG_DATE}, { /* The time that the writing of the music/script began. */ + GST_MATROSKA_TAG_ID_DATE_PURCHASED, GST_TAG_DATE}, { /* Information on when the file was purchased (see also purchase tags). */ + GST_MATROSKA_TAG_ID_DATE, GST_TAG_DATE}, { /* Matroska spec does NOT have this tag! Dunno what it was doing here, probably for compatibility. */ + + /* Spacial Information */ + GST_MATROSKA_TAG_ID_RECORDING_LOCATION, GST_TAG_GEO_LOCATION_NAME}, { /* The location where the item was recorded. The countries corresponding to the string, same 2 octets as in Internet domains, or possibly ISO-3166. This code is followed by a comma, then more detailed information such as state/province, another comma, and then city. For example, "US, Texas, Austin". This will allow for easy sorting. It is okay to only store the country, or the country and the state/province. More detailed information can be added after the city through the use of additional commas. In cases where the province/state is unknown, but you want to store the city, simply leave a space between the two commas. For example, "US, , Austin". */ + /* COMPOSITION_LOCATION Location that the item was originaly designed/written. The countries corresponding to the string, same 2 octets as in Internet domains, or possibly ISO-3166. This code is followed by a comma, then more detailed information such as state/province, another comma, and then city. For example, "US, Texas, Austin". This will allow for easy sorting. It is okay to only store the country, or the country and the state/province. More detailed information can be added after the city through the use of additional commas. In cases where the province/state is unknown, but you want to store the city, simply leave a space between the two commas. For example, "US, , Austin". */ + /* COMPOSER_NATIONALITY Nationality of the main composer of the item, mostly for classical music. The countries corresponding to the string, same 2 octets as in Internet domains, or possibly ISO-3166. */ + + /* Personal */ + GST_MATROSKA_TAG_ID_COMMENT, GST_TAG_COMMENT}, { /* Any comment related to the content. */ + GST_MATROSKA_TAG_ID_COMMENTS, GST_TAG_COMMENT}, { /* Matroska spec does NOT have this tag! Dunno what it was doing here, probably for compatibility. */ + /* PLAY_COUNTER The number of time the item has been played. */ + /* TODO: RATING A numeric value defining how much a person likes the song/movie. The number is between 0 and 5 with decimal values possible (e.g. 2.7), 5(.0) being the highest possible rating. Other rating systems with different ranges will have to be scaled. */ + + /* Technical Information */ GST_MATROSKA_TAG_ID_ENCODER, GST_TAG_ENCODER}, { - GST_MATROSKA_TAG_ID_DATE, GST_TAG_DATE}, { + /* ENCODER_SETTINGS A list of the settings used for encoding this item. No specific format. */ + GST_MATROSKA_TAG_ID_BPS, GST_TAG_BITRATE}, { + GST_MATROSKA_TAG_ID_BITSPS, GST_TAG_BITRATE}, { /* Matroska spec does NOT have this tag! Dunno what it was doing here, probably for compatibility. */ + /* WONTFIX (already handled in another way): FPS The average frames per second of the specified item. This is typically the average number of Blocks per second. In the event that lacing is used, each laced chunk is to be counted as a seperate frame. */ + GST_MATROSKA_TAG_ID_BPM, GST_TAG_BEATS_PER_MINUTE}, { + /* MEASURE In music, a measure is a unit of time in Western music like "4/4". It represents a regular grouping of beats, a meter, as indicated in musical notation by the time signature.. The majority of the contemporary rock and pop music you hear on the radio these days is written in the 4/4 time signature. */ + /* TUNING It is saved as a frequency in hertz to allow near-perfect tuning of instruments to the same tone as the musical piece (e.g. "441.34" in Hertz). The default value is 440.0 Hz. */ + /* TODO: REPLAYGAIN_GAIN The gain to apply to reach 89dB SPL on playback. This is based on the Replay Gain standard. Note that ReplayGain information can be found at all TargetType levels (track, album, etc). */ + /* TODO: REPLAYGAIN_PEAK The maximum absolute peak value of the item. This is based on the Replay Gain standard. */ + + /* Identifiers */ GST_MATROSKA_TAG_ID_ISRC, GST_TAG_ISRC}, { + /* MCDI This is a binary dump of the TOC of the CDROM that this item was taken from. This holds the same information as the MCDI in ID3. */ + /* ISBN International Standard Book Number */ + /* BARCODE EAN-13 (European Article Numbering) or UPC-A (Universal Product Code) bar code identifier */ + /* CATALOG_NUMBER A label-specific string used to identify the release (TIC 01 for example). */ + /* LABEL_CODE A 4-digit or 5-digit number to identify the record label, typically printed as (LC) xxxx or (LC) 0xxxx on CDs medias or covers (only the number is stored). */ + /* LCCN Library of Congress Control Number */ + + /* Commercial */ + /* PURCHASE_ITEM URL to purchase this file. This is akin to the WPAY tag in ID3. */ + /* PURCHASE_INFO Information on where to purchase this album. This is akin to the WCOM tag in ID3. */ + /* PURCHASE_OWNER Information on the person who purchased the file. This is akin to the TOWN tag in ID3. */ + /* PURCHASE_PRICE The amount paid for entity. There should only be a numeric value in here. Only numbers, no letters or symbols other than ".". For instance, you would store "15.59" instead of "$15.59USD". */ + /* PURCHASE_CURRENCY The currency type used to pay for the entity. Use ISO-4217 for the 3 letter currency code. */ + + /* Legal */ GST_MATROSKA_TAG_ID_COPYRIGHT, GST_TAG_COPYRIGHT}, { - GST_MATROSKA_TAG_ID_BPM, GST_TAG_BEATS_PER_MINUTE}, { - GST_MATROSKA_TAG_ID_TERMS_OF_USE, GST_TAG_LICENSE}, { - GST_MATROSKA_TAG_ID_COMPOSER, GST_TAG_COMPOSER}, { - GST_MATROSKA_TAG_ID_LEAD_PERFORMER, GST_TAG_PERFORMER}, { - GST_MATROSKA_TAG_ID_GENRE, GST_TAG_GENRE} + GST_MATROSKA_TAG_ID_PRODUCTION_COPYRIGHT, GST_TAG_COPYRIGHT}, { /* The copyright information as per the production copyright holder. This is akin to the TPRO tag in ID3. */ + GST_MATROSKA_TAG_ID_LICENSE, GST_TAG_LICENSE}, { /* The license applied to the content (like Creative Commons variants). */ + GST_MATROSKA_TAG_ID_TERMS_OF_USE, GST_TAG_LICENSE} + }; + static const struct + { + const gchar *matroska_tagname; + const gchar *gstreamer_tagname; + } + child_tag_conv[] = { + { + "TITLE/SORT_WITH=", GST_TAG_TITLE_SORTNAME}, { + "ARTIST/SORT_WITH=", GST_TAG_ARTIST_SORTNAME}, { + /* ALBUM-stuff is handled elsewhere */ + "COMPOSER/SORT_WITH=", GST_TAG_TITLE_SORTNAME}, { + "ORIGINAL/URL=", GST_TAG_LOCATION}, { + /* EMAIL, PHONE, FAX all can be mapped to GST_TAG_CONTACT, there is special + * code for that later. + */ + "TITLE/URL=", GST_TAG_HOMEPAGE}, { + "ARTIST/URL=", GST_TAG_HOMEPAGE}, { + "COPYRIGHT/URL=", GST_TAG_COPYRIGHT_URI}, { + "LICENSE/URL=", GST_TAG_LICENSE_URI}, { + "LICENSE/URL=", GST_TAG_LICENSE_URI} }; GstFlowReturn ret; guint32 id; gchar *value = NULL; gchar *tag = NULL; + gchar *name_with_parent = NULL; + GstTagList *child_taglist = NULL; DEBUG_ELEMENT_START (common, ebml, "SimpleTag"); @@ -1785,6 +1959,11 @@ gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * return ret; } + if (parent) + child_taglist = *p_taglist; + else + child_taglist = gst_tag_list_new_empty (); + while (ret == GST_FLOW_OK && gst_ebml_read_has_remaining (ebml, 1, TRUE)) { /* read all sub-entries */ @@ -1797,6 +1976,11 @@ gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * tag = NULL; ret = gst_ebml_read_ascii (ebml, &id, &tag); GST_DEBUG_OBJECT (common, "TagName: %s", GST_STR_NULL (tag)); + g_free (name_with_parent); + if (parent != NULL) + name_with_parent = g_strdup_printf ("%s/%s", parent, tag); + else + name_with_parent = g_strdup (tag); break; case GST_MATROSKA_ID_TAGSTRING: @@ -1806,11 +1990,23 @@ gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * GST_DEBUG_OBJECT (common, "TagString: %s", GST_STR_NULL (value)); break; + case GST_MATROSKA_ID_SIMPLETAG: + /* Recursive SimpleTag */ + /* This implementation requires tag name of _this_ tag to be known + * in order to read its children. It's not in the spec, just the way + * the code is written. + */ + if (name_with_parent != NULL) { + ret = gst_matroska_read_common_parse_metadata_id_simple_tag (common, + ebml, &child_taglist, name_with_parent); + break; + } + /* fall-through */ + default: ret = gst_matroska_read_common_parse_skip (common, ebml, "SimpleTag", id); break; - /* fall-through */ case GST_MATROSKA_ID_TAGLANGUAGE: case GST_MATROSKA_ID_TAGDEFAULT: @@ -1822,10 +2018,18 @@ gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * DEBUG_ELEMENT_STOP (common, ebml, "SimpleTag", ret); - if (tag && value) { + if (parent && tag && value && *value != '\0') { + /* Don't bother mapping children tags - parent will do that */ + gchar *key_val; + /* TODO: read LANGUAGE sub-tag, and use "key[lc]=val" form */ + key_val = g_strdup_printf ("%s=%s", name_with_parent, value); + gst_tag_list_add (*p_taglist, GST_TAG_MERGE_APPEND, + GST_TAG_EXTENDED_COMMENT, key_val, NULL); + } else if (tag && value && *value != '\0') { + gboolean matched = FALSE; guint i; - for (i = 0; i < G_N_ELEMENTS (tag_conv); i++) { + for (i = 0; !matched && i < G_N_ELEMENTS (tag_conv); i++) { const gchar *tagname_gst = tag_conv[i].gstreamer_tagname; const gchar *tagname_mkv = tag_conv[i].matroska_tagname; @@ -1856,26 +2060,250 @@ gst_matroska_read_common_parse_metadata_id_simple_tag (GstMatroskaReadCommon * g_type_name (dest_type)); } g_value_unset (&dest); - break; + matched = TRUE; + } + } + if (!matched) { + gchar *key_val; + /* TODO: read LANGUAGE sub-tag, and use "key[lc]=val" form */ + key_val = g_strdup_printf ("%s=%s", tag, value); + gst_tag_list_add (*p_taglist, GST_TAG_MERGE_APPEND, + GST_TAG_EXTENDED_COMMENT, key_val, NULL); + } + } + + if (!parent) { + /* Map children tags. This only supports top-anchored mapping. That is, + * we start at toplevel tag (this tag), and see how its combinations + * with its children can be mapped. Which means that grandchildren + * are also combined here, with _this_ tag taken into consideration. + * If grandchildren can be combined only with children, that combination + * will not happen. + */ + gint child_tags_n = gst_tag_list_n_tags (child_taglist); + if (child_tags_n > 0) { + gint i; + for (i = 0; i < child_tags_n; i++) { + gint j; + const gchar *child_name = gst_tag_list_nth_tag_name (child_taglist, i); + guint taglen = gst_tag_list_get_tag_size (child_taglist, child_name); + for (j = 0; j < taglen; j++) { + gchar *val; + gboolean matched = FALSE; + gchar *val_pre, *val_post; + gint k; + + if (!gst_tag_list_get_string_index (child_taglist, child_name, + j, &val)) + continue; + if (!strchr (val, '=')) { + g_free (val); + continue; + } + val_post = g_strdup (strchr (val, '=') + 1); + val_pre = g_strdup (val); + *(strchr (val_pre, '=') + 1) = '\0'; + + for (k = 0; !matched && k < G_N_ELEMENTS (child_tag_conv); k++) { + const gchar *tagname_gst = child_tag_conv[k].gstreamer_tagname; + + const gchar *tagname_mkv = child_tag_conv[k].matroska_tagname; + + /* TODO: Once "key[lc]=value" form support is implemented, + * strip [lc] here. It can't be used in combined tags. + * If a tag is not combined, leave [lc] as it is. + */ + if (strcmp (tagname_mkv, val_pre) == 0) { + GValue dest = { 0, }; + GType dest_type = gst_tag_get_type (tagname_gst); + + g_value_init (&dest, dest_type); + if (gst_value_deserialize (&dest, val_post)) { + 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)); + } + g_value_unset (&dest); + matched = TRUE; + } + } + if (!matched) { + gchar *last_slash = strrchr (val_pre, '/'); + if (last_slash) { + last_slash++; + if (strcmp (last_slash, "EMAIL=") == 0 || + strcmp (last_slash, "PHONE=") == 0 || + strcmp (last_slash, "ADDRESS=") == 0 || + strcmp (last_slash, "FAX=") == 0) { + gst_tag_list_add (*p_taglist, GST_TAG_MERGE_APPEND, + GST_TAG_CONTACT, val_post, NULL); + matched = TRUE; + } + } + } + if (!matched) + gst_tag_list_add (*p_taglist, GST_TAG_MERGE_APPEND, + GST_TAG_EXTENDED_COMMENT, val, NULL); + g_free (val_post); + g_free (val_pre); + g_free (val); + } } } + gst_tag_list_unref (child_taglist); } g_free (tag); g_free (value); + g_free (name_with_parent); return ret; } + +static void +gst_matroska_read_common_count_streams (GstMatroskaReadCommon * common, + gint * a, gint * v, gint * s) +{ + gint i; + gint video_streams = 0, audio_streams = 0, subtitle_streams = 0; + + for (i = 0; i < common->src->len; i++) { + GstMatroskaTrackContext *stream; + + stream = g_ptr_array_index (common->src, i); + if (stream->type == GST_MATROSKA_TRACK_TYPE_VIDEO) + video_streams += 1; + else if (stream->type == GST_MATROSKA_TRACK_TYPE_AUDIO) + audio_streams += 1; + else if (stream->type == GST_MATROSKA_TRACK_TYPE_SUBTITLE) + subtitle_streams += 1; + } + *v = video_streams; + *a = audio_streams; + *v = subtitle_streams; +} + + +static void +gst_matroska_read_common_apply_target_type_foreach (const GstTagList * list, + const gchar * tag, gpointer user_data) +{ + guint vallen; + guint i; + TargetTypeContext *ctx = (TargetTypeContext *) user_data; + + vallen = gst_tag_list_get_tag_size (list, tag); + if (vallen == 0) + return; + + for (i = 0; i < vallen; i++) { + GValue val = { 0 }; + const GValue *val_ref; + + val_ref = gst_tag_list_get_value_index (list, tag, i); + if (val_ref == NULL) + continue; + g_value_init (&val, G_VALUE_TYPE (val_ref)); + g_value_copy (val_ref, &val); + + /* TODO: use the optional ctx->target_type somehow */ + if (strcmp (tag, GST_TAG_TITLE) == 0) { + if (ctx->target_type_value >= 70 && !ctx->audio_only) { + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, + GST_TAG_SHOW_NAME, &val); + continue; + } else if (ctx->target_type_value >= 50) { + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, + GST_TAG_ALBUM, &val); + continue; + } + } else if (strcmp (tag, GST_TAG_TITLE_SORTNAME) == 0) { + if (ctx->target_type_value >= 70 && !ctx->audio_only) { + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, + GST_TAG_SHOW_SORTNAME, &val); + continue; + } else if (ctx->target_type_value >= 50) { + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, + GST_TAG_ALBUM_SORTNAME, &val); + continue; + } + } else if (strcmp (tag, GST_TAG_ARTIST) == 0) { + if (ctx->target_type_value >= 50) { + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, + GST_TAG_ALBUM_ARTIST, &val); + continue; + } + } else if (strcmp (tag, GST_TAG_ARTIST_SORTNAME) == 0) { + if (ctx->target_type_value >= 50) { + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, + GST_TAG_ALBUM_ARTIST_SORTNAME, &val); + continue; + } + } else if (strcmp (tag, GST_TAG_TRACK_COUNT) == 0) { + if (ctx->target_type_value >= 60) { + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, + GST_TAG_ALBUM_VOLUME_COUNT, &val); + continue; + } + } else if (strcmp (tag, GST_TAG_TRACK_NUMBER) == 0) { + if (ctx->target_type_value >= 60 && !ctx->audio_only) { + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, + GST_TAG_SHOW_SEASON_NUMBER, &val); + continue; + } else if (ctx->target_type_value >= 50 && !ctx->audio_only) { + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, + GST_TAG_SHOW_EPISODE_NUMBER, &val); + continue; + } else if (ctx->target_type_value >= 50) { + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, + GST_TAG_ALBUM_VOLUME_NUMBER, &val); + continue; + } + } + gst_tag_list_add_value (ctx->result, GST_TAG_MERGE_APPEND, tag, &val); + g_value_unset (&val); + } +} + + +static GstTagList * +gst_matroska_read_common_apply_target_type (GstMatroskaReadCommon * common, + GstTagList * taglist, guint64 target_type_value, gchar * target_type) +{ + TargetTypeContext ctx; + gint a = 0; + gint v = 0; + gint s = 0; + + gst_matroska_read_common_count_streams (common, &a, &v, &s); + + ctx.audio_only = (a > 0 && v == 0 && s == 0); + ctx.result = gst_tag_list_new_empty (); + ctx.target_type_value = target_type_value; + ctx.target_type = target_type; + + gst_tag_list_foreach (taglist, + gst_matroska_read_common_apply_target_type_foreach, &ctx); + + gst_tag_list_unref (taglist); + return ctx.result; +} + + static GstFlowReturn gst_matroska_read_common_parse_metadata_id_tag (GstMatroskaReadCommon * common, GstEbmlRead * ebml, GstTagList ** p_taglist) { guint32 id; GstFlowReturn ret; - GArray *chapter_targets, *edition_targets; + GArray *chapter_targets, *edition_targets, *track_targets; GstTagList *taglist; GList *cur; + guint64 target_type_value = 50; + gchar *target_type = NULL; DEBUG_ELEMENT_START (common, ebml, "Tag"); @@ -1886,7 +2314,9 @@ gst_matroska_read_common_parse_metadata_id_tag (GstMatroskaReadCommon * common, edition_targets = g_array_new (FALSE, FALSE, sizeof (guint64)); chapter_targets = g_array_new (FALSE, FALSE, sizeof (guint64)); + track_targets = g_array_new (FALSE, FALSE, sizeof (guint64)); taglist = gst_tag_list_new_empty (); + target_type = NULL; while (ret == GST_FLOW_OK && gst_ebml_read_has_remaining (ebml, 1, TRUE)) { /* read all sub-entries */ @@ -1897,13 +2327,16 @@ gst_matroska_read_common_parse_metadata_id_tag (GstMatroskaReadCommon * common, switch (id) { case GST_MATROSKA_ID_SIMPLETAG: ret = gst_matroska_read_common_parse_metadata_id_simple_tag (common, - ebml, &taglist); + ebml, &taglist, NULL); break; case GST_MATROSKA_ID_TARGETS: - ret = - gst_matroska_read_common_parse_metadata_targets (common, ebml, - edition_targets, chapter_targets); + g_free (target_type); + target_type = NULL; + target_type_value = 50; + ret = gst_matroska_read_common_parse_metadata_targets (common, ebml, + edition_targets, chapter_targets, track_targets, + &target_type_value, &target_type); break; default: @@ -1914,19 +2347,47 @@ gst_matroska_read_common_parse_metadata_id_tag (GstMatroskaReadCommon * common, DEBUG_ELEMENT_STOP (common, ebml, "Tag", ret); + taglist = gst_matroska_read_common_apply_target_type (common, taglist, + target_type_value, target_type); + g_free (target_type); + /* if tag is chapter/edition specific - try to find that entry */ - if (G_UNLIKELY (chapter_targets->len > 0 || edition_targets->len > 0)) { - if (common->toc == NULL) - GST_WARNING_OBJECT (common, - "Found chapter/edition specific tag, but TOC doesn't present"); - else { - cur = gst_toc_get_entries (common->toc); - while (cur != NULL) { - gst_matroska_read_common_parse_toc_tag (cur->data, edition_targets, - chapter_targets, taglist); - cur = cur->next; + if (G_UNLIKELY (chapter_targets->len > 0 || edition_targets->len > 0 || + track_targets->len > 0)) { + gint i; + if (chapter_targets->len > 0 || edition_targets->len > 0) { + if (common->toc == NULL) + GST_WARNING_OBJECT (common, + "Found chapter/edition specific tag, but TOC is not present"); + else { + cur = gst_toc_get_entries (common->toc); + while (cur != NULL) { + gst_matroska_read_common_parse_toc_tag (cur->data, edition_targets, + chapter_targets, taglist); + cur = cur->next; + } + common->toc_updated = TRUE; + } + } + for (i = 0; i < track_targets->len; i++) { + gint j; + gboolean found = FALSE; + guint64 tgt = g_array_index (track_targets, guint64, i); + + for (j = 0; j < common->src->len; j++) { + GstMatroskaTrackContext *stream = g_ptr_array_index (common->src, j); + + if (stream->uid == tgt) { + gst_tag_list_insert (stream->pending_tags, taglist, + GST_TAG_MERGE_REPLACE); + found = TRUE; + } + } + if (!found) { + GST_WARNING_OBJECT (common, + "Found track-specific tag(s), but track %" G_GUINT64_FORMAT + " is not known (yet?)", tgt); } - common->toc_updated = TRUE; } } else gst_tag_list_insert (*p_taglist, taglist, GST_TAG_MERGE_APPEND); @@ -1934,6 +2395,7 @@ gst_matroska_read_common_parse_metadata_id_tag (GstMatroskaReadCommon * common, gst_tag_list_unref (taglist); g_array_unref (chapter_targets); g_array_unref (edition_targets); + g_array_unref (track_targets); return ret; } @@ -2182,7 +2644,7 @@ 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 - "is not unique for track %d", num, context->num); + "is not unique for track %" G_GUINT64_FORMAT, num, context->num); ret = GST_FLOW_ERROR; break; } diff --git a/gst/matroska/matroska-read-common.h b/gst/matroska/matroska-read-common.h index 0a18eaa81a9d205ca3c3fd3244d24bce8f9c00f2..10054b0c9b067e01ffb56b8ac0a419a42271e9fd 100644 --- a/gst/matroska/matroska-read-common.h +++ b/gst/matroska/matroska-read-common.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MATROSKA_READ_COMMON_H__ diff --git a/gst/matroska/matroska.c b/gst/matroska/matroska.c index ab2abd41173b038c9d0ddce4dccbed66560367a8..6e43972f6665a7a0743cb04a7d2d8091bd56e6b5 100644 --- a/gst/matroska/matroska.c +++ b/gst/matroska/matroska.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/matroska/webm-mux.c b/gst/matroska/webm-mux.c index c2cc00d519ab2c878aeec7c8b2778d49e900b74f..19aa245772b2a1764c49ebb3bf5dc946dcd17cd8 100644 --- a/gst/matroska/webm-mux.c +++ b/gst/matroska/webm-mux.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -62,10 +62,11 @@ static GstStaticPadTemplate webm_src_templ = GST_STATIC_PAD_TEMPLATE ("src", ); static GstStaticPadTemplate webm_videosink_templ = -GST_STATIC_PAD_TEMPLATE ("video_%u", + GST_STATIC_PAD_TEMPLATE ("video_%u", GST_PAD_SINK, GST_PAD_REQUEST, - GST_STATIC_CAPS ("video/x-vp8, " COMMON_VIDEO_CAPS) + GST_STATIC_CAPS ("video/x-vp8, " COMMON_VIDEO_CAPS ";" + "video/x-vp9, " COMMON_VIDEO_CAPS) ); static GstStaticPadTemplate webm_audiosink_templ = diff --git a/gst/matroska/webm-mux.h b/gst/matroska/webm-mux.h index cb007b00cb2c578e29c26c7c41bee55d29f8ed6b..6fee844633c1b8629c07fa3491a1fb68e4faa7dc 100644 --- a/gst/matroska/webm-mux.h +++ b/gst/matroska/webm-mux.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_WEBM_MUX_H__ diff --git a/gst/monoscope/Makefile.in b/gst/monoscope/Makefile.in index 19fc22b5199325b7776f8f06e7e848bd18474675..75596db8f10e01fc2eb89db9ded738a0637b9177 100644 --- a/gst/monoscope/Makefile.in +++ b/gst/monoscope/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/monoscope -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,10 +162,23 @@ libgstmonoscope_la_OBJECTS = $(am_libgstmonoscope_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstmonoscope_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstmonoscope_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstmonoscope_la_CFLAGS) $(CFLAGS) \ $(libgstmonoscope_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -152,20 +191,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstmonoscope_la_SOURCES) DIST_SOURCES = $(libgstmonoscope_la_SOURCES) am__can_run_installinfo = \ @@ -174,6 +209,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -341,6 +393,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -542,6 +595,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -568,12 +622,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstmonoscope.la: $(libgstmonoscope_la_OBJECTS) $(libgstmonoscope_la_DEPENDENCIES) $(EXTRA_libgstmonoscope_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstmonoscope_la_LINK) -rpath $(plugindir) $(libgstmonoscope_la_OBJECTS) $(libgstmonoscope_la_LIBADD) $(LIBS) @@ -588,22 +645,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmonoscope_la-monoscope.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -635,26 +695,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -666,15 +715,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -683,6 +728,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -827,19 +887,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/monoscope/convolve.c b/gst/monoscope/convolve.c index 584f680daefa2c6da5b1b40d43619aa1524c88a7..972753f6789bb3b57402d0dfb20e5d0966d2487c 100644 --- a/gst/monoscope/convolve.c +++ b/gst/monoscope/convolve.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * * Note: 7th December 2004: This file used to be licensed under the GPL, diff --git a/gst/monoscope/convolve.h b/gst/monoscope/convolve.h index dc934ec877f2e7ca337c8f149af72187da877f0e..64da744452068a626fbc5d2ba72fdf6ccddb0b49 100644 --- a/gst/monoscope/convolve.h +++ b/gst/monoscope/convolve.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * * Note: 7th December 2004: This file used to be licensed under the GPL, diff --git a/gst/monoscope/gstmonoscope.c b/gst/monoscope/gstmonoscope.c index 93948f967eff0a033ec8e1f28f7a17fe0a9c1591..4632aa47f665475366d7e1e06f589c518f5af31c 100644 --- a/gst/monoscope/gstmonoscope.c +++ b/gst/monoscope/gstmonoscope.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -349,7 +349,8 @@ gst_monoscope_chain (GstPad * pad, GstObject * parent, GstBuffer * inbuf) if (GST_BUFFER_TIMESTAMP (inbuf) != GST_CLOCK_TIME_NONE) monoscope->next_ts = GST_BUFFER_TIMESTAMP (inbuf); - GST_LOG_OBJECT (monoscope, "in buffer has %d samples, ts=%" GST_TIME_FORMAT, + GST_LOG_OBJECT (monoscope, + "in buffer has %" G_GSIZE_FORMAT " samples, ts=%" GST_TIME_FORMAT, gst_buffer_get_size (inbuf) / monoscope->bps, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (inbuf))); diff --git a/gst/monoscope/gstmonoscope.h b/gst/monoscope/gstmonoscope.h index e68153c35208f5b1c7756fb4d80238509f8932ce..b66a6d2f3ae8309912bb071ea399743ea057f0d2 100644 --- a/gst/monoscope/gstmonoscope.h +++ b/gst/monoscope/gstmonoscope.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MONOSCOPE__ diff --git a/gst/multifile/Makefile.in b/gst/multifile/Makefile.in index 3e0d8a435556e37a5daa01737662a99f1d040cda..b06a8b10ef3989aa21ee8ca510984ed20640d1a6 100644 --- a/gst/multifile/Makefile.in +++ b/gst/multifile/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/multifile -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -141,10 +167,23 @@ libgstmultifile_la_OBJECTS = $(am_libgstmultifile_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstmultifile_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstmultifile_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstmultifile_la_CFLAGS) $(CFLAGS) \ $(libgstmultifile_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -157,20 +196,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstmultifile_la_SOURCES) DIST_SOURCES = $(libgstmultifile_la_SOURCES) am__can_run_installinfo = \ @@ -179,6 +214,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -346,6 +398,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -553,6 +606,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -579,12 +633,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstmultifile.la: $(libgstmultifile_la_OBJECTS) $(libgstmultifile_la_DEPENDENCIES) $(EXTRA_libgstmultifile_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstmultifile_la_LINK) -rpath $(plugindir) $(libgstmultifile_la_OBJECTS) $(libgstmultifile_la_LIBADD) $(LIBS) @@ -601,22 +658,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmultifile_la-patternspec.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -662,26 +722,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -693,15 +742,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -710,6 +755,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -854,19 +914,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/multifile/gstmultifile.c b/gst/multifile/gstmultifile.c index 322d3ea4d7d69069551ea3554ff7c1f5f88934be..e89dadaa6670f76a1924d5056d05030cc7bb2817 100644 --- a/gst/multifile/gstmultifile.c +++ b/gst/multifile/gstmultifile.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/multifile/gstmultifilesink.c b/gst/multifile/gstmultifilesink.c index 56742c97c16e85309015335fdc8c59a53346c0a0..eed57160deb4d691c35b580d35fa720eec3ff9fd 100644 --- a/gst/multifile/gstmultifilesink.c +++ b/gst/multifile/gstmultifilesink.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-multifilesink @@ -271,7 +271,6 @@ gst_multi_file_sink_class_init (GstMultiFileSinkClass * klass) gobject_class->finalize = gst_multi_file_sink_finalize; - gstbasesink_class->get_times = NULL; gstbasesink_class->stop = GST_DEBUG_FUNCPTR (gst_multi_file_sink_stop); gstbasesink_class->render = GST_DEBUG_FUNCPTR (gst_multi_file_sink_render); gstbasesink_class->render_list = @@ -586,10 +585,12 @@ gst_multi_file_sink_render (GstBaseSink * sink, GstBuffer * buffer) if (multifilesink->file == NULL) { if (!gst_multi_file_sink_open_next_file (multifilesink)) goto stdio_write_error; - } - if (!gst_multi_file_sink_write_stream_headers (multifilesink)) - goto stdio_write_error; + /* we don't need to write stream headers here, they will be inserted in + * the stream by upstream elements if key unit events have + * all_headers=true set + */ + } ret = fwrite (map.data, map.size, 1, multifilesink->file); diff --git a/gst/multifile/gstmultifilesink.h b/gst/multifile/gstmultifilesink.h index dd234d6415b3d55c9a67574e644abb2504ce0933..22c6d128c8dabf73e1cea1890b29a468ee92b655 100644 --- a/gst/multifile/gstmultifilesink.h +++ b/gst/multifile/gstmultifilesink.h @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MULTIFILESINK_H__ diff --git a/gst/multifile/gstmultifilesrc.c b/gst/multifile/gstmultifilesrc.c index d384f4de861f26d891f097994620e0c3f8bc487b..63f9583dc13157d1cfdb522603fe1cab0f6bbd23 100644 --- a/gst/multifile/gstmultifilesrc.c +++ b/gst/multifile/gstmultifilesrc.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-multifilesrc @@ -119,7 +119,7 @@ gst_multi_file_src_class_init (GstMultiFileSrcClass * klass) 0, INT_MAX, DEFAULT_INDEX, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_STOP_INDEX, - g_param_spec_int ("stop-index", "Start Index", + g_param_spec_int ("stop-index", "Stop Index", "Stop value of index. The special value -1 means no stop.", -1, INT_MAX, DEFAULT_INDEX, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); @@ -340,6 +340,15 @@ gst_multi_file_src_create (GstPushSrc * src, GstBuffer ** buffer) if (multifilesrc->index < multifilesrc->start_index) { multifilesrc->index = multifilesrc->start_index; } + + if (multifilesrc->stop_index != -1 && + multifilesrc->index > multifilesrc->stop_index) { + if (multifilesrc->loop) + multifilesrc->index = multifilesrc->start_index; + else + return GST_FLOW_EOS; + } + filename = gst_multi_file_src_get_filename (multifilesrc); GST_DEBUG_OBJECT (multifilesrc, "reading from file \"%s\".", filename); @@ -376,10 +385,6 @@ gst_multi_file_src_create (GstPushSrc * src, GstBuffer ** buffer) multifilesrc->successful_read = TRUE; multifilesrc->index++; - if (multifilesrc->stop_index != -1 && - multifilesrc->index >= multifilesrc->stop_index) { - multifilesrc->index = multifilesrc->start_index; - } buf = gst_buffer_new (); gst_buffer_append_memory (buf, diff --git a/gst/multifile/gstmultifilesrc.h b/gst/multifile/gstmultifilesrc.h index 57ed038084e4ebb6f9b28e118ac83016abe71afa..ac43fe989675c38dbb171374210f67d89684c258 100644 --- a/gst/multifile/gstmultifilesrc.h +++ b/gst/multifile/gstmultifilesrc.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MULTIFILESRC_H__ diff --git a/gst/multifile/gstsplitfilesrc.c b/gst/multifile/gstsplitfilesrc.c index 56def5cd4631721e7d23b6892d758b69611c26d5..f0bc980bc92ab29c67fa8173018ca023bcebc839 100644 --- a/gst/multifile/gstsplitfilesrc.c +++ b/gst/multifile/gstsplitfilesrc.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-splitfilesrc diff --git a/gst/multifile/gstsplitfilesrc.h b/gst/multifile/gstsplitfilesrc.h index f52b3bf2a8fcab476d20a633724c0f17e84f2d28..80abdd3f11a931390f31f03a05d4e5d59c716ef2 100644 --- a/gst/multifile/gstsplitfilesrc.h +++ b/gst/multifile/gstsplitfilesrc.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_SPLIT_FILE_SRC_H__ #define __GST_SPLIT_FILE_SRC_H__ diff --git a/gst/multifile/patternspec.c b/gst/multifile/patternspec.c index 59de8d1ffbd67fa388d895f3712bb9a7a8b72983..848aaba2d6e55bd8230e72b7f3ea4543dfbd35db 100644 --- a/gst/multifile/patternspec.c +++ b/gst/multifile/patternspec.c @@ -14,8 +14,8 @@ * * You should have received a copy of the GNU Lesser 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/gst/multifile/patternspec.h b/gst/multifile/patternspec.h index c3e9436384713e1909dcd9efac554fcbc43f46ba..5bb9b403c55caa2a61a2854a6b0264b0f9b5fcc8 100644 --- a/gst/multifile/patternspec.h +++ b/gst/multifile/patternspec.h @@ -14,8 +14,8 @@ * * You should have received a copy of the GNU Lesser 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __PATTERN_SPEC_H__ diff --git a/gst/multipart/Makefile.in b/gst/multipart/Makefile.in index f6de79cc70ddb0f7fd3f82d25087e4376565c607..cb0e9655924350e2d52c7fa9adae8592570337fa 100644 --- a/gst/multipart/Makefile.in +++ b/gst/multipart/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/multipart -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,10 +163,23 @@ libgstmultipart_la_OBJECTS = $(am_libgstmultipart_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstmultipart_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstmultipart_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstmultipart_la_CFLAGS) $(CFLAGS) \ $(libgstmultipart_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +192,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstmultipart_la_SOURCES) DIST_SOURCES = $(libgstmultipart_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +210,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +394,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -543,6 +596,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -569,12 +623,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstmultipart.la: $(libgstmultipart_la_OBJECTS) $(libgstmultipart_la_DEPENDENCIES) $(EXTRA_libgstmultipart_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstmultipart_la_LINK) -rpath $(plugindir) $(libgstmultipart_la_OBJECTS) $(libgstmultipart_la_LIBADD) $(LIBS) @@ -589,22 +646,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmultipart_la-multipartmux.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -636,26 +696,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -667,15 +716,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -684,6 +729,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -828,19 +888,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/multipart/multipart.c b/gst/multipart/multipart.c index be14d4abab6fe406e6de1a38ab0b1a3fec81d733..30f10626bd89bd7b7de1f4ed353029f7140b2514 100644 --- a/gst/multipart/multipart.c +++ b/gst/multipart/multipart.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/multipart/multipartdemux.c b/gst/multipart/multipartdemux.c index e8dcd30c163c32f52bf7326655fb98c0270069e2..c247f1b558fbcce3719478520c7a306bcd95400e 100644 --- a/gst/multipart/multipartdemux.c +++ b/gst/multipart/multipartdemux.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -40,7 +40,7 @@ * <refsect2> * <title>Sample pipelines</title> * |[ - * gst-launch-1.0 filesrc location=/tmp/test.multipart ! multipartdemux ! jpegdec ! videoconvert ! ximagesink + * gst-launch-1.0 filesrc location=/tmp/test.multipart ! multipartdemux ! image/jpeg,framerate=\(fraction\)5/1 ! jpegparse ! jpegdec ! videoconvert ! autovideosink * ]| a simple pipeline to demux a multipart file muxed with #GstMultipartMux * containing JPEG frames. * </refsect2> @@ -116,7 +116,7 @@ static void gst_multipart_set_property (GObject * object, guint prop_id, static void gst_multipart_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); -static void gst_multipart_demux_finalize (GObject * object); +static void gst_multipart_demux_dispose (GObject * object); #define gst_multipart_demux_parent_class parent_class G_DEFINE_TYPE (GstMultipartDemux, gst_multipart_demux, GST_TYPE_ELEMENT); @@ -129,7 +129,7 @@ gst_multipart_demux_class_init (GstMultipartDemuxClass * klass) GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass); - gobject_class->finalize = gst_multipart_demux_finalize; + gobject_class->dispose = gst_multipart_demux_dispose; gobject_class->set_property = gst_multipart_set_property; gobject_class->get_property = gst_multipart_get_property; @@ -193,24 +193,35 @@ gst_multipart_demux_init (GstMultipartDemux * multipart) } static void -gst_multipart_pad_free (GstMultipartPad * mppad) +gst_multipart_demux_remove_src_pads (GstMultipartDemux * demux) { - g_free (mppad->mime); - g_free (mppad); + while (demux->srcpads != NULL) { + GstMultipartPad *mppad = demux->srcpads->data; + + gst_element_remove_pad (GST_ELEMENT (demux), mppad->pad); + g_free (mppad->mime); + g_free (mppad); + demux->srcpads = g_slist_delete_link (demux->srcpads, demux->srcpads); + } + demux->srcpads = NULL; + demux->numpads = 0; } static void -gst_multipart_demux_finalize (GObject * object) +gst_multipart_demux_dispose (GObject * object) { GstMultipartDemux *demux = GST_MULTIPART_DEMUX (object); - g_object_unref (demux->adapter); + if (demux->adapter != NULL) + g_object_unref (demux->adapter); + demux->adapter = NULL; g_free (demux->boundary); + demux->boundary = NULL; g_free (demux->mime_type); - g_slist_foreach (demux->srcpads, (GFunc) gst_multipart_pad_free, NULL); - g_slist_free (demux->srcpads); + demux->mime_type = NULL; + gst_multipart_demux_remove_src_pads (demux); - G_OBJECT_CLASS (parent_class)->finalize (object); + G_OBJECT_CLASS (parent_class)->dispose (object); } static const gchar * @@ -301,6 +312,8 @@ gst_multipart_find_pad_by_mime (GstMultipartDemux * demux, gchar * mime, mppad->pad = pad; mppad->mime = g_strdup (mime); mppad->last_ret = GST_FLOW_OK; + mppad->last_ts = GST_CLOCK_TIME_NONE; + mppad->discont = TRUE; demux->srcpads = g_slist_prepend (demux->srcpads, mppad); demux->numpads++; @@ -536,7 +549,6 @@ gst_multipart_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) { GstMultipartDemux *multipart; GstAdapter *adapter; - GstClockTime timestamp; gint size = 1; GstFlowReturn res; @@ -545,9 +557,14 @@ gst_multipart_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) res = GST_FLOW_OK; - timestamp = GST_BUFFER_TIMESTAMP (buf); - if (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DISCONT)) { + GSList *l; + + for (l = multipart->srcpads; l != NULL; l = l->next) { + GstMultipartPad *srcpad = l->data; + + srcpad->discont = TRUE; + } gst_adapter_clear (adapter); } gst_adapter_push (adapter, buf); @@ -578,9 +595,13 @@ gst_multipart_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) GST_DEBUG_OBJECT (multipart, "skipping empty content."); gst_adapter_flush (adapter, size - datalen); } else { + GstClockTime ts; + srcpad = gst_multipart_find_pad_by_mime (multipart, multipart->mime_type, &created); + + ts = gst_adapter_prev_pts (adapter, NULL); outbuf = gst_adapter_take_buffer (adapter, datalen); gst_adapter_flush (adapter, size - datalen); @@ -596,11 +617,23 @@ gst_multipart_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) tags = gst_tag_list_new (GST_TAG_CONTAINER_FORMAT, "Multipart", NULL); gst_tag_list_set_scope (tags, GST_TAG_SCOPE_GLOBAL); gst_pad_push_event (srcpad->pad, gst_event_new_tag (tags)); + } - GST_BUFFER_TIMESTAMP (outbuf) = 0; + outbuf = gst_buffer_make_writable (outbuf); + if (srcpad->last_ts == GST_CLOCK_TIME_NONE || srcpad->last_ts != ts) { + GST_BUFFER_TIMESTAMP (outbuf) = ts; + srcpad->last_ts = ts; } else { - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_TIMESTAMP (outbuf) = GST_CLOCK_TIME_NONE; } + + if (srcpad->discont) { + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + srcpad->discont = FALSE; + } else { + GST_BUFFER_FLAG_UNSET (outbuf, GST_BUFFER_FLAG_DISCONT); + } + GST_DEBUG_OBJECT (multipart, "pushing buffer with timestamp %" GST_TIME_FORMAT, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf))); @@ -643,6 +676,9 @@ gst_multipart_demux_change_state (GstElement * element, g_free (multipart->mime_type); multipart->mime_type = NULL; gst_adapter_clear (multipart->adapter); + multipart->content_length = -1; + multipart->scanpos = 0; + gst_multipart_demux_remove_src_pads (multipart); break; case GST_STATE_CHANGE_READY_TO_NULL: break; diff --git a/gst/multipart/multipartdemux.h b/gst/multipart/multipartdemux.h index 48e901b00c68d924f68a48b369f1df29eff67574..4db33c26600832b9381c9f26cfb391475bbb3160 100644 --- a/gst/multipart/multipartdemux.h +++ b/gst/multipart/multipartdemux.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MULTIPART_DEMUX__ @@ -51,7 +51,11 @@ typedef struct gchar *mime; + GstClockTime last_ts; /* last timestamp to make sure we don't send + * two buffers with the same timestamp */ GstFlowReturn last_ret; + + gboolean discont; } GstMultipartPad; diff --git a/gst/multipart/multipartmux.c b/gst/multipart/multipartmux.c index a709f7dfa28935fe00d41df86bb175783e090af6..681429387e5af8ec319d07f35a6cfdadde40a7c3 100644 --- a/gst/multipart/multipartmux.c +++ b/gst/multipart/multipartmux.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -85,6 +85,8 @@ static GstPad *gst_multipart_mux_request_new_pad (GstElement * element, static GstStateChangeReturn gst_multipart_mux_change_state (GstElement * element, GstStateChange transition); +static gboolean gst_multipart_mux_sink_event (GstCollectPads * pads, + GstCollectData * pad, GstEvent * event, GstMultipartMux * mux); static GstFlowReturn gst_multipart_mux_collected (GstCollectPads * pads, GstMultipartMux * mux); @@ -150,6 +152,9 @@ gst_multipart_mux_init (GstMultipartMux * multipart_mux) multipart_mux->boundary = g_strdup (DEFAULT_BOUNDARY); multipart_mux->collect = gst_collect_pads_new (); + gst_collect_pads_set_event_function (multipart_mux->collect, + (GstCollectPadsEventFunction) GST_DEBUG_FUNCPTR (gst_multipart_mux_sink_event), + multipart_mux); gst_collect_pads_set_function (multipart_mux->collect, (GstCollectPadsFunction) GST_DEBUG_FUNCPTR (gst_multipart_mux_collected), multipart_mux); @@ -376,6 +381,27 @@ gst_multipart_mux_queue_pads (GstMultipartMux * mux) return bestpad; } +static gboolean +gst_multipart_mux_sink_event (GstCollectPads * pads, GstCollectData * data, + GstEvent * event, GstMultipartMux * mux) +{ + gboolean ret; + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_FLUSH_STOP: + { + mux->need_segment = TRUE; + break; + } + default: + break; + } + + ret = gst_collect_pads_event_default (pads, data, event, FALSE); + + return ret; +} + /* basic idea: * * 1) find a pad to pull on, this is done by pulling on all pads and diff --git a/gst/multipart/multipartmux.h b/gst/multipart/multipartmux.h index 7a171898d51a0573adaf74deaed5c758f9382579..f66d35e935241b0beea5553fde596d6e28541f8d 100644 --- a/gst/multipart/multipartmux.h +++ b/gst/multipart/multipartmux.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MULTIPART_MUX__ diff --git a/gst/replaygain/Makefile.in b/gst/replaygain/Makefile.in index d6bfb458954a3f9cd92d1bfaf2e5d4bf333269e3..d54753fda67bdef521be7819ee4e7ae0bea4c7f6 100644 --- a/gst/replaygain/Makefile.in +++ b/gst/replaygain/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/replaygain -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -140,10 +166,23 @@ libgstreplaygain_la_OBJECTS = $(am_libgstreplaygain_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstreplaygain_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstreplaygain_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstreplaygain_la_CFLAGS) $(CFLAGS) \ $(libgstreplaygain_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -156,20 +195,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstreplaygain_la_SOURCES) DIST_SOURCES = $(libgstreplaygain_la_SOURCES) am__can_run_installinfo = \ @@ -178,6 +213,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -345,6 +397,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -565,6 +618,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -591,12 +645,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstreplaygain.la: $(libgstreplaygain_la_OBJECTS) $(libgstreplaygain_la_DEPENDENCIES) $(EXTRA_libgstreplaygain_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstreplaygain_la_LINK) -rpath $(plugindir) $(libgstreplaygain_la_OBJECTS) $(libgstreplaygain_la_LIBADD) $(LIBS) @@ -613,22 +670,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreplaygain_la-rganalysis.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -674,26 +734,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -705,15 +754,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -722,6 +767,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -866,19 +926,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/replaygain/gstrganalysis.c b/gst/replaygain/gstrganalysis.c index e38d4d6895cdcb3f77bdbd50c6e6666c0a681a27..3e87953a8f399ee660039a8d1f394ef0d38c9ab7 100644 --- a/gst/replaygain/gstrganalysis.c +++ b/gst/replaygain/gstrganalysis.c @@ -532,6 +532,7 @@ gst_rg_analysis_stop (GstBaseTransform * base) return TRUE; } +/* FIXME: handle global vs. stream-tags? */ static void gst_rg_analysis_handle_tags (GstRgAnalysis * filter, const GstTagList * tag_list) @@ -632,9 +633,10 @@ gst_rg_analysis_handle_eos (GstRgAnalysis * filter) GST_LOG_OBJECT (filter, "posting tag list with results"); gst_tag_list_add (tag_list, GST_TAG_MERGE_APPEND, GST_TAG_REFERENCE_LEVEL, filter->reference_level, NULL); - /* This steals our reference to the list: */ - gst_pad_push_event (GST_BASE_TRANSFORM_SRC_PAD (GST_BASE_TRANSFORM - (filter)), gst_event_new_tag (gst_tag_list_ref (tag_list))); + /* This takes ownership of our reference to the list */ + gst_pad_push_event (GST_BASE_TRANSFORM_SRC_PAD (filter), + gst_event_new_tag (tag_list)); + tag_list = NULL; } } @@ -653,6 +655,7 @@ gst_rg_analysis_handle_eos (GstRgAnalysis * filter) g_object_notify (G_OBJECT (filter), "num-tracks"); } +/* FIXME: return tag list (lists?) based on input tags.. */ static gboolean gst_rg_analysis_track_result (GstRgAnalysis * filter, GstTagList ** tag_list) { diff --git a/gst/replaygain/gstrgvolume.c b/gst/replaygain/gstrgvolume.c index c41684d4fffa379ba1575446304a6e468cb059c8..05c21e0dee9ebf48a76b8c22c05febf6535b7bdd 100644 --- a/gst/replaygain/gstrgvolume.c +++ b/gst/replaygain/gstrgvolume.c @@ -448,12 +448,10 @@ static gboolean gst_rg_volume_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { GstRgVolume *self; - GstPad *volume_sink_pad; GstEvent *send_event = event; gboolean res; self = GST_RG_VOLUME (parent); - volume_sink_pad = gst_ghost_pad_get_target (GST_GHOST_PAD (pad)); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_TAG: @@ -477,12 +475,10 @@ gst_rg_volume_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) } if (G_LIKELY (send_event != NULL)) - res = gst_pad_send_event (volume_sink_pad, send_event); + res = gst_pad_event_default (pad, parent, send_event); else res = TRUE; - gst_object_unref (volume_sink_pad); - return res; } diff --git a/gst/rtp/Makefile.am b/gst/rtp/Makefile.am index 1d9d8df44da4e0db615408d56f46bd23ee988d4e..b863e01be921db2ae5c6035f7791bb2f86d60bd2 100644 --- a/gst/rtp/Makefile.am +++ b/gst/rtp/Makefile.am @@ -1,6 +1,7 @@ plugin_LTLIBRARIES = libgstrtp.la libgstrtp_la_SOURCES = \ + dboolhuff.c \ fnv1hash.c \ gstrtp.c \ gstrtpchannels.c \ @@ -49,6 +50,8 @@ libgstrtp_la_SOURCES = \ gstrtpjpegpay.c \ gstrtpL16depay.c \ gstrtpL16pay.c \ + gstrtpL24depay.c \ + gstrtpL24pay.c \ gstasteriskh263.c \ gstrtpmp1sdepay.c \ gstrtpmp2tdepay.c \ @@ -61,6 +64,8 @@ libgstrtp_la_SOURCES = \ gstrtpmp4apay.c \ gstrtpqcelpdepay.c \ gstrtpqdmdepay.c \ + gstrtpsbcdepay.c \ + gstrtpsbcpay.c \ gstrtpsirenpay.c \ gstrtpsirendepay.c \ gstrtpspeexdepay.c \ @@ -70,92 +75,107 @@ libgstrtp_la_SOURCES = \ gstrtptheorapay.c \ gstrtpvorbisdepay.c \ gstrtpvorbispay.c \ + gstrtpvp8depay.c \ + gstrtpvp8pay.c \ gstrtpvrawdepay.c \ gstrtpvrawpay.c -libgstrtp_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) +libgstrtp_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) \ + $(GST_CFLAGS) -Dvp8_norm=gst_rtpvp8_vp8_norm \ + -Dvp8dx_start_decode=gst_rtpvp8_vp8dx_start_decode \ + -Dvp8dx_bool_decoder_fill=gst_rtpvp8_vp8dx_bool_decoder_fill + libgstrtp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \ - -lgstaudio-@GST_API_VERSION@ \ - -lgstvideo-@GST_API_VERSION@ \ - -lgsttag-@GST_API_VERSION@ \ - -lgstrtp-@GST_API_VERSION@ \ - -lgstpbutils-@GST_API_VERSION@ \ - $(GST_BASE_LIBS) $(GST_LIBS) \ - $(LIBM) + -lgstaudio-@GST_API_VERSION@ \ + -lgstvideo-@GST_API_VERSION@ \ + -lgsttag-@GST_API_VERSION@ \ + -lgstrtp-@GST_API_VERSION@ \ + -lgstpbutils-@GST_API_VERSION@ \ + $(GST_BASE_LIBS) $(GST_LIBS) \ + $(LIBM) libgstrtp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstrtp_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ - fnv1hash.h \ - gstrtpchannels.h \ - gstrtpL16depay.h \ - gstrtpL16pay.h \ - gstrtpac3depay.h \ - gstrtpac3pay.h \ - gstrtpbvdepay.h \ - gstrtpbvpay.h \ - gstrtpceltpay.h \ - gstrtpceltdepay.h \ - gstrtpdvdepay.h \ - gstrtpdvpay.h \ - gstrtpamrdepay.h \ - gstrtpamrpay.h \ - gstrtpgstdepay.h \ - gstrtpgstpay.h \ - gstrtpilbcdepay.h \ - gstrtpilbcpay.h \ - gstrtppcmadepay.h \ - gstrtppcmudepay.h \ - gstrtppcmupay.h \ - gstrtppcmapay.h \ - gstrtpg722depay.h \ - gstrtpg722pay.h \ - gstrtpg723depay.h \ - gstrtpg723pay.h \ - gstrtpg726depay.h \ - gstrtpg726pay.h \ - gstrtpg729depay.h \ - gstrtpg729pay.h \ - gstrtpgsmdepay.h \ - gstrtpgsmpay.h \ - gstrtpmpadepay.h \ - gstrtpmparobustdepay.h \ - gstrtpmpapay.h \ - gstrtpmpvdepay.h \ - gstrtpmpvpay.h \ - gstrtph263pdepay.h \ - gstrtph263ppay.h \ - gstrtph263depay.h \ - gstrtph263pay.h \ - gstrtph264depay.h \ - gstrtph264pay.h \ - gstrtpj2kdepay.h \ - gstrtpj2kpay.h \ - gstrtpjpegdepay.h \ - gstrtpjpegpay.h \ - gstrtpmp1sdepay.h \ - gstrtpmp2tdepay.h \ - gstrtpmp2tpay.h \ - gstrtpmp4vdepay.h \ - gstrtpmp4vpay.h \ - gstrtpmp4gdepay.h \ - gstrtpmp4gpay.h \ - gstrtpmp4adepay.h \ - gstrtpmp4apay.h \ - gstasteriskh263.h \ - gstrtpqcelpdepay.h \ - gstrtpqdmdepay.h \ - gstrtpsirenpay.h \ - gstrtpsirendepay.h \ - gstrtpspeexdepay.h \ - gstrtpspeexpay.h \ - gstrtpsv3vdepay.h \ - gstrtptheoradepay.h \ - gstrtptheorapay.h \ - gstrtpvorbisdepay.h \ - gstrtpvorbispay.h \ - gstrtpvrawdepay.h \ - gstrtpvrawpay.h + dboolhuff.h \ + fnv1hash.h \ + gstrtpchannels.h \ + gstrtpL16depay.h \ + gstrtpL16pay.h \ + gstrtpL24depay.h \ + gstrtpL24pay.h \ + gstrtpac3depay.h \ + gstrtpac3pay.h \ + gstrtpbvdepay.h \ + gstrtpbvpay.h \ + gstrtpceltpay.h \ + gstrtpceltdepay.h \ + gstrtpdvdepay.h \ + gstrtpdvpay.h \ + gstrtpamrdepay.h \ + gstrtpamrpay.h \ + gstrtpgstdepay.h \ + gstrtpgstpay.h \ + gstrtpilbcdepay.h \ + gstrtpilbcpay.h \ + gstrtppcmadepay.h \ + gstrtppcmudepay.h \ + gstrtppcmupay.h \ + gstrtppcmapay.h \ + gstrtpg722depay.h \ + gstrtpg722pay.h \ + gstrtpg723depay.h\ + gstrtpg723pay.h \ + gstrtpg726depay.h \ + gstrtpg726pay.h \ + gstrtpg729depay.h \ + gstrtpg729pay.h \ + gstrtpgsmdepay.h \ + gstrtpgsmpay.h \ + gstrtpmpadepay.h \ + gstrtpmparobustdepay.h \ + gstrtpmpapay.h \ + gstrtpmpvdepay.h \ + gstrtpmpvpay.h \ + gstrtph263pdepay.h \ + gstrtph263ppay.h \ + gstrtph263depay.h \ + gstrtph263pay.h \ + gstrtph264depay.h \ + gstrtph264pay.h \ + gstrtpj2kdepay.h \ + gstrtpj2kpay.h \ + gstrtpjpegdepay.h \ + gstrtpjpegpay.h \ + gstrtpmp1sdepay.h \ + gstrtpmp2tdepay.h \ + gstrtpmp2tpay.h \ + gstrtpmp4vdepay.h \ + gstrtpmp4vpay.h \ + gstrtpmp4gdepay.h \ + gstrtpmp4gpay.h \ + gstrtpmp4adepay.h \ + gstrtpmp4apay.h \ + gstasteriskh263.h \ + gstrtpqcelpdepay.h \ + gstrtpqdmdepay.h \ + gstrtpsbcdepay.h \ + gstrtpsbcpay.h \ + gstrtpsirenpay.h \ + gstrtpsirendepay.h \ + gstrtpspeexdepay.h \ + gstrtpspeexpay.h \ + gstrtpsv3vdepay.h \ + gstrtptheoradepay.h \ + gstrtptheorapay.h \ + gstrtpvorbisdepay.h \ + gstrtpvorbispay.h \ + gstrtpvp8depay.h \ + gstrtpvp8pay.h \ + gstrtpvrawdepay.h \ + gstrtpvrawpay.h + +EXTRA_DIST = dboolhuff.LICENSE Android.mk: Makefile.am $(BUILT_SOURCES) androgenizer \ @@ -165,8 +185,8 @@ Android.mk: Makefile.am $(BUILT_SOURCES) -:SOURCES $(libgstrtp_la_SOURCES) \ -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstrtp_la_CFLAGS) \ -:LDFLAGS $(libgstrtp_la_LDFLAGS) \ - $(libgstrtp_la_LIBADD) \ - -ldl \ + $(libgstrtp_la_LIBADD) \ + -ldl \ -:PASSTHROUGH LOCAL_ARM_MODE:=arm \ - LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \ + LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \ > $@ diff --git a/gst/rtp/Makefile.in b/gst/rtp/Makefile.in index 2a8e32ce8531a967282d88dfb508d45274650ef5..b4fb37783724a3af0faef61e4da46013a220c0b6 100644 --- a/gst/rtp/Makefile.in +++ b/gst/rtp/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/rtp -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in TODO +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) README TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -131,15 +157,16 @@ am__DEPENDENCIES_1 = libgstrtp_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) -am_libgstrtp_la_OBJECTS = libgstrtp_la-fnv1hash.lo \ - libgstrtp_la-gstrtp.lo libgstrtp_la-gstrtpchannels.lo \ - libgstrtp_la-gstrtpac3depay.lo libgstrtp_la-gstrtpac3pay.lo \ - libgstrtp_la-gstrtpbvdepay.lo libgstrtp_la-gstrtpbvpay.lo \ - libgstrtp_la-gstrtpceltdepay.lo libgstrtp_la-gstrtpceltpay.lo \ - libgstrtp_la-gstrtpdvdepay.lo libgstrtp_la-gstrtpdvpay.lo \ - libgstrtp_la-gstrtpgstdepay.lo libgstrtp_la-gstrtpgstpay.lo \ - libgstrtp_la-gstrtpilbcdepay.lo libgstrtp_la-gstrtpilbcpay.lo \ - libgstrtp_la-gstrtpmpadepay.lo libgstrtp_la-gstrtpmpapay.lo \ +am_libgstrtp_la_OBJECTS = libgstrtp_la-dboolhuff.lo \ + libgstrtp_la-fnv1hash.lo libgstrtp_la-gstrtp.lo \ + libgstrtp_la-gstrtpchannels.lo libgstrtp_la-gstrtpac3depay.lo \ + libgstrtp_la-gstrtpac3pay.lo libgstrtp_la-gstrtpbvdepay.lo \ + libgstrtp_la-gstrtpbvpay.lo libgstrtp_la-gstrtpceltdepay.lo \ + libgstrtp_la-gstrtpceltpay.lo libgstrtp_la-gstrtpdvdepay.lo \ + libgstrtp_la-gstrtpdvpay.lo libgstrtp_la-gstrtpgstdepay.lo \ + libgstrtp_la-gstrtpgstpay.lo libgstrtp_la-gstrtpilbcdepay.lo \ + libgstrtp_la-gstrtpilbcpay.lo libgstrtp_la-gstrtpmpadepay.lo \ + libgstrtp_la-gstrtpmpapay.lo \ libgstrtp_la-gstrtpmparobustdepay.lo \ libgstrtp_la-gstrtpmpvdepay.lo libgstrtp_la-gstrtpmpvpay.lo \ libgstrtp_la-gstrtppcmadepay.lo \ @@ -156,30 +183,46 @@ am_libgstrtp_la_OBJECTS = libgstrtp_la-fnv1hash.lo \ libgstrtp_la-gstrtph264pay.lo libgstrtp_la-gstrtpj2kdepay.lo \ libgstrtp_la-gstrtpj2kpay.lo libgstrtp_la-gstrtpjpegdepay.lo \ libgstrtp_la-gstrtpjpegpay.lo libgstrtp_la-gstrtpL16depay.lo \ - libgstrtp_la-gstrtpL16pay.lo libgstrtp_la-gstasteriskh263.lo \ + libgstrtp_la-gstrtpL16pay.lo libgstrtp_la-gstrtpL24depay.lo \ + libgstrtp_la-gstrtpL24pay.lo libgstrtp_la-gstasteriskh263.lo \ libgstrtp_la-gstrtpmp1sdepay.lo \ libgstrtp_la-gstrtpmp2tdepay.lo libgstrtp_la-gstrtpmp2tpay.lo \ libgstrtp_la-gstrtpmp4vdepay.lo libgstrtp_la-gstrtpmp4vpay.lo \ libgstrtp_la-gstrtpmp4gdepay.lo libgstrtp_la-gstrtpmp4gpay.lo \ libgstrtp_la-gstrtpmp4adepay.lo libgstrtp_la-gstrtpmp4apay.lo \ libgstrtp_la-gstrtpqcelpdepay.lo \ - libgstrtp_la-gstrtpqdmdepay.lo libgstrtp_la-gstrtpsirenpay.lo \ + libgstrtp_la-gstrtpqdmdepay.lo libgstrtp_la-gstrtpsbcdepay.lo \ + libgstrtp_la-gstrtpsbcpay.lo libgstrtp_la-gstrtpsirenpay.lo \ libgstrtp_la-gstrtpsirendepay.lo \ libgstrtp_la-gstrtpspeexdepay.lo \ libgstrtp_la-gstrtpspeexpay.lo libgstrtp_la-gstrtpsv3vdepay.lo \ libgstrtp_la-gstrtptheoradepay.lo \ libgstrtp_la-gstrtptheorapay.lo \ libgstrtp_la-gstrtpvorbisdepay.lo \ - libgstrtp_la-gstrtpvorbispay.lo \ - libgstrtp_la-gstrtpvrawdepay.lo libgstrtp_la-gstrtpvrawpay.lo + libgstrtp_la-gstrtpvorbispay.lo libgstrtp_la-gstrtpvp8depay.lo \ + libgstrtp_la-gstrtpvp8pay.lo libgstrtp_la-gstrtpvrawdepay.lo \ + libgstrtp_la-gstrtpvrawpay.lo libgstrtp_la_OBJECTS = $(am_libgstrtp_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstrtp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstrtp_la_CFLAGS) $(CFLAGS) \ $(libgstrtp_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -192,20 +235,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstrtp_la_SOURCES) DIST_SOURCES = $(libgstrtp_la_SOURCES) am__can_run_installinfo = \ @@ -214,6 +253,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -381,6 +437,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -543,6 +600,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ plugin_LTLIBRARIES = libgstrtp.la libgstrtp_la_SOURCES = \ + dboolhuff.c \ fnv1hash.c \ gstrtp.c \ gstrtpchannels.c \ @@ -591,6 +649,8 @@ libgstrtp_la_SOURCES = \ gstrtpjpegpay.c \ gstrtpL16depay.c \ gstrtpL16pay.c \ + gstrtpL24depay.c \ + gstrtpL24pay.c \ gstasteriskh263.c \ gstrtpmp1sdepay.c \ gstrtpmp2tdepay.c \ @@ -603,6 +663,8 @@ libgstrtp_la_SOURCES = \ gstrtpmp4apay.c \ gstrtpqcelpdepay.c \ gstrtpqdmdepay.c \ + gstrtpsbcdepay.c \ + gstrtpsbcpay.c \ gstrtpsirenpay.c \ gstrtpsirendepay.c \ gstrtpspeexdepay.c \ @@ -612,93 +674,107 @@ libgstrtp_la_SOURCES = \ gstrtptheorapay.c \ gstrtpvorbisdepay.c \ gstrtpvorbispay.c \ + gstrtpvp8depay.c \ + gstrtpvp8pay.c \ gstrtpvrawdepay.c \ gstrtpvrawpay.c -libgstrtp_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) +libgstrtp_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) \ + $(GST_CFLAGS) -Dvp8_norm=gst_rtpvp8_vp8_norm \ + -Dvp8dx_start_decode=gst_rtpvp8_vp8dx_start_decode \ + -Dvp8dx_bool_decoder_fill=gst_rtpvp8_vp8dx_bool_decoder_fill + libgstrtp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \ - -lgstaudio-@GST_API_VERSION@ \ - -lgstvideo-@GST_API_VERSION@ \ - -lgsttag-@GST_API_VERSION@ \ - -lgstrtp-@GST_API_VERSION@ \ - -lgstpbutils-@GST_API_VERSION@ \ - $(GST_BASE_LIBS) $(GST_LIBS) \ - $(LIBM) + -lgstaudio-@GST_API_VERSION@ \ + -lgstvideo-@GST_API_VERSION@ \ + -lgsttag-@GST_API_VERSION@ \ + -lgstrtp-@GST_API_VERSION@ \ + -lgstpbutils-@GST_API_VERSION@ \ + $(GST_BASE_LIBS) $(GST_LIBS) \ + $(LIBM) libgstrtp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstrtp_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ - fnv1hash.h \ - gstrtpchannels.h \ - gstrtpL16depay.h \ - gstrtpL16pay.h \ - gstrtpac3depay.h \ - gstrtpac3pay.h \ - gstrtpbvdepay.h \ - gstrtpbvpay.h \ - gstrtpceltpay.h \ - gstrtpceltdepay.h \ - gstrtpdvdepay.h \ - gstrtpdvpay.h \ - gstrtpamrdepay.h \ - gstrtpamrpay.h \ - gstrtpgstdepay.h \ - gstrtpgstpay.h \ - gstrtpilbcdepay.h \ - gstrtpilbcpay.h \ - gstrtppcmadepay.h \ - gstrtppcmudepay.h \ - gstrtppcmupay.h \ - gstrtppcmapay.h \ - gstrtpg722depay.h \ - gstrtpg722pay.h \ - gstrtpg723depay.h \ - gstrtpg723pay.h \ - gstrtpg726depay.h \ - gstrtpg726pay.h \ - gstrtpg729depay.h \ - gstrtpg729pay.h \ - gstrtpgsmdepay.h \ - gstrtpgsmpay.h \ - gstrtpmpadepay.h \ - gstrtpmparobustdepay.h \ - gstrtpmpapay.h \ - gstrtpmpvdepay.h \ - gstrtpmpvpay.h \ - gstrtph263pdepay.h \ - gstrtph263ppay.h \ - gstrtph263depay.h \ - gstrtph263pay.h \ - gstrtph264depay.h \ - gstrtph264pay.h \ - gstrtpj2kdepay.h \ - gstrtpj2kpay.h \ - gstrtpjpegdepay.h \ - gstrtpjpegpay.h \ - gstrtpmp1sdepay.h \ - gstrtpmp2tdepay.h \ - gstrtpmp2tpay.h \ - gstrtpmp4vdepay.h \ - gstrtpmp4vpay.h \ - gstrtpmp4gdepay.h \ - gstrtpmp4gpay.h \ - gstrtpmp4adepay.h \ - gstrtpmp4apay.h \ - gstasteriskh263.h \ - gstrtpqcelpdepay.h \ - gstrtpqdmdepay.h \ - gstrtpsirenpay.h \ - gstrtpsirendepay.h \ - gstrtpspeexdepay.h \ - gstrtpspeexpay.h \ - gstrtpsv3vdepay.h \ - gstrtptheoradepay.h \ - gstrtptheorapay.h \ - gstrtpvorbisdepay.h \ - gstrtpvorbispay.h \ - gstrtpvrawdepay.h \ - gstrtpvrawpay.h - + dboolhuff.h \ + fnv1hash.h \ + gstrtpchannels.h \ + gstrtpL16depay.h \ + gstrtpL16pay.h \ + gstrtpL24depay.h \ + gstrtpL24pay.h \ + gstrtpac3depay.h \ + gstrtpac3pay.h \ + gstrtpbvdepay.h \ + gstrtpbvpay.h \ + gstrtpceltpay.h \ + gstrtpceltdepay.h \ + gstrtpdvdepay.h \ + gstrtpdvpay.h \ + gstrtpamrdepay.h \ + gstrtpamrpay.h \ + gstrtpgstdepay.h \ + gstrtpgstpay.h \ + gstrtpilbcdepay.h \ + gstrtpilbcpay.h \ + gstrtppcmadepay.h \ + gstrtppcmudepay.h \ + gstrtppcmupay.h \ + gstrtppcmapay.h \ + gstrtpg722depay.h \ + gstrtpg722pay.h \ + gstrtpg723depay.h\ + gstrtpg723pay.h \ + gstrtpg726depay.h \ + gstrtpg726pay.h \ + gstrtpg729depay.h \ + gstrtpg729pay.h \ + gstrtpgsmdepay.h \ + gstrtpgsmpay.h \ + gstrtpmpadepay.h \ + gstrtpmparobustdepay.h \ + gstrtpmpapay.h \ + gstrtpmpvdepay.h \ + gstrtpmpvpay.h \ + gstrtph263pdepay.h \ + gstrtph263ppay.h \ + gstrtph263depay.h \ + gstrtph263pay.h \ + gstrtph264depay.h \ + gstrtph264pay.h \ + gstrtpj2kdepay.h \ + gstrtpj2kpay.h \ + gstrtpjpegdepay.h \ + gstrtpjpegpay.h \ + gstrtpmp1sdepay.h \ + gstrtpmp2tdepay.h \ + gstrtpmp2tpay.h \ + gstrtpmp4vdepay.h \ + gstrtpmp4vpay.h \ + gstrtpmp4gdepay.h \ + gstrtpmp4gpay.h \ + gstrtpmp4adepay.h \ + gstrtpmp4apay.h \ + gstasteriskh263.h \ + gstrtpqcelpdepay.h \ + gstrtpqdmdepay.h \ + gstrtpsbcdepay.h \ + gstrtpsbcpay.h \ + gstrtpsirenpay.h \ + gstrtpsirendepay.h \ + gstrtpspeexdepay.h \ + gstrtpspeexpay.h \ + gstrtpsv3vdepay.h \ + gstrtptheoradepay.h \ + gstrtptheorapay.h \ + gstrtpvorbisdepay.h \ + gstrtpvorbispay.h \ + gstrtpvp8depay.h \ + gstrtpvp8pay.h \ + gstrtpvrawdepay.h \ + gstrtpvrawpay.h + +EXTRA_DIST = dboolhuff.LICENSE all: all-am .SUFFIXES: @@ -733,6 +809,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -759,12 +836,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstrtp.la: $(libgstrtp_la_OBJECTS) $(libgstrtp_la_DEPENDENCIES) $(EXTRA_libgstrtp_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstrtp_la_LINK) -rpath $(plugindir) $(libgstrtp_la_OBJECTS) $(libgstrtp_la_LIBADD) $(LIBS) @@ -774,11 +854,14 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-dboolhuff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-fnv1hash.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstasteriskh263.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpL16depay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpL16pay.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpL24depay.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpL24pay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpac3depay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpac3pay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpamrdepay.Plo@am__quote@ @@ -834,6 +917,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtppcmupay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpqcelpdepay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpqdmdepay.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpsbcdepay.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpsbcpay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpsirendepay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpsirenpay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpspeexdepay.Plo@am__quote@ @@ -843,30 +928,42 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtptheorapay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpvorbisdepay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpvorbispay.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpvp8depay.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpvp8pay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpvrawdepay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtp_la-gstrtpvrawpay.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< +libgstrtp_la-dboolhuff.lo: dboolhuff.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-dboolhuff.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-dboolhuff.Tpo -c -o libgstrtp_la-dboolhuff.lo `test -f 'dboolhuff.c' || echo '$(srcdir)/'`dboolhuff.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-dboolhuff.Tpo $(DEPDIR)/libgstrtp_la-dboolhuff.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dboolhuff.c' object='libgstrtp_la-dboolhuff.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 $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -c -o libgstrtp_la-dboolhuff.lo `test -f 'dboolhuff.c' || echo '$(srcdir)/'`dboolhuff.c + libgstrtp_la-fnv1hash.lo: fnv1hash.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-fnv1hash.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-fnv1hash.Tpo -c -o libgstrtp_la-fnv1hash.lo `test -f 'fnv1hash.c' || echo '$(srcdir)/'`fnv1hash.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-fnv1hash.Tpo $(DEPDIR)/libgstrtp_la-fnv1hash.Plo @@ -1203,6 +1300,20 @@ libgstrtp_la-gstrtpL16pay.lo: gstrtpL16pay.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 $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -c -o libgstrtp_la-gstrtpL16pay.lo `test -f 'gstrtpL16pay.c' || echo '$(srcdir)/'`gstrtpL16pay.c +libgstrtp_la-gstrtpL24depay.lo: gstrtpL24depay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-gstrtpL24depay.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-gstrtpL24depay.Tpo -c -o libgstrtp_la-gstrtpL24depay.lo `test -f 'gstrtpL24depay.c' || echo '$(srcdir)/'`gstrtpL24depay.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-gstrtpL24depay.Tpo $(DEPDIR)/libgstrtp_la-gstrtpL24depay.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpL24depay.c' object='libgstrtp_la-gstrtpL24depay.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 $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -c -o libgstrtp_la-gstrtpL24depay.lo `test -f 'gstrtpL24depay.c' || echo '$(srcdir)/'`gstrtpL24depay.c + +libgstrtp_la-gstrtpL24pay.lo: gstrtpL24pay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-gstrtpL24pay.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-gstrtpL24pay.Tpo -c -o libgstrtp_la-gstrtpL24pay.lo `test -f 'gstrtpL24pay.c' || echo '$(srcdir)/'`gstrtpL24pay.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-gstrtpL24pay.Tpo $(DEPDIR)/libgstrtp_la-gstrtpL24pay.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpL24pay.c' object='libgstrtp_la-gstrtpL24pay.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 $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -c -o libgstrtp_la-gstrtpL24pay.lo `test -f 'gstrtpL24pay.c' || echo '$(srcdir)/'`gstrtpL24pay.c + libgstrtp_la-gstasteriskh263.lo: gstasteriskh263.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-gstasteriskh263.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-gstasteriskh263.Tpo -c -o libgstrtp_la-gstasteriskh263.lo `test -f 'gstasteriskh263.c' || echo '$(srcdir)/'`gstasteriskh263.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-gstasteriskh263.Tpo $(DEPDIR)/libgstrtp_la-gstasteriskh263.Plo @@ -1287,6 +1398,20 @@ libgstrtp_la-gstrtpqdmdepay.lo: gstrtpqdmdepay.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 $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -c -o libgstrtp_la-gstrtpqdmdepay.lo `test -f 'gstrtpqdmdepay.c' || echo '$(srcdir)/'`gstrtpqdmdepay.c +libgstrtp_la-gstrtpsbcdepay.lo: gstrtpsbcdepay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-gstrtpsbcdepay.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-gstrtpsbcdepay.Tpo -c -o libgstrtp_la-gstrtpsbcdepay.lo `test -f 'gstrtpsbcdepay.c' || echo '$(srcdir)/'`gstrtpsbcdepay.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-gstrtpsbcdepay.Tpo $(DEPDIR)/libgstrtp_la-gstrtpsbcdepay.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpsbcdepay.c' object='libgstrtp_la-gstrtpsbcdepay.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 $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -c -o libgstrtp_la-gstrtpsbcdepay.lo `test -f 'gstrtpsbcdepay.c' || echo '$(srcdir)/'`gstrtpsbcdepay.c + +libgstrtp_la-gstrtpsbcpay.lo: gstrtpsbcpay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-gstrtpsbcpay.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-gstrtpsbcpay.Tpo -c -o libgstrtp_la-gstrtpsbcpay.lo `test -f 'gstrtpsbcpay.c' || echo '$(srcdir)/'`gstrtpsbcpay.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-gstrtpsbcpay.Tpo $(DEPDIR)/libgstrtp_la-gstrtpsbcpay.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpsbcpay.c' object='libgstrtp_la-gstrtpsbcpay.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 $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -c -o libgstrtp_la-gstrtpsbcpay.lo `test -f 'gstrtpsbcpay.c' || echo '$(srcdir)/'`gstrtpsbcpay.c + libgstrtp_la-gstrtpsirenpay.lo: gstrtpsirenpay.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-gstrtpsirenpay.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-gstrtpsirenpay.Tpo -c -o libgstrtp_la-gstrtpsirenpay.lo `test -f 'gstrtpsirenpay.c' || echo '$(srcdir)/'`gstrtpsirenpay.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-gstrtpsirenpay.Tpo $(DEPDIR)/libgstrtp_la-gstrtpsirenpay.Plo @@ -1350,6 +1475,20 @@ libgstrtp_la-gstrtpvorbispay.lo: gstrtpvorbispay.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 $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -c -o libgstrtp_la-gstrtpvorbispay.lo `test -f 'gstrtpvorbispay.c' || echo '$(srcdir)/'`gstrtpvorbispay.c +libgstrtp_la-gstrtpvp8depay.lo: gstrtpvp8depay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-gstrtpvp8depay.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-gstrtpvp8depay.Tpo -c -o libgstrtp_la-gstrtpvp8depay.lo `test -f 'gstrtpvp8depay.c' || echo '$(srcdir)/'`gstrtpvp8depay.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-gstrtpvp8depay.Tpo $(DEPDIR)/libgstrtp_la-gstrtpvp8depay.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpvp8depay.c' object='libgstrtp_la-gstrtpvp8depay.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 $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -c -o libgstrtp_la-gstrtpvp8depay.lo `test -f 'gstrtpvp8depay.c' || echo '$(srcdir)/'`gstrtpvp8depay.c + +libgstrtp_la-gstrtpvp8pay.lo: gstrtpvp8pay.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-gstrtpvp8pay.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-gstrtpvp8pay.Tpo -c -o libgstrtp_la-gstrtpvp8pay.lo `test -f 'gstrtpvp8pay.c' || echo '$(srcdir)/'`gstrtpvp8pay.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-gstrtpvp8pay.Tpo $(DEPDIR)/libgstrtp_la-gstrtpvp8pay.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpvp8pay.c' object='libgstrtp_la-gstrtpvp8pay.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 $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -c -o libgstrtp_la-gstrtpvp8pay.lo `test -f 'gstrtpvp8pay.c' || echo '$(srcdir)/'`gstrtpvp8pay.c + libgstrtp_la-gstrtpvrawdepay.lo: gstrtpvrawdepay.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtp_la_CFLAGS) $(CFLAGS) -MT libgstrtp_la-gstrtpvrawdepay.lo -MD -MP -MF $(DEPDIR)/libgstrtp_la-gstrtpvrawdepay.Tpo -c -o libgstrtp_la-gstrtpvrawdepay.lo `test -f 'gstrtpvrawdepay.c' || echo '$(srcdir)/'`gstrtpvrawdepay.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtp_la-gstrtpvrawdepay.Tpo $(DEPDIR)/libgstrtp_la-gstrtpvrawdepay.Plo @@ -1370,26 +1509,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -1401,15 +1529,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -1418,6 +1542,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -1562,19 +1701,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) @@ -1585,10 +1725,10 @@ Android.mk: Makefile.am $(BUILT_SOURCES) -:SOURCES $(libgstrtp_la_SOURCES) \ -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstrtp_la_CFLAGS) \ -:LDFLAGS $(libgstrtp_la_LDFLAGS) \ - $(libgstrtp_la_LIBADD) \ - -ldl \ + $(libgstrtp_la_LIBADD) \ + -ldl \ -:PASSTHROUGH LOCAL_ARM_MODE:=arm \ - LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \ + LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \ > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/gst/rtp/README b/gst/rtp/README index 97afe6b282fc02d473530d513e08f26fa85b0dee..94549d703d7d4059d9d27600ec5dc2e6a3b7f130 100644 --- a/gst/rtp/README +++ b/gst/rtp/README @@ -343,7 +343,7 @@ Some gst-launch-1.0 lines: Even when sync is enabled, the two different streams will not play synchronised against eachother because the receiver does not have enough information to - perform this task. For this you need to add the gstrtpbin element in both the + perform this task. For this you need to add the rtpbin element in both the sender and receiver pipeline and use additional sources and sinks to transmit RTCP packets used for inter-stream synchronisation. diff --git a/gst/rtp/dboolhuff.LICENSE b/gst/rtp/dboolhuff.LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..83e4e6f6d7722fa52e30567ce891d096dd4d110f --- /dev/null +++ b/gst/rtp/dboolhuff.LICENSE @@ -0,0 +1,29 @@ +Copyright (c) 2010, Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/gst/rtp/dboolhuff.c b/gst/rtp/dboolhuff.c new file mode 100644 index 0000000000000000000000000000000000000000..0e1fd6e2fa22aaad55bc08526bf6e5bdb27b4c1a --- /dev/null +++ b/gst/rtp/dboolhuff.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2010 The WebM project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the dboolhuff.LICENSE file in this directory. + * See the libvpx original distribution for more information, + * including patent information, and author information. + */ + + +#include "dboolhuff.h" + +const unsigned char vp8_norm[256] __attribute__ ((aligned (16))) = { +0, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +int +vp8dx_start_decode (BOOL_DECODER * br, + const unsigned char *source, unsigned int source_sz) +{ + br->user_buffer_end = source + source_sz; + br->user_buffer = source; + br->value = 0; + br->count = -8; + br->range = 255; + + if (source_sz && !source) + return 1; + + /* Populate the buffer */ + vp8dx_bool_decoder_fill (br); + + return 0; +} + + +void +vp8dx_bool_decoder_fill (BOOL_DECODER * br) +{ + const unsigned char *bufptr; + const unsigned char *bufend; + VP8_BD_VALUE value; + int count; + bufend = br->user_buffer_end; + bufptr = br->user_buffer; + value = br->value; + count = br->count; + + VP8DX_BOOL_DECODER_FILL (count, value, bufptr, bufend); + + br->user_buffer = bufptr; + br->value = value; + br->count = count; +} diff --git a/gst/rtp/dboolhuff.h b/gst/rtp/dboolhuff.h new file mode 100644 index 0000000000000000000000000000000000000000..41b0f5d9a4231b58e527d71caf4e0dcdeb19357f --- /dev/null +++ b/gst/rtp/dboolhuff.h @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2010 The WebM project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the dboolhuff.LICENSE file in this directory. + * See the libvpx original distribution for more information, + * including patent information, and author information. + */ + + +#ifndef DBOOLHUFF_H +#define DBOOLHUFF_H +#include <stddef.h> +#include <limits.h> +#include <glib.h> + +typedef size_t VP8_BD_VALUE; + +# define VP8_BD_VALUE_SIZE ((int)sizeof(VP8_BD_VALUE)*CHAR_BIT) +/*This is meant to be a large, positive constant that can still be efficiently + loaded as an immediate (on platforms like ARM, for example). + Even relatively modest values like 100 would work fine.*/ +# define VP8_LOTS_OF_BITS (0x40000000) + +typedef struct +{ + const unsigned char *user_buffer_end; + const unsigned char *user_buffer; + VP8_BD_VALUE value; + int count; + unsigned int range; +} BOOL_DECODER; + +extern const unsigned char vp8_norm[256] __attribute__((aligned(16))); + +int vp8dx_start_decode(BOOL_DECODER *br, + const unsigned char *source, + unsigned int source_sz); + +void vp8dx_bool_decoder_fill(BOOL_DECODER *br); + +/*The refill loop is used in several places, so define it in a macro to make + sure they're all consistent. + An inline function would be cleaner, but has a significant penalty, because + multiple BOOL_DECODER fields must be modified, and the compiler is not smart + enough to eliminate the stores to those fields and the subsequent reloads + from them when inlining the function.*/ +#define VP8DX_BOOL_DECODER_FILL(_count,_value,_bufptr,_bufend) \ + do \ + { \ + int shift = VP8_BD_VALUE_SIZE - 8 - ((_count) + 8); \ + int loop_end, x; \ + size_t bits_left = ((_bufend)-(_bufptr))*CHAR_BIT; \ + \ + x = shift + CHAR_BIT - bits_left; \ + loop_end = 0; \ + if(x >= 0) \ + { \ + (_count) += VP8_LOTS_OF_BITS; \ + loop_end = x; \ + if(!bits_left) break; \ + } \ + while(shift >= loop_end) \ + { \ + (_count) += CHAR_BIT; \ + (_value) |= (VP8_BD_VALUE)*(_bufptr)++ << shift; \ + shift -= CHAR_BIT; \ + } \ + } \ + while(0) \ + + +static int vp8dx_decode_bool(BOOL_DECODER *br, int probability) { + unsigned int bit = 0; + VP8_BD_VALUE value; + unsigned int split; + VP8_BD_VALUE bigsplit; + int count; + unsigned int range; + + split = 1 + (((br->range - 1) * probability) >> 8); + + if(br->count < 0) + vp8dx_bool_decoder_fill(br); + + value = br->value; + count = br->count; + + bigsplit = (VP8_BD_VALUE)split << (VP8_BD_VALUE_SIZE - 8); + + range = split; + + if (value >= bigsplit) + { + range = br->range - split; + value = value - bigsplit; + bit = 1; + } + + { + register unsigned int shift = vp8_norm[range]; + range <<= shift; + value <<= shift; + count -= shift; + } + br->value = value; + br->count = count; + br->range = range; + + return bit; +} + +static G_GNUC_UNUSED int vp8_decode_value(BOOL_DECODER *br, int bits) +{ + int z = 0; + int bit; + + for (bit = bits - 1; bit >= 0; bit--) + { + z |= (vp8dx_decode_bool(br, 0x80) << bit); + } + + return z; +} + +static G_GNUC_UNUSED int vp8dx_bool_error(BOOL_DECODER *br) +{ + /* Check if we have reached the end of the buffer. + * + * Variable 'count' stores the number of bits in the 'value' buffer, minus + * 8. The top byte is part of the algorithm, and the remainder is buffered + * to be shifted into it. So if count == 8, the top 16 bits of 'value' are + * occupied, 8 for the algorithm and 8 in the buffer. + * + * When reading a byte from the user's buffer, count is filled with 8 and + * one byte is filled into the value buffer. When we reach the end of the + * data, count is additionally filled with VP8_LOTS_OF_BITS. So when + * count == VP8_LOTS_OF_BITS - 1, the user's data has been exhausted. + */ + if ((br->count > VP8_BD_VALUE_SIZE) && (br->count < VP8_LOTS_OF_BITS)) + { + /* We have tried to decode bits after the end of + * stream was encountered. + */ + return 1; + } + + /* No error. */ + return 0; +} +#endif diff --git a/gst/rtp/fnv1hash.c b/gst/rtp/fnv1hash.c index a7926e46d480a8a4baf830eb5b12c5b3ed8834e7..9885bb2688d2bc8334e120dd272e5e5549ff2ff0 100644 --- a/gst/rtp/fnv1hash.c +++ b/gst/rtp/fnv1hash.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/fnv1hash.h b/gst/rtp/fnv1hash.h index e50a5b9755f560022e740c0c3cafdb5748d1e1b8..7047067ff33a0241969aef05bb8e5c500fa7d54d 100644 --- a/gst/rtp/fnv1hash.h +++ b/gst/rtp/fnv1hash.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_FNV1_HASH_H__ diff --git a/gst/rtp/gstasteriskh263.c b/gst/rtp/gstasteriskh263.c index 85e91661e45f137ee6976174e9e139442d89c0ad..a01fbc8a85999d000de2e86e8c1622e731c197b2 100644 --- a/gst/rtp/gstasteriskh263.c +++ b/gst/rtp/gstasteriskh263.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstasteriskh263.h b/gst/rtp/gstasteriskh263.h index 8451e7e2f8d4db300b56acd7e82485848870b2de..1c9523d4c9ae4ba191ed26eac011a75d2e963395 100644 --- a/gst/rtp/gstasteriskh263.h +++ b/gst/rtp/gstasteriskh263.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_ASTERISK_H263_H__ diff --git a/gst/rtp/gstrtp.c b/gst/rtp/gstrtp.c index ca104ecb9473c27f01803d403aab86b74e9aefea..893dafdef92085e7c9f3194faecf8a6b1c7bead2 100644 --- a/gst/rtp/gstrtp.c +++ b/gst/rtp/gstrtp.c @@ -13,14 +13,16 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif +#include <gst/tag/tag.h> + #include "gstrtpac3depay.h" #include "gstrtpac3pay.h" #include "gstrtpbvdepay.h" @@ -66,6 +68,8 @@ #include "gstrtpjpegpay.h" #include "gstrtpL16depay.h" #include "gstrtpL16pay.h" +#include "gstrtpL24depay.h" +#include "gstrtpL24pay.h" #include "gstasteriskh263.h" #include "gstrtpmp1sdepay.h" #include "gstrtpmp2tdepay.h" @@ -78,6 +82,8 @@ #include "gstrtpmp4gpay.h" #include "gstrtpqcelpdepay.h" #include "gstrtpqdmdepay.h" +#include "gstrtpsbcdepay.h" +#include "gstrtpsbcpay.h" #include "gstrtpsirenpay.h" #include "gstrtpsirendepay.h" #include "gstrtpspeexpay.h" @@ -87,12 +93,16 @@ #include "gstrtptheorapay.h" #include "gstrtpvorbisdepay.h" #include "gstrtpvorbispay.h" +#include "gstrtpvp8depay.h" +#include "gstrtpvp8pay.h" #include "gstrtpvrawdepay.h" #include "gstrtpvrawpay.h" static gboolean plugin_init (GstPlugin * plugin) { + gst_tag_image_type_get_type (); + if (!gst_rtp_ac3_depay_plugin_init (plugin)) return FALSE; @@ -228,6 +238,12 @@ plugin_init (GstPlugin * plugin) if (!gst_rtp_L16_depay_plugin_init (plugin)) return FALSE; + if (!gst_rtp_L24_pay_plugin_init (plugin)) + return FALSE; + + if (!gst_rtp_L24_depay_plugin_init (plugin)) + return FALSE; + if (!gst_asteriskh263_plugin_init (plugin)) return FALSE; @@ -264,6 +280,12 @@ plugin_init (GstPlugin * plugin) if (!gst_rtp_qdm2_depay_plugin_init (plugin)) return FALSE; + if (!gst_rtp_sbc_depay_plugin_init (plugin)) + return FALSE; + + if (!gst_rtp_sbc_pay_plugin_init (plugin)) + return FALSE; + if (!gst_rtp_siren_pay_plugin_init (plugin)) return FALSE; @@ -291,6 +313,12 @@ plugin_init (GstPlugin * plugin) if (!gst_rtp_vorbis_pay_plugin_init (plugin)) return FALSE; + if (!gst_rtp_vp8_depay_plugin_init (plugin)) + return FALSE; + + if (!gst_rtp_vp8_pay_plugin_init (plugin)) + return FALSE; + if (!gst_rtp_vraw_depay_plugin_init (plugin)) return FALSE; diff --git a/gst/rtp/gstrtpL16depay.c b/gst/rtp/gstrtpL16depay.c index f953db8df94bfd213008064c1765d0ebb0712612..7e96d9dd64b23c88058e73c154e94b530fb3c504 100644 --- a/gst/rtp/gstrtpL16depay.c +++ b/gst/rtp/gstrtpL16depay.c @@ -13,8 +13,26 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpL16depay + * @see_also: rtpL16pay + * + * Extract raw audio from RTP packets according to RFC 3551. + * For detailed information see: http://www.rfc-editor.org/rfc/rfc3551.txt + * + * <refsect2> + * <title>Example pipeline</title> + * |[ + * gst-launch udpsrc caps='application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(string)1, channels=(int)1, payload=(int)96' ! rtpL16depay ! pulsesink + * ]| This example pipeline will depayload an RTP raw audio stream. Refer to + * the rtpL16pay example to create the RTP stream. + * </refsect2> + * + * Last reviewed on 2013-04-25 (1.1.0) */ #ifdef HAVE_CONFIG_H @@ -231,8 +249,8 @@ gst_rtp_L16_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) marker = gst_rtp_buffer_get_marker (&rtp); if (marker) { - /* mark talk spurt with DISCONT */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + /* mark talk spurt with RESYNC */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } outbuf = gst_buffer_make_writable (outbuf); diff --git a/gst/rtp/gstrtpL16depay.h b/gst/rtp/gstrtpL16depay.h index b5b7c937662f8f8986a5a72a908d0cc7385e0434..125d4cd53db6d6b43d4d810444c5e19862eb725a 100644 --- a/gst/rtp/gstrtpL16depay.h +++ b/gst/rtp/gstrtpL16depay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_L16_DEPAY_H__ diff --git a/gst/rtp/gstrtpL16pay.c b/gst/rtp/gstrtpL16pay.c index 19b89b89073dda99f34d3bb0c34f2b4a9912c9c7..4a101ee1de1633679ad4764a32d7541a6b5482d8 100644 --- a/gst/rtp/gstrtpL16pay.c +++ b/gst/rtp/gstrtpL16pay.c @@ -13,8 +13,26 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpL16pay + * @see_also: rtpL16depay + * + * Payload raw audio into RTP packets according to RFC 3551. + * For detailed information see: http://www.rfc-editor.org/rfc/rfc3551.txt + * + * <refsect2> + * <title>Example pipeline</title> + * |[ + * gst-launch -v audiotestsrc ! audioconvert ! rtpL16pay ! udpsink + * ]| This example pipeline will payload raw audio. Refer to + * the rtpL16depay example to depayload and play the RTP stream. + * </refsect2> + * + * Last reviewed on 2013-04-25 (1.1.0) */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpL16pay.h b/gst/rtp/gstrtpL16pay.h index 515a512d93dc7ff6410bae09c839f38dc6529dcd..f4f3702e1b703651c30d9c3f772626c51ce6e215 100644 --- a/gst/rtp/gstrtpL16pay.h +++ b/gst/rtp/gstrtpL16pay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_L16_PAY_H__ diff --git a/gst/rtp/gstrtpL24depay.c b/gst/rtp/gstrtpL24depay.c new file mode 100644 index 0000000000000000000000000000000000000000..1925ce08226a1411a45ffa9abce94932a342bbc2 --- /dev/null +++ b/gst/rtp/gstrtpL24depay.c @@ -0,0 +1,266 @@ +/* GStreamer + * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpL24depay + * @see_also: rtpL24pay + * + * Extract raw audio from RTP packets according to RFC 3190, section 4. + * For detailed information see: http://www.rfc-editor.org/rfc/rfc3190.txt + * + * <refsect2> + * <title>Example pipeline</title> + * |[ + * gst-launch udpsrc caps='application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L24, encoding-params=(string)1, channels=(int)1, payload=(int)96' ! rtpL24depay ! pulsesink + * ]| This example pipeline will depayload an RTP raw audio stream. Refer to + * the rtpL24pay example to create the RTP stream. + * </refsect2> + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <string.h> +#include <stdlib.h> + +#include <gst/audio/audio.h> + +#include "gstrtpL24depay.h" +#include "gstrtpchannels.h" + +GST_DEBUG_CATEGORY_STATIC (rtpL24depay_debug); +#define GST_CAT_DEFAULT (rtpL24depay_debug) + +static GstStaticPadTemplate gst_rtp_L24_depay_src_template = +GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "format = (string) S24BE, " + "layout = (string) interleaved, " + "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, MAX ]") + ); + +static GstStaticPadTemplate gst_rtp_L24_depay_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp, " + "media = (string) \"audio\", " "clock-rate = (int) [ 1, MAX ], " + "encoding-name = (string) \"L24\"") + ); + +#define gst_rtp_L24_depay_parent_class parent_class +G_DEFINE_TYPE (GstRtpL24Depay, gst_rtp_L24_depay, GST_TYPE_RTP_BASE_DEPAYLOAD); + +static gboolean gst_rtp_L24_depay_setcaps (GstRTPBaseDepayload * depayload, + GstCaps * caps); +static GstBuffer *gst_rtp_L24_depay_process (GstRTPBaseDepayload * depayload, + GstBuffer * buf); + +static void +gst_rtp_L24_depay_class_init (GstRtpL24DepayClass * klass) +{ + GstElementClass *gstelement_class; + GstRTPBaseDepayloadClass *gstrtpbasedepayload_class; + + gstelement_class = (GstElementClass *) klass; + gstrtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass; + + gstrtpbasedepayload_class->set_caps = gst_rtp_L24_depay_setcaps; + gstrtpbasedepayload_class->process = gst_rtp_L24_depay_process; + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&gst_rtp_L24_depay_src_template)); + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&gst_rtp_L24_depay_sink_template)); + + gst_element_class_set_static_metadata (gstelement_class, + "RTP audio depayloader", "Codec/Depayloader/Network/RTP", + "Extracts raw 24-bit audio from RTP packets", + "Zeeshan Ali <zak147@yahoo.com>," "Wim Taymans <wim.taymans@gmail.com>," + "David Holroyd <dave@badgers-in-foil.co.uk>"); + + GST_DEBUG_CATEGORY_INIT (rtpL24depay_debug, "rtpL24depay", 0, + "Raw Audio RTP Depayloader"); +} + +static void +gst_rtp_L24_depay_init (GstRtpL24Depay * rtpL24depay) +{ +} + +static gint +gst_rtp_L24_depay_parse_int (GstStructure * structure, const gchar * field, + gint def) +{ + const gchar *str; + gint res; + + if ((str = gst_structure_get_string (structure, field))) + return atoi (str); + + if (gst_structure_get_int (structure, field, &res)) + return res; + + return def; +} + +static gboolean +gst_rtp_L24_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps) +{ + GstStructure *structure; + GstRtpL24Depay *rtpL24depay; + gint clock_rate, payload; + gint channels; + GstCaps *srccaps; + gboolean res; + const gchar *channel_order; + const GstRTPChannelOrder *order; + GstAudioInfo *info; + + rtpL24depay = GST_RTP_L24_DEPAY (depayload); + + structure = gst_caps_get_structure (caps, 0); + + payload = 96; + gst_structure_get_int (structure, "payload", &payload); + /* no fixed mapping, we need clock-rate */ + channels = 0; + clock_rate = 0; + + /* caps can overwrite defaults */ + clock_rate = + gst_rtp_L24_depay_parse_int (structure, "clock-rate", clock_rate); + if (clock_rate == 0) + goto no_clockrate; + + channels = + gst_rtp_L24_depay_parse_int (structure, "encoding-params", channels); + if (channels == 0) { + channels = gst_rtp_L24_depay_parse_int (structure, "channels", channels); + if (channels == 0) { + /* channels defaults to 1 otherwise */ + channels = 1; + } + } + + depayload->clock_rate = clock_rate; + + info = &rtpL24depay->info; + gst_audio_info_init (info); + info->finfo = gst_audio_format_get_info (GST_AUDIO_FORMAT_S24BE); + info->rate = clock_rate; + info->channels = channels; + info->bpf = (info->finfo->width / 8) * channels; + + /* add channel positions */ + channel_order = gst_structure_get_string (structure, "channel-order"); + + order = gst_rtp_channels_get_by_order (channels, channel_order); + rtpL24depay->order = order; + if (order) { + memcpy (info->position, order->pos, + sizeof (GstAudioChannelPosition) * channels); + gst_audio_channel_positions_to_valid_order (info->position, info->channels); + } else { + GST_ELEMENT_WARNING (rtpL24depay, STREAM, DECODE, + (NULL), ("Unknown channel order '%s' for %d channels", + GST_STR_NULL (channel_order), channels)); + /* create default NONE layout */ + gst_rtp_channels_create_default (channels, info->position); + } + + srccaps = gst_audio_info_to_caps (info); + res = gst_pad_set_caps (depayload->srcpad, srccaps); + gst_caps_unref (srccaps); + + return res; + + /* ERRORS */ +no_clockrate: + { + GST_ERROR_OBJECT (depayload, "no clock-rate specified"); + return FALSE; + } +} + +static GstBuffer * +gst_rtp_L24_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) +{ + GstRtpL24Depay *rtpL24depay; + GstBuffer *outbuf; + gint payload_len; + gboolean marker; + GstRTPBuffer rtp = { NULL }; + + rtpL24depay = GST_RTP_L24_DEPAY (depayload); + + gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp); + payload_len = gst_rtp_buffer_get_payload_len (&rtp); + + if (payload_len <= 0) + goto empty_packet; + + GST_DEBUG_OBJECT (rtpL24depay, "got payload of %d bytes", payload_len); + + outbuf = gst_rtp_buffer_get_payload_buffer (&rtp); + marker = gst_rtp_buffer_get_marker (&rtp); + + if (marker) { + /* mark talk spurt with RESYNC */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); + } + + outbuf = gst_buffer_make_writable (outbuf); + if (rtpL24depay->order && + !gst_audio_buffer_reorder_channels (outbuf, + rtpL24depay->info.finfo->format, rtpL24depay->info.channels, + rtpL24depay->info.position, rtpL24depay->order->pos)) { + goto reorder_failed; + } + + gst_rtp_buffer_unmap (&rtp); + + return outbuf; + + /* ERRORS */ +empty_packet: + { + GST_ELEMENT_WARNING (rtpL24depay, STREAM, DECODE, + ("Empty Payload."), (NULL)); + gst_rtp_buffer_unmap (&rtp); + return NULL; + } +reorder_failed: + { + GST_ELEMENT_ERROR (rtpL24depay, STREAM, DECODE, + ("Channel reordering failed."), (NULL)); + gst_rtp_buffer_unmap (&rtp); + return NULL; + } +} + +gboolean +gst_rtp_L24_depay_plugin_init (GstPlugin * plugin) +{ + return gst_element_register (plugin, "rtpL24depay", + GST_RANK_SECONDARY, GST_TYPE_RTP_L24_DEPAY); +} diff --git a/gst/rtp/gstrtpL24depay.h b/gst/rtp/gstrtpL24depay.h new file mode 100644 index 0000000000000000000000000000000000000000..c4e00e6f231b496b1dbdf4c84ef17b80e6aef474 --- /dev/null +++ b/gst/rtp/gstrtpL24depay.h @@ -0,0 +1,67 @@ +/* GStreamer + * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_RTP_L24_DEPAY_H__ +#define __GST_RTP_L24_DEPAY_H__ + +#include <gst/gst.h> +#include <gst/rtp/gstrtpbasedepayload.h> +#include <gst/audio/audio.h> + +#include "gstrtpchannels.h" + +G_BEGIN_DECLS + +/* Standard macros for defining types for this element. */ +#define GST_TYPE_RTP_L24_DEPAY \ + (gst_rtp_L24_depay_get_type()) +#define GST_RTP_L24_DEPAY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_L24_DEPAY,GstRtpL24Depay)) +#define GST_RTP_L24_DEPAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_L24_DEPAY,GstRtpL24DepayClass)) +#define GST_IS_RTP_L24_DEPAY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_L24_DEPAY)) +#define GST_IS_RTP_L24_DEPAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_L24_DEPAY)) + +typedef struct _GstRtpL24Depay GstRtpL24Depay; +typedef struct _GstRtpL24DepayClass GstRtpL24DepayClass; + +/* Definition of structure storing data for this element. */ +struct _GstRtpL24Depay +{ + GstRTPBaseDepayload depayload; + + GstAudioInfo info; + const GstRTPChannelOrder *order; +}; + +/* Standard definition defining a class for this element. */ +struct _GstRtpL24DepayClass +{ + GstRTPBaseDepayloadClass parent_class; +}; + +GType gst_rtp_L24_depay_get_type (void); + +gboolean gst_rtp_L24_depay_plugin_init (GstPlugin * plugin); + +G_END_DECLS + +#endif /* __GST_RTP_L24_DEPAY_H__ */ diff --git a/gst/rtp/gstrtpL24pay.c b/gst/rtp/gstrtpL24pay.c new file mode 100644 index 0000000000000000000000000000000000000000..d2612e9c3d2691a4abaa0b25c03786f34123ec23 --- /dev/null +++ b/gst/rtp/gstrtpL24pay.c @@ -0,0 +1,244 @@ +/* GStreamer + * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpL24pay + * @see_also: rtpL24depay + * + * Payload raw 24-bit audio into RTP packets according to RFC 3190, section 4. + * For detailed information see: http://www.rfc-editor.org/rfc/rfc3190.txt + * + * <refsect2> + * <title>Example pipeline</title> + * |[ + * gst-launch -v audiotestsrc ! audioconvert ! rtpL24pay ! udpsink + * ]| This example pipeline will payload raw audio. Refer to + * the rtpL24depay example to depayload and play the RTP stream. + * </refsect2> + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <string.h> + +#include <gst/audio/audio.h> +#include <gst/rtp/gstrtpbuffer.h> + +#include "gstrtpL24pay.h" +#include "gstrtpchannels.h" + +GST_DEBUG_CATEGORY_STATIC (rtpL24pay_debug); +#define GST_CAT_DEFAULT (rtpL24pay_debug) + +static GstStaticPadTemplate gst_rtp_L24_pay_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "format = (string) S24BE, " + "layout = (string) interleaved, " + "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, MAX ]") + ); + +static GstStaticPadTemplate gst_rtp_L24_pay_src_template = + GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp, " + "media = (string) \"audio\", " + "payload = (int) [ 96, 127 ], " + "clock-rate = (int) [ 1, MAX ], " + "encoding-name = (string) \"L24\", " "channels = (int) [ 1, MAX ];") + ); + +static gboolean gst_rtp_L24_pay_setcaps (GstRTPBasePayload * basepayload, + GstCaps * caps); +static GstCaps *gst_rtp_L24_pay_getcaps (GstRTPBasePayload * rtppayload, + GstPad * pad, GstCaps * filter); +static GstFlowReturn +gst_rtp_L24_pay_handle_buffer (GstRTPBasePayload * basepayload, + GstBuffer * buffer); + +#define gst_rtp_L24_pay_parent_class parent_class +G_DEFINE_TYPE (GstRtpL24Pay, gst_rtp_L24_pay, GST_TYPE_RTP_BASE_AUDIO_PAYLOAD); + +static void +gst_rtp_L24_pay_class_init (GstRtpL24PayClass * klass) +{ + GstElementClass *gstelement_class; + GstRTPBasePayloadClass *gstrtpbasepayload_class; + + gstelement_class = (GstElementClass *) klass; + gstrtpbasepayload_class = (GstRTPBasePayloadClass *) klass; + + gstrtpbasepayload_class->set_caps = gst_rtp_L24_pay_setcaps; + gstrtpbasepayload_class->get_caps = gst_rtp_L24_pay_getcaps; + gstrtpbasepayload_class->handle_buffer = gst_rtp_L24_pay_handle_buffer; + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&gst_rtp_L24_pay_src_template)); + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&gst_rtp_L24_pay_sink_template)); + + gst_element_class_set_static_metadata (gstelement_class, + "RTP audio payloader", "Codec/Payloader/Network/RTP", + "Payload-encode Raw 24-bit audio into RTP packets (RFC 3190)", + "Wim Taymans <wim.taymans@gmail.com>," + "David Holroyd <dave@badgers-in-foil.co.uk>"); + + GST_DEBUG_CATEGORY_INIT (rtpL24pay_debug, "rtpL24pay", 0, + "L24 RTP Payloader"); +} + +static void +gst_rtp_L24_pay_init (GstRtpL24Pay * rtpL24pay) +{ + GstRTPBaseAudioPayload *rtpbaseaudiopayload; + + rtpbaseaudiopayload = GST_RTP_BASE_AUDIO_PAYLOAD (rtpL24pay); + + /* tell rtpbaseaudiopayload that this is a sample based codec */ + gst_rtp_base_audio_payload_set_sample_based (rtpbaseaudiopayload); +} + +static gboolean +gst_rtp_L24_pay_setcaps (GstRTPBasePayload * basepayload, GstCaps * caps) +{ + GstRtpL24Pay *rtpL24pay; + gboolean res; + gchar *params; + GstAudioInfo *info; + const GstRTPChannelOrder *order; + GstRTPBaseAudioPayload *rtpbaseaudiopayload; + + rtpbaseaudiopayload = GST_RTP_BASE_AUDIO_PAYLOAD (basepayload); + rtpL24pay = GST_RTP_L24_PAY (basepayload); + + info = &rtpL24pay->info; + gst_audio_info_init (info); + if (!gst_audio_info_from_caps (info, caps)) + goto invalid_caps; + + order = gst_rtp_channels_get_by_pos (info->channels, info->position); + rtpL24pay->order = order; + + gst_rtp_base_payload_set_options (basepayload, "audio", TRUE, "L24", + info->rate); + params = g_strdup_printf ("%d", info->channels); + + if (!order && info->channels > 2) { + GST_ELEMENT_WARNING (rtpL24pay, STREAM, DECODE, + (NULL), ("Unknown channel order for %d channels", info->channels)); + } + + if (order && order->name) { + res = gst_rtp_base_payload_set_outcaps (basepayload, + "encoding-params", G_TYPE_STRING, params, "channels", G_TYPE_INT, + info->channels, "channel-order", G_TYPE_STRING, order->name, NULL); + } else { + res = gst_rtp_base_payload_set_outcaps (basepayload, + "encoding-params", G_TYPE_STRING, params, "channels", G_TYPE_INT, + info->channels, NULL); + } + + g_free (params); + + /* octet-per-sample is 3 * channels for L24 */ + gst_rtp_base_audio_payload_set_sample_options (rtpbaseaudiopayload, + 3 * info->channels); + + return res; + + /* ERRORS */ +invalid_caps: + { + GST_DEBUG_OBJECT (rtpL24pay, "invalid caps"); + return FALSE; + } +} + +static GstCaps * +gst_rtp_L24_pay_getcaps (GstRTPBasePayload * rtppayload, GstPad * pad, + GstCaps * filter) +{ + GstCaps *otherpadcaps; + GstCaps *caps; + + caps = gst_pad_get_pad_template_caps (pad); + + otherpadcaps = gst_pad_get_allowed_caps (rtppayload->srcpad); + if (otherpadcaps) { + if (!gst_caps_is_empty (otherpadcaps)) { + GstStructure *structure; + gint channels; + gint rate; + + structure = gst_caps_get_structure (otherpadcaps, 0); + caps = gst_caps_make_writable (caps); + + if (gst_structure_get_int (structure, "channels", &channels)) { + gst_caps_set_simple (caps, "channels", G_TYPE_INT, channels, NULL); + } + + if (gst_structure_get_int (structure, "clock-rate", &rate)) { + gst_caps_set_simple (caps, "rate", G_TYPE_INT, rate, NULL); + } + + } + gst_caps_unref (otherpadcaps); + } + + if (filter) { + GstCaps *tcaps = caps; + + caps = gst_caps_intersect_full (filter, tcaps, GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (tcaps); + } + + return caps; +} + +static GstFlowReturn +gst_rtp_L24_pay_handle_buffer (GstRTPBasePayload * basepayload, + GstBuffer * buffer) +{ + GstRtpL24Pay *rtpL24pay; + + rtpL24pay = GST_RTP_L24_PAY (basepayload); + buffer = gst_buffer_make_writable (buffer); + + if (rtpL24pay->order && + !gst_audio_buffer_reorder_channels (buffer, rtpL24pay->info.finfo->format, + rtpL24pay->info.channels, rtpL24pay->info.position, + rtpL24pay->order->pos)) { + return GST_FLOW_ERROR; + } + + return GST_RTP_BASE_PAYLOAD_CLASS (parent_class)->handle_buffer (basepayload, + buffer); +} + +gboolean +gst_rtp_L24_pay_plugin_init (GstPlugin * plugin) +{ + return gst_element_register (plugin, "rtpL24pay", + GST_RANK_SECONDARY, GST_TYPE_RTP_L24_PAY); +} diff --git a/gst/rtp/gstrtpL24pay.h b/gst/rtp/gstrtpL24pay.h new file mode 100644 index 0000000000000000000000000000000000000000..47395ad164c3245489a57124dab344b2e1d234ff --- /dev/null +++ b/gst/rtp/gstrtpL24pay.h @@ -0,0 +1,63 @@ +/* GStreamer + * Copyright (C) <2005> Wim Taymans <wim.taymans@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_RTP_L24_PAY_H__ +#define __GST_RTP_L24_PAY_H__ + +#include <gst/gst.h> +#include <gst/rtp/gstrtpbaseaudiopayload.h> + +#include "gstrtpchannels.h" + +G_BEGIN_DECLS + +#define GST_TYPE_RTP_L24_PAY \ + (gst_rtp_L24_pay_get_type()) +#define GST_RTP_L24_PAY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_L24_PAY,GstRtpL24Pay)) +#define GST_RTP_L24_PAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_L24_PAY,GstRtpL24PayClass)) +#define GST_IS_RTP_L24_PAY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_L24_PAY)) +#define GST_IS_RTP_L24_PAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_L24_PAY)) + +typedef struct _GstRtpL24Pay GstRtpL24Pay; +typedef struct _GstRtpL24PayClass GstRtpL24PayClass; + +struct _GstRtpL24Pay +{ + GstRTPBaseAudioPayload payload; + + GstAudioInfo info; + const GstRTPChannelOrder *order; +}; + +struct _GstRtpL24PayClass +{ + GstRTPBaseAudioPayloadClass parent_class; +}; + +GType gst_rtp_L24_pay_get_type (void); + +gboolean gst_rtp_L24_pay_plugin_init (GstPlugin * plugin); + +G_END_DECLS + +#endif /* __GST_RTP_L24_PAY_H__ */ diff --git a/gst/rtp/gstrtpac3depay.c b/gst/rtp/gstrtpac3depay.c index 0d6fdc134707393291fc7b4c51b6423f8c2da691..fc79b5d903d9abedf3b2ace297185ae5b2f6f1e6 100644 --- a/gst/rtp/gstrtpac3depay.c +++ b/gst/rtp/gstrtpac3depay.c @@ -13,8 +13,26 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpac3depay + * @see_also: rtpac3pay + * + * Extract AC3 audio from RTP packets according to RFC 4184. + * For detailed information see: http://www.rfc-editor.org/rfc/rfc4184.txt + * + * <refsect2> + * <title>Example pipeline</title> + * |[ + * gst-launch-1.0 udpsrc caps='application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)AC3, payload=(int)96' ! rtpac3depay ! a52dec ! pulsesink + * ]| This example pipeline will depayload and decode an RTP AC3 stream. Refer to + * the rtpac3pay example to create the RTP stream. + * </refsect2> + * + * Last reviewed on 2013-04-25 (1.1.0) */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpac3depay.h b/gst/rtp/gstrtpac3depay.h index 15d0779cb9cadec02bc680c9b277add0001ca504..294bb12c421cf92cb320d527712b5ee5f2297569 100644 --- a/gst/rtp/gstrtpac3depay.h +++ b/gst/rtp/gstrtpac3depay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_AC3_DEPAY_H__ diff --git a/gst/rtp/gstrtpac3pay.c b/gst/rtp/gstrtpac3pay.c index 0b10adfbdd1c13b6139db8d30365489434e61042..175d627225425a1989b6c504582d41ce16fe9607 100644 --- a/gst/rtp/gstrtpac3pay.c +++ b/gst/rtp/gstrtpac3pay.c @@ -13,8 +13,26 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpac3pay + * @see_also: rtpac3depay + * + * Payload AC3 audio into RTP packets according to RFC 4184. + * For detailed information see: http://www.rfc-editor.org/rfc/rfc4184.txt + * + * <refsect2> + * <title>Example pipeline</title> + * |[ + * gst-launch -v audiotestsrc ! avenc_ac3 ! rtpac3pay ! udpsink + * ]| This example pipeline will encode and payload AC3 stream. Refer to + * the rtpac3depay example to depayload and decode the RTP stream. + * </refsect2> + * + * Last reviewed on 2013-04-25 (1.1.0) */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpac3pay.h b/gst/rtp/gstrtpac3pay.h index f856a068fda746a5515671e2f3641ddb6ca38df1..c131eac132877384b715022bd2b3d33d5f808ba8 100644 --- a/gst/rtp/gstrtpac3pay.h +++ b/gst/rtp/gstrtpac3pay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_AC3_PAY_H__ diff --git a/gst/rtp/gstrtpamrdepay.c b/gst/rtp/gstrtpamrdepay.c index 76ba89ba836a23e814a39ce37319050190c25227..e1208bfad0cf265e0a4159d2d16975610399499a 100644 --- a/gst/rtp/gstrtpamrdepay.c +++ b/gst/rtp/gstrtpamrdepay.c @@ -13,10 +13,34 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ +/** + * SECTION:element-rtpamrdepay + * @see_also: rtpamrpay + * + * Extract AMR audio from RTP packets according to RFC 3267. + * For detailed information see: http://www.rfc-editor.org/rfc/rfc3267.txt + * + * <refsect2> + * <title>Example pipeline</title> + * |[ + * gst-launch-1.0 udpsrc caps='application/x-rtp, media=(string)audio, clock-rate=(int)8000, encoding-name=(string)AMR, encoding-params=(string)1, octet-align=(string)1, payload=(int)96' ! rtpamrdepay ! amrnbdec ! pulsesink + * ]| This example pipeline will depayload and decode an RTP AMR stream. Refer to + * the rtpamrpay example to create the RTP stream. + * </refsect2> + * + * Last reviewed on 2013-04-25 (1.1.0) + */ + +/* + * RFC 3267 - Real-Time Transport Protocol (RTP) Payload Format and File + * Storage Format for the Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate + * Wideband (AMR-WB) Audio Codecs. + * + */ #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -30,13 +54,6 @@ GST_DEBUG_CATEGORY_STATIC (rtpamrdepay_debug); #define GST_CAT_DEFAULT (rtpamrdepay_debug) -/* references: - * - * RFC 3267 - Real-Time Transport Protocol (RTP) Payload Format and File - * Storage Format for the Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate - * Wideband (AMR-WB) Audio Codecs. - */ - /* RtpAMRDepay signals and args */ enum { @@ -405,9 +422,9 @@ gst_rtp_amr_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) GST_BUFFER_DURATION (outbuf) = num_packets * 20 * GST_MSECOND; if (gst_rtp_buffer_get_marker (&rtp)) { - /* marker bit marks a discont buffer after a talkspurt. */ + /* marker bit marks a buffer after a talkspurt. */ GST_DEBUG_OBJECT (depayload, "marker bit was set"); - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } GST_DEBUG_OBJECT (depayload, "pushing buffer of size %" G_GSIZE_FORMAT, diff --git a/gst/rtp/gstrtpamrdepay.h b/gst/rtp/gstrtpamrdepay.h index 491c007ea7f12e75a8e2c32e5b0ceecdcde2be03..0b806345d782564c087e4de8eb1f1d5181b0f3f8 100644 --- a/gst/rtp/gstrtpamrdepay.h +++ b/gst/rtp/gstrtpamrdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_AMR_DEPAY_H__ diff --git a/gst/rtp/gstrtpamrpay.c b/gst/rtp/gstrtpamrpay.c index 7829b39b6a0ebcf929e63fcd7d86133cb78b42a5..defc7f4ba25a34737241497e956d91d472ef5401 100644 --- a/gst/rtp/gstrtpamrpay.c +++ b/gst/rtp/gstrtpamrpay.c @@ -13,22 +13,27 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include <string.h> - -#include <gst/rtp/gstrtpbuffer.h> - -#include "gstrtpamrpay.h" - -GST_DEBUG_CATEGORY_STATIC (rtpamrpay_debug); -#define GST_CAT_DEFAULT (rtpamrpay_debug) +/** + * SECTION:element-rtpamrpay + * @see_also: rtpamrdepay + * + * Payload AMR audio into RTP packets according to RFC 3267. + * For detailed information see: http://www.rfc-editor.org/rfc/rfc3267.txt + * + * <refsect2> + * <title>Example pipeline</title> + * |[ + * gst-launch -v audiotestsrc ! amrnbenc ! rtpamrpay ! udpsink + * ]| This example pipeline will encode and payload an AMR stream. Refer to + * the rtpamrdepay example to depayload and decode the RTP stream. + * </refsect2> + * + * Last reviewed on 2013-04-25 (1.1.0) + */ /* references: * @@ -43,6 +48,19 @@ GST_DEBUG_CATEGORY_STATIC (rtpamrpay_debug); * (3GPP TS 26.201 version 6.0.0 Release 6) */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <string.h> + +#include <gst/rtp/gstrtpbuffer.h> + +#include "gstrtpamrpay.h" + +GST_DEBUG_CATEGORY_STATIC (rtpamrpay_debug); +#define GST_CAT_DEFAULT (rtpamrpay_debug) + static GstStaticPadTemplate gst_rtp_amr_pay_sink_template = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, diff --git a/gst/rtp/gstrtpamrpay.h b/gst/rtp/gstrtpamrpay.h index b57082370936560669d869681515fc46969a7ddc..a3df1ce6320dced17464135cd8f446ffef1d4efa 100644 --- a/gst/rtp/gstrtpamrpay.h +++ b/gst/rtp/gstrtpamrpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_AMR_PAY_H__ diff --git a/gst/rtp/gstrtpbvdepay.c b/gst/rtp/gstrtpbvdepay.c index 5c6fd0d48f6646aa67569904bd2cce3bcdfe3fce..7b85558d4e333a7b0c09f7018c53631ff3e58a4c 100644 --- a/gst/rtp/gstrtpbvdepay.c +++ b/gst/rtp/gstrtpbvdepay.c @@ -13,8 +13,18 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpbvdepay + * @see_also: rtpbvpay + * + * Extract BroadcomVoice audio from RTP packets according to RFC 4298. + * For detailed information see: http://www.rfc-editor.org/rfc/rfc4298.txt + * + * Last reviewed on 2013-04-25 (1.1.0) */ #ifdef HAVE_CONFIG_H @@ -165,8 +175,8 @@ gst_rtp_bv_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) gst_rtp_buffer_unmap (&rtp); if (marker && outbuf) { - /* mark start of talkspurt with DISCONT */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + /* mark start of talkspurt with RESYNC */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } return outbuf; diff --git a/gst/rtp/gstrtpbvdepay.h b/gst/rtp/gstrtpbvdepay.h index d63066ac351982bc2eba0e30f2fbbc864409c4ba..f130682c0a74cb038bab87c79b2af2707d63f99f 100644 --- a/gst/rtp/gstrtpbvdepay.h +++ b/gst/rtp/gstrtpbvdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_BV_DEPAY_H__ diff --git a/gst/rtp/gstrtpbvpay.c b/gst/rtp/gstrtpbvpay.c index 8fd650a2d0c711ec5b746fdac92006ea9eba4995..be12b38d0669cac0ae90ede4906ad982fb242879 100644 --- a/gst/rtp/gstrtpbvpay.c +++ b/gst/rtp/gstrtpbvpay.c @@ -13,8 +13,18 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpbvpay + * @see_also: rtpbvdepay + * + * Payload BroadcomVoice audio into RTP packets according to RFC 4298. + * For detailed information see: http://www.rfc-editor.org/rfc/rfc4298.txt + * + * Last reviewed on 2013-04-25 (1.1.0) */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpbvpay.h b/gst/rtp/gstrtpbvpay.h index 1976693d20baa588f72e4440dae054556b294c38..09766ccaabff9d69905be991c9044d29d6781e40 100644 --- a/gst/rtp/gstrtpbvpay.h +++ b/gst/rtp/gstrtpbvpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_BV_PAY_H__ diff --git a/gst/rtp/gstrtpceltdepay.c b/gst/rtp/gstrtpceltdepay.c index 17a68b134d20e3d412913e5b2dcb92e52ed7e3dd..7203f10ebeb53d1acf197c0ee68dc94a8e63ddc4 100644 --- a/gst/rtp/gstrtpceltdepay.c +++ b/gst/rtp/gstrtpceltdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpceltpay.c b/gst/rtp/gstrtpceltpay.c index b1950682cb00e04d88b0eed508329202829d6b14..3aabd9fea355dca77b9afb05a50bf51ef8d2a257 100644 --- a/gst/rtp/gstrtpceltpay.c +++ b/gst/rtp/gstrtpceltpay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpchannels.c b/gst/rtp/gstrtpchannels.c index 2c56ec22a5a6c5a8adeef00f45e45af25bb46d16..100aaa4bd496c36135badb5e3fbc7fa48357095a 100644 --- a/gst/rtp/gstrtpchannels.c +++ b/gst/rtp/gstrtpchannels.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <string.h> diff --git a/gst/rtp/gstrtpchannels.h b/gst/rtp/gstrtpchannels.h index 0a1b3a5de5a37bc26c7ee454fef4600cfa3af6fa..31727fbb410a8db3e4906c04bc9a5af6be328bb3 100644 --- a/gst/rtp/gstrtpchannels.h +++ b/gst/rtp/gstrtpchannels.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <string.h> diff --git a/gst/rtp/gstrtpdvdepay.c b/gst/rtp/gstrtpdvdepay.c index eb310fec6657e017b26bf5f832868675e1d8bb9c..7cb1ff41084f576aacc1c57195a20f2da4927f19 100644 --- a/gst/rtp/gstrtpdvdepay.c +++ b/gst/rtp/gstrtpdvdepay.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/rtp/gstrtpdvdepay.h b/gst/rtp/gstrtpdvdepay.h index e3176a254a4c8d1f6fcbc4979a73d8c5156faee7..1ce5b9715a40711b7f6f5b486d093a248917ebef 100644 --- a/gst/rtp/gstrtpdvdepay.h +++ b/gst/rtp/gstrtpdvdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GSTRTPDVDEPAY_H__ diff --git a/gst/rtp/gstrtpdvpay.c b/gst/rtp/gstrtpdvpay.c index f93bcb589d2f25de75e1824dc76e1bed821acefc..d779f12303fce2236b71ffac68bd5f19e498f58c 100644 --- a/gst/rtp/gstrtpdvpay.c +++ b/gst/rtp/gstrtpdvpay.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpdvpay.h b/gst/rtp/gstrtpdvpay.h index 887c3bd14a9849ddb82691374777f539d3e6c692..4c250a840ece9b0a4f0bb3080ef319462bb15f69 100644 --- a/gst/rtp/gstrtpdvpay.h +++ b/gst/rtp/gstrtpdvpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/rtp/gstrtpg722depay.c b/gst/rtp/gstrtpg722depay.c index 468eb92f2a74dbb4080eb73fe1a064fc622dfe3a..c77fb95138cb01683cc6d7920acbcd91595476d2 100644 --- a/gst/rtp/gstrtpg722depay.c +++ b/gst/rtp/gstrtpg722depay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -238,8 +238,8 @@ gst_rtp_g722_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) gst_rtp_buffer_unmap (&rtp); if (marker && outbuf) { - /* mark talk spurt with DISCONT */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + /* mark talk spurt with RESYNC */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } return outbuf; diff --git a/gst/rtp/gstrtpg722depay.h b/gst/rtp/gstrtpg722depay.h index 86e7e9104f86f3aecbe5106ef26ae7ece6133f4a..8b6ffa046df538b0a8880ff6d0df81814d62f0de 100644 --- a/gst/rtp/gstrtpg722depay.h +++ b/gst/rtp/gstrtpg722depay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_G722_DEPAY_H__ diff --git a/gst/rtp/gstrtpg722pay.c b/gst/rtp/gstrtpg722pay.c index f328e5d56d9250b2807291a5ff82dae7a4afedf6..e9e625a6e9edf4ae05408976f0476240f9daf05d 100644 --- a/gst/rtp/gstrtpg722pay.c +++ b/gst/rtp/gstrtpg722pay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpg722pay.h b/gst/rtp/gstrtpg722pay.h index b76b1066c147220eafd9d9856df3ab2085cabbcc..f238286ea38983f05503b263283f2ce6f753ceef 100644 --- a/gst/rtp/gstrtpg722pay.h +++ b/gst/rtp/gstrtpg722pay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_G722_PAY_H__ diff --git a/gst/rtp/gstrtpg723depay.c b/gst/rtp/gstrtpg723depay.c index 7d33f7f53516b4e3519055e1cee05dc53a78bf7d..b8226889b8231d80624c007b40ef2fd051a0381c 100644 --- a/gst/rtp/gstrtpg723depay.c +++ b/gst/rtp/gstrtpg723depay.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -197,7 +197,7 @@ gst_rtp_g723_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) if (marker) { /* marker bit starts talkspurt */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } GST_LOG_OBJECT (depayload, "pushing buffer of size %" G_GSIZE_FORMAT, diff --git a/gst/rtp/gstrtpg723depay.h b/gst/rtp/gstrtpg723depay.h index 0071ca46a0e1b785757feb037df44c9dd2ee74e8..dd942b3b6bbffe8348402ceda1df3d6ff5350688 100644 --- a/gst/rtp/gstrtpg723depay.h +++ b/gst/rtp/gstrtpg723depay.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_G723_DEPAY_H__ diff --git a/gst/rtp/gstrtpg723pay.c b/gst/rtp/gstrtpg723pay.c index 104ee689b3286c3e4c5de2edcc1e2e331b42b57e..4a10b3bc2d1e5be41201a8a541c1b792586e8922 100644 --- a/gst/rtp/gstrtpg723pay.c +++ b/gst/rtp/gstrtpg723pay.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpg723pay.h b/gst/rtp/gstrtpg723pay.h index f1c77acef815babc124ba54226ef9a2fd8cc3e27..37807412a40c2ecce6f5d37c51ed0a7c9edd52c5 100644 --- a/gst/rtp/gstrtpg723pay.h +++ b/gst/rtp/gstrtpg723pay.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_G723_PAY_H__ diff --git a/gst/rtp/gstrtpg726depay.c b/gst/rtp/gstrtpg726depay.c index 6bf296305215c20f9d45ff5c9890e9531b6a1742..45d99dc835bbd3eb903cbae405b5432b28ee5bce 100644 --- a/gst/rtp/gstrtpg726depay.c +++ b/gst/rtp/gstrtpg726depay.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -329,8 +329,8 @@ gst_rtp_g726_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) } if (marker) { - /* mark start of talkspurt with discont */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + /* mark start of talkspurt with RESYNC */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } return outbuf; diff --git a/gst/rtp/gstrtpg726pay.c b/gst/rtp/gstrtpg726pay.c index 2da0c4a5a6078ab5d483ab96d615ff0e1aea6545..323fd26dd460d852f3969005c3c36c8aee10bf9a 100644 --- a/gst/rtp/gstrtpg726pay.c +++ b/gst/rtp/gstrtpg726pay.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpg729depay.c b/gst/rtp/gstrtpg729depay.c index e1b45d767eef40223a89fa0265ad4e356a9a3cb2..f763e4cd83b9f55e50a3c0d0f7c01ba92f3ba9dd 100644 --- a/gst/rtp/gstrtpg729depay.c +++ b/gst/rtp/gstrtpg729depay.c @@ -12,8 +12,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -202,7 +202,7 @@ gst_rtp_g729_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) if (marker) { /* marker bit starts talkspurt */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } GST_LOG_OBJECT (depayload, "pushing buffer of size %" G_GSIZE_FORMAT, diff --git a/gst/rtp/gstrtpg729depay.h b/gst/rtp/gstrtpg729depay.h index ffd4bb918f814ad0c244aaf174e61d3c5dc2725d..a23562e569abae914e9953182fc043f978c5035c 100644 --- a/gst/rtp/gstrtpg729depay.h +++ b/gst/rtp/gstrtpg729depay.h @@ -12,8 +12,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_G729_DEPAY_H__ diff --git a/gst/rtp/gstrtpg729pay.c b/gst/rtp/gstrtpg729pay.c index aaede04d490b54332417d4b6ca12efcec682a0a6..898bcd12ad3021e4674878a62125616586149839 100644 --- a/gst/rtp/gstrtpg729pay.c +++ b/gst/rtp/gstrtpg729pay.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/rtp/gstrtpg729pay.h b/gst/rtp/gstrtpg729pay.h index 52b9951e4594a64f75756af945197f429cb1abbf..1b9246050608990cab17e135125bbf770ca6f6db 100644 --- a/gst/rtp/gstrtpg729pay.h +++ b/gst/rtp/gstrtpg729pay.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_G729_PAY_H__ diff --git a/gst/rtp/gstrtpgsmdepay.c b/gst/rtp/gstrtpgsmdepay.c index 2ae111104203c46b12fe15d7af861f42b5e882cf..96b30cfe85439687746aefdedd35a9f6a67c0444 100644 --- a/gst/rtp/gstrtpgsmdepay.c +++ b/gst/rtp/gstrtpgsmdepay.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -136,8 +136,8 @@ gst_rtp_gsm_depay_process (GstRTPBaseDepayload * _depayload, GstBuffer * buf) gst_rtp_buffer_unmap (&rtp); if (marker && outbuf) { - /* mark start of talkspurt with DISCONT */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + /* mark start of talkspurt with RESYNC */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } return outbuf; diff --git a/gst/rtp/gstrtpgsmdepay.h b/gst/rtp/gstrtpgsmdepay.h index 73234ca1a7e1671a5edbff81b078a1af08a45924..e428aa09f4b2435c673891bdc1d11a6ac9b7b107 100644 --- a/gst/rtp/gstrtpgsmdepay.h +++ b/gst/rtp/gstrtpgsmdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_GSM_DEPAY_H__ diff --git a/gst/rtp/gstrtpgsmpay.c b/gst/rtp/gstrtpgsmpay.c index 481c3b1ffafc8bfcdd9cd9752ed85b70474921d6..b6964c598d366ae71dcf709bace6e4ac5fc07172 100644 --- a/gst/rtp/gstrtpgsmpay.c +++ b/gst/rtp/gstrtpgsmpay.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpgsmpay.h b/gst/rtp/gstrtpgsmpay.h index 085da8009246a3d4ab3fec2bbff7b7bf5e4b14f9..b6437f516edf62cf6b86445addd1698adceb4c77 100644 --- a/gst/rtp/gstrtpgsmpay.h +++ b/gst/rtp/gstrtpgsmpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/rtp/gstrtpgstdepay.c b/gst/rtp/gstrtpgstdepay.c index fc10229a4febf5625666da4507e9811b47f32d3e..5803f982c6e6b437c89ebf2bc78f93af8becf522 100644 --- a/gst/rtp/gstrtpgstdepay.c +++ b/gst/rtp/gstrtpgstdepay.c @@ -13,17 +13,17 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H # include "config.h" #endif -#include <gst/rtp/gstrtpbuffer.h> - #include <string.h> +#include <stdlib.h> + #include "gstrtpgstdepay.h" GST_DEBUG_CATEGORY_STATIC (rtpgstdepay_debug); @@ -49,10 +49,13 @@ G_DEFINE_TYPE (GstRtpGSTDepay, gst_rtp_gst_depay, GST_TYPE_RTP_BASE_DEPAYLOAD); static void gst_rtp_gst_depay_finalize (GObject * object); +static gboolean gst_rtp_gst_depay_handle_event (GstRTPBaseDepayload * depay, + GstEvent * event); static GstStateChangeReturn gst_rtp_gst_depay_change_state (GstElement * element, GstStateChange transition); -static void gst_rtp_gst_depay_reset (GstRtpGSTDepay * rtpgstdepay); +static void gst_rtp_gst_depay_reset (GstRtpGSTDepay * rtpgstdepay, gboolean + full); static gboolean gst_rtp_gst_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps); static GstBuffer *gst_rtp_gst_depay_process (GstRTPBaseDepayload * depayload, @@ -86,6 +89,7 @@ gst_rtp_gst_depay_class_init (GstRtpGSTDepayClass * klass) "Extracts GStreamer buffers from RTP packets", "Wim Taymans <wim.taymans@gmail.com>"); + gstrtpbasedepayload_class->handle_event = gst_rtp_gst_depay_handle_event; gstrtpbasedepayload_class->set_caps = gst_rtp_gst_depay_setcaps; gstrtpbasedepayload_class->process = gst_rtp_gst_depay_process; } @@ -103,7 +107,7 @@ gst_rtp_gst_depay_finalize (GObject * object) rtpgstdepay = GST_RTP_GST_DEPAY (object); - gst_rtp_gst_depay_reset (rtpgstdepay); + gst_rtp_gst_depay_reset (rtpgstdepay, TRUE); g_object_unref (rtpgstdepay->adapter); G_OBJECT_CLASS (parent_class)->finalize (object); @@ -118,14 +122,21 @@ store_cache (GstRtpGSTDepay * rtpgstdepay, guint CV, GstCaps * caps) } static void -gst_rtp_gst_depay_reset (GstRtpGSTDepay * rtpgstdepay) +gst_rtp_gst_depay_reset (GstRtpGSTDepay * rtpgstdepay, gboolean full) { guint i; gst_adapter_clear (rtpgstdepay->adapter); - rtpgstdepay->current_CV = 0; - for (i = 0; i < 8; i++) - store_cache (rtpgstdepay, i, NULL); + if (full) { + rtpgstdepay->current_CV = 0; + for (i = 0; i < 8; i++) + store_cache (rtpgstdepay, i, NULL); + g_free (rtpgstdepay->stream_id); + rtpgstdepay->stream_id = NULL; + if (rtpgstdepay->tags) + gst_tag_list_unref (rtpgstdepay->tags); + rtpgstdepay->tags = NULL; + } } static gboolean @@ -133,11 +144,9 @@ gst_rtp_gst_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps) { GstRtpGSTDepay *rtpgstdepay; GstStructure *structure; - GstCaps *outcaps; gint clock_rate; gboolean res; const gchar *capsenc; - gchar *capsstr; rtpgstdepay = GST_RTP_GST_DEPAY (depayload); @@ -149,25 +158,219 @@ gst_rtp_gst_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps) capsenc = gst_structure_get_string (structure, "caps"); if (capsenc) { + GstCaps *outcaps; gsize out_len; + gchar *capsstr; + const gchar *capsver; + guint CV; + /* decode caps */ capsstr = (gchar *) g_base64_decode (capsenc, &out_len); outcaps = gst_caps_from_string (capsstr); g_free (capsstr); - /* we have the SDP caps as output caps */ - rtpgstdepay->current_CV = 0; + /* parse version */ + capsver = gst_structure_get_string (structure, "capsversion"); + if (capsver) { + CV = atoi (capsver); + } else { + /* no version, assume 0 */ + CV = 0; + } + /* store in cache */ + rtpgstdepay->current_CV = CV; gst_caps_ref (outcaps); - store_cache (rtpgstdepay, 0, outcaps); + store_cache (rtpgstdepay, CV, outcaps); + + res = gst_pad_set_caps (depayload->srcpad, outcaps); + gst_caps_unref (outcaps); } else { - outcaps = gst_caps_new_any (); + GST_WARNING_OBJECT (depayload, "no caps given"); + rtpgstdepay->current_CV = -1; + res = TRUE; } - res = gst_pad_set_caps (depayload->srcpad, outcaps); - gst_caps_unref (outcaps); return res; } +static gboolean +read_length (GstRtpGSTDepay * rtpgstdepay, guint8 * data, guint size, + guint * length, guint * skip) +{ + guint b, len, offset; + + /* start reading the length, we need this to skip to the data later */ + len = offset = 0; + do { + if (offset >= size) + return FALSE; + b = data[offset++]; + len = (len << 7) | (b & 0x7f); + } while (b & 0x80); + + /* check remaining buffer size */ + if (size - offset < len) + return FALSE; + + *length = len; + *skip = offset; + + return TRUE; +} + +static GstCaps * +read_caps (GstRtpGSTDepay * rtpgstdepay, GstBuffer * buf, guint * skip) +{ + guint offset, length; + GstCaps *caps; + GstMapInfo map; + + gst_buffer_map (buf, &map, GST_MAP_READ); + + GST_DEBUG_OBJECT (rtpgstdepay, "buffer size %" G_GSIZE_FORMAT, map.size); + + if (!read_length (rtpgstdepay, map.data, map.size, &length, &offset)) + goto too_small; + + GST_DEBUG_OBJECT (rtpgstdepay, "parsing caps %s", &map.data[offset]); + + /* parse and store in cache */ + caps = gst_caps_from_string ((gchar *) & map.data[offset]); + gst_buffer_unmap (buf, &map); + + *skip = length + offset; + + return caps; + +too_small: + { + GST_ELEMENT_WARNING (rtpgstdepay, STREAM, DECODE, + ("Buffer too small."), (NULL)); + gst_buffer_unmap (buf, &map); + return NULL; + } +} + +static GstEvent * +read_event (GstRtpGSTDepay * rtpgstdepay, guint type, + GstBuffer * buf, guint * skip) +{ + guint offset, length; + GstStructure *s; + GstEvent *event; + GstEventType etype; + gchar *end; + GstMapInfo map; + + gst_buffer_map (buf, &map, GST_MAP_READ); + + GST_DEBUG_OBJECT (rtpgstdepay, "buffer size %" G_GSIZE_FORMAT, map.size); + + if (!read_length (rtpgstdepay, map.data, map.size, &length, &offset)) + goto too_small; + + GST_DEBUG_OBJECT (rtpgstdepay, "parsing event %s", &map.data[offset]); + + /* parse */ + s = gst_structure_from_string ((gchar *) & map.data[offset], &end); + gst_buffer_unmap (buf, &map); + + if (s == NULL) + goto parse_failed; + + switch (type) { + case 1: + etype = GST_EVENT_TAG; + break; + case 2: + etype = GST_EVENT_CUSTOM_DOWNSTREAM; + break; + case 3: + etype = GST_EVENT_CUSTOM_BOTH; + break; + case 4: + etype = GST_EVENT_STREAM_START; + break; + default: + goto unknown_event; + } + event = gst_event_new_custom (etype, s); + + *skip = length + offset; + + return event; + +too_small: + { + GST_ELEMENT_WARNING (rtpgstdepay, STREAM, DECODE, + ("Buffer too small."), (NULL)); + gst_buffer_unmap (buf, &map); + return NULL; + } +parse_failed: + { + GST_WARNING_OBJECT (rtpgstdepay, "could not parse event"); + return NULL; + } +unknown_event: + { + GST_DEBUG_OBJECT (rtpgstdepay, "unknown event type"); + gst_structure_free (s); + return NULL; + } +} + +static void +store_event (GstRtpGSTDepay * rtpgstdepay, GstEvent * event) +{ + gboolean do_push = FALSE; + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_TAG: + { + GstTagList *old, *tags; + + gst_event_parse_tag (event, &tags); + + old = rtpgstdepay->tags; + if (!old || !gst_tag_list_is_equal (old, tags)) { + do_push = TRUE; + if (old) + gst_tag_list_unref (old); + rtpgstdepay->tags = gst_tag_list_ref (tags); + } + break; + } + case GST_EVENT_CUSTOM_DOWNSTREAM: + case GST_EVENT_CUSTOM_BOTH: + /* always push custom events */ + do_push = TRUE; + break; + case GST_EVENT_STREAM_START: + { + gchar *old; + const gchar *stream_id = NULL; + + gst_event_parse_stream_start (event, &stream_id); + + old = rtpgstdepay->stream_id; + if (!old || g_strcmp0 (old, stream_id)) { + do_push = TRUE; + g_free (old); + rtpgstdepay->stream_id = g_strdup (stream_id); + } + break; + } + default: + /* unknown event, don't push */ + break; + } + if (do_push) + gst_pad_push_event (GST_RTP_BASE_DEPAYLOAD (rtpgstdepay)->srcpad, event); + else + gst_event_unref (event); +} + static GstBuffer * gst_rtp_gst_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) { @@ -175,7 +378,7 @@ gst_rtp_gst_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) GstBuffer *subbuf, *outbuf = NULL; gint payload_len; guint8 *payload; - guint CV; + guint CV, frag_offset, avail, offset; GstRTPBuffer rtp = { NULL }; rtpgstdepay = GST_RTP_GST_DEPAY (depayload); @@ -199,19 +402,23 @@ gst_rtp_gst_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |C| CV |D|0|0|0| MBZ | + * |C| CV |D|0|0|0| ETYPE | MBZ | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | Frag_offset | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ - /* frag_offset = - * (payload[4] << 24) | (payload[5] << 16) | (payload[6] << 8) | payload[7]; - */ + frag_offset = + (payload[4] << 24) | (payload[5] << 16) | (payload[6] << 8) | payload[7]; + + avail = gst_adapter_available (rtpgstdepay->adapter); + if (avail != frag_offset) + goto wrong_frag; /* subbuffer skipping the 8 header bytes */ subbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, 8, -1); gst_adapter_push (rtpgstdepay->adapter, subbuf); + offset = 0; if (gst_rtp_buffer_get_marker (&rtp)) { guint avail; GstCaps *outcaps; @@ -223,74 +430,78 @@ gst_rtp_gst_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) CV = (payload[0] >> 4) & 0x7; if (payload[0] & 0x80) { - guint b, csize, left, offset; - GstMapInfo map; - GstBuffer *subbuf; + guint size; /* C bit, we have inline caps */ - gst_buffer_map (outbuf, &map, GST_MAP_READ); - - /* start reading the length, we need this to skip to the data later */ - csize = offset = 0; - left = map.size; - do { - if (offset >= left) { - gst_buffer_unmap (outbuf, &map); - goto too_small; - } - b = map.data[offset++]; - csize = (csize << 7) | (b & 0x7f); - } while (b & 0x80); - - if (left < csize) { - gst_buffer_unmap (outbuf, &map); - goto too_small; - } + outcaps = read_caps (rtpgstdepay, outbuf, &size); + if (outcaps == NULL) + goto no_caps; + + GST_DEBUG_OBJECT (rtpgstdepay, + "inline caps %u, length %u, %" GST_PTR_FORMAT, CV, size, outcaps); - /* parse and store in cache */ - outcaps = gst_caps_from_string ((gchar *) & map.data[offset]); store_cache (rtpgstdepay, CV, outcaps); /* skip caps */ - offset += csize; - left -= csize; + offset += size; + avail -= size; + } + if (payload[1]) { + guint size; + GstEvent *event; + + /* we have an event */ + event = read_event (rtpgstdepay, payload[1], outbuf, &size); + if (event == NULL) + goto no_event; GST_DEBUG_OBJECT (rtpgstdepay, - "inline caps %u, length %u, %" GST_PTR_FORMAT, CV, csize, outcaps); + "inline event, length %u, %" GST_PTR_FORMAT, size, event); - /* create real data buffer when needed */ - if (map.size) - subbuf = - gst_buffer_copy_region (outbuf, GST_BUFFER_COPY_ALL, offset, left); - else - subbuf = NULL; + store_event (rtpgstdepay, event); - gst_buffer_unmap (outbuf, &map); - gst_buffer_unref (outbuf); - outbuf = subbuf; + /* no buffer after event */ + avail = 0; } - /* see what caps we need */ - if (CV != rtpgstdepay->current_CV) { - /* we need to switch caps, check if we have the caps */ - if ((outcaps = rtpgstdepay->CV_cache[CV]) == NULL) - goto missing_caps; + if (avail) { + if (offset != 0) { + GstBuffer *temp; - GST_DEBUG_OBJECT (rtpgstdepay, - "need caps switch from %u to %u, %" GST_PTR_FORMAT, - rtpgstdepay->current_CV, CV, outcaps); + GST_DEBUG_OBJECT (rtpgstdepay, "sub buffer: offset %u, size %u", offset, + avail); - /* and set caps */ - if (gst_pad_set_caps (depayload->srcpad, outcaps)) - rtpgstdepay->current_CV = CV; - } + temp = + gst_buffer_copy_region (outbuf, GST_BUFFER_COPY_ALL, offset, avail); + + gst_buffer_unref (outbuf); + outbuf = temp; + } + + /* see what caps we need */ + if (CV != rtpgstdepay->current_CV) { + /* we need to switch caps, check if we have the caps */ + if ((outcaps = rtpgstdepay->CV_cache[CV]) == NULL) + goto missing_caps; + + GST_DEBUG_OBJECT (rtpgstdepay, + "need caps switch from %u to %u, %" GST_PTR_FORMAT, + rtpgstdepay->current_CV, CV, outcaps); + + /* and set caps */ + if (gst_pad_set_caps (depayload->srcpad, outcaps)) + rtpgstdepay->current_CV = CV; + } - if (outbuf) { if (payload[0] & 0x8) GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT); + } else { + gst_buffer_unref (outbuf); + outbuf = NULL; } } gst_rtp_buffer_unmap (&rtp); + return outbuf; /* ERRORS */ @@ -301,12 +512,24 @@ empty_packet: gst_rtp_buffer_unmap (&rtp); return NULL; } -too_small: +wrong_frag: { - GST_ELEMENT_WARNING (rtpgstdepay, STREAM, DECODE, - ("Buffer too small."), (NULL)); - if (outbuf) - gst_buffer_unref (outbuf); + gst_adapter_clear (rtpgstdepay->adapter); + gst_rtp_buffer_unmap (&rtp); + GST_LOG_OBJECT (rtpgstdepay, "wrong fragment, skipping"); + return NULL; + } +no_caps: + { + GST_WARNING_OBJECT (rtpgstdepay, "failed to parse caps"); + gst_buffer_unref (outbuf); + gst_rtp_buffer_unmap (&rtp); + return NULL; + } +no_event: + { + GST_WARNING_OBJECT (rtpgstdepay, "failed to parse event"); + gst_buffer_unref (outbuf); gst_rtp_buffer_unmap (&rtp); return NULL; } @@ -314,13 +537,32 @@ missing_caps: { GST_ELEMENT_WARNING (rtpgstdepay, STREAM, DECODE, ("Missing caps %u.", CV), (NULL)); - if (outbuf) - gst_buffer_unref (outbuf); + gst_buffer_unref (outbuf); gst_rtp_buffer_unmap (&rtp); return NULL; } } +static gboolean +gst_rtp_gst_depay_handle_event (GstRTPBaseDepayload * depay, GstEvent * event) +{ + GstRtpGSTDepay *rtpgstdepay; + + rtpgstdepay = GST_RTP_GST_DEPAY (depay); + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_FLUSH_STOP: + gst_rtp_gst_depay_reset (rtpgstdepay, FALSE); + break; + default: + break; + } + + return + GST_RTP_BASE_DEPAYLOAD_CLASS (parent_class)->handle_event (depay, event); +} + + static GstStateChangeReturn gst_rtp_gst_depay_change_state (GstElement * element, GstStateChange transition) { @@ -331,7 +573,7 @@ gst_rtp_gst_depay_change_state (GstElement * element, GstStateChange transition) switch (transition) { case GST_STATE_CHANGE_READY_TO_PAUSED: - gst_rtp_gst_depay_reset (rtpgstdepay); + gst_rtp_gst_depay_reset (rtpgstdepay, TRUE); break; default: break; @@ -341,7 +583,7 @@ gst_rtp_gst_depay_change_state (GstElement * element, GstStateChange transition) switch (transition) { case GST_STATE_CHANGE_PAUSED_TO_READY: - gst_rtp_gst_depay_reset (rtpgstdepay); + gst_rtp_gst_depay_reset (rtpgstdepay, TRUE); break; default: break; diff --git a/gst/rtp/gstrtpgstdepay.h b/gst/rtp/gstrtpgstdepay.h index aa2aa8e7b25f79c54407bd7d4a442d7b2c7c3432..4b8f2c62e60c576f8142196cc398389b19d2fc20 100644 --- a/gst/rtp/gstrtpgstdepay.h +++ b/gst/rtp/gstrtpgstdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_GST_DEPAY_H__ @@ -47,6 +47,9 @@ struct _GstRtpGSTDepay GstAdapter *adapter; guint current_CV; GstCaps *CV_cache[8]; + + GstTagList *tags; + gchar *stream_id; }; struct _GstRtpGSTDepayClass diff --git a/gst/rtp/gstrtpgstpay.c b/gst/rtp/gstrtpgstpay.c index 86e7afa20cc04bbfb6f08e781c96f3a00c285162..55c356c724633d1ff327a098c5a56387ef06092d 100644 --- a/gst/rtp/gstrtpgstpay.c +++ b/gst/rtp/gstrtpgstpay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -27,26 +27,34 @@ #include "gstrtpgstpay.h" +GST_DEBUG_CATEGORY_STATIC (gst_rtp_pay_debug); +#define GST_CAT_DEFAULT gst_rtp_pay_debug + /* * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |C| CV |D|0|0|0| MBZ | + * |C| CV |D|0|0|0| ETYPE | MBZ | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | Frag_offset | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * - * C: caps inlined flag + * C: caps inlined flag * When C set, first part of payload contains caps definition. Caps definition * starts with variable-length length prefix and then a string of that length. * the length is encoded in big endian 7 bit chunks, the top 1 bit of a byte * is the continuation marker and the 7 next bits the data. A continuation - * marker of 1 means that the next byte contains more data. + * marker of 1 means that the next byte contains more data. * * CV: caps version, 0 = caps from SDP, 1 - 7 inlined caps * D: delta unit buffer - * - * + * ETYPE: type of event. Payload contains the event, prefixed with a + * variable length field. + * 0 = NO event + * 1 = GST_EVENT_TAG + * 2 = GST_EVENT_CUSTOM_DOWNSTREAM + * 3 = GST_EVENT_CUSTOM_BOTH + * 4 = GST_EVENT_STREAM_START */ static GstStaticPadTemplate gst_rtp_gst_pay_sink_template = @@ -65,10 +73,29 @@ GST_STATIC_PAD_TEMPLATE ("src", "clock-rate = (int) 90000, " "encoding-name = (string) \"X-GST\"") ); +enum +{ + PROP_0, + PROP_CONFIG_INTERVAL, + PROP_LAST +}; + +#define DEFAULT_CONFIG_INTERVAL 0 + +static void gst_rtp_gst_pay_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_rtp_gst_pay_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); +static void gst_rtp_gst_pay_finalize (GObject * obj); +static GstStateChangeReturn gst_rtp_gst_pay_change_state (GstElement * element, + GstStateChange transition); + static gboolean gst_rtp_gst_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps); static GstFlowReturn gst_rtp_gst_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer); +static gboolean gst_rtp_gst_pay_sink_event (GstRTPBasePayload * payload, + GstEvent * event); #define gst_rtp_gst_pay_parent_class parent_class G_DEFINE_TYPE (GstRtpGSTPay, gst_rtp_gst_pay, GST_TYPE_RTP_BASE_PAYLOAD); @@ -76,12 +103,29 @@ G_DEFINE_TYPE (GstRtpGSTPay, gst_rtp_gst_pay, GST_TYPE_RTP_BASE_PAYLOAD); static void gst_rtp_gst_pay_class_init (GstRtpGSTPayClass * klass) { + GObjectClass *gobject_class; GstElementClass *gstelement_class; GstRTPBasePayloadClass *gstrtpbasepayload_class; + gobject_class = (GObjectClass *) klass; gstelement_class = (GstElementClass *) klass; gstrtpbasepayload_class = (GstRTPBasePayloadClass *) klass; + gobject_class->set_property = gst_rtp_gst_pay_set_property; + gobject_class->get_property = gst_rtp_gst_pay_get_property; + gobject_class->finalize = gst_rtp_gst_pay_finalize; + + g_object_class_install_property (G_OBJECT_CLASS (klass), + PROP_CONFIG_INTERVAL, + g_param_spec_uint ("config-interval", + "Caps/Tags Send Interval", + "Interval for sending caps and TAG events in seconds (0 = disabled)", + 0, 3600, DEFAULT_CONFIG_INTERVAL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) + ); + + gstelement_class->change_state = gst_rtp_gst_pay_change_state; + gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&gst_rtp_gst_pay_src_template)); gst_element_class_add_pad_template (gstelement_class, @@ -94,81 +138,153 @@ gst_rtp_gst_pay_class_init (GstRtpGSTPayClass * klass) gstrtpbasepayload_class->set_caps = gst_rtp_gst_pay_setcaps; gstrtpbasepayload_class->handle_buffer = gst_rtp_gst_pay_handle_buffer; + gstrtpbasepayload_class->sink_event = gst_rtp_gst_pay_sink_event; + + GST_DEBUG_CATEGORY_INIT (gst_rtp_pay_debug, "rtpgstpay", 0, + "rtpgstpay element"); } static void gst_rtp_gst_pay_init (GstRtpGSTPay * rtpgstpay) { + rtpgstpay->adapter = gst_adapter_new (); + rtpgstpay->pending_buffers = NULL; + gst_rtp_base_payload_set_options (GST_RTP_BASE_PAYLOAD (rtpgstpay), + "application", TRUE, "X-GST", 90000); + rtpgstpay->last_config = GST_CLOCK_TIME_NONE; + rtpgstpay->taglist = NULL; + rtpgstpay->config_interval = DEFAULT_CONFIG_INTERVAL; } -static gboolean -gst_rtp_gst_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) +static void +gst_rtp_gst_pay_reset (GstRtpGSTPay * rtpgstpay, gboolean full) { - gboolean res; - gchar *capsstr, *capsenc; + rtpgstpay->last_config = GST_CLOCK_TIME_NONE; + gst_adapter_clear (rtpgstpay->adapter); + rtpgstpay->flags &= 0x70; + rtpgstpay->etype = 0; + if (rtpgstpay->pending_buffers) + g_list_free_full (rtpgstpay->pending_buffers, + (GDestroyNotify) gst_buffer_list_unref); + rtpgstpay->pending_buffers = NULL; + if (full) { + if (rtpgstpay->taglist) + gst_tag_list_unref (rtpgstpay->taglist); + rtpgstpay->taglist = NULL; + if (rtpgstpay->stream_id) + g_free (rtpgstpay->stream_id); + rtpgstpay->stream_id = NULL; + rtpgstpay->current_CV = 0; + rtpgstpay->next_CV = 0; + } +} - capsstr = gst_caps_to_string (caps); - capsenc = g_base64_encode ((guchar *) capsstr, strlen (capsstr)); - g_free (capsstr); +static void +gst_rtp_gst_pay_finalize (GObject * obj) +{ + GstRtpGSTPay *rtpgstpay; - gst_rtp_base_payload_set_options (payload, "application", TRUE, "X-GST", - 90000); - res = - gst_rtp_base_payload_set_outcaps (payload, "caps", G_TYPE_STRING, capsenc, - NULL); - g_free (capsenc); + rtpgstpay = GST_RTP_GST_PAY (obj); - return res; + gst_rtp_gst_pay_reset (rtpgstpay, TRUE); + + g_object_unref (rtpgstpay->adapter); + + G_OBJECT_CLASS (parent_class)->finalize (obj); } -static GstFlowReturn -gst_rtp_gst_pay_handle_buffer (GstRTPBasePayload * basepayload, - GstBuffer * buffer) +static void +gst_rtp_gst_pay_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { GstRtpGSTPay *rtpgstpay; - GstMapInfo map; - guint8 *ptr; - gsize left; - GstBuffer *outbuf; - GstFlowReturn ret; - GstClockTime timestamp; - guint32 frag_offset; - guint flags; - rtpgstpay = GST_RTP_GST_PAY (basepayload); + rtpgstpay = GST_RTP_GST_PAY (object); - gst_buffer_map (buffer, &map, GST_MAP_READ); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + switch (prop_id) { + case PROP_CONFIG_INTERVAL: + rtpgstpay->config_interval = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_rtp_gst_pay_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec) +{ + GstRtpGSTPay *rtpgstpay; - ret = GST_FLOW_OK; + rtpgstpay = GST_RTP_GST_PAY (object); - /* caps always from SDP for now */ - flags = 0; - if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT)) - flags |= (1 << 3); - - /* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |C| CV |D|X|Y|Z| MBZ | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Frag_offset | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ + switch (prop_id) { + case PROP_CONFIG_INTERVAL: + g_value_set_uint (value, rtpgstpay->config_interval); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static GstStateChangeReturn +gst_rtp_gst_pay_change_state (GstElement * element, GstStateChange transition) +{ + GstRtpGSTPay *rtpgstpay; + GstStateChangeReturn ret; + + rtpgstpay = GST_RTP_GST_PAY (element); + + switch (transition) { + case GST_STATE_CHANGE_READY_TO_PAUSED: + gst_rtp_gst_pay_reset (rtpgstpay, TRUE); + break; + default: + break; + } + + ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); + + switch (transition) { + case GST_STATE_CHANGE_PAUSED_TO_READY: + gst_rtp_gst_pay_reset (rtpgstpay, TRUE); + break; + default: + break; + } + return ret; +} + + +static gboolean +gst_rtp_gst_pay_create_from_adapter (GstRtpGSTPay * rtpgstpay, + GstClockTime timestamp) +{ + guint avail; + guint frag_offset; + GstBufferList *list; + + avail = gst_adapter_available (rtpgstpay->adapter); + if (avail == 0) + return FALSE; + + list = gst_buffer_list_new (); frag_offset = 0; - ptr = map.data; - left = map.size; - while (left > 0) { + while (avail) { guint towrite; guint8 *payload; guint payload_len; guint packet_len; + GstBuffer *outbuf; GstRTPBuffer rtp = { NULL }; + GstBuffer *paybuf; + /* this will be the total lenght of the packet */ - packet_len = gst_rtp_buffer_calc_packet_len (8 + left, 0, 0); + packet_len = gst_rtp_buffer_calc_packet_len (8 + avail, 0, 0); /* fill one MTU or all available bytes */ towrite = MIN (packet_len, GST_RTP_BASE_PAYLOAD_MTU (rtpgstpay)); @@ -176,14 +292,27 @@ gst_rtp_gst_pay_handle_buffer (GstRTPBasePayload * basepayload, /* this is the payload length */ payload_len = gst_rtp_buffer_calc_payload_len (towrite, 0, 0); - /* create buffer to hold the payload */ - outbuf = gst_rtp_buffer_new_allocate (payload_len, 0, 0); + /* create buffer to hold the header */ + outbuf = gst_rtp_buffer_new_allocate (8, 0, 0); gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); payload = gst_rtp_buffer_get_payload (&rtp); - payload[0] = flags; - payload[1] = payload[2] = payload[3] = 0; + GST_DEBUG_OBJECT (rtpgstpay, "new packet len %u, frag %u", packet_len, + frag_offset); + + /* + * 0 1 2 3 + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |C| CV |D|0|0|0| ETYPE | MBZ | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Frag_offset | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ + payload[0] = rtpgstpay->flags; + payload[1] = rtpgstpay->etype; + payload[2] = payload[3] = 0; payload[4] = frag_offset >> 24; payload[5] = frag_offset >> 16; payload[6] = frag_offset >> 8; @@ -192,23 +321,326 @@ gst_rtp_gst_pay_handle_buffer (GstRTPBasePayload * basepayload, payload += 8; payload_len -= 8; - memcpy (payload, ptr, payload_len); - - ptr += payload_len; - left -= payload_len; frag_offset += payload_len; + avail -= payload_len; - if (left == 0) + if (avail == 0) gst_rtp_buffer_set_marker (&rtp, TRUE); gst_rtp_buffer_unmap (&rtp); + /* create a new buf to hold the payload */ + GST_DEBUG_OBJECT (rtpgstpay, "take %u bytes from adapter", payload_len); + paybuf = gst_adapter_take_buffer_fast (rtpgstpay->adapter, payload_len); + + /* create a new group to hold the rtp header and the payload */ + gst_buffer_append (outbuf, paybuf); + GST_BUFFER_TIMESTAMP (outbuf) = timestamp; - ret = gst_rtp_base_payload_push (basepayload, outbuf); + /* and add to list */ + gst_buffer_list_insert (list, -1, outbuf); } - gst_buffer_unmap (buffer, &map); - gst_buffer_unref (buffer); + + rtpgstpay->flags &= 0x70; + rtpgstpay->etype = 0; + rtpgstpay->pending_buffers = g_list_append (rtpgstpay->pending_buffers, list); + + return TRUE; +} + +static GstFlowReturn +gst_rtp_gst_pay_flush (GstRtpGSTPay * rtpgstpay, GstClockTime timestamp) +{ + GstFlowReturn ret = GST_FLOW_OK; + GList *iter, *next; + + gst_rtp_gst_pay_create_from_adapter (rtpgstpay, timestamp); + for (iter = rtpgstpay->pending_buffers; iter; iter = next) { + GstBufferList *list = iter->data; + + next = iter->next; + rtpgstpay->pending_buffers = g_list_remove_link (rtpgstpay->pending_buffers, + iter); + + /* push the whole buffer list at once */ + ret = gst_rtp_base_payload_push_list (GST_RTP_BASE_PAYLOAD (rtpgstpay), + list); + if (ret != GST_FLOW_OK) + break; + } + + return ret; +} + +static GstBuffer * +make_data_buffer (GstRtpGSTPay * rtpgstpay, gchar * data, guint size) +{ + guint plen; + guint8 *ptr; + GstBuffer *outbuf; + GstMapInfo map; + + /* calculate length */ + plen = 1; + while (size >> (7 * plen)) + plen++; + + outbuf = gst_buffer_new_allocate (NULL, plen + size, NULL); + + gst_buffer_map (outbuf, &map, GST_MAP_WRITE); + ptr = map.data; + + /* write length */ + while (plen) { + plen--; + *ptr++ = ((plen > 0) ? 0x80 : 0) | ((size >> (7 * plen)) & 0x7f); + } + /* copy data */ + memcpy (ptr, data, size); + gst_buffer_unmap (outbuf, &map); + + return outbuf; +} + +static void +gst_rtp_gst_pay_send_caps (GstRtpGSTPay * rtpgstpay, guint8 cv, GstCaps * caps) +{ + gchar *capsstr; + guint capslen; + GstBuffer *outbuf; + + capsstr = gst_caps_to_string (caps); + capslen = strlen (capsstr); + /* for 0 byte */ + capslen++; + + GST_DEBUG_OBJECT (rtpgstpay, "sending caps=%s", capsstr); + + /* make a data buffer of it */ + outbuf = make_data_buffer (rtpgstpay, capsstr, capslen); + g_free (capsstr); + + /* store in adapter, we don't flush yet, buffer might follow */ + rtpgstpay->flags = (1 << 7) | (cv << 4); + gst_adapter_push (rtpgstpay->adapter, outbuf); +} + +static gboolean +gst_rtp_gst_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) +{ + GstRtpGSTPay *rtpgstpay; + gboolean res; + gchar *capsstr, *capsenc, *capsver; + guint capslen; + + rtpgstpay = GST_RTP_GST_PAY (payload); + + capsstr = gst_caps_to_string (caps); + capslen = strlen (capsstr); + + /* encode without 0 byte */ + capsenc = g_base64_encode ((guchar *) capsstr, capslen); + GST_DEBUG_OBJECT (payload, "caps=%s, caps(base64)=%s", capsstr, capsenc); + g_free (capsstr); + + /* Send the new caps */ + rtpgstpay->current_CV = rtpgstpay->next_CV; + rtpgstpay->next_CV = (rtpgstpay->next_CV + 1) & 0x7; + gst_rtp_gst_pay_send_caps (rtpgstpay, rtpgstpay->current_CV, caps); + + /* make caps for SDP */ + capsver = g_strdup_printf ("%d", rtpgstpay->current_CV); + res = + gst_rtp_base_payload_set_outcaps (payload, "caps", G_TYPE_STRING, capsenc, + "capsversion", G_TYPE_STRING, capsver, NULL); + g_free (capsenc); + g_free (capsver); + + return res; +} + +static void +gst_rtp_gst_pay_send_event (GstRtpGSTPay * rtpgstpay, guint etype, + GstEvent * event) +{ + const GstStructure *s; + gchar *estr; + guint elen; + GstBuffer *outbuf; + + /* Create the standalone caps packet if an inlined caps was pending */ + gst_rtp_gst_pay_create_from_adapter (rtpgstpay, GST_CLOCK_TIME_NONE); + + s = gst_event_get_structure (event); + + estr = gst_structure_to_string (s); + elen = strlen (estr); + outbuf = make_data_buffer (rtpgstpay, estr, elen); + GST_DEBUG_OBJECT (rtpgstpay, "sending event=%s", estr); + g_free (estr); + + rtpgstpay->etype = etype; + gst_adapter_push (rtpgstpay->adapter, outbuf); + /* Create the event packet now to avoid conflict with data/caps packets */ + gst_rtp_gst_pay_create_from_adapter (rtpgstpay, GST_CLOCK_TIME_NONE); +} + +static gboolean +gst_rtp_gst_pay_sink_event (GstRTPBasePayload * payload, GstEvent * event) +{ + gboolean ret; + GstRtpGSTPay *rtpgstpay; + guint etype = 0; + + rtpgstpay = GST_RTP_GST_PAY (payload); + + ret = + GST_RTP_BASE_PAYLOAD_CLASS (parent_class)->sink_event (payload, + gst_event_ref (event)); + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_FLUSH_STOP: + gst_rtp_gst_pay_reset (rtpgstpay, FALSE); + break; + case GST_EVENT_TAG:{ + GstTagList *tags; + + gst_event_parse_tag (event, &tags); + + if (gst_tag_list_get_scope (tags) == GST_TAG_SCOPE_STREAM) { + GstTagList *old; + + GST_DEBUG_OBJECT (rtpgstpay, "storing stream tags %" GST_PTR_FORMAT, + tags); + if ((old = rtpgstpay->taglist)) + gst_tag_list_unref (old); + rtpgstpay->taglist = gst_tag_list_ref (tags); + } + etype = 1; + break; + } + case GST_EVENT_CUSTOM_DOWNSTREAM: + etype = 2; + break; + case GST_EVENT_CUSTOM_BOTH: + etype = 3; + break; + case GST_EVENT_STREAM_START:{ + const gchar *stream_id = NULL; + + if (rtpgstpay->taglist) + gst_tag_list_unref (rtpgstpay->taglist); + rtpgstpay->taglist = NULL; + + gst_event_parse_stream_start (event, &stream_id); + if (stream_id) { + if (rtpgstpay->stream_id) + g_free (rtpgstpay->stream_id); + rtpgstpay->stream_id = g_strdup (stream_id); + } + etype = 4; + break; + } + default: + GST_LOG_OBJECT (rtpgstpay, "no event for %s", + GST_EVENT_TYPE_NAME (event)); + break; + } + if (etype) { + GST_DEBUG_OBJECT (rtpgstpay, "make event type %d for %s", + etype, GST_EVENT_TYPE_NAME (event)); + gst_rtp_gst_pay_send_event (rtpgstpay, etype, event); + /* Do not send stream-start right away since caps/new-segment were not yet + sent, so our data would be considered invalid */ + if (etype != 4) { + /* flush the adapter immediately */ + gst_rtp_gst_pay_flush (rtpgstpay, GST_CLOCK_TIME_NONE); + } + } + + gst_event_unref (event); + + return ret; +} + +static void +gst_rtp_gst_pay_send_config (GstRtpGSTPay * rtpgstpay, GstClockTime timestamp) +{ + GstPad *pad = GST_RTP_BASE_PAYLOAD_SINKPAD (rtpgstpay); + GstCaps *caps = NULL; + GstEvent *tag = NULL; + GstEvent *stream_start = NULL; + + GST_DEBUG_OBJECT (rtpgstpay, "time to send config"); + /* Send tags */ + if (rtpgstpay->taglist && !gst_tag_list_is_empty (rtpgstpay->taglist)) + tag = gst_event_new_tag (gst_tag_list_ref (rtpgstpay->taglist)); + if (tag) { + /* Send start-stream to clear tags */ + if (rtpgstpay->stream_id) + stream_start = gst_event_new_stream_start (rtpgstpay->stream_id); + if (stream_start) { + gst_rtp_gst_pay_send_event (rtpgstpay, 4, stream_start); + gst_event_unref (stream_start); + } + gst_rtp_gst_pay_send_event (rtpgstpay, 1, tag); + gst_event_unref (tag); + } + /* send caps */ + caps = gst_pad_get_current_caps (pad); + if (caps) { + gst_rtp_gst_pay_send_caps (rtpgstpay, rtpgstpay->current_CV, caps); + gst_caps_unref (caps); + } + rtpgstpay->last_config = timestamp; +} + +static GstFlowReturn +gst_rtp_gst_pay_handle_buffer (GstRTPBasePayload * basepayload, + GstBuffer * buffer) +{ + GstFlowReturn ret; + GstRtpGSTPay *rtpgstpay; + GstClockTime timestamp; + + rtpgstpay = GST_RTP_GST_PAY (basepayload); + + timestamp = GST_BUFFER_TIMESTAMP (buffer); + + /* check if we need to send the caps and taglist now */ + if (rtpgstpay->config_interval > 0) { + GST_DEBUG_OBJECT (rtpgstpay, + "timestamp %" GST_TIME_FORMAT ", last config %" GST_TIME_FORMAT, + GST_TIME_ARGS (timestamp), GST_TIME_ARGS (rtpgstpay->last_config)); + + if (timestamp != GST_CLOCK_TIME_NONE && + rtpgstpay->last_config != GST_CLOCK_TIME_NONE) { + guint64 diff; + + /* calculate diff between last SPS/PPS in milliseconds */ + if (timestamp > rtpgstpay->last_config) + diff = timestamp - rtpgstpay->last_config; + else + diff = 0; + + GST_DEBUG_OBJECT (rtpgstpay, + "interval since last config %" GST_TIME_FORMAT, GST_TIME_ARGS (diff)); + + /* bigger than interval, queue SPS/PPS */ + if (GST_TIME_AS_SECONDS (diff) >= rtpgstpay->config_interval) + gst_rtp_gst_pay_send_config (rtpgstpay, timestamp); + } else { + gst_rtp_gst_pay_send_config (rtpgstpay, timestamp); + } + } + + /* caps always from SDP for now */ + if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT)) + rtpgstpay->flags |= (1 << 3); + + gst_adapter_push (rtpgstpay->adapter, buffer); + ret = gst_rtp_gst_pay_flush (rtpgstpay, timestamp); return ret; } diff --git a/gst/rtp/gstrtpgstpay.h b/gst/rtp/gstrtpgstpay.h index e10401fe02eaaa59a0b4166db499d719e77bc4bb..f3272b20c736ba43c08ff6ee681475981b6a72de 100644 --- a/gst/rtp/gstrtpgstpay.h +++ b/gst/rtp/gstrtpgstpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_GST_PAY_H__ @@ -22,6 +22,7 @@ #include <gst/gst.h> #include <gst/rtp/gstrtpbasepayload.h> +#include <gst/base/gstadapter.h> G_BEGIN_DECLS @@ -42,6 +43,19 @@ typedef struct _GstRtpGSTPayClass GstRtpGSTPayClass; struct _GstRtpGSTPay { GstRTPBasePayload payload; + + GList *pending_buffers; /* GstBufferList */ + GstAdapter *adapter; + guint8 flags; + guint8 etype; + + guint8 current_CV; /* CV field of incoming caps*/ + guint8 next_CV; + + gchar *stream_id; + GstTagList *taglist; + guint config_interval; + GstClockTime last_config; }; struct _GstRtpGSTPayClass diff --git a/gst/rtp/gstrtph263depay.c b/gst/rtp/gstrtph263depay.c index 2a0c8980a5f8ddd222f7de36b15c040590cb4d09..20e8ccba57a7c599338dc43e34c84450453c7ac1 100644 --- a/gst/rtp/gstrtph263depay.c +++ b/gst/rtp/gstrtph263depay.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtph263depay.h b/gst/rtp/gstrtph263depay.h index 038b8815af5b948abcea2db2c553d1e383b1edb1..2d9ca55c7000ab516941ce46d43ec0ef5e548909 100644 --- a/gst/rtp/gstrtph263depay.h +++ b/gst/rtp/gstrtph263depay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_H263_DEPAY_H__ diff --git a/gst/rtp/gstrtph263pay.c b/gst/rtp/gstrtph263pay.c index 7def26e99b18efcfe6cf51313a0b744e97554855..a9672ec11b1a56c4f98b9aa1c93c9e3ae46758ea 100644 --- a/gst/rtp/gstrtph263pay.c +++ b/gst/rtp/gstrtph263pay.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/gst/rtp/gstrtph263pay.h b/gst/rtp/gstrtph263pay.h index 211cecb339f1c57b6d85f38b0c439deadbbc2eb5..d41c3edafd1782a73a2e6ebdd4dffeb15dbf189c 100644 --- a/gst/rtp/gstrtph263pay.h +++ b/gst/rtp/gstrtph263pay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * Author: Dejan Sakelsak sahel@kiberpipa.org */ diff --git a/gst/rtp/gstrtph263pdepay.c b/gst/rtp/gstrtph263pdepay.c index 9dc9b76ec84165a6a206fc5a0aa2328ea0155aef..e788e2f6e851bb4de5d9f02b2573a2b123392e29 100644 --- a/gst/rtp/gstrtph263pdepay.c +++ b/gst/rtp/gstrtph263pdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtph263pdepay.h b/gst/rtp/gstrtph263pdepay.h index 624e8ffe16d49d3a04c68fe276ed7f5e4e58fc26..bbdb2b0a4a2f9bdc8d9b4ad3be03a709be9f5e2e 100644 --- a/gst/rtp/gstrtph263pdepay.h +++ b/gst/rtp/gstrtph263pdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_H263P_DEPAY_H__ diff --git a/gst/rtp/gstrtph263ppay.c b/gst/rtp/gstrtph263ppay.c index 3c93d912a2076600c052fdbfdaa04bd8129bf51f..073a6b59f452d2db54a478ccd588517cf4e07b97 100644 --- a/gst/rtp/gstrtph263ppay.c +++ b/gst/rtp/gstrtph263ppay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtph263ppay.h b/gst/rtp/gstrtph263ppay.h index 7e053178892a31d066ba219aeeafda945cf0f67e..23ec8b8e955e0268bba324188920090bdf22f686 100644 --- a/gst/rtp/gstrtph263ppay.h +++ b/gst/rtp/gstrtph263ppay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_H263P_PAY_H__ diff --git a/gst/rtp/gstrtph264depay.c b/gst/rtp/gstrtph264depay.c index 1b6017647a106616f7777f7ca5d5ea010d2aebdc..91432b5725f18988d1e6122c3ad28788880d5cb4 100644 --- a/gst/rtp/gstrtph264depay.c +++ b/gst/rtp/gstrtph264depay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -118,9 +118,6 @@ gst_rtp_h264_depay_class_init (GstRtpH264DepayClass * klass) gstrtpbasedepayload_class->process = gst_rtp_h264_depay_process; gstrtpbasedepayload_class->set_caps = gst_rtp_h264_depay_setcaps; gstrtpbasedepayload_class->handle_event = gst_rtp_h264_depay_handle_event; - - GST_DEBUG_CATEGORY_INIT (rtph264depay_debug, "rtph264depay", 0, - "H264 Video RTP Depayloader"); } static void @@ -405,8 +402,9 @@ gst_rtp_h264_set_src_caps (GstRtpH264Depay * rtph264depay) return res; } -static gboolean -gst_rtp_h264_add_sps_pps (GstRtpH264Depay * rtph264depay, GstBuffer * nal) +gboolean +gst_rtp_h264_add_sps_pps (GstElement * rtph264, GPtrArray * sps_array, + GPtrArray * pps_array, GstBuffer * nal) { GstMapInfo map; guchar type; @@ -420,13 +418,13 @@ gst_rtp_h264_add_sps_pps (GstRtpH264Depay * rtph264depay, GstBuffer * nal) guint32 sps_id; if (!parse_sps (&map, &sps_id)) { - GST_WARNING_OBJECT (rtph264depay, "Invalid SPS," + GST_WARNING_OBJECT (rtph264, "Invalid SPS," " can't parse seq_parameter_set_id"); goto drop; } - for (i = 0; i < rtph264depay->sps->len; i++) { - GstBuffer *sps = g_ptr_array_index (rtph264depay->sps, i); + for (i = 0; i < sps_array->len; i++) { + GstBuffer *sps = g_ptr_array_index (sps_array, i); GstMapInfo spsmap; guint32 tmp_sps_id; @@ -436,34 +434,33 @@ gst_rtp_h264_add_sps_pps (GstRtpH264Depay * rtph264depay, GstBuffer * nal) if (sps_id == tmp_sps_id) { if (map.size == spsmap.size && memcmp (map.data, spsmap.data, spsmap.size) == 0) { - GST_LOG_OBJECT (rtph264depay, "Unchanged SPS %u, not updating", - sps_id); + GST_LOG_OBJECT (rtph264, "Unchanged SPS %u, not updating", sps_id); gst_buffer_unmap (sps, &spsmap); goto drop; } else { gst_buffer_unmap (sps, &spsmap); - g_ptr_array_remove_index_fast (rtph264depay->sps, i); - g_ptr_array_add (rtph264depay->sps, nal); - GST_LOG_OBJECT (rtph264depay, "Modified SPS %u, replacing", sps_id); + g_ptr_array_remove_index_fast (sps_array, i); + g_ptr_array_add (sps_array, nal); + GST_LOG_OBJECT (rtph264, "Modified SPS %u, replacing", sps_id); goto done; } } gst_buffer_unmap (sps, &spsmap); } - GST_LOG_OBJECT (rtph264depay, "Adding new SPS %u", sps_id); - g_ptr_array_add (rtph264depay->sps, nal); + GST_LOG_OBJECT (rtph264, "Adding new SPS %u", sps_id); + g_ptr_array_add (sps_array, nal); } else if (type == 8) { guint32 sps_id; guint32 pps_id; if (!parse_pps (&map, &sps_id, &pps_id)) { - GST_WARNING_OBJECT (rtph264depay, "Invalid PPS," + GST_WARNING_OBJECT (rtph264, "Invalid PPS," " can't parse seq_parameter_set_id or pic_parameter_set_id"); goto drop; } - for (i = 0; i < rtph264depay->pps->len; i++) { - GstBuffer *pps = g_ptr_array_index (rtph264depay->pps, i); + for (i = 0; i < pps_array->len; i++) { + GstBuffer *pps = g_ptr_array_index (pps_array, i); GstMapInfo ppsmap; guint32 tmp_sps_id; guint32 tmp_pps_id; @@ -475,30 +472,29 @@ gst_rtp_h264_add_sps_pps (GstRtpH264Depay * rtph264depay, GstBuffer * nal) if (sps_id == tmp_sps_id && pps_id == tmp_pps_id) { if (map.size == ppsmap.size && memcmp (map.data, ppsmap.data, ppsmap.size) == 0) { - GST_LOG_OBJECT (rtph264depay, "Unchanged PPS %u:%u, not updating", - sps_id, pps_id); + GST_LOG_OBJECT (rtph264, "Unchanged PPS %u:%u, not updating", sps_id, + pps_id); gst_buffer_unmap (pps, &ppsmap); goto drop; } else { gst_buffer_unmap (pps, &ppsmap); - g_ptr_array_remove_index_fast (rtph264depay->pps, i); - g_ptr_array_add (rtph264depay->pps, nal); - GST_LOG_OBJECT (rtph264depay, "Modified PPS %u:%u, replacing", + g_ptr_array_remove_index_fast (pps_array, i); + g_ptr_array_add (pps_array, nal); + GST_LOG_OBJECT (rtph264, "Modified PPS %u:%u, replacing", sps_id, pps_id); goto done; } } gst_buffer_unmap (pps, &ppsmap); } - GST_LOG_OBJECT (rtph264depay, "Adding new PPS %u:%i", sps_id, pps_id); - g_ptr_array_add (rtph264depay->pps, nal); + GST_LOG_OBJECT (rtph264, "Adding new PPS %u:%i", sps_id, pps_id); + g_ptr_array_add (pps_array, nal); } else { goto drop; } done: gst_buffer_unmap (nal, &map); - rtph264depay->new_codec_data = TRUE; return TRUE; @@ -509,6 +505,15 @@ drop: return FALSE; } + +static void +gst_rtp_h264_depay_add_sps_pps (GstRtpH264Depay * rtph264depay, GstBuffer * nal) +{ + if (gst_rtp_h264_add_sps_pps (GST_ELEMENT (rtph264depay), + rtph264depay->sps, rtph264depay->pps, nal)) + rtph264depay->new_codec_data = TRUE; +} + static gboolean gst_rtp_h264_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps) { @@ -610,7 +615,7 @@ gst_rtp_h264_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps) gst_buffer_unmap (nal, &nalmap); gst_buffer_set_size (nal, nal_len); - gst_rtp_h264_add_sps_pps (rtph264depay, nal); + gst_rtp_h264_depay_add_sps_pps (rtph264depay, nal); } g_strfreev (params); @@ -679,7 +684,7 @@ gst_rtp_h264_depay_handle_nal (GstRtpH264Depay * rtph264depay, GstBuffer * nal, if (!rtph264depay->byte_stream) { if (nal_type == 7 || nal_type == 8) { - gst_rtp_h264_add_sps_pps (rtph264depay, + gst_rtp_h264_depay_add_sps_pps (rtph264depay, gst_buffer_copy_region (nal, GST_BUFFER_COPY_ALL, 4, gst_buffer_get_size (nal) - 4)); gst_buffer_unmap (nal, &map); @@ -1149,6 +1154,9 @@ gst_rtp_h264_depay_change_state (GstElement * element, gboolean gst_rtp_h264_depay_plugin_init (GstPlugin * plugin) { + GST_DEBUG_CATEGORY_INIT (rtph264depay_debug, "rtph264depay", 0, + "H264 Video RTP Depayloader"); + return gst_element_register (plugin, "rtph264depay", GST_RANK_SECONDARY, GST_TYPE_RTP_H264_DEPAY); } diff --git a/gst/rtp/gstrtph264depay.h b/gst/rtp/gstrtph264depay.h index c1f352b4ec587e45e0b0100c8ebcbae918342fca..4895236b8fd8906fd1f47bb64013f46cf749438b 100644 --- a/gst/rtp/gstrtph264depay.h +++ b/gst/rtp/gstrtph264depay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_H264_DEPAY_H__ @@ -77,6 +77,9 @@ GType gst_rtp_h264_depay_get_type (void); gboolean gst_rtp_h264_depay_plugin_init (GstPlugin * plugin); +gboolean gst_rtp_h264_add_sps_pps (GstElement * rtph264, GPtrArray * sps, + GPtrArray * pps, GstBuffer * nal); + G_END_DECLS #endif /* __GST_RTP_H264_DEPAY_H__ */ diff --git a/gst/rtp/gstrtph264pay.c b/gst/rtp/gstrtph264pay.c index 699f6d37b421e5793737b48f9f084fdea3118c77..953379d73b120607353a1a4bff5d749b5fdc57bf 100644 --- a/gst/rtp/gstrtph264pay.c +++ b/gst/rtp/gstrtph264pay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -27,6 +27,9 @@ #include <gst/rtp/gstrtpbuffer.h> #include <gst/pbutils/pbutils.h> +/* Included to not duplicate gst_rtp_h264_add_sps_pps () */ +#include "gstrtph264depay.h" + #include "gstrtph264pay.h" @@ -157,8 +160,10 @@ gst_rtp_h264_pay_init (GstRtpH264Pay * rtph264pay) { rtph264pay->queue = g_array_new (FALSE, FALSE, sizeof (guint)); rtph264pay->profile = 0; - rtph264pay->sps = NULL; - rtph264pay->pps = NULL; + rtph264pay->sps = g_ptr_array_new_with_free_func ( + (GDestroyNotify) gst_buffer_unref); + rtph264pay->pps = g_ptr_array_new_with_free_func ( + (GDestroyNotify) gst_buffer_unref); rtph264pay->last_spspps = -1; rtph264pay->spspps_interval = DEFAULT_CONFIG_INTERVAL; @@ -168,12 +173,8 @@ gst_rtp_h264_pay_init (GstRtpH264Pay * rtph264pay) static void gst_rtp_h264_pay_clear_sps_pps (GstRtpH264Pay * rtph264pay) { - g_list_foreach (rtph264pay->sps, (GFunc) gst_mini_object_unref, NULL); - g_list_free (rtph264pay->sps); - rtph264pay->sps = NULL; - g_list_foreach (rtph264pay->pps, (GFunc) gst_mini_object_unref, NULL); - g_list_free (rtph264pay->pps); - rtph264pay->pps = NULL; + g_ptr_array_set_size (rtph264pay->sps, 0); + g_ptr_array_set_size (rtph264pay->pps, 0); } static void @@ -185,7 +186,8 @@ gst_rtp_h264_pay_finalize (GObject * object) g_array_free (rtph264pay->queue, TRUE); - gst_rtp_h264_pay_clear_sps_pps (rtph264pay); + g_ptr_array_free (rtph264pay->sps, TRUE); + g_ptr_array_free (rtph264pay->pps, TRUE); g_free (rtph264pay->sprop_parameter_sets); @@ -350,18 +352,19 @@ gst_rtp_h264_pay_set_sps_pps (GstRTPBasePayload * basepayload) GstRtpH264Pay *payloader = GST_RTP_H264_PAY (basepayload); gchar *profile; gchar *set; - GList *walk; GString *sprops; guint count; gboolean res; GstMapInfo map; + guint i; sprops = g_string_new (""); count = 0; /* build the sprop-parameter-sets */ - for (walk = payloader->sps; walk; walk = g_list_next (walk)) { - GstBuffer *sps_buf = GST_BUFFER_CAST (walk->data); + for (i = 0; i < payloader->sps->len; i++) { + GstBuffer *sps_buf = + GST_BUFFER_CAST (g_ptr_array_index (payloader->sps, i)); gst_buffer_map (sps_buf, &map, GST_MAP_READ); set = g_base64_encode (map.data, map.size); @@ -371,8 +374,9 @@ gst_rtp_h264_pay_set_sps_pps (GstRTPBasePayload * basepayload) g_free (set); count++; } - for (walk = payloader->pps; walk; walk = g_list_next (walk)) { - GstBuffer *pps_buf = GST_BUFFER_CAST (walk->data); + for (i = 0; i < payloader->pps->len; i++) { + GstBuffer *pps_buf = + GST_BUFFER_CAST (g_ptr_array_index (payloader->pps, i)); gst_buffer_map (pps_buf, &map, GST_MAP_READ); set = g_base64_encode (map.data, map.size); @@ -398,29 +402,6 @@ gst_rtp_h264_pay_set_sps_pps (GstRTPBasePayload * basepayload) return res; } -static GList * -add_sps_pps_without_duplicates (GList * list, GstBuffer * buffer) -{ - GList *walk; - GstMapInfo map; - - gst_buffer_map (buffer, &map, GST_MAP_READ); - - for (walk = list; walk; walk = walk->next) { - if (gst_buffer_get_size (walk->data) == map.size && - !gst_buffer_memcmp (walk->data, 0, map.data, map.size)) { - /* Same data */ - gst_buffer_unmap (buffer, &map); - gst_buffer_unref (buffer); - return list; - } - } - - gst_buffer_unmap (buffer, &map); - list = g_list_append (list, buffer); - - return list; -} static gboolean gst_rtp_h264_pay_setcaps (GstRTPBasePayload * basepayload, GstCaps * caps) @@ -517,9 +498,8 @@ gst_rtp_h264_pay_setcaps (GstRTPBasePayload * basepayload, GstCaps * caps) /* make a buffer out of it and add to SPS list */ sps_buf = gst_buffer_new_and_alloc (nal_size); gst_buffer_fill (sps_buf, 0, data, nal_size); - rtph264pay->sps = add_sps_pps_without_duplicates (rtph264pay->sps, - sps_buf); - + gst_rtp_h264_add_sps_pps (GST_ELEMENT (rtph264pay), rtph264pay->sps, + rtph264pay->pps, sps_buf); data += nal_size; size -= nal_size; } @@ -550,8 +530,8 @@ gst_rtp_h264_pay_setcaps (GstRTPBasePayload * basepayload, GstCaps * caps) /* make a buffer out of it and add to PPS list */ pps_buf = gst_buffer_new_and_alloc (nal_size); gst_buffer_fill (pps_buf, 0, data, nal_size); - rtph264pay->pps = add_sps_pps_without_duplicates (rtph264pay->pps, - pps_buf); + gst_rtp_h264_add_sps_pps (GST_ELEMENT (rtph264pay), rtph264pay->sps, + rtph264pay->pps, pps_buf); data += nal_size; size -= nal_size; @@ -600,7 +580,7 @@ gst_rtp_h264_pay_parse_sprop_parameter_sets (GstRtpH264Pay * rtph264pay) { const gchar *ps; gchar **params; - guint len, num_sps, num_pps; + guint len; gint i; GstBuffer *buf; @@ -615,15 +595,12 @@ gst_rtp_h264_pay_parse_sprop_parameter_sets (GstRtpH264Pay * rtph264pay) GST_DEBUG_OBJECT (rtph264pay, "we have %d params", len); - num_sps = num_pps = 0; - for (i = 0; params[i]; i++) { gsize nal_len; GstMapInfo map; guint8 *nalp; guint save = 0; gint state = 0; - guint8 nal_type; nal_len = strlen (params[i]); buf = gst_buffer_new_and_alloc (nal_len); @@ -631,7 +608,6 @@ gst_rtp_h264_pay_parse_sprop_parameter_sets (GstRtpH264Pay * rtph264pay) gst_buffer_map (buf, &map, GST_MAP_WRITE); nalp = map.data; nal_len = g_base64_decode_step (params[i], nal_len, nalp, &state, &save); - nal_type = nalp[0]; gst_buffer_unmap (buf, &map); gst_buffer_resize (buf, 0, nal_len); @@ -640,16 +616,8 @@ gst_rtp_h264_pay_parse_sprop_parameter_sets (GstRtpH264Pay * rtph264pay) continue; } - /* append to the right list */ - if ((nal_type & 0x1f) == 7) { - GST_DEBUG_OBJECT (rtph264pay, "adding param %d as SPS %d", i, num_sps); - rtph264pay->sps = add_sps_pps_without_duplicates (rtph264pay->sps, buf); - num_sps++; - } else { - GST_DEBUG_OBJECT (rtph264pay, "adding param %d as PPS %d", i, num_pps); - rtph264pay->pps = add_sps_pps_without_duplicates (rtph264pay->pps, buf); - num_pps++; - } + gst_rtp_h264_add_sps_pps (GST_ELEMENT (rtph264pay), rtph264pay->sps, + rtph264pay->pps, buf); } g_strfreev (params); } @@ -697,10 +665,7 @@ static gboolean gst_rtp_h264_pay_decode_nal (GstRtpH264Pay * payloader, const guint8 * data, guint size, GstClockTime dts, GstClockTime pts) { - const guint8 *sps = NULL, *pps = NULL; - guint sps_len = 0, pps_len = 0; guint8 header, type; - guint len; gboolean updated; /* default is no update */ @@ -708,103 +673,32 @@ gst_rtp_h264_pay_decode_nal (GstRtpH264Pay * payloader, GST_DEBUG ("NAL payload len=%u", size); - len = size; header = data[0]; type = header & 0x1f; - /* keep sps & pps separately so that we can update either one - * independently. We also record the timestamp of the last SPS/PPS so + /* We record the timestamp of the last SPS/PPS so * that we can insert them at regular intervals and when needed. */ - if (SPS_TYPE_ID == type) { + if (SPS_TYPE_ID == type || PPS_TYPE_ID == type) { + GstBuffer *nal; + /* encode the entire SPS NAL in base64 */ - GST_DEBUG ("Found SPS %x %x %x Len=%u", (header >> 7), - (header >> 5) & 3, type, len); + GST_DEBUG ("Found %s %x %x %x Len=%u", type == SPS_TYPE_ID ? "SPS" : "PPS", + (header >> 7), (header >> 5) & 3, type, size); + + nal = gst_buffer_new_allocate (NULL, size, NULL); + gst_buffer_fill (nal, 0, data, size); + + updated = gst_rtp_h264_add_sps_pps (GST_ELEMENT (payloader), + payloader->sps, payloader->pps, nal); - sps = data; - sps_len = len; /* remember when we last saw SPS */ - if (pts != -1) - payloader->last_spspps = pts; - } else if (PPS_TYPE_ID == type) { - /* encoder the entire PPS NAL in base64 */ - GST_DEBUG ("Found PPS %x %x %x Len = %u", - (header >> 7), (header >> 5) & 3, type, len); - - pps = data; - pps_len = len; - /* remember when we last saw PPS */ - if (pts != -1) + if (updated && pts != -1) payloader->last_spspps = pts; } else { GST_DEBUG ("NAL: %x %x %x Len = %u", (header >> 7), - (header >> 5) & 3, type, len); + (header >> 5) & 3, type, size); } - /* If we encountered an SPS and/or a PPS, check if it's the - * same as the one we have. If not, update our version and - * set updated to TRUE - */ - if (sps_len > 0) { - GstBuffer *sps_buf; - - if (payloader->sps != NULL) { - sps_buf = GST_BUFFER_CAST (payloader->sps->data); - - if (gst_buffer_memcmp (sps_buf, 0, sps, sps_len)) { - /* something changed, update */ - payloader->profile = (sps[1] << 16) + (sps[2] << 8) + sps[3]; - GST_DEBUG ("Profile level IDC = %06x", payloader->profile); - updated = TRUE; - } - } else { - /* no previous SPS, update */ - updated = TRUE; - } - - if (updated) { - sps_buf = gst_buffer_new_and_alloc (sps_len); - gst_buffer_fill (sps_buf, 0, sps, sps_len); - - if (payloader->sps) { - /* replace old buffer */ - gst_buffer_unref (payloader->sps->data); - payloader->sps->data = sps_buf; - } else { - /* add new buffer */ - payloader->sps = g_list_prepend (payloader->sps, sps_buf); - } - } - } - - if (pps_len > 0) { - GstBuffer *pps_buf; - - if (payloader->pps != NULL) { - pps_buf = GST_BUFFER_CAST (payloader->pps->data); - - if (gst_buffer_memcmp (pps_buf, 0, pps, pps_len)) { - /* something changed, update */ - updated = TRUE; - } - } else { - /* no previous SPS, update */ - updated = TRUE; - } - - if (updated) { - pps_buf = gst_buffer_new_and_alloc (pps_len); - gst_buffer_fill (pps_buf, 0, pps, pps_len); - - if (payloader->pps) { - /* replace old buffer */ - gst_buffer_unref (payloader->pps->data); - payloader->pps->data = pps_buf; - } else { - /* add new buffer */ - payloader->pps = g_list_prepend (payloader->pps, pps_buf); - } - } - } return updated; } @@ -817,10 +711,11 @@ gst_rtp_h264_pay_send_sps_pps (GstRTPBasePayload * basepayload, GstRtpH264Pay * rtph264pay, GstClockTime dts, GstClockTime pts) { GstFlowReturn ret = GST_FLOW_OK; - GList *walk; + guint i; - for (walk = rtph264pay->sps; walk; walk = g_list_next (walk)) { - GstBuffer *sps_buf = GST_BUFFER_CAST (walk->data); + for (i = 0; i < rtph264pay->sps->len; i++) { + GstBuffer *sps_buf = + GST_BUFFER_CAST (g_ptr_array_index (rtph264pay->sps, i)); GST_DEBUG_OBJECT (rtph264pay, "inserting SPS in the stream"); /* resend SPS */ @@ -830,8 +725,9 @@ gst_rtp_h264_pay_send_sps_pps (GstRTPBasePayload * basepayload, if (ret != GST_FLOW_OK) GST_WARNING ("Problem pushing SPS"); } - for (walk = rtph264pay->pps; walk; walk = g_list_next (walk)) { - GstBuffer *pps_buf = GST_BUFFER_CAST (walk->data); + for (i = 0; i < rtph264pay->pps->len; i++) { + GstBuffer *pps_buf = + GST_BUFFER_CAST (g_ptr_array_index (rtph264pay->pps, i)); GST_DEBUG_OBJECT (rtph264pay, "inserting PPS in the stream"); /* resend PPS */ diff --git a/gst/rtp/gstrtph264pay.h b/gst/rtp/gstrtph264pay.h index d5b9dfa134cc738fc2e565d998f8181ea222eaf3..e1f6c7f1a930102c7c239c9900b218253ab5bdf9 100644 --- a/gst/rtp/gstrtph264pay.h +++ b/gst/rtp/gstrtph264pay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_H264_PAY_H__ @@ -59,7 +59,7 @@ struct _GstRtpH264Pay GstRTPBasePayload payload; guint profile; - GList *sps, *pps; + GPtrArray *sps, *pps; GstH264StreamFormat stream_format; GstH264Alignment alignment; diff --git a/gst/rtp/gstrtpilbcdepay.c b/gst/rtp/gstrtpilbcdepay.c index 2d8d886694619c73259250c9065907499313ea6c..8b4285e1c7409aa65c71d5f6b47a474f07fd1acd 100644 --- a/gst/rtp/gstrtpilbcdepay.c +++ b/gst/rtp/gstrtpilbcdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -190,8 +190,8 @@ gst_rtp_ilbc_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) gst_rtp_buffer_unmap (&rtp); if (marker && outbuf) { - /* mark start of talkspurt with DISCONT */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + /* mark start of talkspurt with RESYNC */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } return outbuf; diff --git a/gst/rtp/gstrtpilbcdepay.h b/gst/rtp/gstrtpilbcdepay.h index 18db3275954d13c3ba959a145538e29bca83b6fe..01fd225eae2108f0747c1baf39c461011d4552fa 100644 --- a/gst/rtp/gstrtpilbcdepay.h +++ b/gst/rtp/gstrtpilbcdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_ILBC_DEPAY_H__ diff --git a/gst/rtp/gstrtpilbcpay.c b/gst/rtp/gstrtpilbcpay.c index 4c4bb59e65380753b2883eb907327216c88248b5..7d6ea280bebea1916ed5def0092863e05ad1609a 100644 --- a/gst/rtp/gstrtpilbcpay.c +++ b/gst/rtp/gstrtpilbcpay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpilbcpay.h b/gst/rtp/gstrtpilbcpay.h index daa36970868df75ddc20673f9c5d4833c6ba6d83..14363c0774128d94d00da693dea918fc8fc2c566 100644 --- a/gst/rtp/gstrtpilbcpay.h +++ b/gst/rtp/gstrtpilbcpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_ILBC_PAY_H__ diff --git a/gst/rtp/gstrtpj2kdepay.c b/gst/rtp/gstrtpj2kdepay.c index 140e1c532b78ab5cf27796c9d325d58d2d9b9f16..9829258fcb0d7dbb9ed913647fcee4a66fb3bc2b 100644 --- a/gst/rtp/gstrtpj2kdepay.c +++ b/gst/rtp/gstrtpj2kdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpj2kdepay.h b/gst/rtp/gstrtpj2kdepay.h index 020688e1506d71080987a9cf3ab2e3c2e05540d3..e5b9d6bea82cd223ff0060e37f2072ef451824b7 100644 --- a/gst/rtp/gstrtpj2kdepay.h +++ b/gst/rtp/gstrtpj2kdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_J2K_DEPAY_H__ diff --git a/gst/rtp/gstrtpj2kpay.c b/gst/rtp/gstrtpj2kpay.c index ed1856adce376fd295a9d5f0bdec06a3eaecee00..6cefc31424bfd861b5d4b937b21608293eb25f8c 100644 --- a/gst/rtp/gstrtpj2kpay.c +++ b/gst/rtp/gstrtpj2kpay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/rtp/gstrtpj2kpay.h b/gst/rtp/gstrtpj2kpay.h index 88737d6351481b78482e51544004f113fa10f47f..7160a62206c8ac47a77f54bfc67b5f63b8f99544 100644 --- a/gst/rtp/gstrtpj2kpay.h +++ b/gst/rtp/gstrtpj2kpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_J2K_PAY_H__ diff --git a/gst/rtp/gstrtpjpegdepay.c b/gst/rtp/gstrtpjpegdepay.c index 2eb4d93096a6720921d10aea90b550c1fb1e8637..04d010492e889ebe79a79685dc55eab03fd00457 100644 --- a/gst/rtp/gstrtpjpegdepay.c +++ b/gst/rtp/gstrtpjpegdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -50,6 +50,7 @@ static GstStaticPadTemplate gst_rtp_jpeg_depay_sink_template = /* * "a-framerate = (string) 0.00, " * "x-framerate = (string) 0.00, " + * "a-framesize = (string) 1234-1234, " * "x-dimensions = (string) \"1234,1234\", " */ "application/x-rtp, " @@ -60,6 +61,7 @@ static GstStaticPadTemplate gst_rtp_jpeg_depay_sink_template = /* * "a-framerate = (string) 0.00, " * "x-framerate = (string) 0.00, " + * "a-framesize = (string) 1234-1234, " * "x-dimensions = (string) \"1234,1234\"" */ ) @@ -456,6 +458,15 @@ gst_rtp_jpeg_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps) } } + if ((media_attr = gst_structure_get_string (structure, "a-framesize"))) { + gint w, h; + + if (sscanf (media_attr, "%d-%d", &w, &h) == 2) { + rtpjpegdepay->media_width = w; + rtpjpegdepay->media_height = h; + } + } + /* try to get a framerate */ media_attr = gst_structure_get_string (structure, "a-framerate"); if (!media_attr) @@ -503,6 +514,7 @@ gst_rtp_jpeg_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) rtpjpegdepay = GST_RTP_JPEG_DEPAY (depayload); if (GST_BUFFER_IS_DISCONT (buf)) { + GST_DEBUG_OBJECT (depayload, "DISCONT, reset adapter"); gst_adapter_clear (rtpjpegdepay->adapter); rtpjpegdepay->discont = TRUE; } diff --git a/gst/rtp/gstrtpjpegdepay.h b/gst/rtp/gstrtpjpegdepay.h index 0b9757056897a8fd21eba5443bc0c9567d2b996c..cb74f12d4ffd0e017536b9d4104a78f69759db23 100644 --- a/gst/rtp/gstrtpjpegdepay.h +++ b/gst/rtp/gstrtpjpegdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_JPEG_DEPAY_H__ diff --git a/gst/rtp/gstrtpjpegpay.c b/gst/rtp/gstrtpjpegpay.c index 7d93c115e084d861f986c9c0acc393dc01006d40..91bd54c5da27145b6faaa2e68a0317c138bb250e 100644 --- a/gst/rtp/gstrtpjpegpay.c +++ b/gst/rtp/gstrtpjpegpay.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -55,7 +55,9 @@ GST_STATIC_PAD_TEMPLATE ("src", GST_STATIC_CAPS ("application/x-rtp, " " media = (string) \"video\", " " payload = (int) 26 , " - " clock-rate = (int) 90000, " " encoding-name = (string) \"JPEG\"") + " clock-rate = (int) 90000, " + " encoding-name = (string) \"JPEG\", " + " width = (int) [ 1, 65536 ], " " height = (int) [ 1, 65536 ]") ); GST_DEBUG_CATEGORY_STATIC (rtpjpegpay_debug); @@ -280,6 +282,8 @@ gst_rtp_jpeg_pay_init (GstRtpJPEGPay * pay) pay->quality = DEFAULT_JPEG_QUALITY; pay->quant = DEFAULT_JPEG_QUANT; pay->type = DEFAULT_JPEG_TYPE; + pay->width = -1; + pay->height = -1; } static gboolean @@ -288,26 +292,73 @@ gst_rtp_jpeg_pay_setcaps (GstRTPBasePayload * basepayload, GstCaps * caps) GstStructure *caps_structure = gst_caps_get_structure (caps, 0); GstRtpJPEGPay *pay; gboolean res; - gint width = 0, height = 0; + gint width = -1, height = -1; + gint num = 0, denom; + gchar *rate = NULL; + gchar *dim = NULL; + gchar *size; pay = GST_RTP_JPEG_PAY (basepayload); - /* these properties are not mandatory, we can get them from the SOF, if there + /* these properties are mandatory, but they might be adjusted by the SOF, if there * is one. */ - if (gst_structure_get_int (caps_structure, "height", &height)) { - if (height <= 0 || height > 2040) - goto invalid_dimension; + if (!gst_structure_get_int (caps_structure, "height", &height) || height <= 0) { + goto invalid_dimension; + } + + if (!gst_structure_get_int (caps_structure, "width", &width) || width <= 0) { + goto invalid_dimension; } - pay->height = GST_ROUND_UP_8 (height) / 8; - if (gst_structure_get_int (caps_structure, "width", &width)) { - if (width <= 0 || width > 2040) - goto invalid_dimension; + if (gst_structure_get_fraction (caps_structure, "framerate", &num, &denom) && + (num < 0 || denom <= 0)) { + goto invalid_framerate; + } + + if (height > 2040 || width > 2040) { + pay->height = 0; + pay->width = 0; + } else { + pay->height = GST_ROUND_UP_8 (height) / 8; + pay->width = GST_ROUND_UP_8 (width) / 8; } - pay->width = GST_ROUND_UP_8 (width) / 8; gst_rtp_base_payload_set_options (basepayload, "video", TRUE, "JPEG", 90000); - res = gst_rtp_base_payload_set_outcaps (basepayload, NULL); + + if (num > 0) { + gdouble framerate; + gst_util_fraction_to_double (num, denom, &framerate); + rate = g_strdup_printf ("%f", framerate); + } + + size = g_strdup_printf ("%d-%d", width, height); + + if (pay->width == 0) { + GST_DEBUG_OBJECT (pay, + "width or height are greater than 2040, adding x-dimensions to caps"); + dim = g_strdup_printf ("%d,%d", width, height); + } + + if (rate != NULL && dim != NULL) { + res = gst_rtp_base_payload_set_outcaps (basepayload, "a-framerate", + G_TYPE_STRING, rate, "a-framesize", G_TYPE_STRING, size, + "x-dimensions", G_TYPE_STRING, dim, NULL); + } else if (rate != NULL && dim == NULL) { + res = gst_rtp_base_payload_set_outcaps (basepayload, "a-framerate", + G_TYPE_STRING, rate, "a-framesize", G_TYPE_STRING, size, NULL); + } else if (rate == NULL && dim != NULL) { + res = gst_rtp_base_payload_set_outcaps (basepayload, "x-dimensions", + G_TYPE_STRING, dim, "a-framesize", G_TYPE_STRING, size, NULL); + } else { + res = gst_rtp_base_payload_set_outcaps (basepayload, "a-framesize", + G_TYPE_STRING, size, NULL); + } + + if (dim != NULL) + g_free (dim); + if (rate != NULL) + g_free (rate); + g_free (size); return res; @@ -317,6 +368,11 @@ invalid_dimension: GST_ERROR_OBJECT (pay, "Invalid width/height from caps"); return FALSE; } +invalid_framerate: + { + GST_ERROR_OBJECT (pay, "Invalid framerate from caps"); + return FALSE; + } } static guint @@ -439,13 +495,26 @@ gst_rtp_jpeg_pay_read_sof (GstRtpJPEGPay * pay, const guint8 * data, GST_LOG_OBJECT (pay, "got dimensions %ux%u", height, width); - if (height == 0 || height > 2040) + if (height == 0) { goto invalid_dimension; - if (width == 0 || width > 2040) + } + if (height > 2040) { + height = 0; + } + if (width == 0) { goto invalid_dimension; + } + if (width > 2040) { + width = 0; + } - pay->height = GST_ROUND_UP_8 (height) / 8; - pay->width = GST_ROUND_UP_8 (width) / 8; + if (height == 0 || width == 0) { + pay->height = 0; + pay->width = 0; + } else { + pay->height = GST_ROUND_UP_8 (height) / 8; + pay->width = GST_ROUND_UP_8 (width) / 8; + } /* we only support 3 components */ if (data[off++] != 3) @@ -502,37 +571,37 @@ gst_rtp_jpeg_pay_read_sof (GstRtpJPEGPay * pay, const guint8 * data, /* ERRORS */ wrong_size: { - GST_ELEMENT_ERROR (pay, STREAM, FORMAT, + GST_ELEMENT_WARNING (pay, STREAM, FORMAT, ("Wrong size %u (needed %u).", size, off + 17), (NULL)); return FALSE; } wrong_length: { - GST_ELEMENT_ERROR (pay, STREAM, FORMAT, + GST_ELEMENT_WARNING (pay, STREAM, FORMAT, ("Wrong SOF length %u.", sof_size), (NULL)); return FALSE; } bad_precision: { - GST_ELEMENT_ERROR (pay, STREAM, FORMAT, + GST_ELEMENT_WARNING (pay, STREAM, FORMAT, ("Wrong precision, expecting 8."), (NULL)); return FALSE; } invalid_dimension: { - GST_ELEMENT_ERROR (pay, STREAM, FORMAT, + GST_ELEMENT_WARNING (pay, STREAM, FORMAT, ("Wrong dimension, size %ux%u", width, height), (NULL)); return FALSE; } bad_components: { - GST_ELEMENT_ERROR (pay, STREAM, FORMAT, + GST_ELEMENT_WARNING (pay, STREAM, FORMAT, ("Wrong number of components"), (NULL)); return FALSE; } invalid_comp: { - GST_ELEMENT_ERROR (pay, STREAM, FORMAT, ("Invalid component"), (NULL)); + GST_ELEMENT_WARNING (pay, STREAM, FORMAT, ("Invalid component"), (NULL)); return FALSE; } } @@ -683,8 +752,9 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload, /* by now we should either have negotiated the width/height or the SOF header * should have filled us in */ - if (pay->width == 0 || pay->height == 0) + if (pay->width < 0 || pay->height < 0) { goto no_dimension; + } GST_LOG_OBJECT (pay, "header size %u", jpeg_header_size); @@ -836,31 +906,31 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload, /* ERRORS */ unsupported_jpeg: { - GST_ELEMENT_ERROR (pay, STREAM, FORMAT, ("Unsupported JPEG"), (NULL)); + GST_ELEMENT_WARNING (pay, STREAM, FORMAT, ("Unsupported JPEG"), (NULL)); gst_buffer_unmap (buffer, &map); gst_buffer_unref (buffer); - return GST_FLOW_NOT_SUPPORTED; + return GST_FLOW_OK; } no_dimension: { - GST_ELEMENT_ERROR (pay, STREAM, FORMAT, ("No size given"), (NULL)); + GST_ELEMENT_WARNING (pay, STREAM, FORMAT, ("No size given"), (NULL)); gst_buffer_unmap (buffer, &map); gst_buffer_unref (buffer); - return GST_FLOW_NOT_NEGOTIATED; + return GST_FLOW_OK; } invalid_format: { /* error was posted */ gst_buffer_unmap (buffer, &map); gst_buffer_unref (buffer); - return GST_FLOW_ERROR; + return GST_FLOW_OK; } invalid_quant: { - GST_ELEMENT_ERROR (pay, STREAM, FORMAT, ("Invalid quant tables"), (NULL)); + GST_ELEMENT_WARNING (pay, STREAM, FORMAT, ("Invalid quant tables"), (NULL)); gst_buffer_unmap (buffer, &map); gst_buffer_unref (buffer); - return GST_FLOW_ERROR; + return GST_FLOW_OK; } } diff --git a/gst/rtp/gstrtpjpegpay.h b/gst/rtp/gstrtpjpegpay.h index 2d3129974cd66a22a29f394d6f0b3328b3421ab0..4d65ea71efdf1258af3ed32249ec06b0d601d361 100644 --- a/gst/rtp/gstrtpjpegpay.h +++ b/gst/rtp/gstrtpjpegpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_JPEG_PAY_H__ diff --git a/gst/rtp/gstrtpmp1sdepay.c b/gst/rtp/gstrtpmp1sdepay.c index 411b7d43ba8050ceb7a4482f7db8a710cc1d7010..63545e78cdc31179300a2dda8288abd0934333b2 100644 --- a/gst/rtp/gstrtpmp1sdepay.c +++ b/gst/rtp/gstrtpmp1sdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpmp1sdepay.h b/gst/rtp/gstrtpmp1sdepay.h index 5eb413759769eaaf559ccdceff1a64c60910d8cd..582933bad691688c37f23cc762c303810b7abaa5 100644 --- a/gst/rtp/gstrtpmp1sdepay.h +++ b/gst/rtp/gstrtpmp1sdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MP1S_DEPAY_H__ diff --git a/gst/rtp/gstrtpmp2tdepay.c b/gst/rtp/gstrtpmp2tdepay.c index ea11e22d230f44cca03082004f9da240195bd8c7..345d90616eb09b93773eadb20095597450c261ba 100644 --- a/gst/rtp/gstrtpmp2tdepay.c +++ b/gst/rtp/gstrtpmp2tdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpmp2tdepay.h b/gst/rtp/gstrtpmp2tdepay.h index 87f2b338455d10d4d20a6fd0b3061321efe92ff8..aa936dca909ec39229cbfc59276d4dfec0f0f253 100644 --- a/gst/rtp/gstrtpmp2tdepay.h +++ b/gst/rtp/gstrtpmp2tdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MP2T_DEPAY_H__ diff --git a/gst/rtp/gstrtpmp2tpay.c b/gst/rtp/gstrtpmp2tpay.c index 79fff727c09a9367aec9509507b932aeb90efa04..b64aaa682241df3d353958ae9dba46fb21086764 100644 --- a/gst/rtp/gstrtpmp2tpay.c +++ b/gst/rtp/gstrtpmp2tpay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -127,10 +127,9 @@ gst_rtp_mp2t_pay_flush (GstRTPMP2TPay * rtpmp2tpay) while (avail > 0 && (ret == GST_FLOW_OK)) { guint towrite; - guint8 *payload; guint payload_len; guint packet_len; - GstRTPBuffer rtp = { NULL }; + GstBuffer *paybuf; /* this will be the total length of the packet */ packet_len = gst_rtp_buffer_calc_packet_len (avail, 0, 0); @@ -147,16 +146,11 @@ gst_rtp_mp2t_pay_flush (GstRTPMP2TPay * rtpmp2tpay) break; /* create buffer to hold the payload */ - outbuf = gst_rtp_buffer_new_allocate (payload_len, 0, 0); + outbuf = gst_rtp_buffer_new_allocate (0, 0, 0); /* get payload */ - gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); - payload = gst_rtp_buffer_get_payload (&rtp); - - /* copy stuff from adapter to payload */ - gst_adapter_copy (rtpmp2tpay->adapter, payload, 0, payload_len); - gst_rtp_buffer_unmap (&rtp); - gst_adapter_flush (rtpmp2tpay->adapter, payload_len); + paybuf = gst_adapter_take_buffer_fast (rtpmp2tpay->adapter, payload_len); + outbuf = gst_buffer_append (outbuf, paybuf); avail -= payload_len; GST_BUFFER_TIMESTAMP (outbuf) = rtpmp2tpay->first_ts; diff --git a/gst/rtp/gstrtpmp2tpay.h b/gst/rtp/gstrtpmp2tpay.h index bd14c1791f77cd04e105a0826ca743e94d734915..12f49599fe46720716021bc31faa116f42188260 100644 --- a/gst/rtp/gstrtpmp2tpay.h +++ b/gst/rtp/gstrtpmp2tpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/rtp/gstrtpmp4adepay.c b/gst/rtp/gstrtpmp4adepay.c index 322a2a611c6f4f8a4c888c4c4b00c9b1facd0169..e70d5b3358771a364bd10709ce06d75ed45e838d 100644 --- a/gst/rtp/gstrtpmp4adepay.c +++ b/gst/rtp/gstrtpmp4adepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -324,7 +324,7 @@ gst_rtp_mp4a_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) GstClockTime timestamp; avail = gst_adapter_available (rtpmp4adepay->adapter); - timestamp = gst_adapter_prev_timestamp (rtpmp4adepay->adapter, NULL); + timestamp = gst_adapter_prev_pts (rtpmp4adepay->adapter, NULL); GST_LOG_OBJECT (rtpmp4adepay, "have marker and %u available", avail); diff --git a/gst/rtp/gstrtpmp4adepay.h b/gst/rtp/gstrtpmp4adepay.h index 82b5b264083b8f27ffe3f6e38bfcc42c7fbfc682..b44349f8d0715667340fea32a984b7244a419b41 100644 --- a/gst/rtp/gstrtpmp4adepay.h +++ b/gst/rtp/gstrtpmp4adepay.h @@ -12,8 +12,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MP4A_DEPAY_H__ diff --git a/gst/rtp/gstrtpmp4apay.c b/gst/rtp/gstrtpmp4apay.c index 6f860ba54864a453005e55dffd2b90b9dc7e5d4d..17a80a81abf47b807c1fcc8bd526e92449acd41e 100644 --- a/gst/rtp/gstrtpmp4apay.c +++ b/gst/rtp/gstrtpmp4apay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpmp4apay.h b/gst/rtp/gstrtpmp4apay.h index 86716712902c982a522ddcd6b774d3179712b422..49d9b650d8f0ebba026d308dee2fa9bb4d4b0197 100644 --- a/gst/rtp/gstrtpmp4apay.h +++ b/gst/rtp/gstrtpmp4apay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MP4A_PAY_H__ diff --git a/gst/rtp/gstrtpmp4gdepay.c b/gst/rtp/gstrtpmp4gdepay.c index 1564452808ad444fd4554faaab4158c94db52c53..db472daa580330d8b9036c1e58a64cbb58866d76 100644 --- a/gst/rtp/gstrtpmp4gdepay.c +++ b/gst/rtp/gstrtpmp4gdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpmp4gdepay.h b/gst/rtp/gstrtpmp4gdepay.h index 88df29c5b4151aae6b334516a7b5929622cecff6..5d5997af31155af5afe6e6c36290a8f858086b8c 100644 --- a/gst/rtp/gstrtpmp4gdepay.h +++ b/gst/rtp/gstrtpmp4gdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MP4G_DEPAY_H__ diff --git a/gst/rtp/gstrtpmp4gpay.c b/gst/rtp/gstrtpmp4gpay.c index c1f22ad93f68351f44ffbf2b704a267802cb06ba..7913d9aba32fcfbefbb196686d4014e0479b9243 100644 --- a/gst/rtp/gstrtpmp4gpay.c +++ b/gst/rtp/gstrtpmp4gpay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -469,6 +469,7 @@ gst_rtp_mp4g_pay_flush (GstRtpMP4GPay * rtpmp4gpay) guint payload_len; guint packet_len; GstRTPBuffer rtp = { NULL }; + GstBuffer *paybuf; /* this will be the total lenght of the packet */ packet_len = gst_rtp_buffer_calc_packet_len (avail, 0, 0); @@ -485,7 +486,7 @@ gst_rtp_mp4g_pay_flush (GstRtpMP4GPay * rtpmp4gpay) packet_len, payload_len); /* create buffer to hold the payload, also make room for the 4 header bytes. */ - outbuf = gst_rtp_buffer_new_allocate (payload_len + 4, 0, 0); + outbuf = gst_rtp_buffer_new_allocate (4, 0, 0); gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); @@ -526,15 +527,14 @@ gst_rtp_mp4g_pay_flush (GstRtpMP4GPay * rtpmp4gpay) payload[2] = (total & 0x1fe0) >> 5; payload[3] = (total & 0x1f) << 3; /* we use 13 bits for the size, 3 bits index */ - /* copy stuff from adapter to payload */ - gst_adapter_copy (rtpmp4gpay->adapter, &payload[4], 0, payload_len); - gst_adapter_flush (rtpmp4gpay->adapter, payload_len); - /* marker only if the packet is complete */ gst_rtp_buffer_set_marker (&rtp, avail <= payload_len); gst_rtp_buffer_unmap (&rtp); + paybuf = gst_adapter_take_buffer_fast (rtpmp4gpay->adapter, payload_len); + outbuf = gst_buffer_append (outbuf, paybuf); + GST_BUFFER_TIMESTAMP (outbuf) = rtpmp4gpay->first_timestamp; GST_BUFFER_DURATION (outbuf) = rtpmp4gpay->first_duration; diff --git a/gst/rtp/gstrtpmp4gpay.h b/gst/rtp/gstrtpmp4gpay.h index 65efb9e65f214c87acc55f6872239aec3be656dc..fed9c930b5bcdb0ca37cdbd83275dd4d7e6815f3 100644 --- a/gst/rtp/gstrtpmp4gpay.h +++ b/gst/rtp/gstrtpmp4gpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MP4G_PAY_H__ diff --git a/gst/rtp/gstrtpmp4vdepay.c b/gst/rtp/gstrtpmp4vdepay.c index 1b668e9590f0cabb5460e89d7ef6befda9269c08..3ff58d5149d5984e21b1bc9a8cbed6bf4c5c23ff 100644 --- a/gst/rtp/gstrtpmp4vdepay.c +++ b/gst/rtp/gstrtpmp4vdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpmp4vdepay.h b/gst/rtp/gstrtpmp4vdepay.h index 75013e0bfc1bb2cda12e8f8195b30abee59f27f2..436e0db317bc84f42e412779fdb52076241551cb 100644 --- a/gst/rtp/gstrtpmp4vdepay.h +++ b/gst/rtp/gstrtpmp4vdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MP4V_DEPAY_H__ diff --git a/gst/rtp/gstrtpmp4vpay.c b/gst/rtp/gstrtpmp4vpay.c index 6b91a434df60d8311260406ed5324b596f56616e..8ac6d061bddb3111550cc343a7f9459ca40eb3eb 100644 --- a/gst/rtp/gstrtpmp4vpay.c +++ b/gst/rtp/gstrtpmp4vpay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -275,7 +275,8 @@ gst_rtp_mp4v_pay_flush (GstRtpMP4VPay * rtpmp4vpay) outbuf = gst_rtp_buffer_new_allocate (0, 0, 0); /* Take buffer with the payload from the adapter */ - outbuf_data = gst_adapter_take_buffer (rtpmp4vpay->adapter, payload_len); + outbuf_data = gst_adapter_take_buffer_fast (rtpmp4vpay->adapter, + payload_len); avail -= payload_len; diff --git a/gst/rtp/gstrtpmp4vpay.h b/gst/rtp/gstrtpmp4vpay.h index 6cb552a875f6c95555d37563f7b888965aa6e037..a974a91dd440f40cab5d0dc4a8f5e55d51be9c5b 100644 --- a/gst/rtp/gstrtpmp4vpay.h +++ b/gst/rtp/gstrtpmp4vpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MP4V_PAY_H__ diff --git a/gst/rtp/gstrtpmpadepay.c b/gst/rtp/gstrtpmpadepay.c index 940ad03756ce7b3a4e6fda58228b37e6854c888e..bc9ff06e036162952734a4523c82db43f3bc76ca 100644 --- a/gst/rtp/gstrtpmpadepay.c +++ b/gst/rtp/gstrtpmpadepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -150,8 +150,8 @@ gst_rtp_mpa_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) marker = gst_rtp_buffer_get_marker (&rtp); if (marker) { - /* mark start of talkspurt with discont */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + /* mark start of talkspurt with RESYNC */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } GST_DEBUG_OBJECT (rtpmpadepay, "gst_rtp_mpa_depay_chain: pushing buffer of size %" G_GSIZE_FORMAT "", diff --git a/gst/rtp/gstrtpmpadepay.h b/gst/rtp/gstrtpmpadepay.h index 36196f5deb69333ad59d25e2bce7eb17318c59ef..1070d779b4c7d568f555421e768c4b12638511cd 100644 --- a/gst/rtp/gstrtpmpadepay.h +++ b/gst/rtp/gstrtpmpadepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MPA_DEPAY_H__ diff --git a/gst/rtp/gstrtpmpapay.c b/gst/rtp/gstrtpmpapay.c index 075a9775e903d14ba11ccf410e939483571ab692..2a7061c2f2903c75b9dc36c64ea78bbe658825f2 100644 --- a/gst/rtp/gstrtpmpapay.c +++ b/gst/rtp/gstrtpmpapay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -189,6 +189,7 @@ gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay) guint payload_len; guint packet_len; GstRTPBuffer rtp = { NULL }; + GstBuffer *paybuf; /* this will be the total length of the packet */ packet_len = gst_rtp_buffer_calc_packet_len (4 + avail, 0, 0); @@ -200,7 +201,7 @@ gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay) payload_len = gst_rtp_buffer_calc_payload_len (towrite, 0, 0); /* create buffer to hold the payload */ - outbuf = gst_rtp_buffer_new_allocate (payload_len, 0, 0); + outbuf = gst_rtp_buffer_new_allocate (4, 0, 0); gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); @@ -221,9 +222,6 @@ gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay) payload[2] = frag_offset >> 8; payload[3] = frag_offset & 0xff; - gst_adapter_copy (rtpmpapay->adapter, &payload[4], 0, payload_len); - gst_adapter_flush (rtpmpapay->adapter, payload_len); - avail -= payload_len; frag_offset += payload_len; @@ -232,6 +230,9 @@ gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay) gst_rtp_buffer_unmap (&rtp); + paybuf = gst_adapter_take_buffer_fast (rtpmpapay->adapter, payload_len); + outbuf = gst_buffer_append (outbuf, paybuf); + GST_BUFFER_TIMESTAMP (outbuf) = rtpmpapay->first_ts; GST_BUFFER_DURATION (outbuf) = rtpmpapay->duration; diff --git a/gst/rtp/gstrtpmpapay.h b/gst/rtp/gstrtpmpapay.h index 3a5c854e2dd31930af275199a3dd61ec765c0138..db298528ec19d6830476356498012bee01155507 100644 --- a/gst/rtp/gstrtpmpapay.h +++ b/gst/rtp/gstrtpmpapay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MPA_PAY_H__ diff --git a/gst/rtp/gstrtpmparobustdepay.c b/gst/rtp/gstrtpmparobustdepay.c index 25b701932bea77a85b0bdd91490c99f2d1ceffd0..afdd2ba30079d1711e68dea5b32d4cd579932673 100644 --- a/gst/rtp/gstrtpmparobustdepay.c +++ b/gst/rtp/gstrtpmparobustdepay.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -714,7 +714,7 @@ gst_rtp_mpa_robust_depay_process (GstRTPBaseDepayload * depayload, av += gst_buffer_get_size (buf); gst_adapter_push (rtpmpadepay->adapter, buf); if (av == size) { - timestamp = gst_adapter_prev_timestamp (rtpmpadepay->adapter, NULL); + timestamp = gst_adapter_prev_pts (rtpmpadepay->adapter, NULL); buf = gst_adapter_take_buffer (rtpmpadepay->adapter, size); GST_BUFFER_TIMESTAMP (buf) = timestamp; gst_rtp_mpa_robust_depay_submit_adu (rtpmpadepay, buf); diff --git a/gst/rtp/gstrtpmparobustdepay.h b/gst/rtp/gstrtpmparobustdepay.h index d8fa84e8bc29c7c84c707777b496c227e7f08496..fc9ec0b694e7076e06943de6c4e09feaccdabb86 100644 --- a/gst/rtp/gstrtpmparobustdepay.h +++ b/gst/rtp/gstrtpmparobustdepay.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MPA_ROBUST_DEPAY_H__ diff --git a/gst/rtp/gstrtpmpvdepay.c b/gst/rtp/gstrtpmpvdepay.c index 5908d6a4436c291345b3d98fababe6812d40532a..7d8646cd2cde2349d6d57ee291e59420ac87b7d2 100644 --- a/gst/rtp/gstrtpmpvdepay.c +++ b/gst/rtp/gstrtpmpvdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpmpvdepay.h b/gst/rtp/gstrtpmpvdepay.h index 49e3e2d87f5fb0a13f787647c1410067c155f0a6..80f6c4332cd142207ddcae481d7561c1e731650e 100644 --- a/gst/rtp/gstrtpmpvdepay.h +++ b/gst/rtp/gstrtpmpvdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_MPV_DEPAY_H__ diff --git a/gst/rtp/gstrtpmpvpay.c b/gst/rtp/gstrtpmpvpay.c index bd11369456f06438349b33600f861a3d5fcabb30..0751bcd805401c28ed3ebd7161269ff1b2d4d2c0 100644 --- a/gst/rtp/gstrtpmpvpay.c +++ b/gst/rtp/gstrtpmpvpay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -178,14 +178,17 @@ gst_rtp_mpv_pay_flush (GstRTPMPVPay * rtpmpvpay) guint packet_len; guint payload_len; GstRTPBuffer rtp = { NULL }; + GstBuffer *paybuf; - packet_len = gst_rtp_buffer_calc_packet_len (avail, 4, 0); + packet_len = gst_rtp_buffer_calc_packet_len (avail + 4, 0, 0); towrite = MIN (packet_len, GST_RTP_BASE_PAYLOAD_MTU (rtpmpvpay)); - payload_len = gst_rtp_buffer_calc_payload_len (towrite, 4, 0); + payload_len = gst_rtp_buffer_calc_payload_len (towrite, 0, 0); - outbuf = gst_rtp_buffer_new_allocate (payload_len, 4, 0); + outbuf = gst_rtp_buffer_new_allocate (4, 0, 0); + + payload_len -= 4; gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); @@ -205,14 +208,14 @@ gst_rtp_mpv_pay_flush (GstRTPMPVPay * rtpmpvpay) */ memset (payload, 0x0, 4); - gst_adapter_copy (rtpmpvpay->adapter, payload + 4, 0, payload_len); - gst_adapter_flush (rtpmpvpay->adapter, payload_len); - avail -= payload_len; gst_rtp_buffer_set_marker (&rtp, avail == 0); gst_rtp_buffer_unmap (&rtp); + paybuf = gst_adapter_take_buffer_fast (rtpmpvpay->adapter, payload_len); + outbuf = gst_buffer_append (outbuf, paybuf); + GST_BUFFER_TIMESTAMP (outbuf) = rtpmpvpay->first_ts; ret = gst_rtp_base_payload_push (GST_RTP_BASE_PAYLOAD (rtpmpvpay), outbuf); diff --git a/gst/rtp/gstrtpmpvpay.h b/gst/rtp/gstrtpmpvpay.h index 94d0b5c4e3ea1eaf07a0f079ed5f6d2cf6d846eb..bcebad932229180fa45d96738197013f99a1c862 100644 --- a/gst/rtp/gstrtpmpvpay.h +++ b/gst/rtp/gstrtpmpvpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/rtp/gstrtppcmadepay.c b/gst/rtp/gstrtppcmadepay.c index 69cbfbc5e9ea0081b94c515809de0729ebc49213..d4fb2afb7e14e6aee2b8dacdeec5288f1736c3e2 100644 --- a/gst/rtp/gstrtppcmadepay.c +++ b/gst/rtp/gstrtppcmadepay.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -148,8 +148,8 @@ gst_rtp_pcma_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) gst_util_uint64_scale_int (len, GST_SECOND, depayload->clock_rate); if (marker) { - /* mark start of talkspurt with DISCONT */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + /* mark start of talkspurt with RESYNC */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } } diff --git a/gst/rtp/gstrtppcmapay.c b/gst/rtp/gstrtppcmapay.c index 5401de0a935144aba11f5935a33d4c46292838a8..7ec7e592b4705a1c27d162dc06868ca8d327dd23 100644 --- a/gst/rtp/gstrtppcmapay.c +++ b/gst/rtp/gstrtppcmapay.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtppcmudepay.c b/gst/rtp/gstrtppcmudepay.c index eac503f3027afbf3c8e208db21cd6011492f8b88..14367a10b0d8eb161625bab9e3135c943fee006b 100644 --- a/gst/rtp/gstrtppcmudepay.c +++ b/gst/rtp/gstrtppcmudepay.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -149,8 +149,8 @@ gst_rtp_pcmu_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) gst_util_uint64_scale_int (len, GST_SECOND, depayload->clock_rate); if (marker) { - /* mark start of talkspurt with DISCONT */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + /* mark start of talkspurt with RESYNC */ + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); } } diff --git a/gst/rtp/gstrtppcmupay.c b/gst/rtp/gstrtppcmupay.c index c15b4b88a4495714dbe65075745931847725f283..3d69cb30283e2c0a5f0e1e344919b348f0ecdc13 100644 --- a/gst/rtp/gstrtppcmupay.c +++ b/gst/rtp/gstrtppcmupay.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpqcelpdepay.c b/gst/rtp/gstrtpqcelpdepay.c index aea42db8bf2869e2f161c6fda33fe95856f3e5e6..acb65e4ca00b627cc8ed50cdf893989e080d6bc7 100644 --- a/gst/rtp/gstrtpqcelpdepay.c +++ b/gst/rtp/gstrtpqcelpdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpqcelpdepay.h b/gst/rtp/gstrtpqcelpdepay.h index bd01d33c7b829c2b9e9fa5b2b33562f9ccaca896..ade274de0158b394b6ddedc7cada8d609451b81f 100644 --- a/gst/rtp/gstrtpqcelpdepay.h +++ b/gst/rtp/gstrtpqcelpdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_QCELP_DEPAY_H__ diff --git a/gst/rtp/gstrtpqdmdepay.c b/gst/rtp/gstrtpqdmdepay.c index 254bb6c09c013fba8be85d1e8b9ccb3e546ea96c..f854ab14b2449428b1756b7471fd7b24dadb0d9d 100644 --- a/gst/rtp/gstrtpqdmdepay.c +++ b/gst/rtp/gstrtpqdmdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpqdmdepay.h b/gst/rtp/gstrtpqdmdepay.h index 38f8681c0561df47e4a6a847f220fd17fd9dac7f..8a6b2b20a3d402875da97b9f9576130485777999 100644 --- a/gst/rtp/gstrtpqdmdepay.h +++ b/gst/rtp/gstrtpqdmdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_QDM2_DEPAY_H__ diff --git a/gst/rtp/gstrtpsbcdepay.c b/gst/rtp/gstrtpsbcdepay.c new file mode 100644 index 0000000000000000000000000000000000000000..28c00fcfd75f94d24c3acab29de0f098b8cf3444 --- /dev/null +++ b/gst/rtp/gstrtpsbcdepay.c @@ -0,0 +1,287 @@ +/* + * GStreamer RTP SBC depayloader + * + * Copyright (C) 2012 Collabora Ltd. + * @author: Arun Raghavan <arun.raghavan@collabora.co.uk> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <gst/rtp/gstrtpbuffer.h> +#include "gstrtpsbcdepay.h" + +GST_DEBUG_CATEGORY_STATIC (rtpsbcdepay_debug); +#define GST_CAT_DEFAULT (rtpsbcdepay_debug) + +static GstStaticPadTemplate gst_rtp_sbc_depay_src_template = +GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-sbc, " + "rate = (int) { 16000, 32000, 44100, 48000 }, " + "channels = (int) [ 1, 2 ], " + "mode = (string) { mono, dual, stereo, joint }, " + "blocks = (int) { 4, 8, 12, 16 }, " + "subbands = (int) { 4, 8 }, " + "allocation-method = (string) { snr, loudness }, " + "bitpool = (int) [ 2, 64 ]") + ); + +static GstStaticPadTemplate gst_rtp_sbc_depay_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp, " + "media = (string) audio," + "payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING ", " + "clock-rate = (int) { 16000, 32000, 44100, 48000 }," + "encoding-name = (string) SBC") + ); + +#define gst_rtp_sbc_depay_parent_class parent_class +G_DEFINE_TYPE (GstRtpSbcDepay, gst_rtp_sbc_depay, GST_TYPE_RTP_BASE_DEPAYLOAD); + +static void gst_rtp_sbc_depay_finalize (GObject * object); + +static gboolean gst_rtp_sbc_depay_setcaps (GstRTPBaseDepayload * base, + GstCaps * caps); +static GstBuffer *gst_rtp_sbc_depay_process (GstRTPBaseDepayload * base, + GstBuffer * in); + +static void +gst_rtp_sbc_depay_class_init (GstRtpSbcDepayClass * klass) +{ + GstRTPBaseDepayloadClass *gstbasertpdepayload_class = + GST_RTP_BASE_DEPAYLOAD_CLASS (klass); + GstElementClass *element_class = GST_ELEMENT_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = gst_rtp_sbc_depay_finalize; + + gstbasertpdepayload_class->set_caps = gst_rtp_sbc_depay_setcaps; + gstbasertpdepayload_class->process = gst_rtp_sbc_depay_process; + + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_rtp_sbc_depay_src_template)); + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_rtp_sbc_depay_sink_template)); + + GST_DEBUG_CATEGORY_INIT (rtpsbcdepay_debug, "rtpsbcdepay", 0, + "SBC Audio RTP Depayloader"); + + gst_element_class_set_static_metadata (element_class, + "RTP SBC audio depayloader", + "Codec/Depayloader/Network/RTP", + "Extracts SBC audio from RTP packets", + "Arun Raghavan <arun.raghavan@collabora.co.uk>"); +} + +static void +gst_rtp_sbc_depay_init (GstRtpSbcDepay * rtpsbcdepay) +{ + rtpsbcdepay->adapter = gst_adapter_new (); +} + +static void +gst_rtp_sbc_depay_finalize (GObject * object) +{ + GstRtpSbcDepay *depay = GST_RTP_SBC_DEPAY (object); + + gst_object_unref (depay->adapter); + + G_OBJECT_CLASS (parent_class)->finalize (object); +} + +/* FIXME: This duplicates similar functionality rtpsbcpay, but there isn't a + * simple way to consolidate the two. This is best done by moving the function + * to the codec-utils library in gst-plugins-base when these elements move to + * GStreamer. */ +static int +gst_rtp_sbc_depay_get_params (GstRtpSbcDepay * depay, const guint8 * data, + gint size, int *framelen, int *samples) +{ + int blocks, channel_mode, channels, subbands, bitpool; + int length; + + if (size < 3) { + /* Not enough data for the header */ + return -1; + } + + /* Sanity check */ + if (data[0] != 0x9c) { + GST_WARNING_OBJECT (depay, "Bad packet: couldn't find syncword"); + return -2; + } + + blocks = (data[1] >> 4) & 0x3; + blocks = (blocks + 1) * 4; + channel_mode = (data[1] >> 2) & 0x3; + channels = channel_mode ? 2 : 1; + subbands = (data[1] & 0x1); + subbands = (subbands + 1) * 4; + bitpool = data[2]; + + length = 4 + ((4 * subbands * channels) / 8); + + if (channel_mode == 0 || channel_mode == 1) { + /* Mono || Dual channel */ + length += ((blocks * channels * bitpool) + + 4 /* round up */ ) / 8; + } else { + /* Stereo || Joint stereo */ + gboolean joint = (channel_mode == 3); + + length += ((joint * subbands) + (blocks * bitpool) + + 4 /* round up */ ) / 8; + } + + *framelen = length; + *samples = blocks * subbands; + + return 0; +} + +static gboolean +gst_rtp_sbc_depay_setcaps (GstRTPBaseDepayload * base, GstCaps * caps) +{ + GstRtpSbcDepay *depay = GST_RTP_SBC_DEPAY (base); + GstStructure *structure; + GstCaps *outcaps, *oldcaps; + + structure = gst_caps_get_structure (caps, 0); + + if (!gst_structure_get_int (structure, "clock-rate", &depay->rate)) + goto bad_caps; + + outcaps = gst_caps_new_simple ("audio/x-sbc", "rate", G_TYPE_INT, + depay->rate, NULL); + + gst_pad_set_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (base), outcaps); + + oldcaps = gst_pad_get_current_caps (GST_RTP_BASE_DEPAYLOAD_SINKPAD (base)); + if (oldcaps && !gst_caps_can_intersect (oldcaps, caps)) { + /* Caps have changed, flush old data */ + gst_adapter_clear (depay->adapter); + } + + gst_caps_unref (outcaps); + + return TRUE; + +bad_caps: + GST_WARNING_OBJECT (depay, "Can't support the caps we got: %" + GST_PTR_FORMAT, caps); + return FALSE; +} + +static GstBuffer * +gst_rtp_sbc_depay_process (GstRTPBaseDepayload * base, GstBuffer * in) +{ + GstRtpSbcDepay *depay = GST_RTP_SBC_DEPAY (base); + GstBuffer *data = NULL; + GstRTPBuffer rtp = { NULL }; + + gboolean fragment, start, last; + guint8 nframes; + guint8 *payload; + guint payload_len; + + gst_rtp_buffer_map (in, GST_MAP_READ, &rtp); + + GST_LOG_OBJECT (depay, "Got %" G_GSIZE_FORMAT " bytes", + gst_buffer_get_size (in)); + + if (gst_rtp_buffer_get_marker (&rtp)) { + /* Marker isn't supposed to be set */ + GST_WARNING_OBJECT (depay, "Marker bit was set"); + goto bad_packet; + } + + payload = gst_rtp_buffer_get_payload (&rtp); + payload_len = gst_rtp_buffer_get_payload_len (&rtp); + + fragment = payload[0] & 0x80; + start = payload[0] & 0x40; + last = payload[0] & 0x20; + nframes = payload[0] & 0x0f; + + payload += 1; + payload_len -= 1; + + data = gst_rtp_buffer_get_payload_subbuffer (&rtp, 1, -1); + + if (fragment) { + /* Got a packet with a fragment */ + GST_LOG_OBJECT (depay, "Got fragment"); + + if (start && gst_adapter_available (depay->adapter)) { + GST_WARNING_OBJECT (depay, "Missing last fragment"); + gst_adapter_clear (depay->adapter); + + } else if (!start && !gst_adapter_available (depay->adapter)) { + GST_WARNING_OBJECT (depay, "Missing start fragment"); + gst_buffer_unref (data); + data = NULL; + goto out; + } + + gst_adapter_push (depay->adapter, data); + + if (last) { + data = gst_adapter_take_buffer (depay->adapter, + gst_adapter_available (depay->adapter)); + } else + data = NULL; + + } else { + /* !fragment */ + gint framelen, samples; + + GST_LOG_OBJECT (depay, "Got %d frames", nframes); + + if (gst_rtp_sbc_depay_get_params (depay, payload, + payload_len, &framelen, &samples) < 0) { + gst_adapter_clear (depay->adapter); + goto bad_packet; + } + + GST_LOG_OBJECT (depay, "Got payload of %d", payload_len); + + if (nframes * framelen > (gint) payload_len) { + GST_WARNING_OBJECT (depay, "Short packet"); + goto bad_packet; + } else if (nframes * framelen < (gint) payload_len) { + GST_WARNING_OBJECT (depay, "Junk at end of packet"); + } + } + +out: + gst_rtp_buffer_unmap (&rtp); + return data; + +bad_packet: + GST_ELEMENT_WARNING (depay, STREAM, DECODE, + ("Received invalid RTP payload, dropping"), (NULL)); + goto out; +} + +gboolean +gst_rtp_sbc_depay_plugin_init (GstPlugin * plugin) +{ + return gst_element_register (plugin, "rtpsbcdepay", GST_RANK_SECONDARY, + GST_TYPE_RTP_SBC_DEPAY); +} diff --git a/gst/rtp/gstrtpsbcdepay.h b/gst/rtp/gstrtpsbcdepay.h new file mode 100644 index 0000000000000000000000000000000000000000..4147a31fdeb7a56671f2da7e926859b31b79a5e2 --- /dev/null +++ b/gst/rtp/gstrtpsbcdepay.h @@ -0,0 +1,65 @@ +/* + * + * BlueZ - Bluetooth protocol stack for Linux + * + * Copyright (C) 2012 Collabora Ltd. + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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 + * + */ + +#ifndef __GST_RTP_SBC_DEPAY_H +#define __GST_RTP_SBC_DEPAY_H + +#include <gst/gst.h> +#include <gst/base/gstadapter.h> +#include <gst/rtp/gstrtpbasedepayload.h> + +G_BEGIN_DECLS +#define GST_TYPE_RTP_SBC_DEPAY \ + (gst_rtp_sbc_depay_get_type()) +#define GST_RTP_SBC_DEPAY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_SBC_DEPAY,\ + GstRtpSbcDepay)) +#define GST_RTP_SBC_DEPAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_SBC_DEPAY,\ + GstRtpSbcDepayClass)) +#define GST_IS_RTP_SBC_DEPAY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_SBC_DEPAY)) +#define GST_IS_RTP_SBC_DEPAY_CLASS(obj) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_SBC_DEPAY)) +typedef struct _GstRtpSbcDepay GstRtpSbcDepay; +typedef struct _GstRtpSbcDepayClass GstRtpSbcDepayClass; + +struct _GstRtpSbcDepay +{ + GstRTPBaseDepayload base; + + int rate; + GstAdapter *adapter; +}; + +struct _GstRtpSbcDepayClass +{ + GstRTPBaseDepayloadClass parent_class; +}; + +GType gst_rtp_sbc_depay_get_type (void); + +gboolean gst_rtp_sbc_depay_plugin_init (GstPlugin * plugin); + +G_END_DECLS +#endif diff --git a/gst/rtp/gstrtpsbcpay.c b/gst/rtp/gstrtpsbcpay.c new file mode 100644 index 0000000000000000000000000000000000000000..8a8f5cdaf774e6b6f11cd556c5ded19407e41994 --- /dev/null +++ b/gst/rtp/gstrtpsbcpay.c @@ -0,0 +1,350 @@ +/* GStreamer RTP SBC payloader + * BlueZ - Bluetooth protocol stack for Linux + * + * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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 "gstrtpsbcpay.h" +#include <math.h> +#include <string.h> + +#define RTP_SBC_PAYLOAD_HEADER_SIZE 1 +#define DEFAULT_MIN_FRAMES 0 +#define RTP_SBC_HEADER_TOTAL (12 + RTP_SBC_PAYLOAD_HEADER_SIZE) + +#if G_BYTE_ORDER == G_LITTLE_ENDIAN + +/* FIXME: this seems all a bit over the top for a single byte.. */ +struct rtp_payload +{ + guint8 frame_count:4; + guint8 rfa0:1; + guint8 is_last_fragment:1; + guint8 is_first_fragment:1; + guint8 is_fragmented:1; +} __attribute__ ((packed)); + +#elif G_BYTE_ORDER == G_BIG_ENDIAN + +struct rtp_payload +{ + guint8 is_fragmented:1; + guint8 is_first_fragment:1; + guint8 is_last_fragment:1; + guint8 rfa0:1; + guint8 frame_count:4; +} __attribute__ ((packed)); + +#else +#error "Unknown byte order" +#endif + +enum +{ + PROP_0, + PROP_MIN_FRAMES +}; + +GST_DEBUG_CATEGORY_STATIC (gst_rtp_sbc_pay_debug); +#define GST_CAT_DEFAULT gst_rtp_sbc_pay_debug + +#define parent_class gst_rtp_sbc_pay_parent_class +G_DEFINE_TYPE (GstRtpSBCPay, gst_rtp_sbc_pay, GST_TYPE_RTP_BASE_PAYLOAD); + +static GstStaticPadTemplate gst_rtp_sbc_pay_sink_factory = +GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-sbc, " + "rate = (int) { 16000, 32000, 44100, 48000 }, " + "channels = (int) [ 1, 2 ], " + "channel-mode = (string) { mono, dual, stereo, joint }, " + "blocks = (int) { 4, 8, 12, 16 }, " + "subbands = (int) { 4, 8 }, " + "allocation-method = (string) { snr, loudness }, " + "bitpool = (int) [ 2, 64 ]") + ); + +static GstStaticPadTemplate gst_rtp_sbc_pay_src_factory = +GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp, " + "media = (string) audio," + "payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING ", " + "clock-rate = (int) { 16000, 32000, 44100, 48000 }," + "encoding-name = (string) SBC") + ); + +static void gst_rtp_sbc_pay_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_rtp_sbc_pay_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); + +static gint +gst_rtp_sbc_pay_get_frame_len (gint subbands, gint channels, + gint blocks, gint bitpool, const gchar * channel_mode) +{ + gint len; + gint join; + + len = 4 + (4 * subbands * channels) / 8; + + if (strcmp (channel_mode, "mono") == 0 || strcmp (channel_mode, "dual") == 0) + len += ((blocks * channels * bitpool) + 7) / 8; + else { + join = strcmp (channel_mode, "joint") == 0 ? 1 : 0; + len += ((join * subbands + blocks * bitpool) + 7) / 8; + } + + return len; +} + +static gboolean +gst_rtp_sbc_pay_set_caps (GstRTPBasePayload * payload, GstCaps * caps) +{ + GstRtpSBCPay *sbcpay; + gint rate, subbands, channels, blocks, bitpool; + gint frame_len; + const gchar *channel_mode; + GstStructure *structure; + + sbcpay = GST_RTP_SBC_PAY (payload); + + structure = gst_caps_get_structure (caps, 0); + if (!gst_structure_get_int (structure, "rate", &rate)) + return FALSE; + if (!gst_structure_get_int (structure, "channels", &channels)) + return FALSE; + if (!gst_structure_get_int (structure, "blocks", &blocks)) + return FALSE; + if (!gst_structure_get_int (structure, "bitpool", &bitpool)) + return FALSE; + if (!gst_structure_get_int (structure, "subbands", &subbands)) + return FALSE; + + channel_mode = gst_structure_get_string (structure, "channel-mode"); + if (!channel_mode) + return FALSE; + + frame_len = gst_rtp_sbc_pay_get_frame_len (subbands, channels, blocks, + bitpool, channel_mode); + + sbcpay->frame_length = frame_len; + + gst_rtp_base_payload_set_options (payload, "audio", TRUE, "SBC", rate); + + GST_DEBUG_OBJECT (payload, "calculated frame length: %d ", frame_len); + + return gst_rtp_base_payload_set_outcaps (payload, NULL); +} + +static GstFlowReturn +gst_rtp_sbc_pay_flush_buffers (GstRtpSBCPay * sbcpay) +{ + GstRTPBuffer rtp = GST_RTP_BUFFER_INIT; + guint available; + guint max_payload; + GstBuffer *outbuf; + guint8 *payload_data; + guint frame_count; + guint payload_length; + struct rtp_payload *payload; + + if (sbcpay->frame_length == 0) { + GST_ERROR_OBJECT (sbcpay, "Frame length is 0"); + return GST_FLOW_ERROR; + } + + available = gst_adapter_available (sbcpay->adapter); + + max_payload = + gst_rtp_buffer_calc_payload_len (GST_RTP_BASE_PAYLOAD_MTU (sbcpay) - + RTP_SBC_PAYLOAD_HEADER_SIZE, 0, 0); + + max_payload = MIN (max_payload, available); + frame_count = max_payload / sbcpay->frame_length; + payload_length = frame_count * sbcpay->frame_length; + if (payload_length == 0) /* Nothing to send */ + return GST_FLOW_OK; + + outbuf = gst_rtp_buffer_new_allocate (payload_length + + RTP_SBC_PAYLOAD_HEADER_SIZE, 0, 0); + + /* get payload */ + gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); + + gst_rtp_buffer_set_payload_type (&rtp, GST_RTP_BASE_PAYLOAD_PT (sbcpay)); + + /* write header and copy data into payload */ + payload_data = gst_rtp_buffer_get_payload (&rtp); + payload = (struct rtp_payload *) payload_data; + memset (payload, 0, sizeof (struct rtp_payload)); + payload->frame_count = frame_count; + + gst_adapter_copy (sbcpay->adapter, payload_data + + RTP_SBC_PAYLOAD_HEADER_SIZE, 0, payload_length); + + gst_rtp_buffer_unmap (&rtp); + + gst_adapter_flush (sbcpay->adapter, payload_length); + + /* FIXME: what about duration? */ + GST_BUFFER_TIMESTAMP (outbuf) = sbcpay->timestamp; + GST_DEBUG_OBJECT (sbcpay, "Pushing %d bytes", payload_length); + + return gst_rtp_base_payload_push (GST_RTP_BASE_PAYLOAD (sbcpay), outbuf); +} + +static GstFlowReturn +gst_rtp_sbc_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer) +{ + GstRtpSBCPay *sbcpay; + guint available; + + /* FIXME check for negotiation */ + + sbcpay = GST_RTP_SBC_PAY (payload); + sbcpay->timestamp = GST_BUFFER_TIMESTAMP (buffer); + + gst_adapter_push (sbcpay->adapter, buffer); + + available = gst_adapter_available (sbcpay->adapter); + if (available + RTP_SBC_HEADER_TOTAL >= + GST_RTP_BASE_PAYLOAD_MTU (sbcpay) || + (available > (sbcpay->min_frames * sbcpay->frame_length))) + return gst_rtp_sbc_pay_flush_buffers (sbcpay); + + return GST_FLOW_OK; +} + +static gboolean +gst_rtp_sbc_pay_sink_event (GstRTPBasePayload * payload, GstEvent * event) +{ + GstRtpSBCPay *sbcpay = GST_RTP_SBC_PAY (payload); + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_EOS: + gst_rtp_sbc_pay_flush_buffers (sbcpay); + break; + default: + break; + } + + return GST_RTP_BASE_PAYLOAD_CLASS (parent_class)->sink_event (payload, event); +} + +static void +gst_rtp_sbc_pay_finalize (GObject * object) +{ + GstRtpSBCPay *sbcpay = GST_RTP_SBC_PAY (object); + + g_object_unref (sbcpay->adapter); + + GST_CALL_PARENT (G_OBJECT_CLASS, finalize, (object)); +} + +static void +gst_rtp_sbc_pay_class_init (GstRtpSBCPayClass * klass) +{ + GstRTPBasePayloadClass *payload_class = GST_RTP_BASE_PAYLOAD_CLASS (klass); + GstElementClass *element_class = GST_ELEMENT_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = gst_rtp_sbc_pay_finalize; + gobject_class->set_property = gst_rtp_sbc_pay_set_property; + gobject_class->get_property = gst_rtp_sbc_pay_get_property; + + payload_class->set_caps = GST_DEBUG_FUNCPTR (gst_rtp_sbc_pay_set_caps); + payload_class->handle_buffer = + GST_DEBUG_FUNCPTR (gst_rtp_sbc_pay_handle_buffer); + payload_class->sink_event = GST_DEBUG_FUNCPTR (gst_rtp_sbc_pay_sink_event); + + /* properties */ + g_object_class_install_property (G_OBJECT_CLASS (klass), + PROP_MIN_FRAMES, + g_param_spec_int ("min-frames", "minimum frame number", + "Minimum quantity of frames to send in one packet " + "(-1 for maximum allowed by the mtu)", + -1, G_MAXINT, DEFAULT_MIN_FRAMES, G_PARAM_READWRITE)); + + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_rtp_sbc_pay_sink_factory)); + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_rtp_sbc_pay_src_factory)); + + gst_element_class_set_static_metadata (element_class, "RTP packet payloader", + "Codec/Payloader/Network", "Payload SBC audio as RTP packets", + "Thiago Sousa Santos <thiagoss@lcc.ufcg.edu.br>"); + + GST_DEBUG_CATEGORY_INIT (gst_rtp_sbc_pay_debug, "rtpsbcpay", 0, + "RTP SBC payloader"); +} + +static void +gst_rtp_sbc_pay_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) +{ + GstRtpSBCPay *sbcpay; + + sbcpay = GST_RTP_SBC_PAY (object); + + switch (prop_id) { + case PROP_MIN_FRAMES: + sbcpay->min_frames = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_rtp_sbc_pay_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec) +{ + GstRtpSBCPay *sbcpay; + + sbcpay = GST_RTP_SBC_PAY (object); + + switch (prop_id) { + case PROP_MIN_FRAMES: + g_value_set_int (value, sbcpay->min_frames); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_rtp_sbc_pay_init (GstRtpSBCPay * self) +{ + self->adapter = gst_adapter_new (); + self->frame_length = 0; + self->timestamp = 0; + + self->min_frames = DEFAULT_MIN_FRAMES; +} + +gboolean +gst_rtp_sbc_pay_plugin_init (GstPlugin * plugin) +{ + return gst_element_register (plugin, "rtpsbcpay", GST_RANK_NONE, + GST_TYPE_RTP_SBC_PAY); +} diff --git a/gst/rtp/gstrtpsbcpay.h b/gst/rtp/gstrtpsbcpay.h new file mode 100644 index 0000000000000000000000000000000000000000..42cf02e2d4ef6afcc57025340d52b00669c721ef --- /dev/null +++ b/gst/rtp/gstrtpsbcpay.h @@ -0,0 +1,64 @@ +/* GStreamer RTP SBC payloader + * BlueZ - Bluetooth protocol stack for Linux + * + * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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 + * + */ + +#include <gst/gst.h> +#include <gst/base/gstadapter.h> +#include <gst/rtp/gstrtpbasepayload.h> +#include <gst/rtp/gstrtpbuffer.h> + +G_BEGIN_DECLS + +#define GST_TYPE_RTP_SBC_PAY \ + (gst_rtp_sbc_pay_get_type()) +#define GST_RTP_SBC_PAY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_SBC_PAY,\ + GstRtpSBCPay)) +#define GST_RTP_SBC_PAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_SBC_PAY,\ + GstRtpSBCPayClass)) +#define GST_IS_RTP_SBC_PAY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_SBC_PAY)) +#define GST_IS_RTP_SBC_PAY_CLASS(obj) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_SBC_PAY)) + +typedef struct _GstRtpSBCPay GstRtpSBCPay; +typedef struct _GstRtpSBCPayClass GstRtpSBCPayClass; + +struct _GstRtpSBCPay { + GstRTPBasePayload base; + + GstAdapter *adapter; + GstClockTime timestamp; + + guint frame_length; + + guint min_frames; +}; + +struct _GstRtpSBCPayClass { + GstRTPBasePayloadClass parent_class; +}; + +GType gst_rtp_sbc_pay_get_type(void); + +gboolean gst_rtp_sbc_pay_plugin_init (GstPlugin * plugin); + +G_END_DECLS diff --git a/gst/rtp/gstrtpsirendepay.c b/gst/rtp/gstrtpsirendepay.c index 45794c8ff6f19011303361e58f4653dd60bf4237..9d1e1ef62dd692349506c25e05176905c2745443 100644 --- a/gst/rtp/gstrtpsirendepay.c +++ b/gst/rtp/gstrtpsirendepay.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpsirendepay.h b/gst/rtp/gstrtpsirendepay.h index 1483f1d199ce5f7b181c26de21e6c03a83ca5f82..d1ffb11e040a97811923331c9a18a8cf4ae7b024 100644 --- a/gst/rtp/gstrtpsirendepay.h +++ b/gst/rtp/gstrtpsirendepay.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_SIREN_DEPAY_H__ diff --git a/gst/rtp/gstrtpsirenpay.c b/gst/rtp/gstrtpsirenpay.c index e62f189957f50ebbe17e426726bccc0729f046be..2277fecfe84d51516ef62d78efdbda3cfdfcd40b 100644 --- a/gst/rtp/gstrtpsirenpay.c +++ b/gst/rtp/gstrtpsirenpay.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpsirenpay.h b/gst/rtp/gstrtpsirenpay.h index ee9f3d2308ac802259f96aa7ac42844e14a81afb..eaba5b5a48b5db5cd8c479a78743ea6b980ad449 100644 --- a/gst/rtp/gstrtpsirenpay.h +++ b/gst/rtp/gstrtpsirenpay.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_SIREN_PAY_H__ diff --git a/gst/rtp/gstrtpspeexdepay.c b/gst/rtp/gstrtpspeexdepay.c index 88f1c5e3e357940163e7cbd2f078987aff0c548b..97250a765bbfa779e074ed1c1e70243320647f86 100644 --- a/gst/rtp/gstrtpspeexdepay.c +++ b/gst/rtp/gstrtpspeexdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpspeexpay.c b/gst/rtp/gstrtpspeexpay.c index bb56412fa93353a20df69e899e9376183e93cc4a..1f838664fa5cb1bb18df004d595ba95e6007c6e1 100644 --- a/gst/rtp/gstrtpspeexpay.c +++ b/gst/rtp/gstrtpspeexpay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpsv3vdepay.c b/gst/rtp/gstrtpsv3vdepay.c index a8f2f1bcd6322e9ec5c877d9ea337a0d5348da55..7e3bc89918d07899333b10577c862011cf9dc895 100644 --- a/gst/rtp/gstrtpsv3vdepay.c +++ b/gst/rtp/gstrtpsv3vdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpsv3vdepay.h b/gst/rtp/gstrtpsv3vdepay.h index 86db193b60f6050358c23e3e104e7941b13288b7..428684a7d7417b6d4c6fd9b6c0edf927588b745a 100644 --- a/gst/rtp/gstrtpsv3vdepay.h +++ b/gst/rtp/gstrtpsv3vdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_SV3V_DEPAY_H__ diff --git a/gst/rtp/gstrtptheoradepay.c b/gst/rtp/gstrtptheoradepay.c index 19408553eebce4a0610af09fc36191c3127309dd..8fa348a65a3010bfb6c83a4bcce15360811a8dfb 100644 --- a/gst/rtp/gstrtptheoradepay.c +++ b/gst/rtp/gstrtptheoradepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -549,8 +549,11 @@ gst_rtp_theora_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) gst_buffer_fill (outbuf, 0, payload, length); } - if (payload_len > 0 && (payload[0] & 0xC0) == 0x0) + if (payload_len > 0 && (payload[0] & 0xC0) == 0x0) { rtptheoradepay->needs_keyframe = FALSE; + } else { + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT); + } payload += length; payload_len -= length; diff --git a/gst/rtp/gstrtptheoradepay.h b/gst/rtp/gstrtptheoradepay.h index 320e9b7ef40f821388cda7ffcd83a43e81e9798a..2b0b26016e7890339c749d2ccc3d447608ba9840 100644 --- a/gst/rtp/gstrtptheoradepay.h +++ b/gst/rtp/gstrtptheoradepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_THEORA_DEPAY_H__ diff --git a/gst/rtp/gstrtptheorapay.c b/gst/rtp/gstrtptheorapay.c index 296e1457a4fdd6076d92b75a29a951f42417ec5a..baca249c0b7916d44f314240243dcb38a79bde87 100644 --- a/gst/rtp/gstrtptheorapay.c +++ b/gst/rtp/gstrtptheorapay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -87,6 +87,10 @@ static GstFlowReturn gst_rtp_theora_pay_handle_buffer (GstRTPBasePayload * pad, static gboolean gst_rtp_theora_pay_sink_event (GstRTPBasePayload * payload, GstEvent * event); +static gboolean gst_rtp_theora_pay_parse_id (GstRTPBasePayload * basepayload, + guint8 * data, guint size); +static gboolean gst_rtp_theora_pay_finish_headers (GstRTPBasePayload * + basepayload); static void gst_rtp_theora_pay_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); @@ -168,12 +172,83 @@ static gboolean gst_rtp_theora_pay_setcaps (GstRTPBasePayload * basepayload, GstCaps * caps) { GstRtpTheoraPay *rtptheorapay; + GstStructure *s; + const GValue *array; + gint asize, i; + GstBuffer *buf; + GstMapInfo map; rtptheorapay = GST_RTP_THEORA_PAY (basepayload); + s = gst_caps_get_structure (caps, 0); + rtptheorapay->need_headers = TRUE; + if ((array = gst_structure_get_value (s, "streamheader")) == NULL) + goto done; + + if (G_VALUE_TYPE (array) != GST_TYPE_ARRAY) + goto done; + + if ((asize = gst_value_array_get_size (array)) < 3) + goto done; + + for (i = 0; i < asize; i++) { + const GValue *value; + + value = gst_value_array_get_value (array, i); + if ((buf = gst_value_get_buffer (value)) == NULL) + goto null_buffer; + + gst_buffer_map (buf, &map, GST_MAP_READ); + /* no data packets allowed */ + if (map.size < 1) + goto invalid_streamheader; + + /* we need packets with id 0x80, 0x81, 0x82 */ + if (map.data[0] != 0x80 + i) + goto invalid_streamheader; + + if (i == 0) { + /* identification, we need to parse this in order to get the clock rate. */ + if (G_UNLIKELY (!gst_rtp_theora_pay_parse_id (basepayload, map.data, + map.size))) + goto parse_id_failed; + } + GST_DEBUG_OBJECT (rtptheorapay, "collecting header %d", i); + rtptheorapay->headers = + g_list_append (rtptheorapay->headers, gst_buffer_ref (buf)); + gst_buffer_unmap (buf, &map); + } + if (!gst_rtp_theora_pay_finish_headers (basepayload)) + goto finish_failed; + +done: return TRUE; + + /* ERRORS */ +null_buffer: + { + GST_WARNING_OBJECT (rtptheorapay, "streamheader with null buffer received"); + return FALSE; + } +invalid_streamheader: + { + GST_WARNING_OBJECT (rtptheorapay, "unable to parse initial header"); + gst_buffer_unmap (buf, &map); + return FALSE; + } +parse_id_failed: + { + GST_WARNING_OBJECT (rtptheorapay, "unable to parse initial header"); + gst_buffer_unmap (buf, &map); + return FALSE; + } +finish_failed: + { + GST_WARNING_OBJECT (rtptheorapay, "unable to finish headers"); + return FALSE; + } } static void @@ -387,7 +462,6 @@ gst_rtp_theora_pay_finish_headers (GstRTPBasePayload * basepayload) /* store length for each header */ for (walk = rtptheorapay->headers; walk; walk = g_list_next (walk)) { GstBuffer *buf = GST_BUFFER_CAST (walk->data); - guint bsize, size, temp; guint flag; @@ -412,7 +486,7 @@ gst_rtp_theora_pay_finish_headers (GstRTPBasePayload * basepayload) size--; data[size] = (bsize & 0x7f) | flag; bsize >>= 7; - flag = 0x80; + flag = 0x80; /* Flag bit on all bytes of the length except the last */ } data += temp; } @@ -420,13 +494,14 @@ gst_rtp_theora_pay_finish_headers (GstRTPBasePayload * basepayload) /* copy header data */ for (walk = rtptheorapay->headers; walk; walk = g_list_next (walk)) { GstBuffer *buf = GST_BUFFER_CAST (walk->data); - GstMapInfo map; - gst_buffer_map (buf, &map, GST_MAP_READ); - memcpy (data, map.data, map.size); - gst_buffer_unmap (buf, &map); - data += map.size; + gst_buffer_extract (buf, 0, data, gst_buffer_get_size (buf)); + data += gst_buffer_get_size (buf); + gst_buffer_unref (buf); } + g_list_free (rtptheorapay->headers); + rtptheorapay->headers = NULL; + rtptheorapay->need_headers = FALSE; /* serialize to base64 */ configuration = g_base64_encode (config, configlen); @@ -607,9 +682,9 @@ gst_rtp_theora_pay_payload_buffer (GstRtpTheoraPay * rtptheorapay, guint8 TDT, } } if (fragmented) { + gst_rtp_buffer_unmap (&rtp); /* fragmented packets are always flushed and have ptks of 0 */ rtptheorapay->payload_pkts = 0; - gst_rtp_buffer_unmap (&rtp); ret = gst_rtp_theora_pay_flush_packet (rtptheorapay); if (size > 0) { @@ -688,20 +763,17 @@ gst_rtp_theora_pay_handle_buffer (GstRTPBasePayload * basepayload, keyframe = ((data[0] & 0x40) == 0); } - if (rtptheorapay->need_headers) { - /* we need to collect the headers and construct a config string from them */ - if (TDT != 0) { - GST_DEBUG_OBJECT (rtptheorapay, "collecting header, buffer %p", buffer); - /* append header to the list of headers */ - gst_buffer_unmap (buffer, &map); - rtptheorapay->headers = g_list_append (rtptheorapay->headers, buffer); - ret = GST_FLOW_OK; - goto done; - } else { - if (!gst_rtp_theora_pay_finish_headers (basepayload)) - goto header_error; - rtptheorapay->need_headers = FALSE; - } + /* we need to collect the headers and construct a config string from them */ + if (TDT != 0) { + GST_DEBUG_OBJECT (rtptheorapay, "collecting header, buffer %p", buffer); + /* append header to the list of headers */ + gst_buffer_unmap (buffer, &map); + rtptheorapay->headers = g_list_append (rtptheorapay->headers, buffer); + ret = GST_FLOW_OK; + goto done; + } else if (rtptheorapay->headers) { + if (!gst_rtp_theora_pay_finish_headers (basepayload)) + goto header_error; } /* there is a config request, see if we need to insert it */ diff --git a/gst/rtp/gstrtptheorapay.h b/gst/rtp/gstrtptheorapay.h index 5d46937aa8ad7b438f8d597476c0887507f2fcf2..0a1d4725d43cf010f036c7bfe0e57ac7672115b6 100644 --- a/gst/rtp/gstrtptheorapay.h +++ b/gst/rtp/gstrtptheorapay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_THEORA_PAY_H__ diff --git a/gst/rtp/gstrtpvorbisdepay.c b/gst/rtp/gstrtpvorbisdepay.c index 6230c44d3cf7e516ee2b4a9c30004cbae9822f96..77097510d9969867b07c8876093363ef8abbe0da 100644 --- a/gst/rtp/gstrtpvorbisdepay.c +++ b/gst/rtp/gstrtpvorbisdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/rtp/gstrtpvorbisdepay.h b/gst/rtp/gstrtpvorbisdepay.h index fb362f7b2fbd9b415db98c9b6edfea424898c3b5..a343d04e159f910e0837a06576970e9e816f0e04 100644 --- a/gst/rtp/gstrtpvorbisdepay.h +++ b/gst/rtp/gstrtpvorbisdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_VORBIS_DEPAY_H__ diff --git a/gst/rtp/gstrtpvorbispay.c b/gst/rtp/gstrtpvorbispay.c index dc1db9b0f77078d56e92de8b8ac2870b728cfafc..b7ff2ccf2bc140044530ec95889bd65d819cf015 100644 --- a/gst/rtp/gstrtpvorbispay.c +++ b/gst/rtp/gstrtpvorbispay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -58,6 +58,14 @@ GST_STATIC_PAD_TEMPLATE ("sink", GST_STATIC_CAPS ("audio/x-vorbis") ); +#define DEFAULT_CONFIG_INTERVAL 0 + +enum +{ + PROP_0, + PROP_CONFIG_INTERVAL +}; + #define gst_rtp_vorbis_pay_parent_class parent_class G_DEFINE_TYPE (GstRtpVorbisPay, gst_rtp_vorbis_pay, GST_TYPE_RTP_BASE_PAYLOAD); @@ -70,12 +78,24 @@ static GstFlowReturn gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * pad, static gboolean gst_rtp_vorbis_pay_sink_event (GstRTPBasePayload * payload, GstEvent * event); +static gboolean gst_rtp_vorbis_pay_parse_id (GstRTPBasePayload * basepayload, + guint8 * data, guint size); +static gboolean gst_rtp_vorbis_pay_finish_headers (GstRTPBasePayload * + basepayload); + +static void gst_rtp_vorbis_pay_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_rtp_vorbis_pay_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); + static void gst_rtp_vorbis_pay_class_init (GstRtpVorbisPayClass * klass) { + GObjectClass *gobject_class; GstElementClass *gstelement_class; GstRTPBasePayloadClass *gstrtpbasepayload_class; + gobject_class = (GObjectClass *) klass; gstelement_class = (GstElementClass *) klass; gstrtpbasepayload_class = (GstRTPBasePayloadClass *) klass; @@ -85,6 +105,9 @@ gst_rtp_vorbis_pay_class_init (GstRtpVorbisPayClass * klass) gstrtpbasepayload_class->handle_buffer = gst_rtp_vorbis_pay_handle_buffer; gstrtpbasepayload_class->sink_event = gst_rtp_vorbis_pay_sink_event; + gobject_class->set_property = gst_rtp_vorbis_pay_set_property; + gobject_class->get_property = gst_rtp_vorbis_pay_get_property; + gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&gst_rtp_vorbis_pay_src_template)); gst_element_class_add_pad_template (gstelement_class, @@ -98,11 +121,20 @@ gst_rtp_vorbis_pay_class_init (GstRtpVorbisPayClass * klass) GST_DEBUG_CATEGORY_INIT (rtpvorbispay_debug, "rtpvorbispay", 0, "Vorbis RTP Payloader"); + + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_CONFIG_INTERVAL, + g_param_spec_uint ("config-interval", "Config Send Interval", + "Send Config Insertion Interval in seconds (configuration headers " + "will be multiplexed in the data stream when detected.) (0 = disabled)", + 0, 3600, DEFAULT_CONFIG_INTERVAL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) + ); } static void gst_rtp_vorbis_pay_init (GstRtpVorbisPay * rtpvorbispay) { + rtpvorbispay->last_config = GST_CLOCK_TIME_NONE; } static void @@ -121,18 +153,97 @@ gst_rtp_vorbis_pay_cleanup (GstRtpVorbisPay * rtpvorbispay) rtpvorbispay->headers = NULL; gst_rtp_vorbis_pay_clear_packet (rtpvorbispay); + + if (rtpvorbispay->config_data) + g_free (rtpvorbispay->config_data); + rtpvorbispay->config_data = NULL; + rtpvorbispay->last_config = GST_CLOCK_TIME_NONE; } static gboolean gst_rtp_vorbis_pay_setcaps (GstRTPBasePayload * basepayload, GstCaps * caps) { GstRtpVorbisPay *rtpvorbispay; + GstStructure *s; + const GValue *array; + gint asize, i; + GstBuffer *buf; + GstMapInfo map; rtpvorbispay = GST_RTP_VORBIS_PAY (basepayload); + s = gst_caps_get_structure (caps, 0); + rtpvorbispay->need_headers = TRUE; + if ((array = gst_structure_get_value (s, "streamheader")) == NULL) + goto done; + + if (G_VALUE_TYPE (array) != GST_TYPE_ARRAY) + goto done; + + if ((asize = gst_value_array_get_size (array)) < 3) + goto done; + + for (i = 0; i < asize; i++) { + const GValue *value; + + value = gst_value_array_get_value (array, i); + if ((buf = gst_value_get_buffer (value)) == NULL) + goto null_buffer; + + gst_buffer_map (buf, &map, GST_MAP_READ); + if (map.size < 1) + goto invalid_streamheader; + + /* no data packets allowed */ + if ((map.data[0] & 1) == 0) + goto invalid_streamheader; + + /* we need packets with id 1, 3, 5 */ + if (map.data[0] != (i * 2) + 1) + goto invalid_streamheader; + + if (i == 0) { + /* identification, we need to parse this in order to get the clock rate. */ + if (G_UNLIKELY (!gst_rtp_vorbis_pay_parse_id (basepayload, map.data, + map.size))) + goto parse_id_failed; + } + GST_DEBUG_OBJECT (rtpvorbispay, "collecting header %d", i); + rtpvorbispay->headers = + g_list_append (rtpvorbispay->headers, gst_buffer_ref (buf)); + gst_buffer_unmap (buf, &map); + } + if (!gst_rtp_vorbis_pay_finish_headers (basepayload)) + goto finish_failed; + +done: return TRUE; + + /* ERRORS */ +null_buffer: + { + GST_WARNING_OBJECT (rtpvorbispay, "streamheader with null buffer received"); + return FALSE; + } +invalid_streamheader: + { + GST_WARNING_OBJECT (rtpvorbispay, "unable to parse initial header"); + gst_buffer_unmap (buf, &map); + return FALSE; + } +parse_id_failed: + { + GST_WARNING_OBJECT (rtpvorbispay, "unable to parse initial header"); + gst_buffer_unmap (buf, &map); + return FALSE; + } +finish_failed: + { + GST_WARNING_OBJECT (rtpvorbispay, "unable to finish headers"); + return FALSE; + } } static void @@ -168,6 +279,7 @@ gst_rtp_vorbis_pay_init_packet (GstRtpVorbisPay * rtpvorbispay, guint8 VDT, gst_rtp_buffer_new_allocate_len (GST_RTP_BASE_PAYLOAD_MTU (rtpvorbispay), 0, 0); gst_rtp_vorbis_pay_reset_packet (rtpvorbispay, VDT); + GST_BUFFER_TIMESTAMP (rtpvorbispay->packet) = timestamp; } @@ -229,7 +341,7 @@ gst_rtp_vorbis_pay_finish_headers (GstRTPBasePayload * basepayload) { GstRtpVorbisPay *rtpvorbispay = GST_RTP_VORBIS_PAY (basepayload); GList *walk; - guint length, size, n_headers, configlen; + guint length, size, n_headers, configlen, extralen; gchar *cstr, *configuration; guint8 *data, *config; guint32 ident; @@ -288,6 +400,7 @@ gst_rtp_vorbis_pay_finish_headers (GstRTPBasePayload * basepayload) length = 0; n_headers = 0; ident = fnv1_hash_32_new (); + extralen = 1; for (walk = rtpvorbispay->headers; walk; walk = g_list_next (walk)) { GstBuffer *buf = GST_BUFFER_CAST (walk->data); GstMapInfo map; @@ -302,6 +415,7 @@ gst_rtp_vorbis_pay_finish_headers (GstRTPBasePayload * basepayload) if (g_list_next (walk)) { do { size++; + extralen++; bsize >>= 7; } while (bsize); } @@ -376,10 +490,22 @@ gst_rtp_vorbis_pay_finish_headers (GstRTPBasePayload * basepayload) gst_buffer_extract (buf, 0, data, gst_buffer_get_size (buf)); data += gst_buffer_get_size (buf); + gst_buffer_unref (buf); } + g_list_free (rtpvorbispay->headers); + rtpvorbispay->headers = NULL; + rtpvorbispay->need_headers = FALSE; /* serialize to base64 */ configuration = g_base64_encode (config, configlen); + + /* store for later re-sending */ + rtpvorbispay->config_size = configlen - 4 - 3 - 2; + rtpvorbispay->config_data = g_malloc (rtpvorbispay->config_size); + rtpvorbispay->config_extra_len = extralen; + memcpy (rtpvorbispay->config_data, config + 4 + 3 + 2, + rtpvorbispay->config_size); + g_free (config); /* configure payloader settings */ @@ -468,74 +594,20 @@ invalid_channels: } static GstFlowReturn -gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload, - GstBuffer * buffer) +gst_rtp_vorbis_pay_payload_buffer (GstRtpVorbisPay * rtpvorbispay, guint8 VDT, + guint8 * data, guint size, GstClockTime timestamp, GstClockTime duration, + guint not_in_length) { - GstRtpVorbisPay *rtpvorbispay; - GstFlowReturn ret; + GstFlowReturn ret = GST_FLOW_OK; guint newsize; - GstMapInfo map; - gsize size; - guint8 *data; guint packet_len; - GstClockTime duration, newduration, timestamp; + GstClockTime newduration; gboolean flush; - guint8 VDT; guint plen; guint8 *ppos, *payload; gboolean fragmented; GstRTPBuffer rtp = { NULL }; - rtpvorbispay = GST_RTP_VORBIS_PAY (basepayload); - - gst_buffer_map (buffer, &map, GST_MAP_READ); - data = map.data; - size = map.size; - duration = GST_BUFFER_DURATION (buffer); - timestamp = GST_BUFFER_TIMESTAMP (buffer); - - GST_LOG_OBJECT (rtpvorbispay, "size %" G_GSIZE_FORMAT - ", duration %" GST_TIME_FORMAT, size, GST_TIME_ARGS (duration)); - - if (G_UNLIKELY (size < 1 || size > 0xffff)) - goto wrong_size; - - /* find packet type */ - if (data[0] & 1) { - /* header */ - if (data[0] == 1) { - /* identification, we need to parse this in order to get the clock rate. */ - if (G_UNLIKELY (!gst_rtp_vorbis_pay_parse_id (basepayload, data, size))) - goto parse_id_failed; - VDT = 1; - } else if (data[0] == 3) { - /* comment */ - VDT = 2; - } else if (data[0] == 5) { - /* setup */ - VDT = 1; - } else - goto unknown_header; - } else - /* data */ - VDT = 0; - - if (rtpvorbispay->need_headers) { - /* we need to collect the headers and construct a config string from them */ - if (VDT != 0) { - GST_DEBUG_OBJECT (rtpvorbispay, "collecting header"); - /* append header to the list of headers */ - gst_buffer_unmap (buffer, &map); - rtpvorbispay->headers = g_list_append (rtpvorbispay->headers, buffer); - ret = GST_FLOW_OK; - goto done; - } else { - if (!gst_rtp_vorbis_pay_finish_headers (basepayload)) - goto header_error; - rtpvorbispay->need_headers = FALSE; - } - } - /* size increases with packet length and 2 bytes size eader. */ newduration = rtpvorbispay->payload_duration; if (duration != GST_CLOCK_TIME_NONE) @@ -545,14 +617,15 @@ gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload, packet_len = gst_rtp_buffer_calc_packet_len (newsize, 0, 0); /* check buffer filled against length and max latency */ - flush = gst_rtp_base_payload_is_filled (basepayload, packet_len, newduration); + flush = gst_rtp_base_payload_is_filled (GST_RTP_BASE_PAYLOAD (rtpvorbispay), + packet_len, newduration); /* we can store up to 15 vorbis packets in one RTP packet. */ flush |= (rtpvorbispay->payload_pkts == 15); /* flush if we have a new VDT */ if (rtpvorbispay->packet) flush |= (rtpvorbispay->payload_VDT != VDT); if (flush) - gst_rtp_vorbis_pay_flush_packet (rtpvorbispay); + ret = gst_rtp_vorbis_pay_flush_packet (rtpvorbispay); /* create new packet if we must */ if (!rtpvorbispay->packet) { @@ -564,19 +637,22 @@ gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload, ppos = payload + rtpvorbispay->payload_pos; fragmented = FALSE; - ret = GST_FLOW_OK; - /* put buffer in packet, it either fits completely or needs to be fragmented * over multiple RTP packets. */ - while (size) { + do { plen = MIN (rtpvorbispay->payload_left - 2, size); GST_LOG_OBJECT (rtpvorbispay, "append %u bytes", plen); /* data is copied in the payload with a 2 byte length header */ - ppos[0] = (plen >> 8) & 0xff; - ppos[1] = (plen & 0xff); - memcpy (&ppos[2], data, plen); + ppos[0] = ((plen - not_in_length) >> 8) & 0xff; + ppos[1] = ((plen - not_in_length) & 0xff); + if (plen) + memcpy (&ppos[2], data, plen); + + /* only first (only) configuration cuts length field */ + /* NOTE: spec (if any) is not clear on this ... */ + not_in_length = 0; size -= plen; data += plen; @@ -620,11 +696,122 @@ gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload, if (duration != GST_CLOCK_TIME_NONE) rtpvorbispay->payload_duration += duration; } - } + } while (size); if (rtp.buffer) gst_rtp_buffer_unmap (&rtp); + return ret; +} + +static GstFlowReturn +gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload, + GstBuffer * buffer) +{ + GstRtpVorbisPay *rtpvorbispay; + GstFlowReturn ret; + GstMapInfo map; + gsize size; + guint8 *data; + GstClockTime duration, timestamp; + guint8 VDT; + + rtpvorbispay = GST_RTP_VORBIS_PAY (basepayload); + + gst_buffer_map (buffer, &map, GST_MAP_READ); + data = map.data; + size = map.size; + duration = GST_BUFFER_DURATION (buffer); + timestamp = GST_BUFFER_TIMESTAMP (buffer); + + GST_LOG_OBJECT (rtpvorbispay, "size %" G_GSIZE_FORMAT + ", duration %" GST_TIME_FORMAT, size, GST_TIME_ARGS (duration)); + + if (G_UNLIKELY (size < 1 || size > 0xffff)) + goto wrong_size; + + /* find packet type */ + if (data[0] & 1) { + /* header */ + if (data[0] == 1) { + /* identification, we need to parse this in order to get the clock rate. */ + if (G_UNLIKELY (!gst_rtp_vorbis_pay_parse_id (basepayload, data, size))) + goto parse_id_failed; + VDT = 1; + } else if (data[0] == 3) { + /* comment */ + VDT = 2; + } else if (data[0] == 5) { + /* setup */ + VDT = 1; + } else + goto unknown_header; + } else + /* data */ + VDT = 0; + + /* we need to collect the headers and construct a config string from them */ + if (VDT != 0) { + GST_DEBUG_OBJECT (rtpvorbispay, "collecting header"); + /* append header to the list of headers */ + gst_buffer_unmap (buffer, &map); + rtpvorbispay->headers = g_list_append (rtpvorbispay->headers, buffer); + ret = GST_FLOW_OK; + goto done; + } else if (rtpvorbispay->headers) { + if (!gst_rtp_vorbis_pay_finish_headers (basepayload)) + goto header_error; + } + + /* there is a config request, see if we need to insert it */ + if (rtpvorbispay->config_interval > 0 && rtpvorbispay->config_data) { + gboolean send_config = FALSE; + + if (rtpvorbispay->last_config != -1) { + guint64 diff; + + GST_LOG_OBJECT (rtpvorbispay, + "now %" GST_TIME_FORMAT ", last config %" GST_TIME_FORMAT, + GST_TIME_ARGS (timestamp), GST_TIME_ARGS (rtpvorbispay->last_config)); + + /* calculate diff between last config in milliseconds */ + if (timestamp > rtpvorbispay->last_config) { + diff = timestamp - rtpvorbispay->last_config; + } else { + diff = 0; + } + + GST_DEBUG_OBJECT (rtpvorbispay, + "interval since last config %" GST_TIME_FORMAT, GST_TIME_ARGS (diff)); + + /* bigger than interval, queue config */ + /* FIXME should convert timestamps to running time */ + if (GST_TIME_AS_SECONDS (diff) >= rtpvorbispay->config_interval) { + GST_DEBUG_OBJECT (rtpvorbispay, "time to send config"); + send_config = TRUE; + } + } else { + /* no known previous config time, send now */ + GST_DEBUG_OBJECT (rtpvorbispay, "no previous config time, send now"); + send_config = TRUE; + } + + if (send_config) { + /* we need to send config now first */ + /* different TDT type forces flush */ + gst_rtp_vorbis_pay_payload_buffer (rtpvorbispay, 1, + rtpvorbispay->config_data, rtpvorbispay->config_size, + timestamp, GST_CLOCK_TIME_NONE, rtpvorbispay->config_extra_len); + + if (timestamp != -1) { + rtpvorbispay->last_config = timestamp; + } + } + } + + ret = gst_rtp_vorbis_pay_payload_buffer (rtpvorbispay, VDT, data, size, + timestamp, duration, 0); + gst_buffer_unmap (buffer, &map); gst_buffer_unref (buffer); @@ -707,6 +894,40 @@ gst_rtp_vorbis_pay_change_state (GstElement * element, return ret; } +static void +gst_rtp_vorbis_pay_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) +{ + GstRtpVorbisPay *rtpvorbispay; + + rtpvorbispay = GST_RTP_VORBIS_PAY (object); + + switch (prop_id) { + case PROP_CONFIG_INTERVAL: + rtpvorbispay->config_interval = g_value_get_uint (value); + break; + default: + break; + } +} + +static void +gst_rtp_vorbis_pay_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec) +{ + GstRtpVorbisPay *rtpvorbispay; + + rtpvorbispay = GST_RTP_VORBIS_PAY (object); + + switch (prop_id) { + case PROP_CONFIG_INTERVAL: + g_value_set_uint (value, rtpvorbispay->config_interval); + break; + default: + break; + } +} + gboolean gst_rtp_vorbis_pay_plugin_init (GstPlugin * plugin) { diff --git a/gst/rtp/gstrtpvorbispay.h b/gst/rtp/gstrtpvorbispay.h index 1d14d2c1764d8a84c6c3b4ed5b623ac9460b1193..8f0974a0b3501faf0c67f4c842749c1e3833fdbe 100644 --- a/gst/rtp/gstrtpvorbispay.h +++ b/gst/rtp/gstrtpvorbispay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_VORBIS_PAY_H__ @@ -59,6 +59,13 @@ struct _GstRtpVorbisPay GstClockTime payload_timestamp; GstClockTime payload_duration; + /* config (re-sending) */ + guint8 *config_data; + guint config_size; + guint config_extra_len; + guint config_interval; + GstClockTime last_config; + gint rate; gint channels; }; diff --git a/gst/rtp/gstrtpvp8depay.c b/gst/rtp/gstrtpvp8depay.c new file mode 100644 index 0000000000000000000000000000000000000000..7cc4504a4db6a9c89d43ec0ccee07c42dee2725e --- /dev/null +++ b/gst/rtp/gstrtpvp8depay.c @@ -0,0 +1,217 @@ +/* gstrtpvp8depay.c - Source for GstRtpVP8Depay + * Copyright (C) 2011 Sjoerd Simons <sjoerd@luon.net> + * Copyright (C) 2011 Collabora Ltd. + * Contact: Youness Alaoui <youness.alaoui@collabora.co.uk> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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 "gstrtpvp8depay.h" + +GST_DEBUG_CATEGORY_STATIC (gst_rtp_vp8_depay_debug); +#define GST_CAT_DEFAULT gst_rtp_vp8_depay_debug + +static void gst_rtp_vp8_depay_dispose (GObject * object); +static GstBuffer *gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depayload, + GstBuffer * buf); +static gboolean gst_rtp_vp8_depay_set_caps (GstRTPBaseDepayload * depayload, + GstCaps * caps); + +G_DEFINE_TYPE (GstRtpVP8Depay, gst_rtp_vp8_depay, GST_TYPE_RTP_BASE_DEPAYLOAD); + +static GstStaticPadTemplate gst_rtp_vp8_depay_src_template = +GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("video/x-vp8")); + +static GstStaticPadTemplate gst_rtp_vp8_depay_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp, " + "clock-rate = (int) 90000," + "media = (string) \"video\"," + "encoding-name = (string) \"VP8-DRAFT-IETF-01\"")); + +static void +gst_rtp_vp8_depay_init (GstRtpVP8Depay * self) +{ + self->adapter = gst_adapter_new (); + self->started = FALSE; +} + +static void +gst_rtp_vp8_depay_class_init (GstRtpVP8DepayClass * gst_rtp_vp8_depay_class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (gst_rtp_vp8_depay_class); + GstElementClass *element_class = GST_ELEMENT_CLASS (gst_rtp_vp8_depay_class); + GstRTPBaseDepayloadClass *depay_class = + (GstRTPBaseDepayloadClass *) (gst_rtp_vp8_depay_class); + + + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_rtp_vp8_depay_sink_template)); + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_rtp_vp8_depay_src_template)); + + gst_element_class_set_static_metadata (element_class, "RTP VP8 depayloader", + "Codec/Depayloader/Network/RTP", + "Extracts VP8 video from RTP packets)", + "Sjoerd Simons <sjoerd@luon.net>"); + + object_class->dispose = gst_rtp_vp8_depay_dispose; + + depay_class->process = gst_rtp_vp8_depay_process; + depay_class->set_caps = gst_rtp_vp8_depay_set_caps; + + GST_DEBUG_CATEGORY_INIT (gst_rtp_vp8_depay_debug, "rtpvp8depay", 0, + "VP8 Video RTP Depayloader"); +} + +static void +gst_rtp_vp8_depay_dispose (GObject * object) +{ + GstRtpVP8Depay *self = GST_RTP_VP8_DEPAY (object); + + if (self->adapter != NULL) + g_object_unref (self->adapter); + self->adapter = NULL; + + /* release any references held by the object here */ + + if (G_OBJECT_CLASS (gst_rtp_vp8_depay_parent_class)->dispose) + G_OBJECT_CLASS (gst_rtp_vp8_depay_parent_class)->dispose (object); +} + +static GstBuffer * +gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depay, GstBuffer * buf) +{ + GstRtpVP8Depay *self = GST_RTP_VP8_DEPAY (depay); + GstBuffer *payload; + guint8 *data; + guint offset; + guint size; + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + + if (G_UNLIKELY (GST_BUFFER_IS_DISCONT (buf))) { + GST_LOG_OBJECT (self, "Discontinuity, flushing adapter"); + gst_adapter_clear (self->adapter); + self->started = FALSE; + } + + gst_rtp_buffer_map (buf, GST_MAP_READ, &rtpbuffer); + size = gst_rtp_buffer_get_payload_len (&rtpbuffer); + + /* At least one header and one vp8 byte */ + if (G_UNLIKELY (size < 2)) + goto too_small; + + data = gst_rtp_buffer_get_payload (&rtpbuffer); + + if (G_UNLIKELY (!self->started)) { + /* Check if this is the start of a VP8 frame, otherwise bail */ + /* S=1 and PartID= 0 */ + if ((data[0] & 0x1F) != 0x10) + goto done; + + self->started = TRUE; + } + + offset = 1; + /* Check X optional header */ + if ((data[0] & 0x80) != 0) { + offset++; + /* Check I optional header */ + if ((data[1] & 0x80) != 0) { + offset++; + if (G_UNLIKELY (offset + 2 >= size)) + goto too_small; + /* Check for 16 bits PictureID */ + if ((data[2] & 0x80) != 0) + offset++; + } + /* Check L optional header */ + if ((data[1] & 0x40) != 0) + offset++; + /* Check T or K optional headers */ + if ((data[1] & 0x20) != 0 || (data[1] & 0x10) != 0) + offset++; + } + + if (G_UNLIKELY (offset >= size)) + goto too_small; + + payload = gst_rtp_buffer_get_payload_subbuffer (&rtpbuffer, offset, -1); + gst_adapter_push (self->adapter, payload); + + /* Marker indicates that it was the last rtp packet for this frame */ + if (gst_rtp_buffer_get_marker (&rtpbuffer)) { + GstBuffer *out; + guint8 flag0; + + gst_adapter_copy (self->adapter, &flag0, 0, 1); + + out = gst_adapter_take_buffer (self->adapter, + gst_adapter_available (self->adapter)); + + self->started = FALSE; + gst_rtp_buffer_unmap (&rtpbuffer); + + /* mark keyframes */ + out = gst_buffer_make_writable (out); + if ((flag0 & 0x01)) + GST_BUFFER_FLAG_SET (out, GST_BUFFER_FLAG_DELTA_UNIT); + else + GST_BUFFER_FLAG_UNSET (out, GST_BUFFER_FLAG_DELTA_UNIT); + + return out; + } + +done: + gst_rtp_buffer_unmap (&rtpbuffer); + return NULL; + +too_small: + GST_LOG_OBJECT (self, "Invalid rtp packet (too small), ignoring"); + gst_adapter_clear (self->adapter); + self->started = FALSE; + + goto done; +} + +static gboolean +gst_rtp_vp8_depay_set_caps (GstRTPBaseDepayload * depayload, GstCaps * caps) +{ + GstCaps *srccaps = gst_caps_new_simple ("video/x-vp8", + "framerate", GST_TYPE_FRACTION, 0, 1, + NULL); + + gst_pad_set_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (depayload), srccaps); + gst_caps_unref (srccaps); + + return TRUE; +} + +gboolean +gst_rtp_vp8_depay_plugin_init (GstPlugin * plugin) +{ + return gst_element_register (plugin, "rtpvp8depay", + GST_RANK_MARGINAL, GST_TYPE_RTP_VP8_DEPAY); +} diff --git a/gst/rtp/gstrtpvp8depay.h b/gst/rtp/gstrtpvp8depay.h new file mode 100644 index 0000000000000000000000000000000000000000..f10b5637f07762087aedfb407f17640a8e6a4628 --- /dev/null +++ b/gst/rtp/gstrtpvp8depay.h @@ -0,0 +1,64 @@ +/* + * gstrtpvp8depay.h - Header for GstRtpVP8Depay + * Copyright (C) 2011 Sjoerd Simons <sjoerd@luon.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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 + */ + +#ifndef __GST_RTP_VP8_DEPAY_H__ +#define __GST_RTP_VP8_DEPAY_H__ + +#include <gst/base/gstadapter.h> +#include <gst/rtp/gstrtpbasedepayload.h> + +G_BEGIN_DECLS + +#define GST_TYPE_RTP_VP8_DEPAY \ + (gst_rtp_vp8_depay_get_type()) +#define GST_RTP_VP8_DEPAY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_RTP_VP8_DEPAY, GstRtpVP8Depay)) +#define GST_RTP_VP8_DEPAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_RTP_VP8_DEPAY, \ + GstRtpVP8DepayClass)) +#define GST_IS_RTP_VP8_DEPAY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_RTP_VP8_DEPAY)) +#define GST_IS_RTP_VP8_DEPAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_RTP_VP8_DEPAY)) +#define GST_RTP_VP8_DEPAY_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_RTP_VP8_DEPAY, \ + GstRtpVP8DepayClass)) + +typedef struct _GstRtpVP8Depay GstRtpVP8Depay; +typedef struct _GstRtpVP8DepayClass GstRtpVP8DepayClass; + +struct _GstRtpVP8DepayClass +{ + GstRTPBaseDepayloadClass parent_class; +}; + +struct _GstRtpVP8Depay +{ + GstRTPBaseDepayload parent; + GstAdapter *adapter; + gboolean started; +}; + +GType gst_rtp_vp8_depay_get_type (void); + +gboolean gst_rtp_vp8_depay_plugin_init (GstPlugin * plugin); + +G_END_DECLS + +#endif /* #ifndef __GST_RTP_VP8_DEPAY_H__ */ diff --git a/gst/rtp/gstrtpvp8pay.c b/gst/rtp/gstrtpvp8pay.c new file mode 100644 index 0000000000000000000000000000000000000000..988d55da3270a9a02a0e64522275f3a5a777a16c --- /dev/null +++ b/gst/rtp/gstrtpvp8pay.c @@ -0,0 +1,444 @@ +/* + * gstrtpvp8pay.c - Source for GstRtpVP8Pay + * Copyright (C) 2011 Sjoerd Simons <sjoerd@luon.net> + * Copyright (C) 2011 Collabora Ltd. + * Contact: Youness Alaoui <youness.alaoui@collabora.co.uk> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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 <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <gst/base/gstbitreader.h> +#include <gst/rtp/gstrtppayloads.h> +#include <gst/rtp/gstrtpbuffer.h> +#include "dboolhuff.h" +#include "gstrtpvp8pay.h" + +GST_DEBUG_CATEGORY_STATIC (gst_rtp_vp8_pay_debug); +#define GST_CAT_DEFAULT gst_rtp_vp8_pay_debug + +#define DEFAULT_PICTURE_ID_MODE VP8_PAY_PICTURE_ID_7BITS + +static GstFlowReturn gst_rtp_vp8_pay_handle_buffer (GstRTPBasePayload * payload, + GstBuffer * buffer); +static gboolean gst_rtp_vp8_pay_sink_event (GstRTPBasePayload * payload, + GstEvent * event); +static gboolean gst_rtp_vp8_pay_set_caps (GstRTPBasePayload * payload, + GstCaps * caps); + +G_DEFINE_TYPE (GstRtpVP8Pay, gst_rtp_vp8_pay, GST_TYPE_RTP_BASE_PAYLOAD); + +static GstStaticPadTemplate gst_rtp_vp8_pay_src_template = +GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp, " + "payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING "," + "clock-rate = (int) 90000, encoding-name = (string) \"VP8-DRAFT-IETF-01\"")); + +static GstStaticPadTemplate gst_rtp_vp8_pay_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("video/x-vp8")); + +static void +gst_rtp_vp8_pay_init (GstRtpVP8Pay * obj) +{ + /* TODO: Make it configurable */ + obj->picture_id_mode = DEFAULT_PICTURE_ID_MODE; + if (obj->picture_id_mode == VP8_PAY_PICTURE_ID_7BITS) + obj->picture_id = g_random_int_range (0, G_MAXUINT8) & 0x7F; + else if (obj->picture_id_mode == VP8_PAY_PICTURE_ID_15BITS) + obj->picture_id = g_random_int_range (0, G_MAXUINT16) & 0x7FFF; +} + +static void +gst_rtp_vp8_pay_class_init (GstRtpVP8PayClass * gst_rtp_vp8_pay_class) +{ + GstElementClass *element_class = GST_ELEMENT_CLASS (gst_rtp_vp8_pay_class); + GstRTPBasePayloadClass *pay_class = + GST_RTP_BASE_PAYLOAD_CLASS (gst_rtp_vp8_pay_class); + + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_rtp_vp8_pay_sink_template)); + gst_element_class_add_pad_template (element_class, + gst_static_pad_template_get (&gst_rtp_vp8_pay_src_template)); + + gst_element_class_set_static_metadata (element_class, "RTP VP8 payloader", + "Codec/Payloader/Network/RTP", + "Puts VP8 video in RTP packets)", "Sjoerd Simons <sjoerd@luon.net>"); + + pay_class->handle_buffer = gst_rtp_vp8_pay_handle_buffer; + pay_class->sink_event = gst_rtp_vp8_pay_sink_event; + pay_class->set_caps = gst_rtp_vp8_pay_set_caps; + + GST_DEBUG_CATEGORY_INIT (gst_rtp_vp8_pay_debug, "rtpvp8pay", 0, + "VP8 Video RTP Payloader"); +} + +static gboolean +gst_rtp_vp8_pay_parse_frame (GstRtpVP8Pay * self, GstBuffer * buffer) +{ + GstBitReader *reader = NULL; + guint8 *data; + gsize size; + GstMapInfo map; + int i; + gboolean keyframe; + guint32 partition0_size; + guint8 version; + guint8 tmp8 = 0; + guint8 partitions; + guint offset; + BOOL_DECODER bc; + guint8 *pdata; + + if (G_UNLIKELY (gst_buffer_get_size (buffer) < 3)) + goto error; + + if (!gst_buffer_map (buffer, &map, GST_MAP_READ) || !map.data) + goto error; + + data = map.data; + size = map.size; + reader = gst_bit_reader_new (data, size); + + self->is_keyframe = keyframe = ((data[0] & 0x1) == 0); + version = (data[0] >> 1) & 0x7; + + if (G_UNLIKELY (version > 3)) { + GST_ERROR_OBJECT (self, "Unknown VP8 version %u", version); + goto error; + } + + /* keyframe, version and show_frame use 5 bits */ + partition0_size = data[2] << 11 | data[1] << 3 | (data[0] >> 5); + + /* Include the uncompressed data blob in the first partition */ + offset = keyframe ? 10 : 3; + partition0_size += offset; + + if (!gst_bit_reader_skip (reader, 24)) + goto error; + + if (keyframe) { + /* check start tag: 0x9d 0x01 0x2a */ + if (!gst_bit_reader_get_bits_uint8 (reader, &tmp8, 8) || tmp8 != 0x9d) + goto error; + + if (!gst_bit_reader_get_bits_uint8 (reader, &tmp8, 8) || tmp8 != 0x01) + goto error; + + if (!gst_bit_reader_get_bits_uint8 (reader, &tmp8, 8) || tmp8 != 0x2a) + goto error; + + /* Skip horizontal size code (16 bits) vertical size code (16 bits) */ + if (!gst_bit_reader_skip (reader, 32)) + goto error; + } + + offset = keyframe ? 10 : 3; + vp8dx_start_decode (&bc, data + offset, size - offset); + + if (keyframe) { + /* color space (1 bit) and clamping type (1 bit) */ + vp8dx_decode_bool (&bc, 0x80); + vp8dx_decode_bool (&bc, 0x80); + } + + /* segmentation_enabled */ + if (vp8dx_decode_bool (&bc, 0x80)) { + guint8 update_mb_segmentation_map = vp8dx_decode_bool (&bc, 0x80); + guint8 update_segment_feature_data = vp8dx_decode_bool (&bc, 0x80); + + if (update_segment_feature_data) { + /* skip segment feature mode */ + vp8dx_decode_bool (&bc, 0x80); + + /* quantizer update */ + for (i = 0; i < 4; i++) { + /* skip flagged quantizer value (7 bits) and sign (1 bit) */ + if (vp8dx_decode_bool (&bc, 0x80)) + vp8_decode_value (&bc, 8); + } + + /* loop filter update */ + for (i = 0; i < 4; i++) { + /* skip flagged lf update value (6 bits) and sign (1 bit) */ + if (vp8dx_decode_bool (&bc, 0x80)) + vp8_decode_value (&bc, 7); + } + } + + if (update_mb_segmentation_map) { + /* segment prob update */ + for (i = 0; i < 3; i++) { + /* skip flagged segment prob */ + if (vp8dx_decode_bool (&bc, 0x80)) + vp8_decode_value (&bc, 8); + } + } + } + + /* skip filter type (1 bit), loop filter level (6 bits) and + * sharpness level (3 bits) */ + vp8_decode_value (&bc, 1); + vp8_decode_value (&bc, 6); + vp8_decode_value (&bc, 3); + + /* loop_filter_adj_enabled */ + if (vp8dx_decode_bool (&bc, 0x80)) { + + /* delta update */ + if (vp8dx_decode_bool (&bc, 0x80)) { + + for (i = 0; i < 8; i++) { + /* 8 updates, 1 bit indicate whether there is one and if follow by a + * 7 bit update */ + if (vp8dx_decode_bool (&bc, 0x80)) + vp8_decode_value (&bc, 7); + } + } + } + + if (vp8dx_bool_error (&bc)) + goto error; + + tmp8 = vp8_decode_value (&bc, 2); + + partitions = 1 << tmp8; + + /* Check if things are still sensible */ + if (partition0_size + (partitions - 1) * 3 >= size) + goto error; + + /* partition data is right after the mode partition */ + pdata = data + partition0_size; + + /* Set up mapping */ + self->n_partitions = partitions + 1; + self->partition_offset[0] = 0; + self->partition_size[0] = partition0_size + (partitions - 1) * 3; + + self->partition_offset[1] = self->partition_size[0]; + for (i = 1; i < partitions; i++) { + guint psize = (pdata[2] << 16 | pdata[1] << 8 | pdata[0]); + + pdata += 3; + self->partition_size[i] = psize; + self->partition_offset[i + 1] = self->partition_offset[i] + psize; + } + + /* Check that our partition offsets and sizes don't go outsize the buffer + * size. */ + if (self->partition_offset[i] >= size) + goto error; + + self->partition_size[i] = size - self->partition_offset[i]; + + self->partition_offset[i + 1] = size; + + gst_bit_reader_free (reader); + gst_buffer_unmap (buffer, &map); + return TRUE; + +error: + GST_DEBUG ("Failed to parse frame"); + if (reader) { + gst_bit_reader_free (reader); + gst_buffer_unmap (buffer, &map); + } + return FALSE; +} + +static guint +gst_rtp_vp8_offset_to_partition (GstRtpVP8Pay * self, guint offset) +{ + int i; + + for (i = 0; i < self->n_partitions; i++) { + if (offset >= self->partition_offset[i] && + offset < self->partition_offset[i + 1]) + return i; + } + + return i; +} + +static gsize +gst_rtp_vp8_calc_header_len (GstRtpVP8Pay * self) +{ + switch (self->picture_id_mode) { + case VP8_PAY_PICTURE_ID_7BITS: + return 3; + case VP8_PAY_PICTURE_ID_15BITS: + return 4; + case VP8_PAY_NO_PICTURE_ID: + default: + return 1; + } +} + +static gsize +gst_rtp_vp8_calc_payload_len (GstRtpVP8Pay * self) +{ + GstRTPBasePayload *payload = GST_RTP_BASE_PAYLOAD (self); + + return gst_rtp_buffer_calc_payload_len (GST_RTP_BASE_PAYLOAD_MTU (payload) - + gst_rtp_vp8_calc_header_len (self), 0, 0); +} + +/* When growing the vp8 header keep gst_rtp_vp8_calc_payload_len in sync */ +static GstBuffer * +gst_rtp_vp8_create_header_buffer (GstRtpVP8Pay * self, guint8 partid, + gboolean start, gboolean mark, GstBuffer * in) +{ + GstBuffer *out; + guint8 *p; + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + + out = gst_rtp_buffer_new_allocate (gst_rtp_vp8_calc_header_len (self), 0, 0); + gst_rtp_buffer_map (out, GST_MAP_READWRITE, &rtpbuffer); + p = gst_rtp_buffer_get_payload (&rtpbuffer); + /* X=0,R=0,N=0,S=start,PartID=partid */ + p[0] = (start << 4) | partid; + if (self->picture_id_mode != VP8_PAY_NO_PICTURE_ID) { + /* Enable X=1 */ + p[0] |= 0x80; + /* X: I=1,L=0,T=0,K=0,RSV=0 */ + p[1] = 0x80; + if (self->picture_id_mode == VP8_PAY_PICTURE_ID_7BITS) { + /* I: 7 bit picture_id */ + p[2] = self->picture_id & 0x7F; + } else { + /* I: 15 bit picture_id */ + p[2] = 0x80 | ((self->picture_id & 0x7FFF) >> 8); + p[3] = self->picture_id & 0xFF; + } + } + + gst_rtp_buffer_set_marker (&rtpbuffer, mark); + + gst_rtp_buffer_unmap (&rtpbuffer); + + GST_BUFFER_DURATION (out) = GST_BUFFER_DURATION (in); + GST_BUFFER_PTS (out) = GST_BUFFER_PTS (in); + + return out; +} + + +static guint +gst_rtp_vp8_payload_next (GstRtpVP8Pay * self, + GstBufferList * list, guint offset, GstBuffer * buffer) +{ + guint partition; + GstBuffer *header; + GstBuffer *sub; + GstBuffer *out; + gboolean mark; + gsize remaining; + gsize available; + + remaining = gst_buffer_get_size (buffer) - offset; + available = gst_rtp_vp8_calc_payload_len (self); + if (available > remaining) + available = remaining; + + partition = gst_rtp_vp8_offset_to_partition (self, offset); + g_assert (partition < self->n_partitions); + + mark = (remaining == available); + /* whole set of partitions, payload them and done */ + header = gst_rtp_vp8_create_header_buffer (self, partition, + offset == self->partition_offset[partition], mark, buffer); + sub = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, offset, available); + + out = gst_buffer_append (header, sub); + + gst_buffer_list_insert (list, -1, out); + + return available; +} + + +static GstFlowReturn +gst_rtp_vp8_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer) +{ + GstRtpVP8Pay *self = GST_RTP_VP8_PAY (payload); + GstFlowReturn ret; + GstBufferList *list; + guint offset; + + if (G_UNLIKELY (!gst_rtp_vp8_pay_parse_frame (self, buffer))) { + g_message ("Failed to parse frame"); + return GST_FLOW_ERROR; + } + + list = gst_buffer_list_new (); + + for (offset = 0; offset < gst_buffer_get_size (buffer);) + offset += gst_rtp_vp8_payload_next (self, list, offset, buffer); + + ret = gst_rtp_base_payload_push_list (payload, list); + + /* Incremenent and wrap the picture id if it overflows */ + if ((self->picture_id_mode == VP8_PAY_PICTURE_ID_7BITS && + ++self->picture_id >= 0x80) || + (self->picture_id_mode == VP8_PAY_PICTURE_ID_15BITS && + ++self->picture_id >= 0x8000)) + self->picture_id = 0; + + return ret; +} + +static gboolean +gst_rtp_vp8_pay_sink_event (GstRTPBasePayload * payload, GstEvent * event) +{ + GstRtpVP8Pay *self = GST_RTP_VP8_PAY (payload); + + if (GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_START) { + if (self->picture_id_mode == VP8_PAY_PICTURE_ID_7BITS) + self->picture_id = g_random_int_range (0, G_MAXUINT8) & 0x7F; + else if (self->picture_id_mode == VP8_PAY_PICTURE_ID_15BITS) + self->picture_id = g_random_int_range (0, G_MAXUINT16) & 0x7FFF; + } + + return GST_RTP_BASE_PAYLOAD_CLASS (gst_rtp_vp8_pay_parent_class)->sink_event + (payload, event); +} + +static gboolean +gst_rtp_vp8_pay_set_caps (GstRTPBasePayload * payload, GstCaps * caps) +{ + gst_rtp_base_payload_set_options (payload, "video", TRUE, + "VP8-DRAFT-IETF-01", 90000); + return gst_rtp_base_payload_set_outcaps (payload, NULL); +} + +gboolean +gst_rtp_vp8_pay_plugin_init (GstPlugin * plugin) +{ + return gst_element_register (plugin, "rtpvp8pay", + GST_RANK_MARGINAL, GST_TYPE_RTP_VP8_PAY); +} diff --git a/gst/rtp/gstrtpvp8pay.h b/gst/rtp/gstrtpvp8pay.h new file mode 100644 index 0000000000000000000000000000000000000000..2472060671f2519c7b5e8fd87d1427c81cf1d743 --- /dev/null +++ b/gst/rtp/gstrtpvp8pay.h @@ -0,0 +1,74 @@ +/* + * gstrtpvp8pay.h - Header for GstRtpVP8Pay + * Copyright (C) 2011 Sjoerd Simons <sjoerd@luon.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser 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 + */ + +#ifndef __GST_RTP_VP8_PAY_H__ +#define __GST_RTP_VP8_PAY_H__ + +#include <gst/rtp/gstrtpbasepayload.h> + +G_BEGIN_DECLS + +#define GST_TYPE_RTP_VP8_PAY \ + (gst_rtp_vp8_pay_get_type()) +#define GST_RTP_VP8_PAY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_RTP_VP8_PAY, GstRtpVP8Pay)) +#define GST_RTP_VP8_PAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_RTP_VP8_PAY, GstRtpVP8PayClass)) +#define GST_IS_RTP_VP8_PAY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_RTP_VP8_PAY)) +#define GST_IS_RTP_VP8_PAY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_RTP_VP8_PAY)) +#define GST_RTP_VP8_PAY_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_RTP_VP8_PAY, GstRtpVP8PayClass)) + +typedef struct _GstRtpVP8Pay GstRtpVP8Pay; +typedef struct _GstRtpVP8PayClass GstRtpVP8PayClass; +typedef enum _PictureIDMode PictureIDMode; + +enum _PictureIDMode { + VP8_PAY_NO_PICTURE_ID, + VP8_PAY_PICTURE_ID_7BITS, + VP8_PAY_PICTURE_ID_15BITS, +}; + +struct _GstRtpVP8PayClass +{ + GstRTPBasePayloadClass parent_class; +}; + +struct _GstRtpVP8Pay +{ + GstRTPBasePayload parent; + gboolean is_keyframe; + gint n_partitions; + /* Treat frame header & tag & partition size block as the first partition, + * folowed by max. 8 data partitions. last offset is the end of the buffer */ + guint partition_offset[10]; + guint partition_size[9]; + PictureIDMode picture_id_mode; + guint16 picture_id; +}; + +GType gst_rtp_vp8_pay_get_type (void); + +gboolean gst_rtp_vp8_pay_plugin_init (GstPlugin * plugin); + +G_END_DECLS + +#endif /* #ifndef __GST_RTP_VP8_PAY_H__ */ diff --git a/gst/rtp/gstrtpvrawdepay.c b/gst/rtp/gstrtpvrawdepay.c index 4122b9ad69410fe68b5519842bb06d95cf830e49..7674122ee9a068d6661c4c4c461bef1f93e97977 100644 --- a/gst/rtp/gstrtpvrawdepay.c +++ b/gst/rtp/gstrtpvrawdepay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -171,7 +171,7 @@ gst_rtp_vraw_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps) GstRtpVRawDepay *rtpvrawdepay; gint clock_rate; const gchar *str; - gint format, width, height, pgroup, xinc, yinc; + gint format, width, height, depth, pgroup, xinc, yinc; GstCaps *srccaps; gboolean res; GstFlowReturn ret; @@ -194,6 +194,10 @@ gst_rtp_vraw_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps) goto no_height; height = atoi (str); + if (!(str = gst_structure_get_string (structure, "depth"))) + goto no_depth; + depth = atoi (str); + /* optional interlace value but we don't handle interlaced * formats yet */ if (gst_structure_get_string (structure, "interlace")) @@ -218,8 +222,14 @@ gst_rtp_vraw_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps) format = GST_VIDEO_FORMAT_AYUV; pgroup = 3; } else if (!strcmp (str, "YCbCr-4:2:2")) { - format = GST_VIDEO_FORMAT_UYVY; - pgroup = 4; + if (depth == 8) { + format = GST_VIDEO_FORMAT_UYVY; + pgroup = 4; + } else if (depth == 10) { + format = GST_VIDEO_FORMAT_UYVP; + pgroup = 5; + } else + goto unknown_format; xinc = 2; } else if (!strcmp (str, "YCbCr-4:2:0")) { format = GST_VIDEO_FORMAT_I420; @@ -268,6 +278,11 @@ no_height: GST_ERROR_OBJECT (depayload, "no height specified"); return FALSE; } +no_depth: + { + GST_ERROR_OBJECT (depayload, "no depth specified"); + return FALSE; + } interlaced: { GST_ERROR_OBJECT (depayload, "interlaced formats not supported yet"); @@ -434,6 +449,7 @@ gst_rtp_vraw_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) case GST_VIDEO_FORMAT_BGR: case GST_VIDEO_FORMAT_BGRA: case GST_VIDEO_FORMAT_UYVY: + case GST_VIDEO_FORMAT_UYVP: /* samples are packed just like gstreamer packs them */ offs /= xinc; datap = yp + (line * ystride) + (offs * pgroup); diff --git a/gst/rtp/gstrtpvrawdepay.h b/gst/rtp/gstrtpvrawdepay.h index d51e486717933a8abaf9cf32fdaa65e239848691..bf63d5c3f8c06e395edcd7af49e3ba59b86737c9 100644 --- a/gst/rtp/gstrtpvrawdepay.h +++ b/gst/rtp/gstrtpvrawdepay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_VRAW_DEPAY_H__ diff --git a/gst/rtp/gstrtpvrawpay.c b/gst/rtp/gstrtpvrawpay.c index 2ac0fcd97a65d2e44affee77d1187434253b01fa..f5b7b0da5f260c4a1bf192e41acd3820e5f99465 100644 --- a/gst/rtp/gstrtpvrawpay.c +++ b/gst/rtp/gstrtpvrawpay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -35,7 +35,7 @@ static GstStaticPadTemplate gst_rtp_vraw_pay_sink_template = GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("video/x-raw, " - "format = (string) { RGB, RGBA, BGR, BGRA, AYUYV, UYVY, I420, Y41B, UYVP, I420, Y42B, Y444 }, " + "format = (string) { RGB, RGBA, BGR, BGRA, AYUV, UYVY, I420, Y41B, UYVP }, " "width = (int) [ 1, 32767 ], " "height = (int) [ 1, 32767 ]; ") ); @@ -177,7 +177,7 @@ gst_rtp_vraw_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) break; case GST_VIDEO_FORMAT_UYVP: samplingstr = "YCbCr-4:2:2"; - pgroup = 4; + pgroup = 5; xinc = 2; depth = 10; depthstr = "10"; @@ -409,6 +409,7 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer) case GST_VIDEO_FORMAT_BGR: case GST_VIDEO_FORMAT_BGRA: case GST_VIDEO_FORMAT_UYVY: + case GST_VIDEO_FORMAT_UYVP: offs /= rtpvrawpay->xinc; memcpy (outdata, yp + (lin * ystride) + (offs * pgroup), length); outdata += length; diff --git a/gst/rtp/gstrtpvrawpay.h b/gst/rtp/gstrtpvrawpay.h index f2032eb65e74a1b91ba2b01754e0481a6cec87ee..7cd86b8b59c8d8f577bea20b61a8de9affca2557 100644 --- a/gst/rtp/gstrtpvrawpay.h +++ b/gst/rtp/gstrtpvrawpay.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_VRAW_PAY_H__ diff --git a/gst/rtpmanager/Makefile.am b/gst/rtpmanager/Makefile.am index e7420db8a9fcbad4e53ca2a7d50f35e66909983e..15f1abe56cb364eb92a86b258c40a690eaef91b7 100644 --- a/gst/rtpmanager/Makefile.am +++ b/gst/rtpmanager/Makefile.am @@ -3,21 +3,13 @@ plugin_LTLIBRARIES = libgstrtpmanager.la # FIXME 0.11: ignore GValueArray warnings for now until this is sorted ERROR_CFLAGS= -glib_enum_define = GST_RTP_BIN -glib_gen_prefix = gst_rtp_bin -glib_gen_basename = gstrtpbin - -include $(top_srcdir)/common/gst-glib-gen.mak - -built_sources = gstrtpbin-marshal.c -built_headers = gstrtpbin-marshal.h - -BUILT_SOURCES = $(built_sources) $(built_headers) - libgstrtpmanager_la_SOURCES = gstrtpmanager.c \ gstrtpbin.c \ + gstrtpdtmfmux.c \ gstrtpjitterbuffer.c \ + gstrtpmux.c \ gstrtpptdemux.c \ + gstrtprtxqueue.c \ gstrtpssrcdemux.c \ rtpjitterbuffer.c \ rtpsession.c \ @@ -25,13 +17,13 @@ libgstrtpmanager_la_SOURCES = gstrtpmanager.c \ rtpstats.c \ gstrtpsession.c -nodist_libgstrtpmanager_la_SOURCES = \ - $(built_sources) - noinst_HEADERS = gstrtpbin.h \ + gstrtpdtmfmux.h \ gstrtpjitterbuffer.h \ + gstrtpmux.h \ gstrtpptdemux.h \ gstrtpssrcdemux.h \ + gstrtprtxqueue.h \ rtpjitterbuffer.h \ rtpsession.h \ rtpsource.h \ @@ -46,12 +38,7 @@ libgstrtpmanager_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \ libgstrtpmanager_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstrtpmanager_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = gstrtpbin-marshal.list - - -Android.mk: Makefile.am $(BUILT_SOURCES) +Android.mk: Makefile.am androgenizer \ -:PROJECT libgstrtpmanager -:SHARED libgstrtpmanager \ -:TAGS eng debug \ diff --git a/gst/rtpmanager/Makefile.in b/gst/rtpmanager/Makefile.in index 69d02d5db9411be9bb608c14b45dfa0bd2d3d927..083b7d2c477f09438b63bce373fe0d1065fd3b18 100644 --- a/gst/rtpmanager/Makefile.in +++ b/gst/rtpmanager/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,33 +14,53 @@ @SET_MAKE@ -# these are the variables your Makefile.am should set -# the example is based on the colorbalance interface - -#glib_enum_headers=$(colorbalance_headers) -#glib_enum_define=GST_COLOR_BALANCE -#glib_gen_prefix=gst_color_balance -#glib_gen_basename=colorbalance - VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -61,16 +80,15 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/common/gst-glib-gen.mak subdir = gst/rtpmanager +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -140,25 +158,38 @@ libgstrtpmanager_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_libgstrtpmanager_la_OBJECTS = libgstrtpmanager_la-gstrtpmanager.lo \ libgstrtpmanager_la-gstrtpbin.lo \ + libgstrtpmanager_la-gstrtpdtmfmux.lo \ libgstrtpmanager_la-gstrtpjitterbuffer.lo \ + libgstrtpmanager_la-gstrtpmux.lo \ libgstrtpmanager_la-gstrtpptdemux.lo \ + libgstrtpmanager_la-gstrtprtxqueue.lo \ libgstrtpmanager_la-gstrtpssrcdemux.lo \ libgstrtpmanager_la-rtpjitterbuffer.lo \ libgstrtpmanager_la-rtpsession.lo \ libgstrtpmanager_la-rtpsource.lo \ libgstrtpmanager_la-rtpstats.lo \ libgstrtpmanager_la-gstrtpsession.lo -am__objects_1 = libgstrtpmanager_la-gstrtpbin-marshal.lo -nodist_libgstrtpmanager_la_OBJECTS = $(am__objects_1) -libgstrtpmanager_la_OBJECTS = $(am_libgstrtpmanager_la_OBJECTS) \ - $(nodist_libgstrtpmanager_la_OBJECTS) +libgstrtpmanager_la_OBJECTS = $(am_libgstrtpmanager_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstrtpmanager_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) \ $(libgstrtpmanager_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -171,22 +202,17 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libgstrtpmanager_la_SOURCES) \ - $(nodist_libgstrtpmanager_la_SOURCES) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgstrtpmanager_la_SOURCES) DIST_SOURCES = $(libgstrtpmanager_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ @@ -194,6 +220,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -363,6 +406,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -524,17 +568,13 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ plugin_LTLIBRARIES = libgstrtpmanager.la -glib_enum_define = GST_RTP_BIN -glib_gen_prefix = gst_rtp_bin -glib_gen_basename = gstrtpbin -enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\") -built_sources = gstrtpbin-marshal.c -built_headers = gstrtpbin-marshal.h -BUILT_SOURCES = $(built_sources) $(built_headers) libgstrtpmanager_la_SOURCES = gstrtpmanager.c \ gstrtpbin.c \ + gstrtpdtmfmux.c \ gstrtpjitterbuffer.c \ + gstrtpmux.c \ gstrtpptdemux.c \ + gstrtprtxqueue.c \ gstrtpssrcdemux.c \ rtpjitterbuffer.c \ rtpsession.c \ @@ -542,13 +582,13 @@ libgstrtpmanager_la_SOURCES = gstrtpmanager.c \ rtpstats.c \ gstrtpsession.c -nodist_libgstrtpmanager_la_SOURCES = \ - $(built_sources) - noinst_HEADERS = gstrtpbin.h \ + gstrtpdtmfmux.h \ gstrtpjitterbuffer.h \ + gstrtpmux.h \ gstrtpptdemux.h \ gstrtpssrcdemux.h \ + gstrtprtxqueue.h \ rtpjitterbuffer.h \ rtpsession.h \ rtpsource.h \ @@ -564,14 +604,11 @@ libgstrtpmanager_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \ libgstrtpmanager_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstrtpmanager_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) -CLEANFILES = $(BUILT_SOURCES) -EXTRA_DIST = gstrtpbin-marshal.list -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am +all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/gst-glib-gen.mak $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -592,7 +629,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/common/gst-glib-gen.mak: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -602,6 +638,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -628,12 +665,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstrtpmanager.la: $(libgstrtpmanager_la_OBJECTS) $(libgstrtpmanager_la_DEPENDENCIES) $(EXTRA_libgstrtpmanager_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstrtpmanager_la_LINK) -rpath $(plugindir) $(libgstrtpmanager_la_OBJECTS) $(libgstrtpmanager_la_LIBADD) $(LIBS) @@ -643,11 +683,13 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-gstrtpbin-marshal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-gstrtpbin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-gstrtpdtmfmux.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-gstrtpjitterbuffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-gstrtpmanager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-gstrtpmux.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-gstrtpptdemux.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-gstrtprtxqueue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-gstrtpsession.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-gstrtpssrcdemux.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-rtpjitterbuffer.Plo@am__quote@ @@ -656,22 +698,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpmanager_la-rtpstats.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -690,6 +735,13 @@ libgstrtpmanager_la-gstrtpbin.lo: gstrtpbin.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 $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmanager_la-gstrtpbin.lo `test -f 'gstrtpbin.c' || echo '$(srcdir)/'`gstrtpbin.c +libgstrtpmanager_la-gstrtpdtmfmux.lo: gstrtpdtmfmux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -MT libgstrtpmanager_la-gstrtpdtmfmux.lo -MD -MP -MF $(DEPDIR)/libgstrtpmanager_la-gstrtpdtmfmux.Tpo -c -o libgstrtpmanager_la-gstrtpdtmfmux.lo `test -f 'gstrtpdtmfmux.c' || echo '$(srcdir)/'`gstrtpdtmfmux.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpmanager_la-gstrtpdtmfmux.Tpo $(DEPDIR)/libgstrtpmanager_la-gstrtpdtmfmux.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpdtmfmux.c' object='libgstrtpmanager_la-gstrtpdtmfmux.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 $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmanager_la-gstrtpdtmfmux.lo `test -f 'gstrtpdtmfmux.c' || echo '$(srcdir)/'`gstrtpdtmfmux.c + libgstrtpmanager_la-gstrtpjitterbuffer.lo: gstrtpjitterbuffer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -MT libgstrtpmanager_la-gstrtpjitterbuffer.lo -MD -MP -MF $(DEPDIR)/libgstrtpmanager_la-gstrtpjitterbuffer.Tpo -c -o libgstrtpmanager_la-gstrtpjitterbuffer.lo `test -f 'gstrtpjitterbuffer.c' || echo '$(srcdir)/'`gstrtpjitterbuffer.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpmanager_la-gstrtpjitterbuffer.Tpo $(DEPDIR)/libgstrtpmanager_la-gstrtpjitterbuffer.Plo @@ -697,6 +749,13 @@ libgstrtpmanager_la-gstrtpjitterbuffer.lo: gstrtpjitterbuffer.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 $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmanager_la-gstrtpjitterbuffer.lo `test -f 'gstrtpjitterbuffer.c' || echo '$(srcdir)/'`gstrtpjitterbuffer.c +libgstrtpmanager_la-gstrtpmux.lo: gstrtpmux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -MT libgstrtpmanager_la-gstrtpmux.lo -MD -MP -MF $(DEPDIR)/libgstrtpmanager_la-gstrtpmux.Tpo -c -o libgstrtpmanager_la-gstrtpmux.lo `test -f 'gstrtpmux.c' || echo '$(srcdir)/'`gstrtpmux.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpmanager_la-gstrtpmux.Tpo $(DEPDIR)/libgstrtpmanager_la-gstrtpmux.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpmux.c' object='libgstrtpmanager_la-gstrtpmux.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 $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmanager_la-gstrtpmux.lo `test -f 'gstrtpmux.c' || echo '$(srcdir)/'`gstrtpmux.c + libgstrtpmanager_la-gstrtpptdemux.lo: gstrtpptdemux.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -MT libgstrtpmanager_la-gstrtpptdemux.lo -MD -MP -MF $(DEPDIR)/libgstrtpmanager_la-gstrtpptdemux.Tpo -c -o libgstrtpmanager_la-gstrtpptdemux.lo `test -f 'gstrtpptdemux.c' || echo '$(srcdir)/'`gstrtpptdemux.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpmanager_la-gstrtpptdemux.Tpo $(DEPDIR)/libgstrtpmanager_la-gstrtpptdemux.Plo @@ -704,6 +763,13 @@ libgstrtpmanager_la-gstrtpptdemux.lo: gstrtpptdemux.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 $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmanager_la-gstrtpptdemux.lo `test -f 'gstrtpptdemux.c' || echo '$(srcdir)/'`gstrtpptdemux.c +libgstrtpmanager_la-gstrtprtxqueue.lo: gstrtprtxqueue.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -MT libgstrtpmanager_la-gstrtprtxqueue.lo -MD -MP -MF $(DEPDIR)/libgstrtpmanager_la-gstrtprtxqueue.Tpo -c -o libgstrtpmanager_la-gstrtprtxqueue.lo `test -f 'gstrtprtxqueue.c' || echo '$(srcdir)/'`gstrtprtxqueue.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpmanager_la-gstrtprtxqueue.Tpo $(DEPDIR)/libgstrtpmanager_la-gstrtprtxqueue.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtprtxqueue.c' object='libgstrtpmanager_la-gstrtprtxqueue.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 $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmanager_la-gstrtprtxqueue.lo `test -f 'gstrtprtxqueue.c' || echo '$(srcdir)/'`gstrtprtxqueue.c + libgstrtpmanager_la-gstrtpssrcdemux.lo: gstrtpssrcdemux.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -MT libgstrtpmanager_la-gstrtpssrcdemux.lo -MD -MP -MF $(DEPDIR)/libgstrtpmanager_la-gstrtpssrcdemux.Tpo -c -o libgstrtpmanager_la-gstrtpssrcdemux.lo `test -f 'gstrtpssrcdemux.c' || echo '$(srcdir)/'`gstrtpssrcdemux.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpmanager_la-gstrtpssrcdemux.Tpo $(DEPDIR)/libgstrtpmanager_la-gstrtpssrcdemux.Plo @@ -746,39 +812,21 @@ libgstrtpmanager_la-gstrtpsession.lo: gstrtpsession.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 $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmanager_la-gstrtpsession.lo `test -f 'gstrtpsession.c' || echo '$(srcdir)/'`gstrtpsession.c -libgstrtpmanager_la-gstrtpbin-marshal.lo: gstrtpbin-marshal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -MT libgstrtpmanager_la-gstrtpbin-marshal.lo -MD -MP -MF $(DEPDIR)/libgstrtpmanager_la-gstrtpbin-marshal.Tpo -c -o libgstrtpmanager_la-gstrtpbin-marshal.lo `test -f 'gstrtpbin-marshal.c' || echo '$(srcdir)/'`gstrtpbin-marshal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpmanager_la-gstrtpbin-marshal.Tpo $(DEPDIR)/libgstrtpmanager_la-gstrtpbin-marshal.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrtpbin-marshal.c' object='libgstrtpmanager_la-gstrtpbin-marshal.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpmanager_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpmanager_la_CFLAGS) $(CFLAGS) -c -o libgstrtpmanager_la-gstrtpbin-marshal.lo `test -f 'gstrtpbin-marshal.c' || echo '$(srcdir)/'`gstrtpbin-marshal.c - mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -790,15 +838,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -807,6 +851,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -842,15 +901,13 @@ distdir: $(DISTFILES) fi; \ done check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am +check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(plugindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am +install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -872,7 +929,6 @@ install-strip: mostlyclean-generic: clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) @@ -881,7 +937,6 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ @@ -953,60 +1008,25 @@ ps-am: uninstall-am: uninstall-pluginLTLIBRARIES -.MAKE: all check install install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES - - -# these are all the rules generating the relevant files -$(glib_gen_basename)-marshal.h: $(glib_gen_basename)-marshal.list - $(AM_V_GEN)$(GLIB_GENMARSHAL) --header --prefix=$(glib_gen_prefix)_marshal $^ > $(glib_gen_basename)-marshal.h.tmp && \ - mv $(glib_gen_basename)-marshal.h.tmp $(glib_gen_basename)-marshal.h - -$(glib_gen_basename)-marshal.c: $(glib_gen_basename)-marshal.list - $(AM_V_GEN)echo "#include \"$(glib_gen_basename)-marshal.h\"" >> $(glib_gen_basename)-marshal.c.tmp && \ - $(GLIB_GENMARSHAL) --body --prefix=$(glib_gen_prefix)_marshal $^ >> $(glib_gen_basename)-marshal.c.tmp && \ - mv $(glib_gen_basename)-marshal.c.tmp $(glib_gen_basename)-marshal.c - -$(glib_gen_basename)-enumtypes.h: $(glib_enum_headers) - $(AM_V_GEN)$(GLIB_MKENUMS) \ - --fhead "#ifndef __$(glib_enum_define)_ENUM_TYPES_H__\n#define __$(glib_enum_define)_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \ - --fprod "\n/* enumerations from \"@filename@\" */\n" \ - --vhead "GType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ - --ftail "G_END_DECLS\n\n#endif /* __$(glib_enum_define)_ENUM_TYPES_H__ */" \ - $^ > $@ - -$(glib_gen_basename)-enumtypes.c: $(glib_enum_headers) - @if test "x$(glib_enum_headers)" = "x"; then echo "ERROR: glib_enum_headers is empty, please fix Makefile"; exit 1; fi - $(AM_V_GEN)$(GLIB_MKENUMS) \ - --fhead "#include \"$(glib_gen_basename)-enumtypes.h\"\n$(enum_headers)" \ - --fprod "\n/* enumerations from \"@filename@\" */" \ - --vhead "GType\n@enum_name@_get_type (void)\n{\n static volatile gsize g_define_type_id__volatile = 0;\n if (g_once_init_enter (&g_define_type_id__volatile)) {\n static const G@Type@Value values[] = {" \ - --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ - --vtail " { 0, NULL, NULL }\n };\n GType g_define_type_id = g_@type@_register_static (\"@EnumName@\", values);\n g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n }\n return g_define_type_id__volatile;\n}\n" \ - $^ > $@ - -# a hack rule to make sure .Plo files exist because they get include'd -# from Makefile's -.deps/%-marshal.Plo: - @touch $@ - -.deps/%-enumtypes.Plo: - @touch $@ - -Android.mk: Makefile.am $(BUILT_SOURCES) +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES + + +Android.mk: Makefile.am androgenizer \ -:PROJECT libgstrtpmanager -:SHARED libgstrtpmanager \ -:TAGS eng debug \ diff --git a/gst/rtpmanager/gstrtpbin-marshal.list b/gst/rtpmanager/gstrtpbin-marshal.list deleted file mode 100644 index 5e52102e374da0da7bff93bc29de4d7bc553fb4b..0000000000000000000000000000000000000000 --- a/gst/rtpmanager/gstrtpbin-marshal.list +++ /dev/null @@ -1,12 +0,0 @@ -UINT:UINT -BOXED:UINT -BOXED:UINT,UINT -OBJECT:UINT -VOID:UINT,OBJECT -VOID:UINT -VOID:UINT,UINT -VOID:OBJECT,OBJECT -UINT64:BOOL,UINT64 -VOID:UINT64 -BOOL:BOXED,BOOL -VOID:UINT,UINT,UINT,UINT,BOXED diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c index 4d8e54e3b300ebd4280677bd18641e02c0f83dfe..4236cd160b1280e6c7b7d9cc54dc2102037688a3 100644 --- a/gst/rtpmanager/gstrtpbin.c +++ b/gst/rtpmanager/gstrtpbin.c @@ -13,13 +13,13 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** - * SECTION:element-gstrtpbin - * @see_also: gstrtpjitterbuffer, gstrtpsession, gstrtpptdemux, gstrtpssrcdemux + * SECTION:element-rtpbin + * @see_also: rtpjitterbuffer, rtpsession, rtpptdemux, rtpssrcdemux * * RTP bin combines the functions of #GstRtpSession, #GstRtpSsrcDemux, * #GstRtpJitterBuffer and #GstRtpPtDemux in one element. It allows for multiple @@ -36,7 +36,7 @@ * the packets are released from the jitterbuffer, they will be forwarded to a * #GstRtpPtDemux element. The #GstRtpPtDemux element will demux the packets based * on the payload type and will create a unique pad recv_rtp_src_\%u_\%u_\%u on - * gstrtpbin with the session number, SSRC and payload type respectively as the pad + * rtpbin with the session number, SSRC and payload type respectively as the pad * name. * * To also use #GstRtpBin as an RTCP receiver, request a recv_rtcp_sink_\%u pad. The @@ -58,7 +58,7 @@ * mapping. One can clear the cached values with the #GstRtpSession::clear-pt-map * signal. * - * Access to the internal statistics of gstrtpbin is provided with the + * Access to the internal statistics of rtpbin is provided with the * get-internal-session property. This action signal gives access to the * RTPSession object which further provides action signals to retrieve the * internal source and other sources. @@ -67,10 +67,10 @@ * <title>Example pipelines</title> * |[ * gst-launch-1.0 udpsrc port=5000 caps="application/x-rtp, ..." ! .recv_rtp_sink_0 \ - * gstrtpbin ! rtptheoradepay ! theoradec ! xvimagesink - * ]| Receive RTP data from port 5000 and send to the session 0 in gstrtpbin. + * rtpbin ! rtptheoradepay ! theoradec ! xvimagesink + * ]| Receive RTP data from port 5000 and send to the session 0 in rtpbin. * |[ - * gst-launch-1.0 gstrtpbin name=rtpbin \ + * gst-launch-1.0 rtpbin name=rtpbin \ * v4l2src ! videoconvert ! ffenc_h263 ! rtph263ppay ! rtpbin.send_rtp_sink_0 \ * rtpbin.send_rtp_src_0 ! udpsink port=5000 \ * rtpbin.send_rtcp_src_0 ! udpsink port=5001 sync=false async=false \ @@ -89,7 +89,7 @@ * as soon as possible and do not participate in preroll, sync=false and * async=false is configured on udpsink * |[ - * gst-launch-1.0 -v gstrtpbin name=rtpbin \ + * gst-launch-1.0 -v rtpbin name=rtpbin \ * udpsrc caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998" \ * port=5000 ! rtpbin.recv_rtp_sink_0 \ * rtpbin. ! rtph263pdepay ! ffdec_h263 ! xvimagesink \ @@ -123,7 +123,6 @@ #include <gst/rtp/gstrtpbuffer.h> #include <gst/rtp/gstrtcpbuffer.h> -#include "gstrtpbin-marshal.h" #include "gstrtpbin.h" #include "rtpsession.h" #include "gstrtpsession.h" @@ -253,6 +252,8 @@ enum #define DEFAULT_USE_PIPELINE_CLOCK FALSE #define DEFAULT_RTCP_SYNC GST_RTP_BIN_RTCP_SYNC_ALWAYS #define DEFAULT_RTCP_SYNC_INTERVAL 0 +#define DEFAULT_DO_SYNC_EVENT FALSE +#define DEFAULT_DO_RETRANSMISSION FALSE enum { @@ -268,6 +269,8 @@ enum PROP_AUTOREMOVE, PROP_BUFFER_MODE, PROP_USE_PIPELINE_CLOCK, + PROP_DO_SYNC_EVENT, + PROP_DO_RETRANSMISSION, PROP_LAST }; @@ -312,7 +315,7 @@ static void remove_recv_rtcp (GstRtpBin * rtpbin, GstRtpBinSession * session); static void remove_send_rtp (GstRtpBin * rtpbin, GstRtpBinSession * session); static void remove_rtcp (GstRtpBin * rtpbin, GstRtpBinSession * session); static void free_client (GstRtpBinClient * client, GstRtpBin * bin); -static void free_stream (GstRtpBinStream * stream); +static void free_stream (GstRtpBinStream * stream, GstRtpBin * bin); /* Manages the RTP stream for one SSRC. * @@ -545,6 +548,11 @@ ssrc_demux_pad_removed (GstElement * element, guint ssrc, GstPad * pad, GstRtpBinSession * session) { GstRtpBinStream *stream = NULL; + GstRtpBin *rtpbin; + + rtpbin = session->bin; + + GST_RTP_BIN_LOCK (rtpbin); GST_RTP_SESSION_LOCK (session); if ((stream = find_stream_by_ssrc (session, ssrc))) @@ -552,7 +560,9 @@ ssrc_demux_pad_removed (GstElement * element, guint ssrc, GstPad * pad, GST_RTP_SESSION_UNLOCK (session); if (stream) - free_stream (stream); + free_stream (stream, rtpbin); + + GST_RTP_BIN_UNLOCK (rtpbin); } /* create a session with the given id. Must be called with RTP_BIN_LOCK */ @@ -638,8 +648,6 @@ no_demux: static void free_session (GstRtpBinSession * sess, GstRtpBin * bin) { - GSList *client_walk; - GST_DEBUG_OBJECT (bin, "freeing session %p", sess); gst_element_set_locked_state (sess->demux, TRUE); @@ -656,40 +664,7 @@ free_session (GstRtpBinSession * sess, GstRtpBin * bin) gst_bin_remove (GST_BIN_CAST (bin), sess->session); gst_bin_remove (GST_BIN_CAST (bin), sess->demux); - /* remove any references in bin->clients to the streams in sess->streams */ - client_walk = bin->clients; - while (client_walk) { - GSList *client_node = client_walk; - GstRtpBinClient *client = (GstRtpBinClient *) client_node->data; - GSList *stream_walk = client->streams; - - while (stream_walk) { - GSList *stream_node = stream_walk; - GstRtpBinStream *stream = (GstRtpBinStream *) stream_node->data; - GSList *inner_walk; - - stream_walk = g_slist_next (stream_walk); - - for (inner_walk = sess->streams; inner_walk; - inner_walk = g_slist_next (inner_walk)) { - if ((GstRtpBinStream *) inner_walk->data == stream) { - client->streams = g_slist_delete_link (client->streams, stream_node); - --client->nstreams; - break; - } - } - } - client_walk = g_slist_next (client_walk); - - g_assert ((client->streams && client->nstreams > 0) || (!client->streams - && client->streams == 0)); - if (client->nstreams == 0) { - free_client (client, bin); - bin->clients = g_slist_delete_link (bin->clients, client_node); - } - } - - g_slist_foreach (sess->streams, (GFunc) free_stream, NULL); + g_slist_foreach (sess->streams, (GFunc) free_stream, bin); g_slist_free (sess->streams); g_mutex_clear (&sess->lock); @@ -1003,6 +978,25 @@ stream_set_ts_offset (GstRtpBin * bin, GstRtpBinStream * stream, stream->ssrc, ts_offset); } +static void +gst_rtp_bin_send_sync_event (GstRtpBinStream * stream) +{ + if (stream->bin->send_sync_event) { + GstEvent *event; + GstPad *srcpad; + + GST_DEBUG_OBJECT (stream->bin, + "sending GstRTCPSRReceived event downstream"); + + event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM, + gst_structure_new_empty ("GstRTCPSRReceived")); + + srcpad = gst_element_get_static_pad (stream->buffer, "src"); + gst_pad_push_event (srcpad, event); + gst_object_unref (srcpad); + } +} + /* associate a stream to the given CNAME. This will make sure all streams for * that CNAME are synchronized together. * Must be called with GST_RTP_BIN_LOCK */ @@ -1269,6 +1263,8 @@ gst_rtp_bin_associate (GstRtpBin * bin, GstRtpBinStream * stream, guint8 len, stream_set_ts_offset (bin, ostream, ts_offset, TRUE); } } + gst_rtp_bin_send_sync_event (stream); + return; } @@ -1435,6 +1431,7 @@ create_stream (GstRtpBinSession * session, guint32 ssrc) g_object_set (buffer, "drop-on-latency", rtpbin->drop_on_latency, NULL); g_object_set (buffer, "do-lost", rtpbin->do_lost, NULL); g_object_set (buffer, "mode", rtpbin->buffer_mode, NULL); + g_object_set (buffer, "do-retransmission", rtpbin->do_retransmission, NULL); if (!rtpbin->ignore_pt) gst_bin_add (GST_BIN_CAST (rtpbin), demux); @@ -1479,12 +1476,13 @@ no_demux: } } +/* called with RTP_BIN_LOCK */ static void -free_stream (GstRtpBinStream * stream) +free_stream (GstRtpBinStream * stream, GstRtpBin * bin) { - GstRtpBinSession *session; + GSList *clients, *next_client; - session = stream->session; + GST_DEBUG_OBJECT (bin, "freeing stream %p", stream); if (stream->demux) { g_signal_handler_disconnect (stream->demux, stream->demux_newpad_sig); @@ -1508,10 +1506,33 @@ free_stream (GstRtpBinStream * stream) if (stream->demux) g_signal_handler_disconnect (stream->demux, stream->demux_padremoved_sig); - gst_bin_remove (GST_BIN_CAST (session->bin), stream->buffer); + gst_bin_remove (GST_BIN_CAST (bin), stream->buffer); if (stream->demux) - gst_bin_remove (GST_BIN_CAST (session->bin), stream->demux); + gst_bin_remove (GST_BIN_CAST (bin), stream->demux); + + for (clients = bin->clients; clients; clients = next_client) { + GstRtpBinClient *client = (GstRtpBinClient *) clients->data; + GSList *streams, *next_stream; + + next_client = g_slist_next (clients); + + for (streams = client->streams; streams; streams = next_stream) { + GstRtpBinStream *ostream = (GstRtpBinStream *) streams->data; + next_stream = g_slist_next (streams); + + if (ostream == stream) { + client->streams = g_slist_delete_link (client->streams, streams); + /* If this was the last stream belonging to this client, + * clean up the client. */ + if (--client->nstreams == 0) { + bin->clients = g_slist_delete_link (bin->clients, clients); + free_client (client, bin); + break; + } + } + } + } g_free (stream); } @@ -1575,8 +1596,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_REQUEST_PT_MAP] = g_signal_new ("request-pt-map", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, request_pt_map), - NULL, NULL, gst_rtp_bin_marshal_BOXED__UINT_UINT, GST_TYPE_CAPS, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, GST_TYPE_CAPS, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::payload-type-change: @@ -1591,8 +1612,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_PAYLOAD_TYPE_CHANGE] = g_signal_new ("payload-type-change", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, payload_type_change), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::clear-pt-map: @@ -1630,7 +1651,7 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_GET_INTERNAL_SESSION] = g_signal_new ("get-internal-session", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GstRtpBinClass, - get_internal_session), NULL, NULL, gst_rtp_bin_marshal_OBJECT__UINT, + get_internal_session), NULL, NULL, g_cclosure_marshal_generic, RTP_TYPE_SESSION, 1, G_TYPE_UINT); /** @@ -1644,8 +1665,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_ON_NEW_SSRC] = g_signal_new ("on-new-ssrc", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, on_new_ssrc), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::on-ssrc-collision: * @rtpbin: the object which received the signal @@ -1657,8 +1678,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_ON_SSRC_COLLISION] = g_signal_new ("on-ssrc-collision", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, on_ssrc_collision), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::on-ssrc-validated: * @rtpbin: the object which received the signal @@ -1670,8 +1691,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_ON_SSRC_VALIDATED] = g_signal_new ("on-ssrc-validated", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, on_ssrc_validated), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::on-ssrc-active: * @rtpbin: the object which received the signal @@ -1683,8 +1704,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_ON_SSRC_ACTIVE] = g_signal_new ("on-ssrc-active", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, on_ssrc_active), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::on-ssrc-sdes: * @rtpbin: the object which received the signal @@ -1696,8 +1717,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_ON_SSRC_SDES] = g_signal_new ("on-ssrc-sdes", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, on_ssrc_sdes), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::on-bye-ssrc: @@ -1710,8 +1731,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_ON_BYE_SSRC] = g_signal_new ("on-bye-ssrc", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, on_bye_ssrc), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::on-bye-timeout: * @rtpbin: the object which received the signal @@ -1723,8 +1744,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_ON_BYE_TIMEOUT] = g_signal_new ("on-bye-timeout", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, on_bye_timeout), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::on-timeout: * @rtpbin: the object which received the signal @@ -1736,8 +1757,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_ON_TIMEOUT] = g_signal_new ("on-timeout", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, on_timeout), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::on-sender-timeout: * @rtpbin: the object which received the signal @@ -1749,8 +1770,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_ON_SENDER_TIMEOUT] = g_signal_new ("on-sender-timeout", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, on_sender_timeout), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRtpBin::on-npt-stop: @@ -1763,8 +1784,8 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) gst_rtp_bin_signals[SIGNAL_ON_NPT_STOP] = g_signal_new ("on-npt-stop", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpBinClass, on_npt_stop), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); g_object_class_install_property (gobject_class, PROP_SDES, g_param_spec_boxed ("sdes", "SDES", @@ -1844,6 +1865,17 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) 0, G_MAXUINT, DEFAULT_RTCP_SYNC_INTERVAL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_DO_SYNC_EVENT, + g_param_spec_boolean ("do-sync-event", "Do Sync Event", + "Send event downstream when a stream is synchronized to the sender", + DEFAULT_DO_SYNC_EVENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_DO_RETRANSMISSION, + g_param_spec_boolean ("do-retransmission", "Do retransmission", + "Send an event downstream to request packet retransmission", + DEFAULT_DO_RETRANSMISSION, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_rtp_bin_change_state); gstelement_class->request_new_pad = GST_DEBUG_FUNCPTR (gst_rtp_bin_request_new_pad); @@ -1900,6 +1932,8 @@ gst_rtp_bin_init (GstRtpBin * rtpbin) rtpbin->priv->autoremove = DEFAULT_AUTOREMOVE; rtpbin->buffer_mode = DEFAULT_BUFFER_MODE; rtpbin->use_pipeline_clock = DEFAULT_USE_PIPELINE_CLOCK; + rtpbin->send_sync_event = DEFAULT_DO_SYNC_EVENT; + rtpbin->do_retransmission = DEFAULT_DO_RETRANSMISSION; /* some default SDES entries */ cname = g_strdup_printf ("user%u@host-%x", g_random_int (), g_random_int ()); @@ -1920,10 +1954,6 @@ gst_rtp_bin_dispose (GObject * object) g_slist_foreach (rtpbin->sessions, (GFunc) free_session, rtpbin); g_slist_free (rtpbin->sessions); rtpbin->sessions = NULL; - GST_DEBUG_OBJECT (object, "freeing clients"); - g_slist_foreach (rtpbin->clients, (GFunc) free_client, rtpbin); - g_slist_free (rtpbin->clients); - rtpbin->clients = NULL; GST_RTP_BIN_UNLOCK (rtpbin); G_OBJECT_CLASS (parent_class)->dispose (object); @@ -2047,6 +2077,9 @@ gst_rtp_bin_set_property (GObject * object, guint prop_id, GST_RTP_BIN_UNLOCK (rtpbin); } break; + case PROP_DO_SYNC_EVENT: + rtpbin->send_sync_event = g_value_get_boolean (value); + break; case PROP_BUFFER_MODE: GST_RTP_BIN_LOCK (rtpbin); rtpbin->buffer_mode = g_value_get_enum (value); @@ -2054,6 +2087,13 @@ gst_rtp_bin_set_property (GObject * object, guint prop_id, /* propagate the property down to the jitterbuffer */ gst_rtp_bin_propagate_property_to_jitterbuffer (rtpbin, "mode", value); break; + case PROP_DO_RETRANSMISSION: + GST_RTP_BIN_LOCK (rtpbin); + rtpbin->do_retransmission = g_value_get_boolean (value); + GST_RTP_BIN_UNLOCK (rtpbin); + gst_rtp_bin_propagate_property_to_jitterbuffer (rtpbin, + "do-retransmission", value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -2108,6 +2148,14 @@ gst_rtp_bin_get_property (GObject * object, guint prop_id, case PROP_USE_PIPELINE_CLOCK: g_value_set_boolean (value, rtpbin->use_pipeline_clock); break; + case PROP_DO_SYNC_EVENT: + g_value_set_boolean (value, rtpbin->send_sync_event); + break; + case PROP_DO_RETRANSMISSION: + GST_RTP_BIN_LOCK (rtpbin); + g_value_set_boolean (value, rtpbin->do_retransmission); + GST_RTP_BIN_UNLOCK (rtpbin); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; diff --git a/gst/rtpmanager/gstrtpbin.h b/gst/rtpmanager/gstrtpbin.h index 1734560016f1a55fb9dd36e375be161e90aa8a59..e46399274e4355222e138cc52881138f9f695181 100644 --- a/gst/rtpmanager/gstrtpbin.h +++ b/gst/rtpmanager/gstrtpbin.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_BIN_H__ @@ -56,7 +56,9 @@ struct _GstRtpBin { RTPJitterBufferMode buffer_mode; gboolean buffering; gboolean use_pipeline_clock; + gboolean send_sync_event; GstClockTime buffer_start; + gboolean do_retransmission; /* a list of session */ GSList *sessions; diff --git a/gst/rtpmanager/gstrtpdtmfmux.c b/gst/rtpmanager/gstrtpdtmfmux.c new file mode 100644 index 0000000000000000000000000000000000000000..e0f6bf4d23242c8da36ce1e53c336c9e30ecab0b --- /dev/null +++ b/gst/rtpmanager/gstrtpdtmfmux.c @@ -0,0 +1,233 @@ +/* RTP DTMF muxer element for GStreamer + * + * gstrtpdtmfmux.c: + * + * Copyright (C) <2007-2010> Nokia Corporation. + * Contact: Zeeshan Ali <zeeshan.ali@nokia.com> + * Copyright (C) <2007-2010> Collabora Ltd + * Contact: Olivier Crete <olivier.crete@collabora.co.uk> + * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> + * 2000,2005 Wim Taymans <wim@fluendo.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpdtmfmux + * @see_also: rtpdtmfsrc, dtmfsrc, rtpmux + * + * The RTP "DTMF" Muxer muxes multiple RTP streams into a valid RTP + * stream. It does exactly what its parent (#rtpmux) does, except + * that it prevent buffers coming over a regular sink_%%u pad from going through + * for the duration of buffers that came in a priority_sink_%%u pad. + * + * This is especially useful if a discontinuous source like dtmfsrc or + * rtpdtmfsrc are connected to the priority sink pads. This way, the generated + * DTMF signal can replace the recorded audio while the tone is being sent. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <gst/gst.h> +#include <string.h> + +#include "gstrtpdtmfmux.h" + +GST_DEBUG_CATEGORY_STATIC (gst_rtp_dtmf_mux_debug); +#define GST_CAT_DEFAULT gst_rtp_dtmf_mux_debug + +static GstStaticPadTemplate priority_sink_factory = +GST_STATIC_PAD_TEMPLATE ("priority_sink_%u", + GST_PAD_SINK, + GST_PAD_REQUEST, + GST_STATIC_CAPS ("application/x-rtp")); + +static GstPad *gst_rtp_dtmf_mux_request_new_pad (GstElement * element, + GstPadTemplate * templ, const gchar * name, const GstCaps * caps); +static GstStateChangeReturn gst_rtp_dtmf_mux_change_state (GstElement * element, + GstStateChange transition); + +static gboolean gst_rtp_dtmf_mux_accept_buffer_locked (GstRTPMux * rtp_mux, + GstRTPMuxPadPrivate * padpriv, GstRTPBuffer * rtpbuffer); +static gboolean gst_rtp_dtmf_mux_src_event (GstRTPMux * rtp_mux, + GstEvent * event); + +G_DEFINE_TYPE (GstRTPDTMFMux, gst_rtp_dtmf_mux, GST_TYPE_RTP_MUX); + +static void +gst_rtp_dtmf_mux_init (GstRTPDTMFMux * mux) +{ +} + + +static void +gst_rtp_dtmf_mux_class_init (GstRTPDTMFMuxClass * klass) +{ + GstElementClass *gstelement_class; + GstRTPMuxClass *gstrtpmux_class; + + gstelement_class = (GstElementClass *) klass; + gstrtpmux_class = (GstRTPMuxClass *) klass; + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&priority_sink_factory)); + + gst_element_class_set_static_metadata (gstelement_class, "RTP muxer", + "Codec/Muxer", + "mixes RTP DTMF streams into other RTP streams", + "Zeeshan Ali <first.last@nokia.com>"); + + gstelement_class->request_new_pad = + GST_DEBUG_FUNCPTR (gst_rtp_dtmf_mux_request_new_pad); + gstelement_class->change_state = + GST_DEBUG_FUNCPTR (gst_rtp_dtmf_mux_change_state); + gstrtpmux_class->accept_buffer_locked = gst_rtp_dtmf_mux_accept_buffer_locked; + gstrtpmux_class->src_event = gst_rtp_dtmf_mux_src_event; +} + +static gboolean +gst_rtp_dtmf_mux_accept_buffer_locked (GstRTPMux * rtp_mux, + GstRTPMuxPadPrivate * padpriv, GstRTPBuffer * rtpbuffer) +{ + GstRTPDTMFMux *mux = GST_RTP_DTMF_MUX (rtp_mux); + GstClockTime running_ts; + + running_ts = GST_BUFFER_PTS (rtpbuffer->buffer); + + if (GST_CLOCK_TIME_IS_VALID (running_ts)) { + if (padpriv && padpriv->segment.format == GST_FORMAT_TIME) + running_ts = gst_segment_to_running_time (&padpriv->segment, + GST_FORMAT_TIME, GST_BUFFER_PTS (rtpbuffer->buffer)); + + if (padpriv && padpriv->priority) { + if (GST_BUFFER_PTS_IS_VALID (rtpbuffer->buffer)) { + if (GST_CLOCK_TIME_IS_VALID (mux->last_priority_end)) + mux->last_priority_end = + MAX (running_ts + GST_BUFFER_DURATION (rtpbuffer->buffer), + mux->last_priority_end); + else + mux->last_priority_end = running_ts + + GST_BUFFER_DURATION (rtpbuffer->buffer); + GST_LOG_OBJECT (mux, "Got buffer %p on priority pad, " + " blocking regular pads until %" GST_TIME_FORMAT, rtpbuffer->buffer, + GST_TIME_ARGS (mux->last_priority_end)); + } else { + GST_WARNING_OBJECT (mux, "Buffer %p has an invalid duration," + " not blocking other pad", rtpbuffer->buffer); + } + } else { + if (GST_CLOCK_TIME_IS_VALID (mux->last_priority_end) && + running_ts < mux->last_priority_end) { + GST_LOG_OBJECT (mux, "Dropping buffer %p because running time" + " %" GST_TIME_FORMAT " < %" GST_TIME_FORMAT, rtpbuffer->buffer, + GST_TIME_ARGS (running_ts), GST_TIME_ARGS (mux->last_priority_end)); + return FALSE; + } + } + } else { + GST_LOG_OBJECT (mux, "Buffer %p has an invalid timestamp," + " letting through", rtpbuffer->buffer); + } + + return TRUE; +} + + +static GstPad * +gst_rtp_dtmf_mux_request_new_pad (GstElement * element, GstPadTemplate * templ, + const gchar * name, const GstCaps * caps) +{ + GstPad *pad; + + pad = + GST_ELEMENT_CLASS (gst_rtp_dtmf_mux_parent_class)->request_new_pad + (element, templ, name, caps); + + if (pad) { + GstRTPMuxPadPrivate *padpriv; + + GST_OBJECT_LOCK (element); + padpriv = gst_pad_get_element_private (pad); + + if (gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (element), + "priority_sink_%u") == gst_pad_get_pad_template (pad)) + padpriv->priority = TRUE; + GST_OBJECT_UNLOCK (element); + } + + return pad; +} + +static gboolean +gst_rtp_dtmf_mux_src_event (GstRTPMux * rtp_mux, GstEvent * event) +{ + if (GST_EVENT_TYPE (event) == GST_EVENT_CUSTOM_UPSTREAM) { + const GstStructure *s = gst_event_get_structure (event); + + if (s && gst_structure_has_name (s, "dtmf-event")) { + GST_OBJECT_LOCK (rtp_mux); + if (GST_CLOCK_TIME_IS_VALID (rtp_mux->last_stop)) { + event = (GstEvent *) + gst_mini_object_make_writable (GST_MINI_OBJECT_CAST (event)); + s = gst_event_get_structure (event); + gst_structure_set ((GstStructure *) s, + "last-stop", G_TYPE_UINT64, rtp_mux->last_stop, NULL); + } + GST_OBJECT_UNLOCK (rtp_mux); + } + } + + return GST_RTP_MUX_CLASS (gst_rtp_dtmf_mux_parent_class)->src_event (rtp_mux, + event); +} + + +static GstStateChangeReturn +gst_rtp_dtmf_mux_change_state (GstElement * element, GstStateChange transition) +{ + GstStateChangeReturn ret; + GstRTPDTMFMux *mux = GST_RTP_DTMF_MUX (element); + + switch (transition) { + case GST_STATE_CHANGE_READY_TO_PAUSED: + { + GST_OBJECT_LOCK (mux); + mux->last_priority_end = GST_CLOCK_TIME_NONE; + GST_OBJECT_UNLOCK (mux); + break; + } + default: + break; + } + + ret = + GST_ELEMENT_CLASS (gst_rtp_dtmf_mux_parent_class)->change_state (element, + transition); + + return ret; +} + +gboolean +gst_rtp_dtmf_mux_plugin_init (GstPlugin * plugin) +{ + GST_DEBUG_CATEGORY_INIT (gst_rtp_dtmf_mux_debug, "rtpdtmfmux", 0, + "rtp dtmf muxer"); + + return gst_element_register (plugin, "rtpdtmfmux", GST_RANK_NONE, + GST_TYPE_RTP_DTMF_MUX); +} diff --git a/gst/rtpmanager/gstrtpdtmfmux.h b/gst/rtpmanager/gstrtpdtmfmux.h new file mode 100644 index 0000000000000000000000000000000000000000..651e9ece7e0969753f838b907a1acbcddd7706a0 --- /dev/null +++ b/gst/rtpmanager/gstrtpdtmfmux.h @@ -0,0 +1,67 @@ +/* RTP muxer element for GStreamer + * + * gstrtpdtmfmux.h: + * + * Copyright (C) <2007> Nokia Corporation. + * Contact: Zeeshan Ali <zeeshan.ali@nokia.com> + * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> + * 2000,2005 Wim Taymans <wim@fluendo.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_RTP_DTMF_MUX_H__ +#define __GST_RTP_DTMF_MUX_H__ + +#include <gst/gst.h> +#include "gstrtpmux.h" + +G_BEGIN_DECLS +#define GST_TYPE_RTP_DTMF_MUX (gst_rtp_dtmf_mux_get_type()) +#define GST_RTP_DTMF_MUX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_DTMF_MUX, GstRTPDTMFMux)) +#define GST_RTP_DTMF_MUX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_DTMF_MUX, GstRTPDTMFMux)) +#define GST_IS_RTP_DTMF_MUX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_DTMF_MUX)) +#define GST_IS_RTP_DTMF_MUX_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DTMF_MUX)) +typedef struct _GstRTPDTMFMux GstRTPDTMFMux; +typedef struct _GstRTPDTMFMuxClass GstRTPDTMFMuxClass; + +/** + * GstRTPDTMFMux: + * + * The opaque #GstRTPDTMFMux structure. + */ +struct _GstRTPDTMFMux +{ + GstRTPMux mux; + + /* Protected by object lock */ + GstClockTime last_priority_end; +}; + +struct _GstRTPDTMFMuxClass +{ + GstRTPMuxClass parent_class; + + /* signals */ + void (*locking) (GstElement * element, GstPad * pad); + void (*unlocked) (GstElement * element, GstPad * pad); +}; + +GType gst_rtp_dtmf_mux_get_type (void); +gboolean gst_rtp_dtmf_mux_plugin_init (GstPlugin * plugin); + +G_END_DECLS +#endif /* __GST_RTP_DTMF_MUX_H__ */ diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index 2cdcf4040065d7d92944ceece21b8a7a7989b9a1..bf676e6eeb9867e07d88366f194d5bf8abce1818 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ @@ -61,8 +61,6 @@ #include <string.h> #include <gst/rtp/gstrtpbuffer.h> -#include "gstrtpbin-marshal.h" - #include "gstrtpjitterbuffer.h" #include "rtpjitterbuffer.h" #include "rtpstats.h" @@ -83,12 +81,17 @@ enum LAST_SIGNAL }; -#define DEFAULT_LATENCY_MS 200 -#define DEFAULT_DROP_ON_LATENCY FALSE -#define DEFAULT_TS_OFFSET 0 -#define DEFAULT_DO_LOST FALSE -#define DEFAULT_MODE RTP_JITTER_BUFFER_MODE_SLAVE -#define DEFAULT_PERCENT 0 +#define DEFAULT_LATENCY_MS 200 +#define DEFAULT_DROP_ON_LATENCY FALSE +#define DEFAULT_TS_OFFSET 0 +#define DEFAULT_DO_LOST FALSE +#define DEFAULT_MODE RTP_JITTER_BUFFER_MODE_SLAVE +#define DEFAULT_PERCENT 0 +#define DEFAULT_DO_RETRANSMISSION FALSE +#define DEFAULT_RTX_DELAY 20 +#define DEFAULT_RTX_DELAY_REORDER 3 +#define DEFAULT_RTX_RETRY_TIMEOUT 40 +#define DEFAULT_RTX_RETRY_PERIOD 160 enum { @@ -99,6 +102,11 @@ enum PROP_DO_LOST, PROP_MODE, PROP_PERCENT, + PROP_DO_RETRANSMISSION, + PROP_RTX_DELAY, + PROP_RTX_DELAY_REORDER, + PROP_RTX_RETRY_TIMEOUT, + PROP_RTX_RETRY_PERIOD, PROP_LAST }; @@ -109,17 +117,29 @@ enum if (G_UNLIKELY (priv->srcresult != GST_FLOW_OK)) \ goto label; \ } G_STMT_END - #define JBUF_UNLOCK(priv) (g_mutex_unlock (&(priv)->jbuf_lock)) -#define JBUF_WAIT(priv) (g_cond_wait (&(priv)->jbuf_cond, &(priv)->jbuf_lock)) -#define JBUF_WAIT_CHECK(priv,label) G_STMT_START { \ - JBUF_WAIT(priv); \ - if (G_UNLIKELY (priv->srcresult != GST_FLOW_OK)) \ - goto label; \ +#define JBUF_WAIT_TIMER(priv) G_STMT_START { \ + (priv)->waiting_timer = TRUE; \ + g_cond_wait (&(priv)->jbuf_timer, &(priv)->jbuf_lock); \ + (priv)->waiting_timer = FALSE; \ +} G_STMT_END +#define JBUF_SIGNAL_TIMER(priv) G_STMT_START { \ + if (G_UNLIKELY ((priv)->waiting_timer)) \ + g_cond_signal (&(priv)->jbuf_timer); \ } G_STMT_END -#define JBUF_SIGNAL(priv) (g_cond_signal (&(priv)->jbuf_cond)) +#define JBUF_WAIT_EVENT(priv,label) G_STMT_START { \ + (priv)->waiting_event = TRUE; \ + g_cond_wait (&(priv)->jbuf_event, &(priv)->jbuf_lock); \ + (priv)->waiting_event = FALSE; \ + if (G_UNLIKELY (priv->srcresult != GST_FLOW_OK)) \ + goto label; \ +} G_STMT_END +#define JBUF_SIGNAL_EVENT(priv) G_STMT_START { \ + if (G_UNLIKELY ((priv)->waiting_event)) \ + g_cond_signal (&(priv)->jbuf_event); \ +} G_STMT_END struct _GstRtpJitterBufferPrivate { @@ -128,18 +148,29 @@ struct _GstRtpJitterBufferPrivate RTPJitterBuffer *jbuf; GMutex jbuf_lock; - GCond jbuf_cond; - gboolean waiting; + gboolean waiting_timer; + GCond jbuf_timer; + gboolean waiting_event; + GCond jbuf_event; gboolean discont; + gboolean ts_discont; gboolean active; guint64 out_offset; + gboolean timer_running; + GThread *timer_thread; + /* properties */ guint latency_ms; guint64 latency_ns; gboolean drop_on_latency; gint64 ts_offset; gboolean do_lost; + gboolean do_retransmission; + gint rtx_delay; + gint rtx_delay_reorder; + gint rtx_retry_timeout; + gint rtx_retry_period; /* the last seqnum we pushed out */ guint32 last_popped_seqnum; @@ -147,9 +178,18 @@ struct _GstRtpJitterBufferPrivate guint32 next_seqnum; /* last output time */ GstClockTime last_out_time; + /* last valid input timestamp and rtptime pair */ + GstClockTime ips_dts; + guint64 ips_rtptime; + GstClockTime packet_spacing; + /* the next expected seqnum we receive */ + GstClockTime last_in_dts; + guint32 last_in_seqnum; guint32 next_in_seqnum; + GArray *timers; + /* start and stop ranges */ GstClockTime npt_start; GstClockTime npt_stop; @@ -157,7 +197,6 @@ struct _GstRtpJitterBufferPrivate guint64 last_elapsed; guint64 estimated_eos; GstClockID eos_id; - gboolean reached_npt_stop; /* state */ gboolean eos; @@ -175,16 +214,39 @@ struct _GstRtpJitterBufferPrivate /* for sync */ GstSegment segment; GstClockID clock_id; - gboolean unscheduled; + GstClockTime timer_timeout; + guint16 timer_seqnum; /* the latency of the upstream peer, we have to take this into account when * synchronizing the buffers. */ GstClockTime peer_latency; + guint64 ext_rtptime; + GstBuffer *last_sr; /* some accounting */ guint64 num_late; guint64 num_duplicates; }; +typedef enum +{ + TIMER_TYPE_EXPECTED, + TIMER_TYPE_LOST, + TIMER_TYPE_DEADLINE, + TIMER_TYPE_EOS +} TimerType; + +typedef struct +{ + guint idx; + guint16 seqnum; + guint num; + TimerType type; + GstClockTime timeout; + GstClockTime duration; + GstClockTime rtx_base; + GstClockTime rtx_retry; +} TimerData; + #define GST_RTP_JITTER_BUFFER_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), GST_TYPE_RTP_JITTER_BUFFER, \ GstRtpJitterBufferPrivate)) @@ -272,6 +334,12 @@ gst_rtp_jitter_buffer_clear_pt_map (GstRtpJitterBuffer * jitterbuffer); static GstClockTime gst_rtp_jitter_buffer_set_active (GstRtpJitterBuffer * jitterbuffer, gboolean active, guint64 base_time); +static void do_handle_sync (GstRtpJitterBuffer * jitterbuffer); + +static void unschedule_current_timer (GstRtpJitterBuffer * jitterbuffer); +static void remove_all_timers (GstRtpJitterBuffer * jitterbuffer); + +static void wait_next_timeout (GstRtpJitterBuffer * jitterbuffer); static void gst_rtp_jitter_buffer_class_init (GstRtpJitterBufferClass * klass) @@ -352,6 +420,83 @@ gst_rtp_jitter_buffer_class_init (GstRtpJitterBufferClass * klass) g_param_spec_int ("percent", "percent", "The buffer filled percent", 0, 100, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + /** + * GstRtpJitterBuffer::do-retransmission: + * + * Send out a GstRTPRetransmission event upstream when a packet is considered + * late and should be retransmitted. + * + * Since: 1.2 + */ + g_object_class_install_property (gobject_class, PROP_DO_RETRANSMISSION, + g_param_spec_boolean ("do-retransmission", "Do Retransmission", + "Send retransmission events upstream when a packet is late", + DEFAULT_DO_RETRANSMISSION, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + /** + * GstRtpJitterBuffer::rtx-delay: + * + * When a packet did not arrive at the expected time, wait this extra amount + * of time before sending a retransmission event. + * + * When -1 is used, the max jitter will be used as extra delay. + * + * Since: 1.2 + */ + g_object_class_install_property (gobject_class, PROP_RTX_DELAY, + g_param_spec_int ("rtx-delay", "RTX Delay", + "Extra time in ms to wait before sending retransmission " + "event (-1 automatic)", -1, G_MAXINT, DEFAULT_RTX_DELAY, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + /** + * GstRtpJitterBuffer::rtx-delay-reorder: + * + * Assume that a retransmission event should be sent when we see + * this much packet reordering. + * + * When -1 is used, the value will be estimated based on observed packet + * reordering. + * + * Since: 1.2 + */ + g_object_class_install_property (gobject_class, PROP_RTX_DELAY_REORDER, + g_param_spec_int ("rtx-delay-reorder", "RTX Delay Reorder", + "Sending retransmission event when this much reordering (-1 automatic)", + -1, G_MAXINT, DEFAULT_RTX_DELAY_REORDER, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + /** + * GstRtpJitterBuffer::rtx-retry-timeout: + * + * When no packet has been received after sending a retransmission event + * for this time, retry sending a retransmission event. + * + * When -1 is used, the value will be estimated based on observed round + * trip time. + * + * Since: 1.2 + */ + g_object_class_install_property (gobject_class, PROP_RTX_RETRY_TIMEOUT, + g_param_spec_int ("rtx-retry-timeout", "RTX Retry Timeout", + "Retry sending a transmission event after this timeout in " + "ms (-1 automatic)", -1, G_MAXINT, DEFAULT_RTX_RETRY_TIMEOUT, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + /** + * GstRtpJitterBuffer::rtx-retry-period: + * + * The amount of time to try to get a retransmission. + * + * When -1 is used, the value will be estimated based on the jitterbuffer + * latency and the observed round trip time. + * + * Since: 1.2 + */ + g_object_class_install_property (gobject_class, PROP_RTX_RETRY_PERIOD, + g_param_spec_int ("rtx-retry-period", "RTX Retry Period", + "Try to get a retransmission for this many ms " + "(-1 automatic)", -1, G_MAXINT, DEFAULT_RTX_RETRY_PERIOD, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + /** * GstRtpJitterBuffer::request-pt-map: * @buffer: the object which received the signal @@ -362,7 +507,7 @@ gst_rtp_jitter_buffer_class_init (GstRtpJitterBufferClass * klass) gst_rtp_jitter_buffer_signals[SIGNAL_REQUEST_PT_MAP] = g_signal_new ("request-pt-map", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpJitterBufferClass, - request_pt_map), NULL, NULL, gst_rtp_bin_marshal_BOXED__UINT, + request_pt_map), NULL, NULL, g_cclosure_marshal_generic, GST_TYPE_CAPS, 1, G_TYPE_UINT); /** * GstRtpJitterBuffer::handle-sync: @@ -418,7 +563,7 @@ gst_rtp_jitter_buffer_class_init (GstRtpJitterBufferClass * klass) g_signal_new ("set-active", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GstRtpJitterBufferClass, set_active), NULL, NULL, - gst_rtp_bin_marshal_UINT64__BOOL_UINT64, G_TYPE_UINT64, 2, G_TYPE_BOOLEAN, + g_cclosure_marshal_generic, G_TYPE_UINT64, 2, G_TYPE_BOOLEAN, G_TYPE_UINT64); gstelement_class->change_state = @@ -462,10 +607,17 @@ gst_rtp_jitter_buffer_init (GstRtpJitterBuffer * jitterbuffer) priv->latency_ns = priv->latency_ms * GST_MSECOND; priv->drop_on_latency = DEFAULT_DROP_ON_LATENCY; priv->do_lost = DEFAULT_DO_LOST; + priv->do_retransmission = DEFAULT_DO_RETRANSMISSION; + priv->rtx_delay = DEFAULT_RTX_DELAY; + priv->rtx_delay_reorder = DEFAULT_RTX_DELAY_REORDER; + priv->rtx_retry_timeout = DEFAULT_RTX_RETRY_TIMEOUT; + priv->rtx_retry_period = DEFAULT_RTX_RETRY_PERIOD; + priv->timers = g_array_new (FALSE, TRUE, sizeof (TimerData)); priv->jbuf = rtp_jitter_buffer_new (); g_mutex_init (&priv->jbuf_lock); - g_cond_init (&priv->jbuf_cond); + g_cond_init (&priv->jbuf_timer); + g_cond_init (&priv->jbuf_event); /* reset skew detection initialy */ rtp_jitter_buffer_reset_skew (priv->jbuf); @@ -508,8 +660,10 @@ gst_rtp_jitter_buffer_finalize (GObject * object) jitterbuffer = GST_RTP_JITTER_BUFFER (object); + g_array_free (jitterbuffer->priv->timers, TRUE); g_mutex_clear (&jitterbuffer->priv->jbuf_lock); - g_cond_clear (&jitterbuffer->priv->jbuf_cond); + g_cond_clear (&jitterbuffer->priv->jbuf_timer); + g_cond_clear (&jitterbuffer->priv->jbuf_event); g_object_unref (jitterbuffer->priv->jbuf); @@ -699,14 +853,14 @@ gst_rtp_jitter_buffer_set_active (GstRtpJitterBuffer * jbuf, gboolean active, GST_DEBUG_OBJECT (jbuf, "out offset %" GST_TIME_FORMAT, GST_TIME_ARGS (priv->out_offset)); priv->active = active; - JBUF_SIGNAL (priv); + JBUF_SIGNAL_EVENT (priv); } if (!active) { rtp_jitter_buffer_set_buffering (priv->jbuf, TRUE); } if ((head = rtp_jitter_buffer_peek (priv->jbuf))) { /* head buffer timestamp and offset gives our output time */ - last_out = GST_BUFFER_TIMESTAMP (head) + priv->ts_offset; + last_out = GST_BUFFER_DTS (head) + priv->ts_offset; } else { /* use last known time when the buffer is empty */ last_out = priv->last_out_time; @@ -848,13 +1002,10 @@ gst_rtp_jitter_buffer_flush_start (GstRtpJitterBuffer * jitterbuffer) priv->srcresult = GST_FLOW_FLUSHING; GST_DEBUG_OBJECT (jitterbuffer, "Disabling pop on queue"); /* this unblocks any waiting pops on the src pad task */ - JBUF_SIGNAL (priv); + JBUF_SIGNAL_EVENT (priv); /* unlock clock, we just unschedule, the entry will be released by the * locking streaming thread. */ - if (priv->clock_id) { - gst_clock_id_unschedule (priv->clock_id); - priv->unscheduled = TRUE; - } + unschedule_current_timer (jitterbuffer); JBUF_UNLOCK (priv); } @@ -873,16 +1024,19 @@ gst_rtp_jitter_buffer_flush_stop (GstRtpJitterBuffer * jitterbuffer) priv->last_popped_seqnum = -1; priv->last_out_time = -1; priv->next_seqnum = -1; + priv->ips_rtptime = -1; + priv->ips_dts = GST_CLOCK_TIME_NONE; + priv->packet_spacing = 0; priv->next_in_seqnum = -1; priv->clock_rate = -1; priv->eos = FALSE; priv->estimated_eos = -1; priv->last_elapsed = 0; - priv->reached_npt_stop = FALSE; priv->ext_timestamp = -1; GST_DEBUG_OBJECT (jitterbuffer, "flush and reset jitterbuffer"); rtp_jitter_buffer_flush (priv->jbuf); rtp_jitter_buffer_reset_skew (priv->jbuf); + remove_all_timers (jitterbuffer); JBUF_UNLOCK (priv); } @@ -945,13 +1099,16 @@ gst_rtp_jitter_buffer_change_state (GstElement * element, priv->last_pt = -1; /* block until we go to PLAYING */ priv->blocked = TRUE; + priv->timer_running = TRUE; + priv->timer_thread = + g_thread_new ("timer", (GThreadFunc) wait_next_timeout, jitterbuffer); JBUF_UNLOCK (priv); break; case GST_STATE_CHANGE_PAUSED_TO_PLAYING: JBUF_LOCK (priv); /* unblock to allow streaming in PLAYING */ priv->blocked = FALSE; - JBUF_SIGNAL (priv); + JBUF_SIGNAL_EVENT (priv); JBUF_UNLOCK (priv); break; default: @@ -976,6 +1133,13 @@ gst_rtp_jitter_buffer_change_state (GstElement * element, ret = GST_STATE_CHANGE_NO_PREROLL; break; case GST_STATE_CHANGE_PAUSED_TO_READY: + JBUF_LOCK (priv); + gst_buffer_replace (&priv->last_sr, NULL); + priv->timer_running = FALSE; + JBUF_SIGNAL_TIMER (priv); + JBUF_UNLOCK (priv); + g_thread_join (priv->timer_thread); + priv->timer_thread = NULL; break; case GST_STATE_CHANGE_READY_TO_NULL: break; @@ -1006,6 +1170,9 @@ gst_rtp_jitter_buffer_src_event (GstPad * pad, GstObject * parent, gst_event_parse_latency (event, &latency); + GST_DEBUG_OBJECT (jitterbuffer, + "configuring latency of %" GST_TIME_FORMAT, GST_TIME_ARGS (latency)); + JBUF_LOCK (priv); /* adjust the overall buffer delay to the total pipeline latency in * buffering mode because if downstream consumes too fast (because of @@ -1074,8 +1241,8 @@ gst_rtp_jitter_buffer_sink_event (GstPad * pad, GstObject * parent, break; } case GST_EVENT_FLUSH_START: - gst_rtp_jitter_buffer_flush_start (jitterbuffer); ret = gst_pad_push_event (priv->srcpad, event); + gst_rtp_jitter_buffer_flush_start (jitterbuffer); break; case GST_EVENT_FLUSH_STOP: ret = gst_pad_push_event (priv->srcpad, event); @@ -1093,7 +1260,7 @@ gst_rtp_jitter_buffer_sink_event (GstPad * pad, GstObject * parent, if (ret && !priv->eos) { GST_INFO_OBJECT (jitterbuffer, "queuing EOS"); priv->eos = TRUE; - JBUF_SIGNAL (priv); + JBUF_SIGNAL_EVENT (priv); } else if (priv->eos) { GST_DEBUG_OBJECT (jitterbuffer, "dropping EOS, we are already EOS"); } else { @@ -1238,6 +1405,390 @@ post_buffering_percent (GstRtpJitterBuffer * jitterbuffer, gint percent) gst_element_post_message (GST_ELEMENT_CAST (jitterbuffer), message); } +static GstClockTime +apply_offset (GstRtpJitterBuffer * jitterbuffer, GstClockTime timestamp) +{ + GstRtpJitterBufferPrivate *priv; + + priv = jitterbuffer->priv; + + if (timestamp == -1) + return -1; + + /* apply the timestamp offset, this is used for inter stream sync */ + timestamp += priv->ts_offset; + /* add the offset, this is used when buffering */ + timestamp += priv->out_offset; + + return timestamp; +} + +static TimerData * +find_timer (GstRtpJitterBuffer * jitterbuffer, TimerType type, guint16 seqnum) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + TimerData *timer = NULL; + gint i, len; + + len = priv->timers->len; + for (i = 0; i < len; i++) { + TimerData *test = &g_array_index (priv->timers, TimerData, i); + if (test->seqnum == seqnum && test->type == type) { + timer = test; + break; + } + } + return timer; +} + +static void +unschedule_current_timer (GstRtpJitterBuffer * jitterbuffer) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + + if (priv->clock_id) { + GST_DEBUG_OBJECT (jitterbuffer, "unschedule current timer"); + gst_clock_id_unschedule (priv->clock_id); + } +} + +static GstClockTime +get_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + GstClockTime test_timeout; + + if ((test_timeout = timer->timeout) == -1) + return -1; + + if (timer->type != TIMER_TYPE_EXPECTED) { + /* add our latency and offset to get output times. */ + test_timeout = apply_offset (jitterbuffer, test_timeout); + test_timeout += priv->latency_ns; + } + return test_timeout; +} + +static void +recalculate_timer (GstRtpJitterBuffer * jitterbuffer, TimerData * timer) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + + if (priv->clock_id) { + GstClockTime timeout = get_timeout (jitterbuffer, timer); + + GST_DEBUG ("%" GST_TIME_FORMAT " <> %" GST_TIME_FORMAT, + GST_TIME_ARGS (timeout), GST_TIME_ARGS (priv->timer_timeout)); + + if (timeout == -1 || timeout < priv->timer_timeout) + unschedule_current_timer (jitterbuffer); + } +} + +static TimerData * +add_timer (GstRtpJitterBuffer * jitterbuffer, TimerType type, + guint16 seqnum, guint num, GstClockTime timeout, GstClockTime duration) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + TimerData *timer; + gint len; + + GST_DEBUG_OBJECT (jitterbuffer, + "add timer for seqnum %d to %" GST_TIME_FORMAT, + seqnum, GST_TIME_ARGS (timeout)); + + len = priv->timers->len; + g_array_set_size (priv->timers, len + 1); + timer = &g_array_index (priv->timers, TimerData, len); + timer->idx = len; + timer->type = type; + timer->seqnum = seqnum; + timer->num = num; + timer->timeout = timeout; + timer->duration = duration; + if (type == TIMER_TYPE_EXPECTED) { + timer->rtx_base = timeout; + timer->rtx_retry = 0; + } + recalculate_timer (jitterbuffer, timer); + JBUF_SIGNAL_TIMER (priv); + + return timer; +} + +static void +reschedule_timer (GstRtpJitterBuffer * jitterbuffer, TimerData * timer, + guint16 seqnum, GstClockTime timeout) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + gboolean seqchange, timechange; + guint16 oldseq; + + seqchange = timer->seqnum != seqnum; + timechange = timer->timeout != timeout; + + if (!seqchange && !timechange) + return; + + oldseq = timer->seqnum; + + GST_DEBUG_OBJECT (jitterbuffer, + "replace timer for seqnum %d->%d to %" GST_TIME_FORMAT, + oldseq, seqnum, GST_TIME_ARGS (timeout)); + + timer->timeout = timeout; + timer->seqnum = seqnum; + if (seqchange && timer->type == TIMER_TYPE_EXPECTED) { + timer->rtx_base = timeout; + timer->rtx_retry = 0; + } + + if (priv->clock_id) { + /* we changed the seqnum and there is a timer currently waiting with this + * seqnum, unschedule it */ + if (seqchange && priv->timer_seqnum == oldseq) + unschedule_current_timer (jitterbuffer); + /* we changed the time, check if it is earlier than what we are waiting + * for and unschedule if so */ + else if (timechange) + recalculate_timer (jitterbuffer, timer); + } +} + +static TimerData * +set_timer (GstRtpJitterBuffer * jitterbuffer, TimerType type, + guint16 seqnum, GstClockTime timeout) +{ + TimerData *timer; + + /* find the seqnum timer */ + timer = find_timer (jitterbuffer, type, seqnum); + if (timer == NULL) { + timer = add_timer (jitterbuffer, type, seqnum, 0, timeout, -1); + } else { + reschedule_timer (jitterbuffer, timer, seqnum, timeout); + } + return timer; +} + +static void +remove_timer (GstRtpJitterBuffer * jitterbuffer, TimerData * timer) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + guint idx; + + if (priv->clock_id && priv->timer_seqnum == timer->seqnum) + unschedule_current_timer (jitterbuffer); + + idx = timer->idx; + GST_DEBUG_OBJECT (jitterbuffer, "removed index %d", idx); + g_array_remove_index_fast (priv->timers, idx); + timer->idx = idx; +} + +static void +remove_all_timers (GstRtpJitterBuffer * jitterbuffer) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + GST_DEBUG_OBJECT (jitterbuffer, "removed all timers"); + g_array_set_size (priv->timers, 0); + unschedule_current_timer (jitterbuffer); +} + +/* we just received a packet with seqnum and dts. + * + * First check for old seqnum that we are still expecting. If the gap with the + * current timestamp is too big, unschedule the timeouts. + * + * If we have a valid packet spacing estimate we can set a timer for when we + * should receive the next packet. + * If we don't have a valid estimate, we remove any timer we might have + * had for this packet. + */ +static void +update_timers (GstRtpJitterBuffer * jitterbuffer, guint16 seqnum, + GstClockTime dts, gboolean do_next_seqnum) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + TimerData *timer = NULL; + gint i, len; + + /* go through all timers and unschedule the ones with a large gap, also find + * the timer for the seqnum */ + len = priv->timers->len; + for (i = 0; i < len; i++) { + TimerData *test = &g_array_index (priv->timers, TimerData, i); + gint gap; + + gap = gst_rtp_buffer_compare_seqnum (test->seqnum, seqnum); + + GST_DEBUG_OBJECT (jitterbuffer, "%d, #%d<->#%d gap %d", i, + test->seqnum, seqnum, gap); + + if (gap == 0) { + GST_DEBUG ("found timer for current seqnum"); + /* the timer for the current seqnum */ + timer = test; + } else if (gap > priv->rtx_delay_reorder) { + /* max gap, we exceeded the max reorder distance and we don't expect the + * missing packet to be this reordered */ + if (test->rtx_retry == 0 && test->type == TIMER_TYPE_EXPECTED) + reschedule_timer (jitterbuffer, test, test->seqnum, -1); + } + } + + if (priv->packet_spacing > 0 && do_next_seqnum && priv->do_retransmission) { + GstClockTime expected; + + /* calculate expected arrival time of the next seqnum */ + expected = dts + priv->packet_spacing + (priv->rtx_delay * GST_MSECOND); + /* and update/install timer for next seqnum */ + if (timer) + reschedule_timer (jitterbuffer, timer, priv->next_in_seqnum, expected); + else + add_timer (jitterbuffer, TIMER_TYPE_EXPECTED, priv->next_in_seqnum, 0, + expected, priv->packet_spacing); + } else if (timer && timer->type != TIMER_TYPE_DEADLINE) { + /* if we had a timer, remove it, we don't know when to expect the next + * packet. */ + remove_timer (jitterbuffer, timer); + JBUF_SIGNAL_EVENT (priv); + } +} + +static void +calculate_packet_spacing (GstRtpJitterBuffer * jitterbuffer, guint32 rtptime, + GstClockTime dts) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + + /* we need consecutive seqnums with a different + * rtptime to estimate the packet spacing. */ + if (priv->ips_rtptime != rtptime) { + /* rtptime changed, check dts diff */ + if (priv->ips_dts != -1 && dts != -1 && dts > priv->ips_dts) { + priv->packet_spacing = dts - priv->ips_dts; + GST_DEBUG_OBJECT (jitterbuffer, + "new packet spacing %" GST_TIME_FORMAT, + GST_TIME_ARGS (priv->packet_spacing)); + } + priv->ips_rtptime = rtptime; + priv->ips_dts = dts; + } +} + +static void +send_lost_event (GstRtpJitterBuffer * jitterbuffer, guint seqnum, + guint lost_packets, GstClockTime timestamp, GstClockTime duration, + gboolean late) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + + /* we had a gap and thus we lost some packets. Create an event for this. */ + if (lost_packets > 1) + GST_DEBUG_OBJECT (jitterbuffer, "Packets #%d -> #%d lost", seqnum, + seqnum + lost_packets - 1); + else + GST_DEBUG_OBJECT (jitterbuffer, "Packet #%d lost", seqnum); + + priv->num_late += lost_packets; + priv->discont = TRUE; + + /* update our expected next packet but make sure the seqnum increases */ + if (seqnum + lost_packets > priv->next_seqnum) { + priv->next_seqnum = (seqnum + lost_packets) & 0xffff; + priv->last_popped_seqnum = seqnum; + priv->last_out_time = timestamp; + } + if (priv->do_lost) { + GstEvent *event; + + /* create paket lost event */ + event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM, + gst_structure_new ("GstRTPPacketLost", + "seqnum", G_TYPE_UINT, (guint) seqnum, + "timestamp", G_TYPE_UINT64, timestamp, + "duration", G_TYPE_UINT64, duration, + "late", G_TYPE_BOOLEAN, late, NULL)); + JBUF_UNLOCK (priv); + gst_pad_push_event (priv->srcpad, event); + JBUF_LOCK (priv); + } +} + +static void +calculate_expected (GstRtpJitterBuffer * jitterbuffer, guint32 expected, + guint16 seqnum, GstClockTime dts, gint gap) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + GstClockTime total_duration, duration, expected_dts; + TimerType type; + + GST_DEBUG_OBJECT (jitterbuffer, + "dts %" GST_TIME_FORMAT ", last %" GST_TIME_FORMAT, + GST_TIME_ARGS (dts), GST_TIME_ARGS (priv->last_in_dts)); + + /* the total duration spanned by the missing packets */ + if (dts >= priv->last_in_dts) + total_duration = dts - priv->last_in_dts; + else + total_duration = 0; + + /* interpolate between the current time and the last time based on + * number of packets we are missing, this is the estimated duration + * for the missing packet based on equidistant packet spacing. */ + duration = total_duration / (gap + 1); + + GST_DEBUG_OBJECT (jitterbuffer, "duration %" GST_TIME_FORMAT, + GST_TIME_ARGS (duration)); + + if (total_duration > priv->latency_ns) { + GstClockTime gap_time; + guint lost_packets; + + gap_time = total_duration - priv->latency_ns; + + if (duration > 0) { + lost_packets = gap_time / duration; + gap_time = lost_packets * duration; + } else { + lost_packets = gap; + } + + /* too many lost packets, some of the missing packets are already + * too late and we can generate lost packet events for them. */ + GST_DEBUG_OBJECT (jitterbuffer, "too many lost packets %" GST_TIME_FORMAT + " > %" GST_TIME_FORMAT ", consider %u lost", + GST_TIME_ARGS (total_duration), GST_TIME_ARGS (priv->latency_ns), + lost_packets); + + /* this timer will fire immediately and the lost event will be pushed from + * the timer thread */ + add_timer (jitterbuffer, TIMER_TYPE_LOST, expected, lost_packets, + priv->last_in_dts + duration, gap_time); + + expected += lost_packets; + priv->last_in_dts += gap_time; + } + + expected_dts = priv->last_in_dts + duration; + + if (priv->do_retransmission) { + type = TIMER_TYPE_EXPECTED; + /* if we had a timer for the first missing packet, leave it. */ + if (find_timer (jitterbuffer, type, expected)) + expected++; + } else { + type = TIMER_TYPE_LOST; + } + + while (expected < seqnum) { + add_timer (jitterbuffer, type, expected, 0, expected_dts, duration); + expected_dts += duration; + expected++; + } +} + static GstFlowReturn gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) @@ -1245,13 +1796,15 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent, GstRtpJitterBuffer *jitterbuffer; GstRtpJitterBufferPrivate *priv; guint16 seqnum; + guint32 expected, rtptime; GstFlowReturn ret = GST_FLOW_OK; - GstClockTime timestamp; + GstClockTime dts, pts; guint64 latency_ts; gboolean tail; gint percent = -1; guint8 pt; GstRTPBuffer rtp = GST_RTP_BUFFER_INIT; + gboolean do_next_seqnum = FALSE; jitterbuffer = GST_RTP_JITTER_BUFFER (parent); @@ -1262,20 +1815,27 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent, pt = gst_rtp_buffer_get_payload_type (&rtp); seqnum = gst_rtp_buffer_get_seq (&rtp); + rtptime = gst_rtp_buffer_get_timestamp (&rtp); gst_rtp_buffer_unmap (&rtp); - /* take the timestamp of the buffer. This is the time when the packet was + /* make sure we have PTS and DTS set */ + pts = GST_BUFFER_PTS (buffer); + dts = GST_BUFFER_DTS (buffer); + if (dts == -1) + dts = pts; + else if (pts == -1) + pts = dts; + + /* take the DTS of the buffer. This is the time when the packet was * received and is used to calculate jitter and clock skew. We will adjust - * this timestamp with the smoothed value after processing it in the - * jitterbuffer. */ - timestamp = GST_BUFFER_TIMESTAMP (buffer); + * this DTS with the smoothed value after processing it in the + * jitterbuffer and assign it as the PTS. */ /* bring to running time */ - timestamp = gst_segment_to_running_time (&priv->segment, GST_FORMAT_TIME, - timestamp); + dts = gst_segment_to_running_time (&priv->segment, GST_FORMAT_TIME, dts); GST_DEBUG_OBJECT (jitterbuffer, - "Received packet #%d at time %" GST_TIME_FORMAT, seqnum, - GST_TIME_ARGS (timestamp)); + "Received packet #%d at time %" GST_TIME_FORMAT ", discont %d", seqnum, + GST_TIME_ARGS (dts), GST_BUFFER_IS_DISCONT (buffer)); JBUF_LOCK_CHECK (priv, out_flushing); @@ -1311,39 +1871,79 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent, if (G_UNLIKELY (priv->eos)) goto have_eos; + expected = priv->next_in_seqnum; + /* now check against our expected seqnum */ - if (G_LIKELY (priv->next_in_seqnum != -1)) { + if (G_LIKELY (expected != -1)) { gint gap; - gboolean reset = FALSE; - - gap = gst_rtp_buffer_compare_seqnum (priv->next_in_seqnum, seqnum); - if (G_UNLIKELY (gap != 0)) { - GST_DEBUG_OBJECT (jitterbuffer, "expected #%d, got #%d, gap of %d", - priv->next_in_seqnum, seqnum, gap); - /* priv->next_in_seqnum >= seqnum, this packet is too late or the - * sender might have been restarted with different seqnum. */ - if (gap < -RTP_MAX_MISORDER) { - GST_DEBUG_OBJECT (jitterbuffer, "reset: buffer too old %d", gap); - reset = TRUE; - } - /* priv->next_in_seqnum < seqnum, this is a new packet */ - else if (G_UNLIKELY (gap > RTP_MAX_DROPOUT)) { - GST_DEBUG_OBJECT (jitterbuffer, "reset: too many dropped packets %d", - gap); - reset = TRUE; + + /* now calculate gap */ + gap = gst_rtp_buffer_compare_seqnum (expected, seqnum); + + GST_DEBUG_OBJECT (jitterbuffer, "expected #%d, got #%d, gap of %d", + expected, seqnum, gap); + + if (G_LIKELY (gap == 0)) { + /* packet is expected */ + calculate_packet_spacing (jitterbuffer, rtptime, dts); + do_next_seqnum = TRUE; + } else { + gboolean reset = FALSE; + + if (gap < 0) { + /* we received an old packet */ + if (G_UNLIKELY (gap < -RTP_MAX_MISORDER)) { + /* too old packet, reset */ + GST_DEBUG_OBJECT (jitterbuffer, "reset: buffer too old %d < %d", gap, + -RTP_MAX_MISORDER); + reset = TRUE; + } else { + GST_DEBUG_OBJECT (jitterbuffer, "old packet received"); + } } else { - GST_DEBUG_OBJECT (jitterbuffer, "tolerable gap"); + /* new packet, we are missing some packets */ + if (G_UNLIKELY (gap > RTP_MAX_DROPOUT)) { + /* packet too far in future, reset */ + GST_DEBUG_OBJECT (jitterbuffer, "reset: buffer too new %d > %d", gap, + RTP_MAX_DROPOUT); + reset = TRUE; + } else { + GST_DEBUG_OBJECT (jitterbuffer, "%d missing packets", gap); + /* fill in the gap with EXPECTED timers */ + calculate_expected (jitterbuffer, expected, seqnum, dts, gap); + + do_next_seqnum = TRUE; + } } + if (G_UNLIKELY (reset)) { + GST_DEBUG_OBJECT (jitterbuffer, "flush and reset jitterbuffer"); + rtp_jitter_buffer_flush (priv->jbuf); + rtp_jitter_buffer_reset_skew (priv->jbuf); + remove_all_timers (jitterbuffer); + priv->last_popped_seqnum = -1; + priv->next_seqnum = seqnum; + do_next_seqnum = TRUE; + } + /* reset spacing estimation when gap */ + priv->ips_rtptime = -1; + priv->ips_dts = GST_CLOCK_TIME_NONE; } - if (G_UNLIKELY (reset)) { - GST_DEBUG_OBJECT (jitterbuffer, "flush and reset jitterbuffer"); - rtp_jitter_buffer_flush (priv->jbuf); - rtp_jitter_buffer_reset_skew (priv->jbuf); - priv->last_popped_seqnum = -1; - priv->next_seqnum = seqnum; - } + } else { + GST_DEBUG_OBJECT (jitterbuffer, "First buffer #%d", seqnum); + /* we don't know what the next_in_seqnum should be, wait for the last + * possible moment to push this buffer, maybe we get an earlier seqnum + * while we wait */ + set_timer (jitterbuffer, TIMER_TYPE_DEADLINE, seqnum, dts); + do_next_seqnum = TRUE; + /* take rtptime and dts to calculate packet spacing */ + priv->ips_rtptime = rtptime; + priv->ips_dts = dts; + } + if (do_next_seqnum) { + priv->last_in_seqnum = seqnum; + priv->last_in_dts = dts; + priv->next_in_seqnum = (seqnum + 1) & 0xffff; } - priv->next_in_seqnum = (seqnum + 1) & 0xffff; /* let's check if this buffer is too late, we can only accept packets with * bigger seqnum than the one we last pushed. */ @@ -1378,27 +1978,34 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent, } /* we need to make the metadata writable before pushing it in the jitterbuffer - * because the jitterbuffer will update the timestamp */ + * because the jitterbuffer will update the PTS */ buffer = gst_buffer_make_writable (buffer); + GST_BUFFER_DTS (buffer) = dts; + GST_BUFFER_PTS (buffer) = pts; /* now insert the packet into the queue in sorted order. This function returns * FALSE if a packet with the same seqnum was already in the queue, meaning we * have a duplicate. */ - if (G_UNLIKELY (!rtp_jitter_buffer_insert (priv->jbuf, buffer, timestamp, + if (G_UNLIKELY (!rtp_jitter_buffer_insert (priv->jbuf, buffer, dts, priv->clock_rate, &tail, &percent))) goto duplicate; + /* update timers */ + update_timers (jitterbuffer, seqnum, dts, do_next_seqnum); + + /* we had an unhandled SR, handle it now */ + if (priv->last_sr) + do_handle_sync (jitterbuffer); + /* signal addition of new buffer when the _loop is waiting. */ - if (priv->waiting) - JBUF_SIGNAL (priv); + if (priv->active && priv->waiting_timer) + JBUF_SIGNAL_EVENT (priv); /* let's unschedule and unblock any waiting buffers. We only want to do this * when the tail buffer changed */ if (G_UNLIKELY (priv->clock_id && tail)) { - GST_DEBUG_OBJECT (jitterbuffer, - "Unscheduling waiting buffer, new tail buffer"); - gst_clock_id_unschedule (priv->clock_id); - priv->unscheduled = TRUE; + GST_DEBUG_OBJECT (jitterbuffer, "Unscheduling waiting new buffer"); + unschedule_current_timer (jitterbuffer); } GST_DEBUG_OBJECT (jitterbuffer, "Pushed packet #%d, now %d packets, tail: %d", @@ -1463,552 +2070,533 @@ duplicate: } static GstClockTime -apply_offset (GstRtpJitterBuffer * jitterbuffer, GstClockTime timestamp) +compute_elapsed (GstRtpJitterBuffer * jitterbuffer, GstBuffer * outbuf) { + guint64 ext_time, elapsed; + guint32 rtp_time; GstRtpJitterBufferPrivate *priv; + GstRTPBuffer rtp = GST_RTP_BUFFER_INIT; priv = jitterbuffer->priv; + gst_rtp_buffer_map (outbuf, GST_MAP_READ, &rtp); + rtp_time = gst_rtp_buffer_get_timestamp (&rtp); + gst_rtp_buffer_unmap (&rtp); - if (timestamp == -1) - return -1; - - /* apply the timestamp offset, this is used for inter stream sync */ - timestamp += priv->ts_offset; - /* add the offset, this is used when buffering */ - timestamp += priv->out_offset; + GST_LOG_OBJECT (jitterbuffer, "rtp %" G_GUINT32_FORMAT ", ext %" + G_GUINT64_FORMAT, rtp_time, priv->ext_timestamp); - return timestamp; -} + if (rtp_time < priv->ext_timestamp) { + ext_time = priv->ext_timestamp; + } else { + ext_time = gst_rtp_buffer_ext_timestamp (&priv->ext_timestamp, rtp_time); + } -static GstClockTime -get_sync_time (GstRtpJitterBuffer * jitterbuffer, GstClockTime timestamp) -{ - GstClockTime result; - GstRtpJitterBufferPrivate *priv; - - priv = jitterbuffer->priv; - - result = timestamp + GST_ELEMENT_CAST (jitterbuffer)->base_time; - /* add latency, this includes our own latency and the peer latency. */ - result += priv->latency_ns; - result += priv->peer_latency; + if (ext_time > priv->clock_base) + elapsed = ext_time - priv->clock_base; + else + elapsed = 0; - return result; + elapsed = gst_util_uint64_scale_int (elapsed, GST_SECOND, priv->clock_rate); + return elapsed; } -static gboolean -eos_reached (GstClock * clock, GstClockTime time, GstClockID id, - GstRtpJitterBuffer * jitterbuffer) +static void +update_estimated_eos (GstRtpJitterBuffer * jitterbuffer, GstBuffer * outbuf) { - GstRtpJitterBufferPrivate *priv; + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; - priv = jitterbuffer->priv; + if (priv->npt_stop != -1 && priv->ext_timestamp != -1 + && priv->clock_base != -1 && priv->clock_rate > 0) { + guint64 elapsed, estimated; - JBUF_LOCK_CHECK (priv, flushing); - if (priv->waiting) { - GST_INFO_OBJECT (jitterbuffer, "got the NPT timeout"); - priv->reached_npt_stop = TRUE; - JBUF_SIGNAL (priv); - } - JBUF_UNLOCK (priv); + elapsed = compute_elapsed (jitterbuffer, outbuf); - return TRUE; + if (elapsed > priv->last_elapsed || !priv->last_elapsed) { + guint64 left; + GstClockTime out_time; - /* ERRORS */ -flushing: - { - JBUF_UNLOCK (priv); - return FALSE; + priv->last_elapsed = elapsed; + + left = priv->npt_stop - priv->npt_start; + GST_LOG_OBJECT (jitterbuffer, "left %" GST_TIME_FORMAT, + GST_TIME_ARGS (left)); + + out_time = GST_BUFFER_DTS (outbuf); + + if (elapsed > 0) + estimated = gst_util_uint64_scale (out_time, left, elapsed); + else { + /* if there is almost nothing left, + * we may never advance enough to end up in the above case */ + if (left < GST_SECOND) + estimated = GST_SECOND; + else + estimated = -1; + } + + GST_LOG_OBJECT (jitterbuffer, "elapsed %" GST_TIME_FORMAT ", estimated %" + GST_TIME_FORMAT, GST_TIME_ARGS (elapsed), GST_TIME_ARGS (estimated)); + + if (estimated != -1 && priv->estimated_eos != estimated) { + set_timer (jitterbuffer, TIMER_TYPE_EOS, -1, estimated); + priv->estimated_eos = estimated; + } + } } } -static GstClockTime -compute_elapsed (GstRtpJitterBuffer * jitterbuffer, GstBuffer * outbuf) +/* take a buffer from the queue and push it */ +static GstFlowReturn +pop_and_push_next (GstRtpJitterBuffer * jitterbuffer, guint16 seqnum) { - guint64 ext_time, elapsed; - guint32 rtp_time; - GstRtpJitterBufferPrivate *priv; - GstRTPBuffer rtp = GST_RTP_BUFFER_INIT; + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + GstFlowReturn result; + GstBuffer *outbuf; + GstClockTime dts, pts; + gint percent = -1; - priv = jitterbuffer->priv; - gst_rtp_buffer_map (outbuf, GST_MAP_READ, &rtp); - rtp_time = gst_rtp_buffer_get_timestamp (&rtp); - gst_rtp_buffer_unmap (&rtp); + /* when we get here we are ready to pop and push the buffer */ + outbuf = rtp_jitter_buffer_pop (priv->jbuf, &percent); - GST_LOG_OBJECT (jitterbuffer, "rtp %" G_GUINT32_FORMAT ", ext %" - G_GUINT64_FORMAT, rtp_time, priv->ext_timestamp); + check_buffering_percent (jitterbuffer, &percent); - if (rtp_time < priv->ext_timestamp) { - ext_time = priv->ext_timestamp; - } else { - ext_time = gst_rtp_buffer_ext_timestamp (&priv->ext_timestamp, rtp_time); + if (G_UNLIKELY (priv->discont)) { + /* set DISCONT flag when we missed a packet. We pushed the buffer writable + * into the jitterbuffer so we can modify now. */ + GST_DEBUG_OBJECT (jitterbuffer, "mark output buffer discont"); + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); + priv->discont = FALSE; + } + if (G_UNLIKELY (priv->ts_discont)) { + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_RESYNC); + priv->ts_discont = FALSE; } - if (ext_time > priv->clock_base) - elapsed = ext_time - priv->clock_base; - else - elapsed = 0; + dts = GST_BUFFER_DTS (outbuf); + pts = GST_BUFFER_PTS (outbuf); - elapsed = gst_util_uint64_scale_int (elapsed, GST_SECOND, priv->clock_rate); - return elapsed; + dts = gst_segment_to_position (&priv->segment, GST_FORMAT_TIME, dts); + pts = gst_segment_to_position (&priv->segment, GST_FORMAT_TIME, pts); + + /* apply timestamp with offset to buffer now */ + GST_BUFFER_DTS (outbuf) = apply_offset (jitterbuffer, dts); + GST_BUFFER_PTS (outbuf) = apply_offset (jitterbuffer, pts); + + /* update the elapsed time when we need to check against the npt stop time. */ + update_estimated_eos (jitterbuffer, outbuf); + + /* now we are ready to push the buffer. Save the seqnum and release the lock + * so the other end can push stuff in the queue again. */ + priv->last_popped_seqnum = seqnum; + priv->last_out_time = GST_BUFFER_PTS (outbuf); + priv->next_seqnum = (seqnum + 1) & 0xffff; + JBUF_UNLOCK (priv); + + if (percent != -1) + post_buffering_percent (jitterbuffer, percent); + + /* push buffer */ + GST_DEBUG_OBJECT (jitterbuffer, + "Pushing buffer %d, dts %" GST_TIME_FORMAT ", pts %" GST_TIME_FORMAT, + seqnum, GST_TIME_ARGS (GST_BUFFER_DTS (outbuf)), + GST_TIME_ARGS (GST_BUFFER_PTS (outbuf))); + + result = gst_pad_push (priv->srcpad, outbuf); + + JBUF_LOCK_CHECK (priv, out_flushing); + + return result; + + /* ERRORS */ +out_flushing: + { + return priv->srcresult; + } } -/* - * This funcion will push out buffers on the source pad. - * - * For each pushed buffer, the seqnum is recorded, if the next buffer B has a - * different seqnum (missing packets before B), this function will wait for the - * missing packet to arrive up to the timestamp of buffer B. +#define GST_FLOW_WAIT GST_FLOW_CUSTOM_SUCCESS + +/* Peek a buffer and compare the seqnum to the expected seqnum. + * If all is fine, the buffer is pushed. + * If something is wrong, we wait for some event */ -static void -gst_rtp_jitter_buffer_loop (GstRtpJitterBuffer * jitterbuffer) +static GstFlowReturn +handle_next_buffer (GstRtpJitterBuffer * jitterbuffer) { - GstRtpJitterBufferPrivate *priv; + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + GstFlowReturn result = GST_FLOW_OK; GstBuffer *outbuf; - GstFlowReturn result; guint16 seqnum; guint32 next_seqnum; - GstClockTime timestamp, out_time; - gboolean discont = FALSE; gint gap; - GstClock *clock; - GstClockID id; - GstClockTime sync_time; - gint percent = -1; GstRTPBuffer rtp = { NULL, }; - priv = jitterbuffer->priv; + /* only push buffers when PLAYING and active and not buffering */ + if (priv->blocked || !priv->active || + rtp_jitter_buffer_is_buffering (priv->jbuf)) + return GST_FLOW_WAIT; - JBUF_LOCK_CHECK (priv, flushing); again: - GST_DEBUG_OBJECT (jitterbuffer, "Peeking item"); - while (TRUE) { - id = NULL; - /* always wait if we are blocked */ - if (G_LIKELY (!priv->blocked)) { - /* we're buffering but not EOS, wait. */ - if (!priv->eos && (!priv->active - || rtp_jitter_buffer_is_buffering (priv->jbuf))) { - GstClockTime elapsed, delay, left; - - if (priv->estimated_eos == -1) - goto do_wait; - - outbuf = rtp_jitter_buffer_peek (priv->jbuf); - if (outbuf != NULL) { - elapsed = compute_elapsed (jitterbuffer, outbuf); - if (GST_BUFFER_DURATION_IS_VALID (outbuf)) - elapsed += GST_BUFFER_DURATION (outbuf); - } else { - GST_INFO_OBJECT (jitterbuffer, "no buffer, using last_elapsed"); - elapsed = priv->last_elapsed; - } - - delay = rtp_jitter_buffer_get_delay (priv->jbuf); - - if (priv->estimated_eos > elapsed) - left = priv->estimated_eos - elapsed; - else - left = 0; - - GST_INFO_OBJECT (jitterbuffer, "buffering, elapsed %" GST_TIME_FORMAT - " estimated_eos %" GST_TIME_FORMAT " left %" GST_TIME_FORMAT - " delay %" GST_TIME_FORMAT, - GST_TIME_ARGS (elapsed), GST_TIME_ARGS (priv->estimated_eos), - GST_TIME_ARGS (left), GST_TIME_ARGS (delay)); - if (left > delay) - goto do_wait; - } - /* if we have a packet, we can exit the loop and grab it */ - if (rtp_jitter_buffer_num_packets (priv->jbuf) > 0) - break; - /* no packets but we are EOS, do eos logic */ - if (G_UNLIKELY (priv->eos)) - goto do_eos; - /* underrun, wait for packets or flushing now if we are expecting an EOS - * timeout, set the async timer for it too */ - if (priv->estimated_eos != -1 && !priv->reached_npt_stop) { - sync_time = get_sync_time (jitterbuffer, priv->estimated_eos); - - GST_OBJECT_LOCK (jitterbuffer); - clock = GST_ELEMENT_CLOCK (jitterbuffer); - if (clock) { - GST_INFO_OBJECT (jitterbuffer, "scheduling timeout"); - id = gst_clock_new_single_shot_id (clock, sync_time); - gst_clock_id_wait_async (id, (GstClockCallback) eos_reached, - jitterbuffer, NULL); - } - GST_OBJECT_UNLOCK (jitterbuffer); - } - } - do_wait: - /* now we wait */ - GST_DEBUG_OBJECT (jitterbuffer, "waiting"); - priv->waiting = TRUE; - JBUF_WAIT (priv); - priv->waiting = FALSE; - GST_DEBUG_OBJECT (jitterbuffer, "waiting done"); - - if (id) { - /* unschedule any pending async notifications we might have */ - gst_clock_id_unschedule (id); - gst_clock_id_unref (id); - } - if (G_UNLIKELY (priv->srcresult != GST_FLOW_OK)) - goto flushing; - - if (id && priv->reached_npt_stop) { - goto do_npt_stop; - } - } - - /* peek a buffer, we're just looking at the timestamp and the sequence number. + /* peek a buffer, we're just looking at the sequence number. * If all is fine, we'll pop and push it. If the sequence number is wrong we - * wait on the timestamp. In the chain function we will unlock the wait when a - * new buffer is available. The peeked buffer is valid for as long as we hold - * the jitterbuffer lock. */ + * wait for a timeout or something to change. + * The peeked buffer is valid for as long as we hold the jitterbuffer lock. */ outbuf = rtp_jitter_buffer_peek (priv->jbuf); + if (outbuf == NULL) + goto wait; /* get the seqnum and the next expected seqnum */ gst_rtp_buffer_map (outbuf, GST_MAP_READ, &rtp); seqnum = gst_rtp_buffer_get_seq (&rtp); gst_rtp_buffer_unmap (&rtp); - next_seqnum = priv->next_seqnum; - - /* get the timestamp, this is already corrected for clock skew by the - * jitterbuffer */ - timestamp = GST_BUFFER_TIMESTAMP (outbuf); - GST_DEBUG_OBJECT (jitterbuffer, - "Peeked buffer #%d, expect #%d, timestamp %" GST_TIME_FORMAT - ", now %d left", seqnum, next_seqnum, GST_TIME_ARGS (timestamp), - rtp_jitter_buffer_num_packets (priv->jbuf)); - - /* apply our timestamp offset to the incomming buffer, this will be our output - * timestamp. */ - out_time = apply_offset (jitterbuffer, timestamp); + next_seqnum = priv->next_seqnum; /* get the gap between this and the previous packet. If we don't know the * previous packet seqnum assume no gap. */ - if (G_LIKELY (next_seqnum != -1)) { + if (G_UNLIKELY (next_seqnum == -1)) { + GST_DEBUG_OBJECT (jitterbuffer, "First buffer #%d", seqnum); + /* we don't know what the next_seqnum should be, the chain function should + * have scheduled a DEADLINE timer that will increment next_seqnum when it + * fires, so wait for that */ + result = GST_FLOW_WAIT; + } else { + /* else calculate GAP */ gap = gst_rtp_buffer_compare_seqnum (next_seqnum, seqnum); - /* if we have a packet that we already pushed or considered dropped, pop it - * off and get the next packet */ - if (G_UNLIKELY (gap < 0)) { + if (G_LIKELY (gap == 0)) { + /* no missing packet, pop and push */ + result = pop_and_push_next (jitterbuffer, seqnum); + } else if (G_UNLIKELY (gap < 0)) { + /* if we have a packet that we already pushed or considered dropped, pop it + * off and get the next packet */ GST_DEBUG_OBJECT (jitterbuffer, "Old packet #%d, next #%d dropping", seqnum, next_seqnum); - outbuf = rtp_jitter_buffer_pop (priv->jbuf, &percent); + outbuf = rtp_jitter_buffer_pop (priv->jbuf, NULL); gst_buffer_unref (outbuf); goto again; - } - } else { - GST_DEBUG_OBJECT (jitterbuffer, "no next seqnum known, first packet"); - gap = -1; - } - - /* If we don't know what the next seqnum should be (== -1) we have to wait - * because it might be possible that we are not receiving this buffer in-order, - * a buffer with a lower seqnum could arrive later and we want to push that - * earlier buffer before this buffer then. - * If we know the expected seqnum, we can compare it to the current seqnum to - * determine if we have missing a packet. If we have a missing packet (which - * must be before this packet) we can wait for it until the deadline for this - * packet expires. */ - if (G_UNLIKELY (gap != 0 && out_time != -1)) { - GstClockReturn ret; - GstClockTime duration = GST_CLOCK_TIME_NONE; - - if (gap > 0) { - /* we have a gap */ + } else { + /* the chain function has scheduled timers to request retransmission or + * when to consider the packet lost, wait for that */ GST_DEBUG_OBJECT (jitterbuffer, "Sequence number GAP detected: expected %d instead of %d (%d missing)", next_seqnum, seqnum, gap); + result = GST_FLOW_WAIT; + } + } + return result; - if (priv->last_out_time != -1) { - GST_DEBUG_OBJECT (jitterbuffer, - "out_time %" GST_TIME_FORMAT ", last %" GST_TIME_FORMAT, - GST_TIME_ARGS (out_time), GST_TIME_ARGS (priv->last_out_time)); - /* interpolate between the current time and the last time based on - * number of packets we are missing, this is the estimated duration - * for the missing packet based on equidistant packet spacing. Also make - * sure we never go negative. */ - if (out_time >= priv->last_out_time) - duration = (out_time - priv->last_out_time) / (gap + 1); - else - goto lost; +wait: + { + GST_DEBUG_OBJECT (jitterbuffer, "no buffer, going to wait"); + if (priv->eos) + result = GST_FLOW_EOS; + else + result = GST_FLOW_WAIT; + return result; + } +} - GST_DEBUG_OBJECT (jitterbuffer, "duration %" GST_TIME_FORMAT, - GST_TIME_ARGS (duration)); - /* add this duration to the timestamp of the last packet we pushed */ - out_time = (priv->last_out_time + duration); - } - } else { - /* we don't know what the next_seqnum should be, wait for the last - * possible moment to push this buffer, maybe we get an earlier seqnum - * while we wait */ - GST_DEBUG_OBJECT (jitterbuffer, "First buffer %d, do sync", seqnum); - } +/* the timeout for when we expected a packet expired */ +static gboolean +do_expected_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer, + GstClockTime now) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + GstEvent *event; - GST_OBJECT_LOCK (jitterbuffer); - clock = GST_ELEMENT_CLOCK (jitterbuffer); - if (!clock) { - GST_OBJECT_UNLOCK (jitterbuffer); - /* let's just push if there is no clock */ - GST_DEBUG_OBJECT (jitterbuffer, "No clock, push right away"); - goto push_buffer; - } + GST_DEBUG_OBJECT (jitterbuffer, "expected %d didn't arrive", timer->seqnum); - GST_DEBUG_OBJECT (jitterbuffer, "sync to timestamp %" GST_TIME_FORMAT, - GST_TIME_ARGS (out_time)); + event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, + gst_structure_new ("GstRTPRetransmissionRequest", + "seqnum", G_TYPE_UINT, (guint) timer->seqnum, + "running-time", G_TYPE_UINT64, timer->rtx_base, + "delay", G_TYPE_UINT, GST_TIME_AS_MSECONDS (timer->rtx_retry), + "frequency", G_TYPE_UINT, priv->rtx_retry_timeout, + "period", G_TYPE_UINT, priv->rtx_retry_period, + "deadline", G_TYPE_UINT, priv->latency_ms, + "packet-spacing", G_TYPE_UINT64, priv->packet_spacing, NULL)); - /* prepare for sync against clock */ - sync_time = get_sync_time (jitterbuffer, out_time); + JBUF_UNLOCK (priv); + gst_pad_push_event (priv->sinkpad, event); + JBUF_LOCK (priv); - /* create an entry for the clock */ - id = priv->clock_id = gst_clock_new_single_shot_id (clock, sync_time); - priv->unscheduled = FALSE; - GST_OBJECT_UNLOCK (jitterbuffer); + /* calculate the timeout for the next retransmission attempt */ + timer->rtx_retry += (priv->rtx_retry_timeout * GST_MSECOND); + if (timer->rtx_retry > (priv->rtx_retry_period * GST_MSECOND)) { + GST_DEBUG_OBJECT (jitterbuffer, "reschedule as LOST timer"); + /* too many retransmission request, we now convert the timer + * to a lost timer */ + timer->type = TIMER_TYPE_LOST; + timer->rtx_retry = 0; + } + reschedule_timer (jitterbuffer, timer, timer->seqnum, + timer->rtx_base + timer->rtx_retry); - /* release the lock so that the other end can push stuff or unlock */ - JBUF_UNLOCK (priv); + return FALSE; +} - ret = gst_clock_id_wait (id, NULL); +/* a packet is lost */ +static gboolean +do_lost_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer, + GstClockTime now) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + GstClockTime duration, timestamp; + guint seqnum, num; + gboolean late; - JBUF_LOCK (priv); - /* and free the entry */ - gst_clock_id_unref (id); - priv->clock_id = NULL; - - /* at this point, the clock could have been unlocked by a timeout, a new - * tail element was added to the queue or because we are shutting down. Check - * for shutdown first. */ - if G_UNLIKELY - ((priv->srcresult != GST_FLOW_OK)) - goto flushing; - - /* if we got unscheduled and we are not flushing, it's because a new tail - * element became available in the queue or we flushed the queue. - * Grab it and try to push or sync. */ - if (ret == GST_CLOCK_UNSCHEDULED || priv->unscheduled) { - GST_DEBUG_OBJECT (jitterbuffer, - "Wait got unscheduled, will retry to push with new buffer"); - goto again; - } + seqnum = timer->seqnum; + timestamp = apply_offset (jitterbuffer, timer->timeout); + duration = timer->duration; + if (duration == GST_CLOCK_TIME_NONE && priv->packet_spacing > 0) + duration = priv->packet_spacing; + num = MAX (timer->num, 1); + late = timer->num > 0; - lost: - /* we now timed out, this means we lost a packet or finished synchronizing - * on the first buffer. */ - if (gap > 0) { - GstEvent *event; - - /* we had a gap and thus we lost a packet. Create an event for this. */ - GST_DEBUG_OBJECT (jitterbuffer, "Packet #%d lost", next_seqnum); - priv->num_late++; - discont = TRUE; - - /* update our expected next packet */ - priv->last_popped_seqnum = next_seqnum; - priv->last_out_time = out_time; - priv->next_seqnum = (next_seqnum + 1) & 0xffff; - - if (priv->do_lost) { - /* create paket lost event */ - event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM, - gst_structure_new ("GstRTPPacketLost", - "seqnum", G_TYPE_UINT, (guint) next_seqnum, - "timestamp", G_TYPE_UINT64, out_time, - "duration", G_TYPE_UINT64, duration, NULL)); + /* remove timer now */ + remove_timer (jitterbuffer, timer); + JBUF_SIGNAL_EVENT (priv); - JBUF_UNLOCK (priv); - gst_pad_push_event (priv->srcpad, event); - JBUF_LOCK_CHECK (priv, flushing); - } - /* look for next packet */ - goto again; - } + send_lost_event (jitterbuffer, seqnum, num, timestamp, duration, late); - /* there was no known gap,just the first packet, exit the loop and push */ - GST_DEBUG_OBJECT (jitterbuffer, "First packet #%d synced", seqnum); + return TRUE; +} - /* get new timestamp, latency might have changed */ - out_time = apply_offset (jitterbuffer, timestamp); - } -push_buffer: +static gboolean +do_eos_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer, + GstClockTime now) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; - /* when we get here we are ready to pop and push the buffer */ - outbuf = rtp_jitter_buffer_pop (priv->jbuf, &percent); + GST_INFO_OBJECT (jitterbuffer, "got the NPT timeout"); + remove_timer (jitterbuffer, timer); + JBUF_SIGNAL_EVENT (priv); - check_buffering_percent (jitterbuffer, &percent); + return TRUE; +} - if (G_UNLIKELY (discont || priv->discont)) { - /* set DISCONT flag when we missed a packet. We pushed the buffer writable - * into the jitterbuffer so we can modify now. */ - GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); - priv->discont = FALSE; - } +static gboolean +do_deadline_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer, + GstClockTime now) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; - /* apply timestamp with offset to buffer now */ - GST_BUFFER_PTS (outbuf) = out_time; - GST_BUFFER_DTS (outbuf) = out_time; + GST_INFO_OBJECT (jitterbuffer, "got deadline timeout"); - /* update the elapsed time when we need to check against the npt stop time. */ - if (priv->npt_stop != -1 && priv->ext_timestamp != -1 - && priv->clock_base != -1 && priv->clock_rate > 0) { - guint64 elapsed, estimated; + priv->next_seqnum = timer->seqnum; + remove_timer (jitterbuffer, timer); + JBUF_SIGNAL_EVENT (priv); - elapsed = compute_elapsed (jitterbuffer, outbuf); + return TRUE; +} - if (elapsed > priv->last_elapsed || !priv->last_elapsed) { - guint64 left; +static gboolean +do_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer, + GstClockTime now) +{ + gboolean removed = FALSE; - priv->last_elapsed = elapsed; + switch (timer->type) { + case TIMER_TYPE_EXPECTED: + removed = do_expected_timeout (jitterbuffer, timer, now); + break; + case TIMER_TYPE_LOST: + removed = do_lost_timeout (jitterbuffer, timer, now); + break; + case TIMER_TYPE_DEADLINE: + removed = do_deadline_timeout (jitterbuffer, timer, now); + break; + case TIMER_TYPE_EOS: + removed = do_eos_timeout (jitterbuffer, timer, now); + break; + } + return removed; +} - left = priv->npt_stop - priv->npt_start; - GST_LOG_OBJECT (jitterbuffer, "left %" GST_TIME_FORMAT, - GST_TIME_ARGS (left)); +/* called when we need to wait for the next timeout. + * + * We loop over the array of recorded timeouts and wait for the earliest one. + * When it timed out, do the logic associated with the timer. + * + * If there are no timers, we wait on a gcond until something new happens. + */ +static void +wait_next_timeout (GstRtpJitterBuffer * jitterbuffer) +{ + GstRtpJitterBufferPrivate *priv = jitterbuffer->priv; + GstClockTime now = 0; - if (elapsed > 0) - estimated = gst_util_uint64_scale (out_time, left, elapsed); - else { - /* if there is almost nothing left, - * we may never advance enough to end up in the above case */ - if (left < GST_SECOND) - estimated = GST_SECOND; - else - estimated = -1; + JBUF_LOCK (priv); + while (priv->timer_running) { + TimerData *timer = NULL; + GstClockTime timer_timeout = -1; + gint i, len; + + GST_DEBUG_OBJECT (jitterbuffer, "now %" GST_TIME_FORMAT, + GST_TIME_ARGS (now)); + + len = priv->timers->len; + for (i = 0; i < len; i++) { + TimerData *test = &g_array_index (priv->timers, TimerData, i); + GstClockTime test_timeout = get_timeout (jitterbuffer, test); + + GST_DEBUG_OBJECT (jitterbuffer, "%d, %d, %d, %" GST_TIME_FORMAT, + i, test->type, test->seqnum, GST_TIME_ARGS (test_timeout)); + + /* no timestamp, timeout immeditately */ + if (test_timeout == -1 || test_timeout <= now) { + if (do_timeout (jitterbuffer, test, now)) + len--; + i--; + } else if (timer == NULL || test_timeout < timer_timeout) { + /* find the smallest timeout */ + timer = test; + timer_timeout = test_timeout; + } + } + if (timer) { + GstClock *clock; + GstClockTime sync_time; + GstClockID id; + GstClockReturn ret; + GstClockTimeDiff clock_jitter; + + GST_OBJECT_LOCK (jitterbuffer); + clock = GST_ELEMENT_CLOCK (jitterbuffer); + if (!clock) { + GST_OBJECT_UNLOCK (jitterbuffer); + /* let's just push if there is no clock */ + GST_DEBUG_OBJECT (jitterbuffer, "No clock, timeout right away"); + now = timer_timeout; + continue; } - GST_LOG_OBJECT (jitterbuffer, "elapsed %" GST_TIME_FORMAT ", estimated %" - GST_TIME_FORMAT, GST_TIME_ARGS (elapsed), GST_TIME_ARGS (estimated)); + /* prepare for sync against clock */ + sync_time = timer_timeout + GST_ELEMENT_CAST (jitterbuffer)->base_time; + /* add latency of peer to get input time */ + sync_time += priv->peer_latency; - priv->estimated_eos = estimated; + GST_DEBUG_OBJECT (jitterbuffer, "sync to timestamp %" GST_TIME_FORMAT + " with sync time %" GST_TIME_FORMAT, + GST_TIME_ARGS (timer_timeout), GST_TIME_ARGS (sync_time)); + + /* create an entry for the clock */ + id = priv->clock_id = gst_clock_new_single_shot_id (clock, sync_time); + priv->timer_timeout = timer_timeout; + priv->timer_seqnum = timer->seqnum; + GST_OBJECT_UNLOCK (jitterbuffer); + + /* release the lock so that the other end can push stuff or unlock */ + JBUF_UNLOCK (priv); + + ret = gst_clock_id_wait (id, &clock_jitter); + + JBUF_LOCK (priv); + if (!priv->timer_running) + break; + + GST_DEBUG_OBJECT (jitterbuffer, "sync done, %d, #%d, %" G_GINT64_FORMAT, + ret, priv->timer_seqnum, clock_jitter); + /* and free the entry */ + gst_clock_id_unref (id); + priv->clock_id = NULL; + + if (ret != GST_CLOCK_UNSCHEDULED) + now = timer_timeout + MAX (clock_jitter, 0); + } else { + /* no timers, wait for activity */ + GST_DEBUG_OBJECT (jitterbuffer, "waiting"); + JBUF_WAIT_TIMER (priv); + GST_DEBUG_OBJECT (jitterbuffer, "waiting done"); } } - - /* now we are ready to push the buffer. Save the seqnum and release the lock - * so the other end can push stuff in the queue again. */ - priv->last_popped_seqnum = seqnum; - priv->last_out_time = out_time; - priv->next_seqnum = (seqnum + 1) & 0xffff; JBUF_UNLOCK (priv); - if (percent != -1) - post_buffering_percent (jitterbuffer, percent); + GST_DEBUG_OBJECT (jitterbuffer, "we are stopping"); + return; +} - /* push buffer */ - GST_DEBUG_OBJECT (jitterbuffer, - "Pushing buffer %d, timestamp %" GST_TIME_FORMAT, seqnum, - GST_TIME_ARGS (out_time)); - result = gst_pad_push (priv->srcpad, outbuf); - if (G_UNLIKELY (result != GST_FLOW_OK)) - goto pause; +/* + * This funcion implements the main pushing loop on the source pad. + * + * It first tries to push as many buffers as possible. If there is a seqnum + * mismatch, we wait for the next timeouts. + */ +static void +gst_rtp_jitter_buffer_loop (GstRtpJitterBuffer * jitterbuffer) +{ + GstRtpJitterBufferPrivate *priv; + GstFlowReturn result; - return; + priv = jitterbuffer->priv; - /* ERRORS */ -do_eos: - { - /* store result, we are flushing now */ - GST_DEBUG_OBJECT (jitterbuffer, "We are EOS, pushing EOS downstream"); - priv->srcresult = GST_FLOW_EOS; - gst_pad_pause_task (priv->srcpad); - JBUF_UNLOCK (priv); - gst_pad_push_event (priv->srcpad, gst_event_new_eos ()); - return; + JBUF_LOCK_CHECK (priv, flushing); + do { + result = handle_next_buffer (jitterbuffer); + if (G_LIKELY (result == GST_FLOW_WAIT)) { + GST_DEBUG_OBJECT (jitterbuffer, "waiting for event"); + /* now wait for the next event */ + JBUF_WAIT_EVENT (priv, flushing); + GST_DEBUG_OBJECT (jitterbuffer, "waiting for event done"); + result = GST_FLOW_OK; + } } -do_npt_stop: - { - /* store result, we are flushing now */ - GST_DEBUG_OBJECT (jitterbuffer, "We reached the NPT stop"); - JBUF_UNLOCK (priv); + while (result == GST_FLOW_OK); + JBUF_UNLOCK (priv); - g_signal_emit (jitterbuffer, - gst_rtp_jitter_buffer_signals[SIGNAL_ON_NPT_STOP], 0, NULL); - return; - } + /* if we get here we need to pause */ + goto pause; + + /* ERRORS */ flushing: { - GST_DEBUG_OBJECT (jitterbuffer, "we are flushing"); - gst_pad_pause_task (priv->srcpad); + result = priv->srcresult; JBUF_UNLOCK (priv); - return; + goto pause; } pause: { - GST_DEBUG_OBJECT (jitterbuffer, "pausing task, reason %s", - gst_flow_get_name (result)); + const gchar *reason = gst_flow_get_name (result); + GstEvent *event; - JBUF_LOCK (priv); - /* store result */ - priv->srcresult = result; - /* we don't post errors or anything because upstream will do that for us - * when we pass the return value upstream. */ + GST_DEBUG_OBJECT (jitterbuffer, "pausing task, reason %s", reason); gst_pad_pause_task (priv->srcpad); - JBUF_UNLOCK (priv); + if (result == GST_FLOW_EOS) { + event = gst_event_new_eos (); + gst_pad_push_event (priv->srcpad, event); + } return; } } -static GstFlowReturn -gst_rtp_jitter_buffer_chain_rtcp (GstPad * pad, GstObject * parent, - GstBuffer * buffer) +/* collect the info from the lastest RTCP packet and the jitterbuffer sync, do + * some sanity checks and then emit the handle-sync signal with the parameters. + * This function must be called with the LOCK */ +static void +do_handle_sync (GstRtpJitterBuffer * jitterbuffer) { - GstRtpJitterBuffer *jitterbuffer; GstRtpJitterBufferPrivate *priv; - GstFlowReturn ret = GST_FLOW_OK; guint64 base_rtptime, base_time; guint32 clock_rate; guint64 last_rtptime; - guint32 ssrc; - GstRTCPPacket packet; + guint64 clock_base; guint64 ext_rtptime, diff; - guint32 rtptime; gboolean drop = FALSE; - GstRTCPBuffer rtcp = { NULL, }; - guint64 clock_base; - - jitterbuffer = GST_RTP_JITTER_BUFFER (parent); - - if (G_UNLIKELY (!gst_rtcp_buffer_validate (buffer))) - goto invalid_buffer; priv = jitterbuffer->priv; - gst_rtcp_buffer_map (buffer, GST_MAP_READ, &rtcp); - - if (!gst_rtcp_buffer_get_first_packet (&rtcp, &packet)) - goto empty_buffer; - - /* first packet must be SR or RR or else the validate would have failed */ - switch (gst_rtcp_packet_get_type (&packet)) { - case GST_RTCP_TYPE_SR: - gst_rtcp_packet_sr_get_sender_info (&packet, &ssrc, NULL, &rtptime, - NULL, NULL); - break; - default: - goto ignore_buffer; - } - gst_rtcp_buffer_unmap (&rtcp); - - GST_DEBUG_OBJECT (jitterbuffer, "received RTCP of SSRC %08x", ssrc); - - JBUF_LOCK (priv); - /* convert the RTP timestamp to our extended timestamp, using the same offset - * we used in the jitterbuffer */ - ext_rtptime = priv->jbuf->ext_rtptime; - ext_rtptime = gst_rtp_buffer_ext_timestamp (&ext_rtptime, rtptime); - /* get the last values from the jitterbuffer */ rtp_jitter_buffer_get_sync (priv->jbuf, &base_rtptime, &base_time, &clock_rate, &last_rtptime); clock_base = priv->clock_base; + ext_rtptime = priv->ext_rtptime; GST_DEBUG_OBJECT (jitterbuffer, "ext SR %" G_GUINT64_FORMAT ", base %" G_GUINT64_FORMAT ", clock-rate %" G_GUINT32_FORMAT - ", clock-base %" G_GUINT64_FORMAT, - ext_rtptime, base_rtptime, clock_rate, clock_base); + ", clock-base %" G_GUINT64_FORMAT ", last-rtptime %" G_GUINT64_FORMAT, + 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"); @@ -2038,7 +2626,6 @@ gst_rtp_jitter_buffer_chain_rtcp (GstPad * pad, GstObject * parent, } } } - JBUF_UNLOCK (priv); if (!drop) { GstStructure *s; @@ -2049,16 +2636,69 @@ gst_rtp_jitter_buffer_chain_rtcp (GstPad * pad, GstObject * parent, "clock-rate", G_TYPE_UINT, clock_rate, "clock-base", G_TYPE_UINT64, clock_base, "sr-ext-rtptime", G_TYPE_UINT64, ext_rtptime, - "sr-buffer", GST_TYPE_BUFFER, buffer, NULL); + "sr-buffer", GST_TYPE_BUFFER, priv->last_sr, NULL); GST_DEBUG_OBJECT (jitterbuffer, "signaling sync"); + gst_buffer_replace (&priv->last_sr, NULL); + JBUF_UNLOCK (priv); g_signal_emit (jitterbuffer, gst_rtp_jitter_buffer_signals[SIGNAL_HANDLE_SYNC], 0, s); + JBUF_LOCK (priv); gst_structure_free (s); } else { GST_DEBUG_OBJECT (jitterbuffer, "dropping RTCP packet"); - ret = GST_FLOW_OK; } +} + +static GstFlowReturn +gst_rtp_jitter_buffer_chain_rtcp (GstPad * pad, GstObject * parent, + GstBuffer * buffer) +{ + GstRtpJitterBuffer *jitterbuffer; + GstRtpJitterBufferPrivate *priv; + GstFlowReturn ret = GST_FLOW_OK; + guint32 ssrc; + GstRTCPPacket packet; + guint64 ext_rtptime; + guint32 rtptime; + GstRTCPBuffer rtcp = { NULL, }; + + jitterbuffer = GST_RTP_JITTER_BUFFER (parent); + + if (G_UNLIKELY (!gst_rtcp_buffer_validate (buffer))) + goto invalid_buffer; + + priv = jitterbuffer->priv; + + gst_rtcp_buffer_map (buffer, GST_MAP_READ, &rtcp); + + if (!gst_rtcp_buffer_get_first_packet (&rtcp, &packet)) + goto empty_buffer; + + /* first packet must be SR or RR or else the validate would have failed */ + switch (gst_rtcp_packet_get_type (&packet)) { + case GST_RTCP_TYPE_SR: + gst_rtcp_packet_sr_get_sender_info (&packet, &ssrc, NULL, &rtptime, + NULL, NULL); + break; + default: + goto ignore_buffer; + } + gst_rtcp_buffer_unmap (&rtcp); + + GST_DEBUG_OBJECT (jitterbuffer, "received RTCP of SSRC %08x", ssrc); + + JBUF_LOCK (priv); + /* convert the RTP timestamp to our extended timestamp, using the same offset + * we used in the jitterbuffer */ + ext_rtptime = priv->jbuf->ext_rtptime; + ext_rtptime = gst_rtp_buffer_ext_timestamp (&ext_rtptime, rtptime); + + priv->ext_rtptime = ext_rtptime; + gst_buffer_replace (&priv->last_sr, buffer); + + do_handle_sync (jitterbuffer); + JBUF_UNLOCK (priv); done: gst_buffer_unref (buffer); @@ -2260,9 +2900,7 @@ gst_rtp_jitter_buffer_set_property (GObject * object, case PROP_TS_OFFSET: JBUF_LOCK (priv); priv->ts_offset = g_value_get_int64 (value); - /* FIXME, we don't really have a method for signaling a timestamp - * DISCONT without also making this a data discont. */ - /* priv->discont = TRUE; */ + priv->ts_discont = TRUE; JBUF_UNLOCK (priv); break; case PROP_DO_LOST: @@ -2275,6 +2913,31 @@ gst_rtp_jitter_buffer_set_property (GObject * object, rtp_jitter_buffer_set_mode (priv->jbuf, g_value_get_enum (value)); JBUF_UNLOCK (priv); break; + case PROP_DO_RETRANSMISSION: + JBUF_LOCK (priv); + priv->do_retransmission = g_value_get_boolean (value); + JBUF_UNLOCK (priv); + break; + case PROP_RTX_DELAY: + JBUF_LOCK (priv); + priv->rtx_delay = g_value_get_int (value); + JBUF_UNLOCK (priv); + break; + case PROP_RTX_DELAY_REORDER: + JBUF_LOCK (priv); + priv->rtx_delay_reorder = g_value_get_int (value); + JBUF_UNLOCK (priv); + break; + case PROP_RTX_RETRY_TIMEOUT: + JBUF_LOCK (priv); + priv->rtx_retry_timeout = g_value_get_int (value); + JBUF_UNLOCK (priv); + break; + case PROP_RTX_RETRY_PERIOD: + JBUF_LOCK (priv); + priv->rtx_retry_period = g_value_get_int (value); + JBUF_UNLOCK (priv); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -2331,6 +2994,31 @@ gst_rtp_jitter_buffer_get_property (GObject * object, JBUF_UNLOCK (priv); break; } + case PROP_DO_RETRANSMISSION: + JBUF_LOCK (priv); + g_value_set_boolean (value, priv->do_retransmission); + JBUF_UNLOCK (priv); + break; + case PROP_RTX_DELAY: + JBUF_LOCK (priv); + g_value_set_int (value, priv->rtx_delay); + JBUF_UNLOCK (priv); + break; + case PROP_RTX_DELAY_REORDER: + JBUF_LOCK (priv); + g_value_set_int (value, priv->rtx_delay_reorder); + JBUF_UNLOCK (priv); + break; + case PROP_RTX_RETRY_TIMEOUT: + JBUF_LOCK (priv); + g_value_set_int (value, priv->rtx_retry_timeout); + JBUF_UNLOCK (priv); + break; + case PROP_RTX_RETRY_PERIOD: + JBUF_LOCK (priv); + g_value_set_int (value, priv->rtx_retry_period); + JBUF_UNLOCK (priv); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; diff --git a/gst/rtpmanager/gstrtpjitterbuffer.h b/gst/rtpmanager/gstrtpjitterbuffer.h index 37ef7b3156cfb4185168e6258afca7b5eec6e369..c8522798e3ba48f2ae8e9d4f5e3ff9877fd3f908 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.h +++ b/gst/rtpmanager/gstrtpjitterbuffer.h @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/gst/rtpmanager/gstrtpmanager.c b/gst/rtpmanager/gstrtpmanager.c index f04ef3c3060f778d4554aa624074605f9a5ba1e4..9a28399970460dd70a52692187e27224793bd720 100644 --- a/gst/rtpmanager/gstrtpmanager.c +++ b/gst/rtpmanager/gstrtpmanager.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -25,7 +25,10 @@ #include "gstrtpjitterbuffer.h" #include "gstrtpptdemux.h" #include "gstrtpsession.h" +#include "gstrtprtxqueue.h" #include "gstrtpssrcdemux.h" +#include "gstrtpdtmfmux.h" +#include "gstrtpmux.h" static gboolean plugin_init (GstPlugin * plugin) @@ -45,10 +48,19 @@ plugin_init (GstPlugin * plugin) GST_TYPE_RTP_SESSION)) return FALSE; + if (!gst_rtp_rtx_queue_plugin_init (plugin)) + return FALSE; + if (!gst_element_register (plugin, "rtpssrcdemux", GST_RANK_NONE, GST_TYPE_RTP_SSRC_DEMUX)) return FALSE; + if (!gst_rtp_mux_plugin_init (plugin)) + return FALSE; + + if (!gst_rtp_dtmf_mux_plugin_init (plugin)) + return FALSE; + return TRUE; } diff --git a/gst/rtpmanager/gstrtpmux.c b/gst/rtpmanager/gstrtpmux.c new file mode 100644 index 0000000000000000000000000000000000000000..a4b4f39fec92d0964c82e41feae478e1e3f799fc --- /dev/null +++ b/gst/rtpmanager/gstrtpmux.c @@ -0,0 +1,887 @@ +/* RTP muxer element for GStreamer + * + * gstrtpmux.c: + * + * Copyright (C) <2007-2010> Nokia Corporation. + * Contact: Zeeshan Ali <zeeshan.ali@nokia.com> + * Copyright (C) <2007-2010> Collabora Ltd + * Contact: Olivier Crete <olivier.crete@collabora.co.uk> + * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> + * 2000,2005 Wim Taymans <wim@fluendo.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtpmux + * @see_also: rtpdtmfmux + * + * The rtp muxer takes multiple RTP streams having the same clock-rate and + * muxes into a single stream with a single SSRC. + * + * <refsect2> + * <title>Example pipelines</title> + * |[ + * gst-launch rtpmux name=mux ! udpsink host=127.0.0.1 port=8888 \ + * alsasrc ! alawenc ! rtppcmapay ! \ + * application/x-rtp, payload=8, rate=8000 ! mux.sink_0 \ + * audiotestsrc is-live=1 ! \ + * mulawenc ! rtppcmupay ! \ + * application/x-rtp, payload=0, rate=8000 ! mux.sink_1 + * ]| + * In this example, an audio stream is captured from ALSA and another is + * generated, both are encoded into different payload types and muxed together + * so they can be sent on the same port. + * </refsect2> + * + * Last reviewed on 2010-09-30 (0.10.21) + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <gst/gst.h> +#include <gst/rtp/gstrtpbuffer.h> +#include <string.h> + +#include "gstrtpmux.h" + +GST_DEBUG_CATEGORY_STATIC (gst_rtp_mux_debug); +#define GST_CAT_DEFAULT gst_rtp_mux_debug + +enum +{ + ARG_0, + PROP_TIMESTAMP_OFFSET, + PROP_SEQNUM_OFFSET, + PROP_SEQNUM, + PROP_SSRC +}; + +#define DEFAULT_TIMESTAMP_OFFSET -1 +#define DEFAULT_SEQNUM_OFFSET -1 +#define DEFAULT_SSRC -1 + +static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp") + ); + +static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink_%u", + GST_PAD_SINK, + GST_PAD_REQUEST, + GST_STATIC_CAPS ("application/x-rtp") + ); + +static GstPad *gst_rtp_mux_request_new_pad (GstElement * element, + GstPadTemplate * templ, const gchar * name, const GstCaps * caps); +static void gst_rtp_mux_release_pad (GstElement * element, GstPad * pad); +static GstFlowReturn gst_rtp_mux_chain (GstPad * pad, GstObject * parent, + GstBuffer * buffer); +static GstFlowReturn gst_rtp_mux_chain_list (GstPad * pad, GstObject * parent, + GstBufferList * bufferlist); +static gboolean gst_rtp_mux_setcaps (GstPad * pad, GstRTPMux * rtp_mux, + GstCaps * caps); +static gboolean gst_rtp_mux_sink_event (GstPad * pad, GstObject * parent, + GstEvent * event); +static gboolean gst_rtp_mux_sink_query (GstPad * pad, GstObject * parent, + GstQuery * query); + +static GstStateChangeReturn gst_rtp_mux_change_state (GstElement * + element, GstStateChange transition); + +static void gst_rtp_mux_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_rtp_mux_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); +static void gst_rtp_mux_dispose (GObject * object); + +static gboolean gst_rtp_mux_src_event_real (GstRTPMux * rtp_mux, + GstEvent * event); + +G_DEFINE_TYPE (GstRTPMux, gst_rtp_mux, GST_TYPE_ELEMENT); + + +static void +gst_rtp_mux_class_init (GstRTPMuxClass * klass) +{ + GObjectClass *gobject_class; + GstElementClass *gstelement_class; + + gobject_class = (GObjectClass *) klass; + gstelement_class = (GstElementClass *) klass; + + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&src_factory)); + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&sink_factory)); + + gst_element_class_set_static_metadata (gstelement_class, "RTP muxer", + "Codec/Muxer", + "multiplex N rtp streams into one", "Zeeshan Ali <first.last@nokia.com>"); + + gobject_class->get_property = gst_rtp_mux_get_property; + gobject_class->set_property = gst_rtp_mux_set_property; + gobject_class->dispose = gst_rtp_mux_dispose; + + klass->src_event = gst_rtp_mux_src_event_real; + + g_object_class_install_property (G_OBJECT_CLASS (klass), + PROP_TIMESTAMP_OFFSET, g_param_spec_int ("timestamp-offset", + "Timestamp Offset", + "Offset to add to all outgoing timestamps (-1 = random)", -1, + G_MAXINT, DEFAULT_TIMESTAMP_OFFSET, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM_OFFSET, + g_param_spec_int ("seqnum-offset", "Sequence number Offset", + "Offset to add to all outgoing seqnum (-1 = random)", -1, G_MAXINT, + DEFAULT_SEQNUM_OFFSET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SEQNUM, + g_param_spec_uint ("seqnum", "Sequence number", + "The RTP sequence number of the last processed packet", + 0, G_MAXUINT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SSRC, + g_param_spec_uint ("ssrc", "SSRC", + "The SSRC of the packets (-1 == random)", + 0, G_MAXUINT, DEFAULT_SSRC, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + gstelement_class->request_new_pad = + GST_DEBUG_FUNCPTR (gst_rtp_mux_request_new_pad); + gstelement_class->release_pad = GST_DEBUG_FUNCPTR (gst_rtp_mux_release_pad); + gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_rtp_mux_change_state); +} + +static void +gst_rtp_mux_dispose (GObject * object) +{ + GstRTPMux *rtp_mux = GST_RTP_MUX (object); + GList *item; + + g_clear_object (&rtp_mux->last_pad); + +restart: + for (item = GST_ELEMENT_PADS (object); item; item = g_list_next (item)) { + GstPad *pad = GST_PAD (item->data); + if (GST_PAD_IS_SINK (pad)) { + gst_element_release_request_pad (GST_ELEMENT (object), pad); + goto restart; + } + } + + G_OBJECT_CLASS (gst_rtp_mux_parent_class)->dispose (object); +} + +static gboolean +gst_rtp_mux_src_event (GstPad * pad, GstObject * parent, GstEvent * event) +{ + GstRTPMux *rtp_mux = GST_RTP_MUX (parent); + GstRTPMuxClass *klass; + gboolean ret = FALSE; + + klass = GST_RTP_MUX_GET_CLASS (rtp_mux); + + ret = klass->src_event (rtp_mux, event); + + return ret; +} + +static gboolean +gst_rtp_mux_src_event_real (GstRTPMux * rtp_mux, GstEvent * event) +{ + GstIterator *iter; + gboolean result = FALSE; + gboolean done = FALSE; + + iter = gst_element_iterate_sink_pads (GST_ELEMENT (rtp_mux)); + + while (!done) { + GValue item = { 0, }; + + switch (gst_iterator_next (iter, &item)) { + case GST_ITERATOR_OK: + gst_event_ref (event); + result |= gst_pad_push_event (g_value_get_object (&item), event); + g_value_reset (&item); + break; + case GST_ITERATOR_RESYNC: + gst_iterator_resync (iter); + result = FALSE; + break; + case GST_ITERATOR_ERROR: + GST_WARNING_OBJECT (rtp_mux, "Error iterating sinkpads"); + case GST_ITERATOR_DONE: + done = TRUE; + break; + } + } + gst_iterator_free (iter); + gst_event_unref (event); + + return result; +} + +static void +gst_rtp_mux_init (GstRTPMux * rtp_mux) +{ + GstElementClass *klass = GST_ELEMENT_GET_CLASS (rtp_mux); + + rtp_mux->srcpad = + gst_pad_new_from_template (gst_element_class_get_pad_template (klass, + "src"), "src"); + gst_pad_set_event_function (rtp_mux->srcpad, + GST_DEBUG_FUNCPTR (gst_rtp_mux_src_event)); + GST_PAD_SET_PROXY_CAPS (rtp_mux->srcpad); + gst_element_add_pad (GST_ELEMENT (rtp_mux), rtp_mux->srcpad); + + rtp_mux->ssrc = DEFAULT_SSRC; + rtp_mux->ts_offset = DEFAULT_TIMESTAMP_OFFSET; + rtp_mux->seqnum_offset = DEFAULT_SEQNUM_OFFSET; + + rtp_mux->last_stop = GST_CLOCK_TIME_NONE; +} + +static void +gst_rtp_mux_setup_sinkpad (GstRTPMux * rtp_mux, GstPad * sinkpad) +{ + GstRTPMuxPadPrivate *padpriv = g_slice_new0 (GstRTPMuxPadPrivate); + + /* setup some pad functions */ + gst_pad_set_chain_function (sinkpad, GST_DEBUG_FUNCPTR (gst_rtp_mux_chain)); + gst_pad_set_chain_list_function (sinkpad, + GST_DEBUG_FUNCPTR (gst_rtp_mux_chain_list)); + gst_pad_set_event_function (sinkpad, + GST_DEBUG_FUNCPTR (gst_rtp_mux_sink_event)); + gst_pad_set_query_function (sinkpad, + GST_DEBUG_FUNCPTR (gst_rtp_mux_sink_query)); + + + gst_segment_init (&padpriv->segment, GST_FORMAT_UNDEFINED); + + gst_pad_set_element_private (sinkpad, padpriv); + + gst_pad_set_active (sinkpad, TRUE); + gst_element_add_pad (GST_ELEMENT (rtp_mux), sinkpad); +} + +static GstPad * +gst_rtp_mux_request_new_pad (GstElement * element, + GstPadTemplate * templ, const gchar * req_name, const GstCaps * caps) +{ + GstRTPMux *rtp_mux; + GstPad *newpad; + + g_return_val_if_fail (templ != NULL, NULL); + g_return_val_if_fail (GST_IS_RTP_MUX (element), NULL); + + rtp_mux = GST_RTP_MUX (element); + + if (templ->direction != GST_PAD_SINK) { + GST_WARNING_OBJECT (rtp_mux, "request pad that is not a SINK pad"); + return NULL; + } + + newpad = gst_pad_new_from_template (templ, req_name); + if (newpad) + gst_rtp_mux_setup_sinkpad (rtp_mux, newpad); + else + GST_WARNING_OBJECT (rtp_mux, "failed to create request pad"); + + return newpad; +} + +static void +gst_rtp_mux_release_pad (GstElement * element, GstPad * pad) +{ + GstRTPMuxPadPrivate *padpriv; + + GST_OBJECT_LOCK (element); + padpriv = gst_pad_get_element_private (pad); + gst_pad_set_element_private (pad, NULL); + GST_OBJECT_UNLOCK (element); + + gst_element_remove_pad (element, pad); + + if (padpriv) { + g_slice_free (GstRTPMuxPadPrivate, padpriv); + } +} + +/* Put our own clock-base on the buffer */ +static void +gst_rtp_mux_readjust_rtp_timestamp_locked (GstRTPMux * rtp_mux, + GstRTPMuxPadPrivate * padpriv, GstRTPBuffer * rtpbuffer) +{ + guint32 ts; + guint32 sink_ts_base = 0; + + if (padpriv && padpriv->have_clock_base) + sink_ts_base = padpriv->clock_base; + + ts = gst_rtp_buffer_get_timestamp (rtpbuffer) - sink_ts_base + + rtp_mux->ts_base; + GST_LOG_OBJECT (rtp_mux, "Re-adjusting RTP ts %u to %u", + gst_rtp_buffer_get_timestamp (rtpbuffer), ts); + gst_rtp_buffer_set_timestamp (rtpbuffer, ts); +} + +static gboolean +process_buffer_locked (GstRTPMux * rtp_mux, GstRTPMuxPadPrivate * padpriv, + GstRTPBuffer * rtpbuffer) +{ + GstRTPMuxClass *klass = GST_RTP_MUX_GET_CLASS (rtp_mux); + + if (klass->accept_buffer_locked) + if (!klass->accept_buffer_locked (rtp_mux, padpriv, rtpbuffer)) + return FALSE; + + rtp_mux->seqnum++; + gst_rtp_buffer_set_seq (rtpbuffer, rtp_mux->seqnum); + + gst_rtp_buffer_set_ssrc (rtpbuffer, rtp_mux->current_ssrc); + gst_rtp_mux_readjust_rtp_timestamp_locked (rtp_mux, padpriv, rtpbuffer); + GST_LOG_OBJECT (rtp_mux, + "Pushing packet size %" G_GSIZE_FORMAT ", seq=%d, ts=%u", + rtpbuffer->map[0].size, rtp_mux->seqnum, + gst_rtp_buffer_get_timestamp (rtpbuffer)); + + if (padpriv) { + if (padpriv->segment.format == GST_FORMAT_TIME) + GST_BUFFER_PTS (rtpbuffer->buffer) = + gst_segment_to_running_time (&padpriv->segment, GST_FORMAT_TIME, + GST_BUFFER_PTS (rtpbuffer->buffer)); + } + + return TRUE; +} + +struct BufferListData +{ + GstRTPMux *rtp_mux; + GstRTPMuxPadPrivate *padpriv; + gboolean drop; +}; + +static gboolean +process_list_item (GstBuffer ** buffer, guint idx, gpointer user_data) +{ + struct BufferListData *bd = user_data; + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + + *buffer = gst_buffer_make_writable (*buffer); + + gst_rtp_buffer_map (*buffer, GST_MAP_READWRITE, &rtpbuffer); + + bd->drop = !process_buffer_locked (bd->rtp_mux, bd->padpriv, &rtpbuffer); + + gst_rtp_buffer_unmap (&rtpbuffer); + + if (bd->drop) + return FALSE; + + if (GST_BUFFER_DURATION_IS_VALID (*buffer) && + GST_BUFFER_TIMESTAMP_IS_VALID (*buffer)) + bd->rtp_mux->last_stop = GST_BUFFER_TIMESTAMP (*buffer) + + GST_BUFFER_DURATION (*buffer); + else + bd->rtp_mux->last_stop = GST_CLOCK_TIME_NONE; + + return TRUE; +} + +static GstFlowReturn +gst_rtp_mux_chain_list (GstPad * pad, GstObject * parent, + GstBufferList * bufferlist) +{ + GstRTPMux *rtp_mux; + GstFlowReturn ret; + GstRTPMuxPadPrivate *padpriv; + gboolean drop = TRUE; + struct BufferListData bd; + + rtp_mux = GST_RTP_MUX (parent); + + GST_OBJECT_LOCK (rtp_mux); + + padpriv = gst_pad_get_element_private (pad); + if (!padpriv) { + GST_OBJECT_UNLOCK (rtp_mux); + ret = GST_FLOW_NOT_LINKED; + gst_buffer_list_unref (bufferlist); + goto out; + } + + bd.rtp_mux = rtp_mux; + bd.padpriv = padpriv; + bd.drop = FALSE; + + bufferlist = gst_buffer_list_make_writable (bufferlist); + gst_buffer_list_foreach (bufferlist, process_list_item, &bd); + + GST_OBJECT_UNLOCK (rtp_mux); + + if (drop) { + gst_buffer_list_unref (bufferlist); + ret = GST_FLOW_OK; + } else { + ret = gst_pad_push_list (rtp_mux->srcpad, bufferlist); + } + +out: + + return ret; +} + +static gboolean +resend_events (GstPad * pad, GstEvent ** event, gpointer user_data) +{ + GstRTPMux *rtp_mux = user_data; + + if (GST_EVENT_TYPE (*event) == GST_EVENT_CAPS) { + GstCaps *caps; + + gst_event_parse_caps (*event, &caps); + gst_rtp_mux_setcaps (pad, rtp_mux, caps); + } else { + gst_pad_push_event (rtp_mux->srcpad, gst_event_ref (*event)); + } + + return TRUE; +} + +static GstFlowReturn +gst_rtp_mux_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) +{ + GstRTPMux *rtp_mux; + GstFlowReturn ret; + GstRTPMuxPadPrivate *padpriv; + gboolean drop; + gboolean changed = FALSE; + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + + rtp_mux = GST_RTP_MUX (GST_OBJECT_PARENT (pad)); + + GST_OBJECT_LOCK (rtp_mux); + padpriv = gst_pad_get_element_private (pad); + + if (!padpriv) { + GST_OBJECT_UNLOCK (rtp_mux); + gst_buffer_unref (buffer); + return GST_FLOW_NOT_LINKED; + } + + buffer = gst_buffer_make_writable (buffer); + + if (!gst_rtp_buffer_map (buffer, GST_MAP_READWRITE, &rtpbuffer)) { + GST_OBJECT_UNLOCK (rtp_mux); + gst_buffer_unref (buffer); + GST_ERROR_OBJECT (rtp_mux, "Invalid RTP buffer"); + return GST_FLOW_ERROR; + } + + drop = !process_buffer_locked (rtp_mux, padpriv, &rtpbuffer); + + gst_rtp_buffer_unmap (&rtpbuffer); + + if (!drop) { + if (pad != rtp_mux->last_pad) { + changed = TRUE; + g_clear_object (&rtp_mux->last_pad); + rtp_mux->last_pad = g_object_ref (pad); + } + + if (GST_BUFFER_DURATION_IS_VALID (buffer) && + GST_BUFFER_TIMESTAMP_IS_VALID (buffer)) + rtp_mux->last_stop = GST_BUFFER_TIMESTAMP (buffer) + + GST_BUFFER_DURATION (buffer); + else + rtp_mux->last_stop = GST_CLOCK_TIME_NONE; + } + + GST_OBJECT_UNLOCK (rtp_mux); + + if (changed) + gst_pad_sticky_events_foreach (pad, resend_events, rtp_mux); + + if (drop) { + gst_buffer_unref (buffer); + ret = GST_FLOW_OK; + } else { + ret = gst_pad_push (rtp_mux->srcpad, buffer); + } + + return ret; +} + +static gboolean +gst_rtp_mux_setcaps (GstPad * pad, GstRTPMux * rtp_mux, GstCaps * caps) +{ + GstStructure *structure; + gboolean ret = FALSE; + GstRTPMuxPadPrivate *padpriv; + + structure = gst_caps_get_structure (caps, 0); + + if (!structure) + return FALSE; + + GST_OBJECT_LOCK (rtp_mux); + padpriv = gst_pad_get_element_private (pad); + if (padpriv && + gst_structure_get_uint (structure, "clock-base", &padpriv->clock_base)) { + padpriv->have_clock_base = TRUE; + } + GST_OBJECT_UNLOCK (rtp_mux); + + caps = gst_caps_copy (caps); + + gst_caps_set_simple (caps, + "clock-base", G_TYPE_UINT, rtp_mux->ts_base, + "seqnum-base", G_TYPE_UINT, rtp_mux->seqnum_base, NULL); + + if (rtp_mux->send_stream_start) { + gchar s_id[32]; + + /* stream-start (FIXME: create id based on input ids) */ + g_snprintf (s_id, sizeof (s_id), "interleave-%08x", g_random_int ()); + gst_pad_push_event (rtp_mux->srcpad, gst_event_new_stream_start (s_id)); + + rtp_mux->send_stream_start = FALSE; + } + + GST_DEBUG_OBJECT (rtp_mux, + "setting caps %" GST_PTR_FORMAT " on src pad..", caps); + ret = gst_pad_set_caps (rtp_mux->srcpad, caps); + + if (rtp_mux->ssrc == -1) { + if (gst_structure_has_field_typed (structure, "ssrc", G_TYPE_UINT)) { + rtp_mux->current_ssrc = g_value_get_uint + (gst_structure_get_value (structure, "ssrc")); + } + } + + gst_caps_unref (caps); + + return ret; +} + +static void +clear_caps (GstCaps * caps, gboolean only_clock_rate) +{ + gint i, j; + + /* Lets only match on the clock-rate */ + for (i = 0; i < gst_caps_get_size (caps); i++) { + GstStructure *s = gst_caps_get_structure (caps, i); + + for (j = 0; j < gst_structure_n_fields (s); j++) { + const gchar *name = gst_structure_nth_field_name (s, j); + + if (strcmp (name, "clock-rate") && (only_clock_rate || + (strcmp (name, "ssrc")))) { + gst_structure_remove_field (s, name); + j--; + } + } + } +} + +static gboolean +same_clock_rate_fold (const GValue * item, GValue * ret, gpointer user_data) +{ + GstPad *mypad = user_data; + GstPad *pad = g_value_get_object (item); + GstCaps *peercaps; + GstCaps *accumcaps; + GstCaps *intersect; + + if (pad == mypad) + return TRUE; + + accumcaps = g_value_get_boxed (ret); + peercaps = gst_pad_peer_query_caps (pad, accumcaps); + if (!peercaps) { + g_warning ("no peercaps"); + return TRUE; + } + peercaps = gst_caps_make_writable (peercaps); + clear_caps (peercaps, TRUE); + + intersect = gst_caps_intersect (accumcaps, peercaps); + + g_value_take_boxed (ret, intersect); + gst_caps_unref (peercaps); + + return !gst_caps_is_empty (intersect); +} + +static GstCaps * +gst_rtp_mux_getcaps (GstPad * pad, GstRTPMux * mux, GstCaps * filter) +{ + GstCaps *caps = NULL; + GstIterator *iter = NULL; + GValue v = { 0 }; + GstIteratorResult res; + GstCaps *peercaps; + GstCaps *othercaps; + + peercaps = gst_pad_peer_query_caps (mux->srcpad, filter); + + if (peercaps) { + othercaps = gst_caps_intersect_full (peercaps, + gst_pad_get_pad_template_caps (pad), GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (peercaps); + } else { + if (filter) + othercaps = gst_caps_intersect_full (filter, + gst_pad_get_pad_template_caps (mux->srcpad), + GST_CAPS_INTERSECT_FIRST); + else + othercaps = gst_caps_copy (gst_pad_get_pad_template_caps (mux->srcpad)); + } + + clear_caps (othercaps, FALSE); + + g_value_init (&v, GST_TYPE_CAPS); + + iter = gst_element_iterate_sink_pads (GST_ELEMENT (mux)); + do { + gst_value_set_caps (&v, othercaps); + res = gst_iterator_fold (iter, same_clock_rate_fold, &v, pad); + gst_iterator_resync (iter); + } while (res == GST_ITERATOR_RESYNC); + gst_iterator_free (iter); + + caps = (GstCaps *) gst_value_get_caps (&v); + + if (res == GST_ITERATOR_ERROR) { + gst_caps_unref (caps); + caps = gst_caps_new_empty (); + } + + gst_caps_unref (othercaps); + + return caps; +} + +static gboolean +gst_rtp_mux_sink_query (GstPad * pad, GstObject * parent, GstQuery * query) +{ + GstRTPMux *mux = GST_RTP_MUX (parent); + gboolean res = FALSE; + + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_CAPS: + { + GstCaps *filter, *caps; + + gst_query_parse_caps (query, &filter); + caps = gst_rtp_mux_getcaps (pad, mux, filter); + gst_query_set_caps_result (query, caps); + gst_caps_unref (caps); + res = TRUE; + break; + } + default: + res = gst_pad_query_default (pad, parent, query); + break; + } + + return res; + + +} + + +static void +gst_rtp_mux_get_property (GObject * object, + guint prop_id, GValue * value, GParamSpec * pspec) +{ + GstRTPMux *rtp_mux; + + rtp_mux = GST_RTP_MUX (object); + + switch (prop_id) { + case PROP_TIMESTAMP_OFFSET: + g_value_set_int (value, rtp_mux->ts_offset); + break; + case PROP_SEQNUM_OFFSET: + g_value_set_int (value, rtp_mux->seqnum_offset); + break; + case PROP_SEQNUM: + GST_OBJECT_LOCK (rtp_mux); + g_value_set_uint (value, rtp_mux->seqnum); + GST_OBJECT_UNLOCK (rtp_mux); + break; + case PROP_SSRC: + g_value_set_uint (value, rtp_mux->ssrc); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_rtp_mux_set_property (GObject * object, + guint prop_id, const GValue * value, GParamSpec * pspec) +{ + GstRTPMux *rtp_mux; + + rtp_mux = GST_RTP_MUX (object); + + switch (prop_id) { + case PROP_TIMESTAMP_OFFSET: + rtp_mux->ts_offset = g_value_get_int (value); + break; + case PROP_SEQNUM_OFFSET: + rtp_mux->seqnum_offset = g_value_get_int (value); + break; + case PROP_SSRC: + rtp_mux->ssrc = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static gboolean +gst_rtp_mux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) +{ + GstRTPMux *mux = GST_RTP_MUX (parent); + gboolean is_pad; + gboolean ret; + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_CAPS: + { + GstCaps *caps; + + gst_event_parse_caps (event, &caps); + ret = gst_rtp_mux_setcaps (pad, mux, caps); + gst_event_unref (event); + return ret; + } + case GST_EVENT_FLUSH_STOP: + { + GST_OBJECT_LOCK (mux); + mux->last_stop = GST_CLOCK_TIME_NONE; + GST_OBJECT_UNLOCK (mux); + break; + } + case GST_EVENT_SEGMENT: + { + GstRTPMuxPadPrivate *padpriv; + + GST_OBJECT_LOCK (mux); + padpriv = gst_pad_get_element_private (pad); + + if (padpriv) { + gst_event_copy_segment (event, &padpriv->segment); + } + GST_OBJECT_UNLOCK (mux); + break; + } + default: + break; + } + + GST_OBJECT_LOCK (mux); + is_pad = (pad == mux->last_pad); + GST_OBJECT_UNLOCK (mux); + + if (is_pad) { + return gst_pad_push_event (mux->srcpad, event); + } else { + gst_event_unref (event); + return TRUE; + } +} + +static void +gst_rtp_mux_ready_to_paused (GstRTPMux * rtp_mux) +{ + + GST_OBJECT_LOCK (rtp_mux); + + g_clear_object (&rtp_mux->last_pad); + rtp_mux->send_stream_start = TRUE; + + if (rtp_mux->ssrc == -1) + rtp_mux->current_ssrc = g_random_int (); + else + rtp_mux->current_ssrc = rtp_mux->ssrc; + + if (rtp_mux->seqnum_offset == -1) + rtp_mux->seqnum_base = g_random_int_range (0, G_MAXUINT16); + else + rtp_mux->seqnum_base = rtp_mux->seqnum_offset; + rtp_mux->seqnum = rtp_mux->seqnum_base; + + if (rtp_mux->ts_offset == -1) + rtp_mux->ts_base = g_random_int (); + else + rtp_mux->ts_base = rtp_mux->ts_offset; + + rtp_mux->last_stop = GST_CLOCK_TIME_NONE; + + GST_DEBUG_OBJECT (rtp_mux, "set clock-base to %u", rtp_mux->ts_base); + + GST_OBJECT_UNLOCK (rtp_mux); +} + +static GstStateChangeReturn +gst_rtp_mux_change_state (GstElement * element, GstStateChange transition) +{ + GstRTPMux *rtp_mux; + GstStateChangeReturn ret; + + rtp_mux = GST_RTP_MUX (element); + + switch (transition) { + case GST_STATE_CHANGE_READY_TO_PAUSED: + gst_rtp_mux_ready_to_paused (rtp_mux); + break; + default: + break; + } + + ret = GST_ELEMENT_CLASS (gst_rtp_mux_parent_class)->change_state (element, + transition); + + switch (transition) { + case GST_STATE_CHANGE_PAUSED_TO_READY: + g_clear_object (&rtp_mux->last_pad); + break; + default: + break; + } + + return ret; +} + +gboolean +gst_rtp_mux_plugin_init (GstPlugin * plugin) +{ + GST_DEBUG_CATEGORY_INIT (gst_rtp_mux_debug, "rtpmux", 0, "rtp muxer"); + + return gst_element_register (plugin, "rtpmux", GST_RANK_NONE, + GST_TYPE_RTP_MUX); +} diff --git a/gst/rtpmanager/gstrtpmux.h b/gst/rtpmanager/gstrtpmux.h new file mode 100644 index 0000000000000000000000000000000000000000..3582a75a5683089875a3acd2f94904a85bef0587 --- /dev/null +++ b/gst/rtpmanager/gstrtpmux.h @@ -0,0 +1,96 @@ +/* RTP muxer element for GStreamer + * + * gstrtpmux.h: + * + * Copyright (C) <2007> Nokia Corporation. + * Contact: Zeeshan Ali <zeeshan.ali@nokia.com> + * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> + * 2000,2005 Wim Taymans <wim@fluendo.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_RTP_MUX_H__ +#define __GST_RTP_MUX_H__ + +#include <gst/gst.h> +#include <gst/rtp/gstrtpbuffer.h> + +G_BEGIN_DECLS +#define GST_TYPE_RTP_MUX (gst_rtp_mux_get_type()) +#define GST_RTP_MUX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_MUX, GstRTPMux)) +#define GST_RTP_MUX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_MUX, GstRTPMuxClass)) +#define GST_RTP_MUX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_RTP_MUX, GstRTPMuxClass)) +#define GST_IS_RTP_MUX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_MUX)) +#define GST_IS_RTP_MUX_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_MUX)) +typedef struct _GstRTPMux GstRTPMux; +typedef struct _GstRTPMuxClass GstRTPMuxClass; + + +typedef struct +{ + gboolean have_clock_base; + guint clock_base; + + GstSegment segment; + + gboolean priority; +} GstRTPMuxPadPrivate; + + +/** + * GstRTPMux: + * + * The opaque #GstRTPMux structure. + */ +struct _GstRTPMux +{ + GstElement element; + + /* pad */ + GstPad *srcpad; + + guint32 ts_base; + guint16 seqnum_base; + + gint32 ts_offset; + gint16 seqnum_offset; + guint16 seqnum; /* protected by object lock */ + guint ssrc; + guint current_ssrc; + + GstPad *last_pad; /* protected by object lock */ + + GstClockTime last_stop; + gboolean send_stream_start; +}; + +struct _GstRTPMuxClass +{ + GstElementClass parent_class; + + gboolean (*accept_buffer_locked) (GstRTPMux *rtp_mux, + GstRTPMuxPadPrivate * padpriv, GstRTPBuffer * buffer); + + gboolean (*src_event) (GstRTPMux *rtp_mux, GstEvent *event); +}; + + +GType gst_rtp_mux_get_type (void); +gboolean gst_rtp_mux_plugin_init (GstPlugin * plugin); + +G_END_DECLS +#endif /* __GST_RTP_MUX_H__ */ diff --git a/gst/rtpmanager/gstrtpptdemux.c b/gst/rtpmanager/gstrtpptdemux.c index b4d60aaba54e140d2a8fd72c41b7d6dccb864f64..dbc0016ab28a6d13f6aa51b72d6f81e77f07c6fc 100644 --- a/gst/rtpmanager/gstrtpptdemux.c +++ b/gst/rtpmanager/gstrtpptdemux.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -76,7 +76,6 @@ #include <gst/gst.h> #include <gst/rtp/gstrtpbuffer.h> -#include "gstrtpbin-marshal.h" #include "gstrtpptdemux.h" /* generic templates */ @@ -160,8 +159,7 @@ gst_rtp_pt_demux_class_init (GstRtpPtDemuxClass * klass) gst_rtp_pt_demux_signals[SIGNAL_REQUEST_PT_MAP] = g_signal_new ("request-pt-map", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpPtDemuxClass, request_pt_map), - NULL, NULL, gst_rtp_bin_marshal_BOXED__UINT, GST_TYPE_CAPS, 1, - G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, GST_TYPE_CAPS, 1, G_TYPE_UINT); /** * GstRtpPtDemux::new-payload-type: @@ -174,8 +172,8 @@ gst_rtp_pt_demux_class_init (GstRtpPtDemuxClass * klass) gst_rtp_pt_demux_signals[SIGNAL_NEW_PAYLOAD_TYPE] = g_signal_new ("new-payload-type", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpPtDemuxClass, new_payload_type), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_OBJECT, G_TYPE_NONE, 2, - G_TYPE_UINT, GST_TYPE_PAD); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + GST_TYPE_PAD); /** * GstRtpPtDemux::payload-type-change: @@ -337,7 +335,9 @@ forward_sticky_events (GstPad * pad, GstEvent ** event, gpointer user_data) { GstPad *srcpad = GST_PAD_CAST (user_data); - gst_pad_push_event (srcpad, gst_event_ref (*event)); + /* Stream start and caps have already been pushed */ + if (GST_EVENT_TYPE (*event) >= GST_EVENT_SEGMENT) + gst_pad_push_event (srcpad, gst_event_ref (*event)); return TRUE; } @@ -394,9 +394,10 @@ gst_rtp_pt_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) gst_pad_set_active (srcpad, TRUE); - /* First sticky events on sink pad are forwarded to the new src pad */ - gst_pad_sticky_events_foreach (rtpdemux->sink, forward_sticky_events, - srcpad); + + /* First push the stream-start event, it must always come first */ + gst_pad_push_event (srcpad, + gst_pad_get_sticky_event (rtpdemux->sink, GST_EVENT_STREAM_START, 0)); /* Then caps event is sent */ caps = gst_caps_make_writable (caps); @@ -404,6 +405,10 @@ gst_rtp_pt_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) gst_pad_set_caps (srcpad, caps); gst_caps_unref (caps); + /* First sticky events on sink pad are forwarded to the new src pad */ + gst_pad_sticky_events_foreach (rtpdemux->sink, forward_sticky_events, + srcpad); + gst_element_add_pad (GST_ELEMENT_CAST (rtpdemux), srcpad); GST_DEBUG ("emitting new-payload-type for pt %d", pt); diff --git a/gst/rtpmanager/gstrtpptdemux.h b/gst/rtpmanager/gstrtpptdemux.h index 028c97d4a479cc7c1443b9df918a6ea1d854d000..aa1bb7f202726eaa4464225260990ffaee1df1e6 100644 --- a/gst/rtpmanager/gstrtpptdemux.h +++ b/gst/rtpmanager/gstrtpptdemux.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_PT_DEMUX_H__ diff --git a/gst/rtpmanager/gstrtprtxqueue.c b/gst/rtpmanager/gstrtprtxqueue.c new file mode 100644 index 0000000000000000000000000000000000000000..209aa766c84f47f8b00ee88e5777afa82640ebd4 --- /dev/null +++ b/gst/rtpmanager/gstrtprtxqueue.c @@ -0,0 +1,352 @@ +/* RTP Retransmission queue element for GStreamer + * + * gstrtprtxqueue.c: + * + * Copyright (C) 2013 Wim Taymans <wim.taymans@gmail.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:element-rtprtxqueue + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <gst/gst.h> +#include <gst/rtp/gstrtpbuffer.h> +#include <string.h> + +#include "gstrtprtxqueue.h" + +GST_DEBUG_CATEGORY_STATIC (gst_rtp_rtx_queue_debug); +#define GST_CAT_DEFAULT gst_rtp_rtx_queue_debug + +#define DEFAULT_MAX_SIZE_TIME 0 +#define DEFAULT_MAX_SIZE_PACKETS 100 + +enum +{ + PROP_0, + PROP_MAX_SIZE_TIME, + PROP_MAX_SIZE_PACKETS, + PROP_LAST +}; + +static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp") + ); + +static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp") + ); + +static gboolean gst_rtp_rtx_queue_src_event (GstPad * pad, GstObject * parent, + GstEvent * event); +static GstFlowReturn gst_rtp_rtx_queue_chain (GstPad * pad, GstObject * parent, + GstBuffer * buffer); + +static GstStateChangeReturn gst_rtp_rtx_queue_change_state (GstElement * + element, GstStateChange transition); + +static void gst_rtp_rtx_queue_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec); +static void gst_rtp_rtx_queue_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec); +static void gst_rtp_rtx_queue_finalize (GObject * object); + +G_DEFINE_TYPE (GstRTPRtxQueue, gst_rtp_rtx_queue, GST_TYPE_ELEMENT); + +static void +gst_rtp_rtx_queue_class_init (GstRTPRtxQueueClass * klass) +{ + GObjectClass *gobject_class; + GstElementClass *gstelement_class; + + gobject_class = (GObjectClass *) klass; + gstelement_class = (GstElementClass *) klass; + + gobject_class->get_property = gst_rtp_rtx_queue_get_property; + gobject_class->set_property = gst_rtp_rtx_queue_set_property; + gobject_class->finalize = gst_rtp_rtx_queue_finalize; + + g_object_class_install_property (gobject_class, PROP_MAX_SIZE_TIME, + g_param_spec_uint ("max-size-time", "Max Size Times", + "Amount of ms to queue (0 = unlimited)", 0, G_MAXUINT, + DEFAULT_MAX_SIZE_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_MAX_SIZE_PACKETS, + g_param_spec_uint ("max-size-packets", "Max Size Packets", + "Amount of packets to queue (0 = unlimited)", 0, G_MAXUINT, + DEFAULT_MAX_SIZE_PACKETS, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&src_factory)); + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&sink_factory)); + + gst_element_class_set_static_metadata (gstelement_class, + "RTP Retransmission Queue", "Codec", + "Keep RTP packets in a queue for retransmission", + "Wim Taymans <wim.taymans@gmail.com>"); + + gstelement_class->change_state = + GST_DEBUG_FUNCPTR (gst_rtp_rtx_queue_change_state); +} + +static void +gst_rtp_rtx_queue_reset (GstRTPRtxQueue * rtx, gboolean full) +{ + g_mutex_lock (&rtx->lock); + g_queue_foreach (rtx->queue, (GFunc) gst_buffer_unref, NULL); + g_queue_clear (rtx->queue); + g_list_foreach (rtx->pending, (GFunc) gst_buffer_unref, NULL); + g_list_free (rtx->pending); + rtx->pending = NULL; + g_mutex_unlock (&rtx->lock); +} + +static void +gst_rtp_rtx_queue_finalize (GObject * object) +{ + GstRTPRtxQueue *rtx = GST_RTP_RTX_QUEUE (object); + + gst_rtp_rtx_queue_reset (rtx, TRUE); + g_queue_free (rtx->queue); + g_mutex_clear (&rtx->lock); + + G_OBJECT_CLASS (gst_rtp_rtx_queue_parent_class)->finalize (object); +} + +static void +gst_rtp_rtx_queue_init (GstRTPRtxQueue * rtx) +{ + GstElementClass *klass = GST_ELEMENT_GET_CLASS (rtx); + + rtx->srcpad = + gst_pad_new_from_template (gst_element_class_get_pad_template (klass, + "src"), "src"); + GST_PAD_SET_PROXY_CAPS (rtx->srcpad); + GST_PAD_SET_PROXY_ALLOCATION (rtx->srcpad); + gst_pad_set_event_function (rtx->srcpad, + GST_DEBUG_FUNCPTR (gst_rtp_rtx_queue_src_event)); + gst_element_add_pad (GST_ELEMENT (rtx), rtx->srcpad); + + rtx->sinkpad = + gst_pad_new_from_template (gst_element_class_get_pad_template (klass, + "sink"), "sink"); + GST_PAD_SET_PROXY_CAPS (rtx->sinkpad); + GST_PAD_SET_PROXY_ALLOCATION (rtx->sinkpad); + gst_pad_set_chain_function (rtx->sinkpad, + GST_DEBUG_FUNCPTR (gst_rtp_rtx_queue_chain)); + gst_element_add_pad (GST_ELEMENT (rtx), rtx->sinkpad); + + rtx->queue = g_queue_new (); + g_mutex_init (&rtx->lock); + + rtx->max_size_time = DEFAULT_MAX_SIZE_TIME; + rtx->max_size_packets = DEFAULT_MAX_SIZE_PACKETS; +} + +typedef struct +{ + GstRTPRtxQueue *rtx; + guint seqnum; + gboolean found; +} RTXData; + +static void +push_seqnum (GstBuffer * buffer, RTXData * data) +{ + GstRTPRtxQueue *rtx = data->rtx; + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + guint16 seqnum; + + if (data->found) + return; + + if (!gst_rtp_buffer_map (buffer, GST_MAP_READ, &rtpbuffer)) + return; + + seqnum = gst_rtp_buffer_get_seq (&rtpbuffer); + gst_rtp_buffer_unmap (&rtpbuffer); + + if (seqnum == data->seqnum) { + data->found = TRUE; + GST_DEBUG_OBJECT (rtx, "found %d", seqnum); + rtx->pending = g_list_prepend (rtx->pending, gst_buffer_ref (buffer)); + } +} + +static gboolean +gst_rtp_rtx_queue_src_event (GstPad * pad, GstObject * parent, GstEvent * event) +{ + GstRTPRtxQueue *rtx = GST_RTP_RTX_QUEUE (parent); + gboolean res; + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_CUSTOM_UPSTREAM: + { + const GstStructure *s; + + s = gst_event_get_structure (event); + if (gst_structure_has_name (s, "GstRTPRetransmissionRequest")) { + guint seqnum; + RTXData data; + + if (!gst_structure_get_uint (s, "seqnum", &seqnum)) + seqnum = -1; + + GST_DEBUG_OBJECT (rtx, "request %d", seqnum); + + g_mutex_lock (&rtx->lock); + data.rtx = rtx; + data.seqnum = seqnum; + data.found = FALSE; + g_queue_foreach (rtx->queue, (GFunc) push_seqnum, &data); + g_mutex_unlock (&rtx->lock); + + gst_event_unref (event); + res = TRUE; + } else { + res = gst_pad_event_default (pad, parent, event); + } + break; + } + default: + res = gst_pad_event_default (pad, parent, event); + break; + } + return res; +} + +static void +do_push (GstBuffer * buffer, GstRTPRtxQueue * rtx) +{ + gst_pad_push (rtx->srcpad, buffer); +} + +static GstFlowReturn +gst_rtp_rtx_queue_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) +{ + GstRTPRtxQueue *rtx; + GstFlowReturn ret; + GList *pending; + + rtx = GST_RTP_RTX_QUEUE (parent); + + g_mutex_lock (&rtx->lock); + g_queue_push_head (rtx->queue, gst_buffer_ref (buffer)); + + if (rtx->max_size_packets) { + while (g_queue_get_length (rtx->queue) > rtx->max_size_packets) + gst_buffer_unref (g_queue_pop_tail (rtx->queue)); + } + + pending = rtx->pending; + rtx->pending = NULL; + g_mutex_unlock (&rtx->lock); + + g_list_foreach (pending, (GFunc) do_push, rtx); + g_list_free (pending); + + ret = gst_pad_push (rtx->srcpad, buffer); + + return ret; +} + +static void +gst_rtp_rtx_queue_get_property (GObject * object, + guint prop_id, GValue * value, GParamSpec * pspec) +{ + GstRTPRtxQueue *rtx = GST_RTP_RTX_QUEUE (object); + + switch (prop_id) { + case PROP_MAX_SIZE_TIME: + g_value_set_uint (value, rtx->max_size_time); + break; + case PROP_MAX_SIZE_PACKETS: + g_value_set_uint (value, rtx->max_size_packets); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gst_rtp_rtx_queue_set_property (GObject * object, + guint prop_id, const GValue * value, GParamSpec * pspec) +{ + GstRTPRtxQueue *rtx = GST_RTP_RTX_QUEUE (object); + + switch (prop_id) { + case PROP_MAX_SIZE_TIME: + rtx->max_size_time = g_value_get_uint (value); + break; + case PROP_MAX_SIZE_PACKETS: + rtx->max_size_packets = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static GstStateChangeReturn +gst_rtp_rtx_queue_change_state (GstElement * element, GstStateChange transition) +{ + GstStateChangeReturn ret; + GstRTPRtxQueue *rtx; + + rtx = GST_RTP_RTX_QUEUE (element); + + switch (transition) { + default: + break; + } + + ret = + GST_ELEMENT_CLASS (gst_rtp_rtx_queue_parent_class)->change_state (element, + transition); + + switch (transition) { + case GST_STATE_CHANGE_PAUSED_TO_READY: + gst_rtp_rtx_queue_reset (rtx, TRUE); + break; + default: + break; + } + + return ret; +} + +gboolean +gst_rtp_rtx_queue_plugin_init (GstPlugin * plugin) +{ + GST_DEBUG_CATEGORY_INIT (gst_rtp_rtx_queue_debug, "rtprtxqueue", 0, + "rtp retransmission queue"); + + return gst_element_register (plugin, "rtprtxqueue", GST_RANK_NONE, + GST_TYPE_RTP_RTX_QUEUE); +} diff --git a/gst/rtpmanager/gstrtprtxqueue.h b/gst/rtpmanager/gstrtprtxqueue.h new file mode 100644 index 0000000000000000000000000000000000000000..76d661c69e86ad310ba2eb146861d8ed7c31eed5 --- /dev/null +++ b/gst/rtpmanager/gstrtprtxqueue.h @@ -0,0 +1,73 @@ +/* RTP muxer element for GStreamer + * + * gstrtpmux.h: + * + * Copyright (C) <2007> Nokia Corporation. + * Contact: Zeeshan Ali <zeeshan.ali@nokia.com> + * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> + * 2000,2005 Wim Taymans <wim@fluendo.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_RTP_RTX_QUEUE_H__ +#define __GST_RTP_RTX_QUEUE_H__ + +#include <gst/gst.h> +#include <gst/rtp/gstrtpbuffer.h> + +G_BEGIN_DECLS +#define GST_TYPE_RTP_RTX_QUEUE (gst_rtp_rtx_queue_get_type()) +#define GST_RTP_RTX_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_RTX_QUEUE, GstRTPRtxQueue)) +#define GST_RTP_RTX_QUEUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_RTX_QUEUE, GstRTPRtxQueueClass)) +#define GST_RTP_RTX_QUEUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_RTP_RTX_QUEUE, GstRTPRtxQueueClass)) +#define GST_IS_RTP_RTX_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_RTX_QUEUE)) +#define GST_IS_RTP_RTX_QUEUE_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_RTX_QUEUE)) +typedef struct _GstRTPRtxQueue GstRTPRtxQueue; +typedef struct _GstRTPRtxQueueClass GstRTPRtxQueueClass; + +/** + * GstRTPRtxQueue: + * + * The opaque #GstRTPRtxQueue structure. + */ +struct _GstRTPRtxQueue +{ + GstElement element; + + /* pad */ + GstPad *sinkpad; + GstPad *srcpad; + + GMutex lock; + GQueue *queue; + GList *pending; + + guint max_size_time; + guint max_size_packets; +}; + +struct _GstRTPRtxQueueClass +{ + GstElementClass parent_class; +}; + + +GType gst_rtp_rtx_queue_get_type (void); +gboolean gst_rtp_rtx_queue_plugin_init (GstPlugin * plugin); + +G_END_DECLS +#endif /* __GST_RTP_RTX_QUEUE_H__ */ diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index 271e9519a9fe1b8eb1d001d1f17c70571e0e99be..a445be97e547c5e2e23b9205a5d5aab6fb4ac68c 100644 --- a/gst/rtpmanager/gstrtpsession.c +++ b/gst/rtpmanager/gstrtpsession.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -116,7 +116,6 @@ #include <gst/glib-compat-private.h> -#include "gstrtpbin-marshal.h" #include "gstrtpsession.h" #include "rtpsession.h" @@ -226,9 +225,13 @@ enum #define GST_RTP_SESSION_LOCK(sess) g_mutex_lock (&(sess)->priv->lock) #define GST_RTP_SESSION_UNLOCK(sess) g_mutex_unlock (&(sess)->priv->lock) +#define GST_RTP_SESSION_WAIT(sess) g_cond_wait (&(sess)->priv->cond, &(sess)->priv->lock) +#define GST_RTP_SESSION_SIGNAL(sess) g_cond_signal (&(sess)->priv->cond) + struct _GstRtpSessionPrivate { GMutex lock; + GCond cond; GstClock *sysclock; RTPSession *session; @@ -238,10 +241,13 @@ struct _GstRtpSessionPrivate gboolean stop_thread; GThread *thread; gboolean thread_stopped; + gboolean wait_send; /* caps mapping */ GHashTable *ptmap; + GstClockTime send_latency; + gboolean use_pipeline_clock; }; @@ -253,7 +259,7 @@ static GstFlowReturn gst_rtp_session_send_rtp (RTPSession * sess, static GstFlowReturn gst_rtp_session_send_rtcp (RTPSession * sess, RTPSource * src, GstBuffer * buffer, gboolean eos, gpointer user_data); static GstFlowReturn gst_rtp_session_sync_rtcp (RTPSession * sess, - RTPSource * src, GstBuffer * buffer, gpointer user_data); + GstBuffer * buffer, gpointer user_data); static gint gst_rtp_session_clock_rate (RTPSession * sess, guint8 payload, gpointer user_data); static void gst_rtp_session_reconsider (RTPSession * sess, gpointer user_data); @@ -261,6 +267,8 @@ static void gst_rtp_session_request_key_unit (RTPSession * sess, gboolean all_headers, gpointer user_data); static GstClockTime gst_rtp_session_request_time (RTPSession * session, gpointer user_data); +static void gst_rtp_session_notify_nack (RTPSession * sess, + guint16 seqnum, guint16 blp, gpointer user_data); static RTPSessionCallbacks callbacks = { gst_rtp_session_process_rtp, @@ -270,7 +278,8 @@ static RTPSessionCallbacks callbacks = { gst_rtp_session_clock_rate, gst_rtp_session_reconsider, gst_rtp_session_request_key_unit, - gst_rtp_session_request_time + gst_rtp_session_request_time, + gst_rtp_session_notify_nack }; /* GObject vmethods */ @@ -306,8 +315,20 @@ on_new_ssrc (RTPSession * session, RTPSource * src, GstRtpSession * sess) static void on_ssrc_collision (RTPSession * session, RTPSource * src, GstRtpSession * sess) { + GstPad *recv_rtp_sink; + g_signal_emit (sess, gst_rtp_session_signals[SIGNAL_ON_SSRC_COLLISION], 0, src->ssrc); + + GST_RTP_SESSION_LOCK (sess); + if ((recv_rtp_sink = sess->recv_rtp_sink)) + gst_object_ref (recv_rtp_sink); + GST_RTP_SESSION_UNLOCK (sess); + + if (recv_rtp_sink) { + gst_pad_push_event (recv_rtp_sink, gst_event_new_reconfigure ()); + gst_object_unref (recv_rtp_sink); + } } static void @@ -398,8 +419,7 @@ gst_rtp_session_class_init (GstRtpSessionClass * klass) gst_rtp_session_signals[SIGNAL_REQUEST_PT_MAP] = g_signal_new ("request-pt-map", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpSessionClass, request_pt_map), - NULL, NULL, gst_rtp_bin_marshal_BOXED__UINT, GST_TYPE_CAPS, 1, - G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, GST_TYPE_CAPS, 1, G_TYPE_UINT); /** * GstRtpSession::clear-pt-map: * @sess: the object which received the signal @@ -620,6 +640,7 @@ gst_rtp_session_init (GstRtpSession * rtpsession) { rtpsession->priv = GST_RTP_SESSION_GET_PRIVATE (rtpsession); g_mutex_init (&rtpsession->priv->lock); + g_cond_init (&rtpsession->priv->cond); rtpsession->priv->sysclock = gst_system_clock_obtain (); rtpsession->priv->session = rtp_session_new (); rtpsession->priv->use_pipeline_clock = DEFAULT_USE_PIPELINE_CLOCK; @@ -663,6 +684,7 @@ gst_rtp_session_finalize (GObject * object) g_hash_table_destroy (rtpsession->priv->ptmap); g_mutex_clear (&rtpsession->priv->lock); + g_cond_clear (&rtpsession->priv->cond); g_object_unref (rtpsession->priv->sysclock); g_object_unref (rtpsession->priv->session); @@ -781,10 +803,12 @@ get_current_times (GstRtpSession * rtpsession, GstClockTime * running_time, gst_object_ref (clock); GST_OBJECT_UNLOCK (rtpsession); + /* get current clock time and convert to running time */ clock_time = gst_clock_get_time (clock); + rt = clock_time - base_time; if (rtpsession->priv->use_pipeline_clock) { - ntpns = clock_time - base_time; + ntpns = rt; } else { GTimeVal current; @@ -796,9 +820,6 @@ get_current_times (GstRtpSession * rtpsession, GstClockTime * running_time, /* add constant to convert from 1970 based time to 1900 based time */ ntpns += (2208988800LL * GST_SECOND); - /* get current clock time and convert to running time */ - rt = clock_time - base_time; - gst_object_unref (clock); } else { GST_OBJECT_UNLOCK (rtpsession); @@ -826,6 +847,12 @@ rtcp_thread (GstRtpSession * rtpsession) GST_RTP_SESSION_LOCK (rtpsession); + while (rtpsession->priv->wait_send) { + GST_LOG_OBJECT (rtpsession, "waiting for RTP thread"); + GST_RTP_SESSION_WAIT (rtpsession); + GST_LOG_OBJECT (rtpsession, "signaled..."); + } + sysclock = rtpsession->priv->sysclock; current_time = gst_clock_get_time (sysclock); @@ -925,6 +952,8 @@ stop_rtcp_thread (GstRtpSession * rtpsession) GST_RTP_SESSION_LOCK (rtpsession); rtpsession->priv->stop_thread = TRUE; + rtpsession->priv->wait_send = FALSE; + GST_RTP_SESSION_SIGNAL (rtpsession); if (rtpsession->priv->id) gst_clock_id_unschedule (rtpsession->priv->id); GST_RTP_SESSION_UNLOCK (rtpsession); @@ -961,6 +990,10 @@ gst_rtp_session_change_state (GstElement * element, GstStateChange transition) case GST_STATE_CHANGE_NULL_TO_READY: break; case GST_STATE_CHANGE_READY_TO_PAUSED: + GST_RTP_SESSION_LOCK (rtpsession); + if (rtpsession->send_rtp_src) + rtpsession->priv->wait_send = TRUE; + GST_RTP_SESSION_UNLOCK (rtpsession); break; case GST_STATE_CHANGE_PAUSED_TO_PLAYING: break; @@ -1058,6 +1091,11 @@ gst_rtp_session_send_rtp (RTPSession * sess, RTPSource * src, GST_RTP_SESSION_LOCK (rtpsession); if ((rtp_src = rtpsession->send_rtp_src)) gst_object_ref (rtp_src); + if (rtpsession->priv->wait_send) { + GST_LOG_OBJECT (rtpsession, "signal RTCP thread"); + rtpsession->priv->wait_send = FALSE; + GST_RTP_SESSION_SIGNAL (rtpsession); + } GST_RTP_SESSION_UNLOCK (rtpsession); if (rtp_src) { @@ -1076,6 +1114,56 @@ gst_rtp_session_send_rtp (RTPSession * sess, RTPSource * src, return result; } +static void +do_rtcp_events (GstRtpSession * rtpsession, GstPad * srcpad) +{ + GstCaps *caps; + GstSegment seg; + GstEvent *event; + gchar *stream_id; + gboolean have_group_id; + guint group_id; + + stream_id = + g_strdup_printf ("%08x%08x%08x%08x", g_random_int (), g_random_int (), + g_random_int (), g_random_int ()); + + GST_RTP_SESSION_LOCK (rtpsession); + if (rtpsession->recv_rtp_sink) { + event = + gst_pad_get_sticky_event (rtpsession->recv_rtp_sink, + GST_EVENT_STREAM_START, 0); + if (event) { + if (gst_event_parse_group_id (event, &group_id)) + have_group_id = TRUE; + else + have_group_id = FALSE; + gst_event_unref (event); + } else { + have_group_id = TRUE; + group_id = gst_util_group_id_next (); + } + } else { + have_group_id = TRUE; + group_id = gst_util_group_id_next (); + } + GST_RTP_SESSION_UNLOCK (rtpsession); + + event = gst_event_new_stream_start (stream_id); + if (have_group_id) + gst_event_set_group_id (event, group_id); + gst_pad_push_event (srcpad, event); + g_free (stream_id); + + caps = gst_caps_new_empty_simple ("application/x-rtcp"); + gst_pad_set_caps (srcpad, caps); + gst_caps_unref (caps); + + gst_segment_init (&seg, GST_FORMAT_TIME); + event = gst_event_new_segment (&seg); + gst_pad_push_event (srcpad, event); +} + /* called when the session manager has an RTCP packet ready for further * sending. The eos flag is set when an EOS event should be sent downstream as * well. */ @@ -1094,17 +1182,12 @@ gst_rtp_session_send_rtcp (RTPSession * sess, RTPSource * src, goto stopping; if ((rtcp_src = rtpsession->send_rtcp_src)) { - GstCaps *caps; - gst_object_ref (rtcp_src); GST_RTP_SESSION_UNLOCK (rtpsession); /* set rtcp caps on output pad */ - if (!(caps = gst_pad_get_current_caps (rtcp_src))) { - caps = gst_caps_new_empty_simple ("application/x-rtcp"); - gst_pad_set_caps (rtcp_src, caps); - } - gst_caps_unref (caps); + if (!gst_pad_has_current_caps (rtcp_src)) + do_rtcp_events (rtpsession, rtcp_src); GST_LOG_OBJECT (rtpsession, "sending RTCP"); result = gst_pad_push (rtcp_src, buffer); @@ -1137,7 +1220,7 @@ stopping: /* called when the session manager has an SR RTCP packet ready for handling * inter stream synchronisation */ static GstFlowReturn -gst_rtp_session_sync_rtcp (RTPSession * sess, RTPSource * src, +gst_rtp_session_sync_rtcp (RTPSession * sess, GstBuffer * buffer, gpointer user_data) { GstFlowReturn result; @@ -1151,18 +1234,9 @@ gst_rtp_session_sync_rtcp (RTPSession * sess, RTPSource * src, goto stopping; if ((sync_src = rtpsession->sync_src)) { - GstCaps *caps; - gst_object_ref (sync_src); GST_RTP_SESSION_UNLOCK (rtpsession); - /* set rtcp caps on output pad */ - if (!(caps = gst_pad_get_current_caps (sync_src))) { - caps = gst_caps_new_empty_simple ("application/x-rtcp"); - gst_pad_set_caps (sync_src, caps); - } - gst_caps_unref (caps); - GST_LOG_OBJECT (rtpsession, "sending Sync RTCP"); result = gst_pad_push (sync_src, buffer); gst_object_unref (sync_src); @@ -1394,7 +1468,7 @@ gst_rtp_session_request_remote_key_unit (GstRtpSession * rtpsession, if (pli || fir) return rtp_session_request_key_unit (rtpsession->priv->session, ssrc, - gst_clock_get_time (rtpsession->priv->sysclock), fir, count); + fir, count); } return FALSE; @@ -1428,14 +1502,56 @@ gst_rtp_session_event_recv_rtp_src (GstPad * pad, GstObject * parent, if (gst_rtp_session_request_remote_key_unit (rtpsession, ssrc, pt, all_headers, count)) forward = FALSE; + } else if (gst_structure_has_name (s, "GstRTPRetransmissionRequest")) { + GstClockTime running_time; + guint seqnum, delay, deadline, max_delay; + + if (!gst_structure_get_clock_time (s, "running-time", &running_time)) + running_time = -1; + if (!gst_structure_get_uint (s, "ssrc", &ssrc)) + ssrc = -1; + if (!gst_structure_get_uint (s, "seqnum", &seqnum)) + seqnum = -1; + if (!gst_structure_get_uint (s, "delay", &delay)) + delay = 0; + if (!gst_structure_get_uint (s, "deadline", &deadline)) + deadline = 100; + + /* remaining time to receive the packet */ + max_delay = deadline; + if (max_delay > delay) + max_delay -= delay; + /* estimated RTT */ + if (max_delay > 40) + max_delay -= 40; + else + max_delay = 0; + + if (rtp_session_request_nack (rtpsession->priv->session, ssrc, seqnum, + max_delay * GST_MSECOND)) + forward = FALSE; } break; default: break; } - if (forward) - ret = gst_pad_push_event (rtpsession->recv_rtp_sink, event); + if (forward) { + GstPad *recv_rtp_sink; + + GST_RTP_SESSION_LOCK (rtpsession); + if ((recv_rtp_sink = rtpsession->recv_rtp_sink)) + gst_object_ref (recv_rtp_sink); + GST_RTP_SESSION_UNLOCK (rtpsession); + + if (recv_rtp_sink) { + ret = gst_pad_push_event (recv_rtp_sink, event); + gst_object_unref (recv_rtp_sink); + } else + gst_event_unref (event); + } else { + gst_event_unref (event); + } return ret; } @@ -1498,6 +1614,7 @@ gst_rtp_session_chain_recv_rtp (GstPad * pad, GstObject * parent, GstFlowReturn ret; GstClockTime current_time, running_time; GstClockTime timestamp; + guint64 ntpnstime; rtpsession = GST_RTP_SESSION (parent); priv = rtpsession->priv; @@ -1511,13 +1628,14 @@ gst_rtp_session_chain_recv_rtp (GstPad * pad, GstObject * parent, running_time = gst_segment_to_running_time (&rtpsession->recv_rtp_seg, GST_FORMAT_TIME, timestamp); + ntpnstime = GST_CLOCK_TIME_NONE; } else { - get_current_times (rtpsession, &running_time, NULL); + get_current_times (rtpsession, &running_time, &ntpnstime); } current_time = gst_clock_get_time (priv->sysclock); ret = rtp_session_process_rtp (priv->session, buffer, current_time, - running_time); + running_time, ntpnstime); if (ret != GST_FLOW_OK) goto push_error; @@ -1589,7 +1707,8 @@ gst_rtp_session_query_send_rtcp_src (GstPad * pad, GstObject * parent, rtpsession = GST_RTP_SESSION (parent); - GST_DEBUG_OBJECT (rtpsession, "received QUERY"); + GST_DEBUG_OBJECT (rtpsession, "received QUERY %s", + GST_QUERY_TYPE_NAME (query)); switch (GST_QUERY_TYPE (query)) { case GST_QUERY_LATENCY: @@ -1613,7 +1732,8 @@ gst_rtp_session_event_send_rtcp_src (GstPad * pad, GstObject * parent, gboolean ret = TRUE; rtpsession = GST_RTP_SESSION (parent); - GST_DEBUG_OBJECT (rtpsession, "received EVENT"); + GST_DEBUG_OBJECT (rtpsession, "received EVENT %s", + GST_EVENT_TYPE_NAME (event)); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_SEEK: @@ -1641,7 +1761,8 @@ gst_rtp_session_event_send_rtp_sink (GstPad * pad, GstObject * parent, rtpsession = GST_RTP_SESSION (parent); - GST_DEBUG_OBJECT (rtpsession, "received event"); + GST_DEBUG_OBJECT (rtpsession, "received EVENT %s", + GST_EVENT_TYPE_NAME (event)); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_CAPS: @@ -1684,16 +1805,18 @@ gst_rtp_session_event_send_rtp_sink (GstPad * pad, GstObject * parent, * because we stop sending. */ ret = gst_pad_push_event (rtpsession->send_rtp_src, event); current_time = gst_clock_get_time (rtpsession->priv->sysclock); + GST_DEBUG_OBJECT (rtpsession, "scheduling BYE message"); - rtp_session_schedule_bye (rtpsession->priv->session, "End of stream", - current_time); + rtp_session_mark_all_bye (rtpsession->priv->session, "End Of Stream"); + rtp_session_schedule_bye (rtpsession->priv->session, current_time); break; } default:{ - GstPad *send_rtp_src = NULL; + GstPad *send_rtp_src; + GST_RTP_SESSION_LOCK (rtpsession); - if (rtpsession->send_rtp_src) - send_rtp_src = gst_object_ref (rtpsession->send_rtp_src); + if ((send_rtp_src = rtpsession->send_rtp_src)) + gst_object_ref (send_rtp_src); GST_RTP_SESSION_UNLOCK (rtpsession); if (send_rtp_src) { @@ -1709,6 +1832,33 @@ gst_rtp_session_event_send_rtp_sink (GstPad * pad, GstObject * parent, return ret; } +static gboolean +gst_rtp_session_event_send_rtp_src (GstPad * pad, GstObject * parent, + GstEvent * event) +{ + GstRtpSession *rtpsession; + gboolean ret = FALSE; + + rtpsession = GST_RTP_SESSION (parent); + + GST_DEBUG_OBJECT (rtpsession, "received EVENT %s", + GST_EVENT_TYPE_NAME (event)); + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_LATENCY: + /* save the latency, we need this to know when an RTP packet will be + * rendered by the sink */ + gst_event_parse_latency (event, &rtpsession->priv->send_latency); + + ret = gst_pad_event_default (pad, parent, event); + break; + default: + ret = gst_pad_event_default (pad, parent, event); + break; + } + return ret; +} + static GstCaps * gst_rtp_session_getcaps_send_rtp (GstPad * pad, GstRtpSession * rtpsession, GstCaps * filter) @@ -1720,7 +1870,7 @@ gst_rtp_session_getcaps_send_rtp (GstPad * pad, GstRtpSession * rtpsession, priv = rtpsession->priv; - ssrc = rtp_session_get_internal_ssrc (priv->session); + ssrc = rtp_session_suggest_ssrc (priv->session); /* we can basically accept anything but we prefer to receive packets with our * internal SSRC so that we don't have to patch it. Create a structure with @@ -1776,15 +1926,9 @@ gst_rtp_session_setcaps_send_rtp (GstPad * pad, GstRtpSession * rtpsession, GstCaps * caps) { GstRtpSessionPrivate *priv; - GstStructure *s = gst_caps_get_structure (caps, 0); - guint ssrc; priv = rtpsession->priv; - if (gst_structure_get_uint (s, "ssrc", &ssrc)) { - GST_DEBUG_OBJECT (rtpsession, "setting internal SSRC to %08x", ssrc); - rtp_session_set_internal_ssrc (priv->session, ssrc); - } rtp_session_update_send_caps (priv->session, caps); return TRUE; @@ -1826,6 +1970,7 @@ gst_rtp_session_chain_send_rtp_common (GstRtpSession * rtpsession, running_time = gst_segment_to_running_time (&rtpsession->send_rtp_seg, GST_FORMAT_TIME, timestamp); + running_time += priv->send_latency; } else { /* no timestamp. */ running_time = -1; @@ -1882,7 +2027,7 @@ create_recv_rtp_sink (GstRtpSession * rtpsession) gst_pad_set_chain_function (rtpsession->recv_rtp_sink, gst_rtp_session_chain_recv_rtp); gst_pad_set_event_function (rtpsession->recv_rtp_sink, - (GstPadEventFunction) gst_rtp_session_event_recv_rtp_sink); + gst_rtp_session_event_recv_rtp_sink); gst_pad_set_iterate_internal_links_function (rtpsession->recv_rtp_sink, gst_rtp_session_iterate_internal_links); gst_pad_set_active (rtpsession->recv_rtp_sink, TRUE); @@ -1894,7 +2039,7 @@ create_recv_rtp_sink (GstRtpSession * rtpsession) gst_pad_new_from_static_template (&rtpsession_recv_rtp_src_template, "recv_rtp_src"); gst_pad_set_event_function (rtpsession->recv_rtp_src, - (GstPadEventFunction) gst_rtp_session_event_recv_rtp_src); + gst_rtp_session_event_recv_rtp_src); gst_pad_set_iterate_internal_links_function (rtpsession->recv_rtp_src, gst_rtp_session_iterate_internal_links); gst_pad_use_fixed_caps (rtpsession->recv_rtp_src); @@ -1941,7 +2086,7 @@ create_recv_rtcp_sink (GstRtpSession * rtpsession) gst_pad_set_chain_function (rtpsession->recv_rtcp_sink, gst_rtp_session_chain_recv_rtcp); gst_pad_set_event_function (rtpsession->recv_rtcp_sink, - (GstPadEventFunction) gst_rtp_session_event_recv_rtcp_sink); + gst_rtp_session_event_recv_rtcp_sink); gst_pad_set_iterate_internal_links_function (rtpsession->recv_rtcp_sink, gst_rtp_session_iterate_internal_links); gst_pad_set_active (rtpsession->recv_rtcp_sink, TRUE); @@ -1996,7 +2141,7 @@ create_send_rtp_sink (GstRtpSession * rtpsession) gst_pad_set_query_function (rtpsession->send_rtp_sink, gst_rtp_session_query_send_rtp); gst_pad_set_event_function (rtpsession->send_rtp_sink, - (GstPadEventFunction) gst_rtp_session_event_send_rtp_sink); + gst_rtp_session_event_send_rtp_sink); gst_pad_set_iterate_internal_links_function (rtpsession->send_rtp_sink, gst_rtp_session_iterate_internal_links); gst_pad_set_active (rtpsession->send_rtp_sink, TRUE); @@ -2008,6 +2153,8 @@ create_send_rtp_sink (GstRtpSession * rtpsession) "send_rtp_src"); gst_pad_set_iterate_internal_links_function (rtpsession->send_rtp_src, gst_rtp_session_iterate_internal_links); + gst_pad_set_event_function (rtpsession->send_rtp_src, + gst_rtp_session_event_send_rtp_src); gst_pad_set_active (rtpsession->send_rtp_src, TRUE); gst_element_add_pad (GST_ELEMENT_CAST (rtpsession), rtpsession->send_rtp_src); @@ -2177,11 +2324,20 @@ gst_rtp_session_request_key_unit (RTPSession * sess, { GstRtpSession *rtpsession = GST_RTP_SESSION (user_data); GstEvent *event; + GstPad *send_rtp_sink; - event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, - gst_structure_new ("GstForceKeyUnit", - "all-headers", G_TYPE_BOOLEAN, all_headers, NULL)); - gst_pad_push_event (rtpsession->send_rtp_sink, event); + GST_RTP_SESSION_LOCK (rtpsession); + if ((send_rtp_sink = rtpsession->send_rtp_sink)) + gst_object_ref (send_rtp_sink); + GST_RTP_SESSION_UNLOCK (rtpsession); + + if (send_rtp_sink) { + event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, + gst_structure_new ("GstForceKeyUnit", + "all-headers", G_TYPE_BOOLEAN, all_headers, NULL)); + gst_pad_push_event (send_rtp_sink, event); + gst_object_unref (send_rtp_sink); + } } static GstClockTime @@ -2191,3 +2347,37 @@ gst_rtp_session_request_time (RTPSession * session, gpointer user_data) return gst_clock_get_time (rtpsession->priv->sysclock); } + +static void +gst_rtp_session_notify_nack (RTPSession * sess, guint16 seqnum, + guint16 blp, gpointer user_data) +{ + GstRtpSession *rtpsession = GST_RTP_SESSION (user_data); + GstEvent *event; + GstPad *send_rtp_sink; + + GST_RTP_SESSION_LOCK (rtpsession); + if ((send_rtp_sink = rtpsession->send_rtp_sink)) + gst_object_ref (send_rtp_sink); + GST_RTP_SESSION_UNLOCK (rtpsession); + + if (send_rtp_sink) { + while (TRUE) { + event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, + gst_structure_new ("GstRTPRetransmissionRequest", + "seqnum", G_TYPE_UINT, (guint) seqnum, NULL)); + gst_pad_push_event (send_rtp_sink, event); + + if (blp == 0) + break; + + seqnum++; + while ((blp & 1) == 0) { + seqnum++; + blp >>= 1; + } + blp >>= 1; + } + gst_object_unref (send_rtp_sink); + } +} diff --git a/gst/rtpmanager/gstrtpsession.h b/gst/rtpmanager/gstrtpsession.h index bc3feb834d4eaa5758b3a87f2b5d4d73464c5bd1..bbaafa6163a94feb05a0dcd08e9319ede2b57fb1 100644 --- a/gst/rtpmanager/gstrtpsession.h +++ b/gst/rtpmanager/gstrtpsession.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_SESSION_H__ diff --git a/gst/rtpmanager/gstrtpssrcdemux.c b/gst/rtpmanager/gstrtpssrcdemux.c index 74d6aae50593f1026e9f96d8b24739eb2f184f76..b04d4365e96ff1b582845ca1ba711fb619dd682c 100644 --- a/gst/rtpmanager/gstrtpssrcdemux.c +++ b/gst/rtpmanager/gstrtpssrcdemux.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -48,7 +48,6 @@ #include <gst/rtp/gstrtpbuffer.h> #include <gst/rtp/gstrtcpbuffer.h> -#include "gstrtpbin-marshal.h" #include "gstrtpssrcdemux.h" GST_DEBUG_CATEGORY_STATIC (gst_rtp_ssrc_demux_debug); @@ -123,8 +122,6 @@ static gboolean gst_rtp_ssrc_demux_sink_event (GstPad * pad, GstObject * parent, static GstFlowReturn gst_rtp_ssrc_demux_rtcp_chain (GstPad * pad, GstObject * parent, GstBuffer * buf); -static gboolean gst_rtp_ssrc_demux_rtcp_sink_event (GstPad * pad, - GstObject * parent, GstEvent * event); static GstIterator *gst_rtp_ssrc_demux_iterate_internal_links_sink (GstPad * pad, GstObject * parent); @@ -147,6 +144,9 @@ struct _GstRtpSsrcDemuxPad GstPad *rtp_pad; GstCaps *caps; GstPad *rtcp_pad; + + gboolean pushed_initial_rtp_events; + gboolean pushed_initial_rtcp_events; }; /* find a src pad for a given SSRC, returns NULL if the SSRC was not found @@ -193,7 +193,7 @@ add_ssrc_and_ref (GstEvent * event, guint32 ssrc) return event; } -struct ForwardEventData +struct ForwardStickyEventData { GstPad *pad; guint32 ssrc; @@ -202,7 +202,7 @@ struct ForwardEventData static gboolean forward_sticky_events (GstPad * pad, GstEvent ** event, gpointer user_data) { - struct ForwardEventData *data = user_data; + struct ForwardStickyEventData *data = user_data; GstEvent *newevent; newevent = add_ssrc_and_ref (*event, data->ssrc); @@ -212,6 +212,25 @@ forward_sticky_events (GstPad * pad, GstEvent ** event, gpointer user_data) return TRUE; } +static void +forward_initial_events (GstRtpSsrcDemux * demux, guint32 ssrc, GstPad * pad, + PadType padtype) +{ + struct ForwardStickyEventData fdata; + GstPad *sinkpad; + + if (padtype == RTP_PAD) + sinkpad = demux->rtp_sink; + else if (padtype == RTCP_PAD) + sinkpad = demux->rtcp_sink; + else + g_assert_not_reached (); + + fdata.ssrc = ssrc; + fdata.pad = pad; + + gst_pad_sticky_events_foreach (sinkpad, forward_sticky_events, &fdata); +} static GstPad * find_or_create_demux_pad_for_ssrc (GstRtpSsrcDemux * demux, guint32 ssrc, @@ -222,32 +241,44 @@ find_or_create_demux_pad_for_ssrc (GstRtpSsrcDemux * demux, guint32 ssrc, GstPadTemplate *templ; gchar *padname; GstRtpSsrcDemuxPad *demuxpad; - GstCaps *caps; - struct ForwardEventData fdata; GstPad *retpad; gulong rtp_block, rtcp_block; - GST_DEBUG_OBJECT (demux, "creating pad for SSRC %08x", ssrc); - GST_PAD_LOCK (demux); demuxpad = find_demux_pad_for_ssrc (demux, ssrc); if (demuxpad != NULL) { + gboolean forward = FALSE; + switch (padtype) { case RTP_PAD: retpad = gst_object_ref (demuxpad->rtp_pad); + if (!demuxpad->pushed_initial_rtp_events) { + forward = TRUE; + demuxpad->pushed_initial_rtp_events = TRUE; + } break; case RTCP_PAD: retpad = gst_object_ref (demuxpad->rtcp_pad); + if (!demuxpad->pushed_initial_rtcp_events) { + forward = TRUE; + demuxpad->pushed_initial_rtcp_events = TRUE; + } break; default: retpad = NULL; g_assert_not_reached (); } + GST_PAD_UNLOCK (demux); + + if (forward) + forward_initial_events (demux, ssrc, retpad, padtype); return retpad; } + GST_DEBUG_OBJECT (demux, "creating new pad for SSRC %08x", ssrc); + klass = GST_ELEMENT_GET_CLASS (demux); templ = gst_element_class_get_pad_template (klass, "src_%u"); padname = g_strdup_printf ("src_%u", ssrc); @@ -265,8 +296,6 @@ find_or_create_demux_pad_for_ssrc (GstRtpSsrcDemux * demux, guint32 ssrc, demuxpad->rtp_pad = rtp_pad; demuxpad->rtcp_pad = rtcp_pad; - fdata.ssrc = ssrc; - gst_pad_set_element_private (rtp_pad, demuxpad); gst_pad_set_element_private (rtcp_pad, demuxpad); @@ -278,28 +307,23 @@ find_or_create_demux_pad_for_ssrc (GstRtpSsrcDemux * demux, guint32 ssrc, gst_pad_set_event_function (rtp_pad, gst_rtp_ssrc_demux_src_event); gst_pad_use_fixed_caps (rtp_pad); gst_pad_set_active (rtp_pad, TRUE); - fdata.pad = rtp_pad; - gst_pad_sticky_events_foreach (demux->rtp_sink, forward_sticky_events, - &fdata); gst_pad_set_event_function (rtcp_pad, gst_rtp_ssrc_demux_src_event); gst_pad_set_iterate_internal_links_function (rtcp_pad, gst_rtp_ssrc_demux_iterate_internal_links_src); gst_pad_use_fixed_caps (rtcp_pad); gst_pad_set_active (rtcp_pad, TRUE); - fdata.pad = rtcp_pad; - gst_pad_sticky_events_foreach (demux->rtcp_sink, forward_sticky_events, - &fdata); - - /* copy caps from input */ - if ((caps = gst_pad_get_current_caps (demux->rtp_sink))) { - gst_pad_set_caps (rtp_pad, caps); - gst_caps_unref (caps); - } - if ((caps = gst_pad_get_current_caps (demux->rtcp_sink))) { - gst_pad_set_caps (rtcp_pad, caps); - gst_caps_unref (caps); + + if (padtype == RTP_PAD) { + demuxpad->pushed_initial_rtp_events = TRUE; + forward_initial_events (demux, ssrc, rtp_pad, padtype); + } else if (padtype == RTCP_PAD) { + demuxpad->pushed_initial_rtcp_events = TRUE; + forward_initial_events (demux, ssrc, rtcp_pad, padtype); + } else { + g_assert_not_reached (); } + gst_element_add_pad (GST_ELEMENT_CAST (demux), rtp_pad); gst_element_add_pad (GST_ELEMENT_CAST (demux), rtcp_pad); @@ -363,8 +387,8 @@ gst_rtp_ssrc_demux_class_init (GstRtpSsrcDemuxClass * klass) g_signal_new ("new-ssrc-pad", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpSsrcDemuxClass, new_ssrc_pad), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_OBJECT, - G_TYPE_NONE, 2, G_TYPE_UINT, GST_TYPE_PAD); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + GST_TYPE_PAD); /** * GstRtpSsrcDemux::removed-ssrc-pad: @@ -378,8 +402,8 @@ gst_rtp_ssrc_demux_class_init (GstRtpSsrcDemuxClass * klass) g_signal_new ("removed-ssrc-pad", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRtpSsrcDemuxClass, removed_ssrc_pad), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_OBJECT, - G_TYPE_NONE, 2, G_TYPE_UINT, GST_TYPE_PAD); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + GST_TYPE_PAD); /** * GstRtpSsrcDemux::clear-ssrc: @@ -392,7 +416,7 @@ gst_rtp_ssrc_demux_class_init (GstRtpSsrcDemuxClass * klass) g_signal_new ("clear-ssrc", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GstRtpSsrcDemuxClass, clear_ssrc), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, G_TYPE_UINT); gstelement_klass->change_state = GST_DEBUG_FUNCPTR (gst_rtp_ssrc_demux_change_state); @@ -435,15 +459,12 @@ gst_rtp_ssrc_demux_init (GstRtpSsrcDemux * demux) gst_pad_new_from_template (gst_element_class_get_pad_template (klass, "rtcp_sink"), "rtcp_sink"); gst_pad_set_chain_function (demux->rtcp_sink, gst_rtp_ssrc_demux_rtcp_chain); - gst_pad_set_event_function (demux->rtcp_sink, - gst_rtp_ssrc_demux_rtcp_sink_event); + gst_pad_set_event_function (demux->rtcp_sink, gst_rtp_ssrc_demux_sink_event); gst_pad_set_iterate_internal_links_function (demux->rtcp_sink, gst_rtp_ssrc_demux_iterate_internal_links_sink); gst_element_add_pad (GST_ELEMENT_CAST (demux), demux->rtcp_sink); g_rec_mutex_init (&demux->padlock); - - gst_segment_init (&demux->segment, GST_FORMAT_UNDEFINED); } static void @@ -527,95 +548,62 @@ unknown_pad: } } -static gboolean -gst_rtp_ssrc_demux_sink_event (GstPad * pad, GstObject * parent, - GstEvent * event) +struct ForwardEventData { GstRtpSsrcDemux *demux; - gboolean res = FALSE; - - demux = GST_RTP_SSRC_DEMUX (parent); - - switch (GST_EVENT_TYPE (event)) { - case GST_EVENT_FLUSH_STOP: - gst_segment_init (&demux->segment, GST_FORMAT_UNDEFINED); - /* fallthrough */ - default: - { - GSList *walk; - GSList *pads = NULL; - - res = TRUE; - /* need local snapshot of pads; - * should not push downstream while holding lock as that might deadlock - * with stuff traveling upstream tyring to get this lock while holding - * other (stream)lock */ - GST_PAD_LOCK (demux); - for (walk = demux->srcpads; walk; walk = g_slist_next (walk)) { - GstRtpSsrcDemuxPad *pad = (GstRtpSsrcDemuxPad *) walk->data; - - pad = g_slice_dup (GstRtpSsrcDemuxPad, pad); - gst_object_ref (pad->rtp_pad); - - pads = g_slist_prepend (pads, pad); - } - GST_PAD_UNLOCK (demux); + GstEvent *event; + gboolean res; + GstPad *pad; +}; - for (walk = pads; walk; walk = g_slist_next (walk)) { - GstRtpSsrcDemuxPad *dpad = walk->data; - GstEvent *newevent; +static gboolean +forward_event (GstPad * pad, gpointer user_data) +{ + struct ForwardEventData *fdata = user_data; + GSList *walk = NULL; + GstEvent *newevent = NULL; - newevent = add_ssrc_and_ref (event, dpad->ssrc); + GST_PAD_LOCK (fdata->demux); + for (walk = fdata->demux->srcpads; walk; walk = walk->next) { + GstRtpSsrcDemuxPad *dpad = (GstRtpSsrcDemuxPad *) walk->data; - res &= gst_pad_push_event (dpad->rtp_pad, newevent); - gst_object_unref (dpad->rtp_pad); - g_slice_free (GstRtpSsrcDemuxPad, dpad); - } - g_slist_free (pads); - gst_event_unref (event); + /* Only forward the event if the initial events have been through first, + * the initial events should be forwarded before any other event + * or buffer is pushed */ + if ((pad == dpad->rtp_pad && dpad->pushed_initial_rtp_events) || + (pad == dpad->rtcp_pad && dpad->pushed_initial_rtcp_events)) { + newevent = add_ssrc_and_ref (fdata->event, dpad->ssrc); break; } } + GST_PAD_UNLOCK (fdata->demux); - return res; + if (newevent) + fdata->res &= gst_pad_push_event (pad, newevent); + + return TRUE; } + static gboolean -gst_rtp_ssrc_demux_rtcp_sink_event (GstPad * pad, GstObject * parent, +gst_rtp_ssrc_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { GstRtpSsrcDemux *demux; - gboolean res = TRUE; - GSList *walk; - GSList *pads = NULL; + struct ForwardEventData fdata; demux = GST_RTP_SSRC_DEMUX (parent); - GST_PAD_LOCK (demux); - for (walk = demux->srcpads; walk; walk = g_slist_next (walk)) { - GstRtpSsrcDemuxPad *pad = (GstRtpSsrcDemuxPad *) walk->data; - - pad = g_slice_dup (GstRtpSsrcDemuxPad, pad); - gst_object_ref (pad->rtcp_pad); - - pads = g_slist_prepend (pads, pad); - } - GST_PAD_UNLOCK (demux); + fdata.demux = demux; + fdata.pad = pad; + fdata.event = event; + fdata.res = TRUE; - for (walk = pads; walk; walk = g_slist_next (walk)) { - GstRtpSsrcDemuxPad *dpad = walk->data; - GstEvent *newevent; + gst_pad_forward (pad, forward_event, &fdata); - newevent = add_ssrc_and_ref (event, dpad->ssrc); - - res &= gst_pad_push_event (dpad->rtcp_pad, newevent); - gst_object_unref (dpad->rtcp_pad); - g_slice_free (GstRtpSsrcDemuxPad, dpad); - } - g_slist_free (pads); gst_event_unref (event); - return res; + return fdata.res; } static GstFlowReturn @@ -626,6 +614,7 @@ gst_rtp_ssrc_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) guint32 ssrc; GstRTPBuffer rtp = { NULL }; GstPad *srcpad; + GstRtpSsrcDemuxPad *dpad; demux = GST_RTP_SSRC_DEMUX (parent); @@ -644,6 +633,17 @@ gst_rtp_ssrc_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) /* push to srcpad */ ret = gst_pad_push (srcpad, buf); + if (ret != GST_FLOW_OK) { + /* check if the ssrc still there, may have been removed */ + GST_PAD_LOCK (demux); + dpad = find_demux_pad_for_ssrc (demux, ssrc); + if (dpad == NULL || dpad->rtp_pad != srcpad) { + /* SSRC was removed during the push ... ignore the error */ + ret = GST_FLOW_OK; + } + GST_PAD_UNLOCK (demux); + } + gst_object_unref (srcpad); return ret; @@ -676,6 +676,7 @@ gst_rtp_ssrc_demux_rtcp_chain (GstPad * pad, GstObject * parent, GstRTCPPacket packet; GstRTCPBuffer rtcp = { NULL, }; GstPad *srcpad; + GstRtpSsrcDemuxPad *dpad; demux = GST_RTP_SSRC_DEMUX (parent); @@ -709,6 +710,17 @@ gst_rtp_ssrc_demux_rtcp_chain (GstPad * pad, GstObject * parent, /* push to srcpad */ ret = gst_pad_push (srcpad, buf); + if (ret != GST_FLOW_OK) { + /* check if the ssrc still there, may have been removed */ + GST_PAD_LOCK (demux); + dpad = find_demux_pad_for_ssrc (demux, ssrc); + if (dpad == NULL || dpad->rtcp_pad != srcpad) { + /* SSRC was removed during the push ... ignore the error */ + ret = GST_FLOW_OK; + } + GST_PAD_UNLOCK (demux); + } + gst_object_unref (srcpad); return ret; @@ -828,10 +840,12 @@ src_pad_compare_func (gconstpointer a, gconstpointer b) { GstPad *pad = GST_PAD (g_value_get_object (a)); const gchar *prefix = g_value_get_string (b); - gint res = 1; + gint res; + /* 0 means equal means we accept the pad, accepted if there is a name + * and it starts with the prefix */ GST_OBJECT_LOCK (pad); - res = !GST_PAD_NAME (pad) || g_str_has_prefix (GST_PAD_NAME (pad), prefix); + res = !GST_PAD_NAME (pad) || !g_str_has_prefix (GST_PAD_NAME (pad), prefix); GST_OBJECT_UNLOCK (pad); return res; diff --git a/gst/rtpmanager/gstrtpssrcdemux.h b/gst/rtpmanager/gstrtpssrcdemux.h index 9233bc0e468ecf025c711ced870cb286e6066629..82df4449e872404ae4ca91bc181b693c1fa08e5a 100644 --- a/gst/rtpmanager/gstrtpssrcdemux.h +++ b/gst/rtpmanager/gstrtpssrcdemux.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_SSRC_DEMUX_H__ @@ -36,8 +36,6 @@ struct _GstRtpSsrcDemux { GstElement parent; - GstSegment segment; - GstPad *rtp_sink; GstPad *rtcp_sink; diff --git a/gst/rtpmanager/rtpjitterbuffer.c b/gst/rtpmanager/rtpjitterbuffer.c index 569930140adbe5851ed3e540558d09ec726122d6..5b1c6f164708dbc5d3d3ef5b5e14388444bd2781 100644 --- a/gst/rtpmanager/rtpjitterbuffer.c +++ b/gst/rtpmanager/rtpjitterbuffer.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <string.h> #include <stdlib.h> @@ -373,6 +373,9 @@ calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time, ext_rtptime = gst_rtp_buffer_ext_timestamp (&jbuf->ext_rtptime, rtptime); + if (jbuf->last_rtptime != -1 && ext_rtptime == jbuf->last_rtptime) + return jbuf->prev_out_time; + gstrtptime = gst_util_uint64_scale_int (ext_rtptime, GST_SECOND, clock_rate); /* keep track of the last extended rtptime */ @@ -681,7 +684,6 @@ rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, GstBuffer * buf, * running time. */ time = calculate_skew (jbuf, rtptime, time, clock_rate); GST_BUFFER_PTS (buf) = time; - GST_BUFFER_DTS (buf) = time; /* It's more likely that the packet was inserted in the front of the buffer */ if (G_LIKELY (list)) @@ -692,7 +694,7 @@ rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, GstBuffer * buf, /* buffering mode, update buffer stats */ if (jbuf->mode == RTP_JITTER_BUFFER_MODE_BUFFER) update_buffer_level (jbuf, percent); - else + else if (percent) *percent = -1; /* tail was changed when we did not find a previous packet, we set the return @@ -736,7 +738,7 @@ rtp_jitter_buffer_pop (RTPJitterBuffer * jbuf, gint * percent) /* buffering mode, update buffer stats */ if (jbuf->mode == RTP_JITTER_BUFFER_MODE_BUFFER) update_buffer_level (jbuf, percent); - else + else if (percent) *percent = -1; return buf; diff --git a/gst/rtpmanager/rtpjitterbuffer.h b/gst/rtpmanager/rtpjitterbuffer.h index 85bf9775de5563647ee7c7dac403207763a79e95..6a0f3d0ce904fb5b876e11b4886810a89a118158 100644 --- a/gst/rtpmanager/rtpjitterbuffer.h +++ b/gst/rtpmanager/rtpjitterbuffer.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __RTP_JITTER_BUFFER_H__ diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c index f46362725e7e7d4fa04649f01ae41da5a5c8cd77..d06ad26cee589a4d5393e1c7f40e04592992542b 100644 --- a/gst/rtpmanager/rtpsession.c +++ b/gst/rtpmanager/rtpsession.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* FIXME 0.11: suppress warnings for deprecated API such as GValueArray @@ -28,7 +28,6 @@ #include <gst/glib-compat-private.h> -#include "gstrtpbin-marshal.h" #include "rtpsession.h" GST_DEBUG_CATEGORY_STATIC (rtp_session_debug); @@ -112,20 +111,19 @@ static void rtp_session_set_property (GObject * object, guint prop_id, static void rtp_session_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); -static gboolean rtp_session_on_sending_rtcp (RTPSession * sess, - GstBuffer * buffer, gboolean early); -static void rtp_session_send_rtcp (RTPSession * sess, - GstClockTimeDiff max_delay); - +static void rtp_session_send_rtcp (RTPSession * sess, GstClockTime max_delay); static guint rtp_session_signals[LAST_SIGNAL] = { 0 }; G_DEFINE_TYPE (RTPSession, rtp_session, G_TYPE_OBJECT); +static guint32 rtp_session_create_new_ssrc (RTPSession * sess); static RTPSource *obtain_source (RTPSession * sess, guint32 ssrc, - gboolean * created, RTPArrivalStats * arrival, gboolean rtp); + gboolean * created, RTPPacketInfo * pinfo, gboolean rtp); +static RTPSource *obtain_internal_source (RTPSession * sess, + guint32 ssrc, gboolean * created); static GstFlowReturn rtp_session_schedule_bye_locked (RTPSession * sess, - const gchar * reason, GstClockTime current_time); + GstClockTime current_time); static GstClockTime calculate_rtcp_interval (RTPSession * sess, gboolean deterministic, gboolean first); @@ -160,7 +158,7 @@ rtp_session_class_init (RTPSessionClass * klass) rtp_session_signals[SIGNAL_GET_SOURCE_BY_SSRC] = g_signal_new ("get-source-by-ssrc", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (RTPSessionClass, - get_source_by_ssrc), NULL, NULL, gst_rtp_bin_marshal_OBJECT__UINT, + get_source_by_ssrc), NULL, NULL, g_cclosure_marshal_generic, RTP_TYPE_SOURCE, 1, G_TYPE_UINT); /** @@ -287,9 +285,8 @@ rtp_session_class_init (RTPSessionClass * klass) rtp_session_signals[SIGNAL_ON_SENDING_RTCP] = g_signal_new ("on-sending-rtcp", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (RTPSessionClass, on_sending_rtcp), - accumulate_trues, NULL, gst_rtp_bin_marshal_BOOLEAN__BOXED_BOOLEAN, - G_TYPE_BOOLEAN, 2, GST_TYPE_BUFFER | G_SIGNAL_TYPE_STATIC_SCOPE, - G_TYPE_BOOLEAN); + accumulate_trues, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 2, + GST_TYPE_BUFFER | G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_BOOLEAN); /** * RTPSession::on-feedback-rtcp: @@ -307,9 +304,8 @@ rtp_session_class_init (RTPSessionClass * klass) rtp_session_signals[SIGNAL_ON_FEEDBACK_RTCP] = g_signal_new ("on-feedback-rtcp", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (RTPSessionClass, on_feedback_rtcp), - NULL, NULL, gst_rtp_bin_marshal_VOID__UINT_UINT_UINT_UINT_BOXED, - G_TYPE_NONE, 5, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT, - GST_TYPE_BUFFER); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 5, G_TYPE_UINT, + G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT, GST_TYPE_BUFFER); /** * RTPSession::send-rtcp: @@ -320,21 +316,20 @@ rtp_session_class_init (RTPSessionClass * klass) * Requests that the #RTPSession initiate a new RTCP packet as soon as * possible within the requested delay. */ - rtp_session_signals[SIGNAL_SEND_RTCP] = g_signal_new ("send-rtcp", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (RTPSessionClass, send_rtcp), NULL, NULL, - gst_rtp_bin_marshal_VOID__UINT64, G_TYPE_NONE, 1, G_TYPE_UINT64); + g_cclosure_marshal_generic, G_TYPE_NONE, 1, G_TYPE_UINT64); g_object_class_install_property (gobject_class, PROP_INTERNAL_SSRC, g_param_spec_uint ("internal-ssrc", "Internal SSRC", - "The internal SSRC used for the session", + "The internal SSRC used for the session (deprecated)", 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_INTERNAL_SOURCE, g_param_spec_object ("internal-source", "Internal Source", - "The internal source element of the session", + "The internal source element of the session (deprecated)", RTP_TYPE_SOURCE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_BANDWIDTH, @@ -449,7 +444,6 @@ rtp_session_class_init (RTPSessionClass * klass) klass->get_source_by_ssrc = GST_DEBUG_FUNCPTR (rtp_session_get_source_by_ssrc); - klass->on_sending_rtcp = GST_DEBUG_FUNCPTR (rtp_session_on_sending_rtcp); klass->send_rtcp = GST_DEBUG_FUNCPTR (rtp_session_send_rtcp); GST_DEBUG_CATEGORY_INIT (rtp_session_debug, "rtpsession", 0, "RTP Session"); @@ -471,9 +465,11 @@ rtp_session_init (RTPSession * sess) g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) g_object_unref); } - sess->cnames = g_hash_table_new_full (NULL, NULL, g_free, NULL); rtp_stats_init_defaults (&sess->stats); + INIT_AVG (sess->stats.avg_rtcp_packet_size, 100); + rtp_stats_set_min_interval (&sess->stats, + (gdouble) DEFAULT_RTCP_MIN_INTERVAL / GST_SECOND); sess->recalc_bandwidth = TRUE; sess->bandwidth = DEFAULT_BANDWIDTH; @@ -481,18 +477,6 @@ rtp_session_init (RTPSession * sess) sess->rtcp_rr_bandwidth = DEFAULT_RTCP_RR_BANDWIDTH; sess->rtcp_rs_bandwidth = DEFAULT_RTCP_RS_BANDWIDTH; - /* create an active SSRC for this session manager */ - sess->source = rtp_session_create_source (sess); - sess->source->validated = TRUE; - sess->source->internal = TRUE; - sess->stats.active_sources++; - INIT_AVG (sess->stats.avg_rtcp_packet_size, 100); - sess->source->stats.prev_rtcptime = 0; - sess->source->stats.last_rtcptime = 1; - - rtp_stats_set_min_interval (&sess->stats, - (gdouble) DEFAULT_RTCP_MIN_INTERVAL / GST_SECOND); - /* default UDP header length */ sess->header_len = 28; sess->mtu = DEFAULT_RTCP_MTU; @@ -500,30 +484,35 @@ rtp_session_init (RTPSession * sess) sess->probation = DEFAULT_PROBATION; /* some default SDES entries */ + sess->sdes = gst_structure_new_empty ("application/x-rtp-source-sdes"); /* we do not want to leak details like the username or hostname here */ str = g_strdup_printf ("user%u@host-%x", g_random_int (), g_random_int ()); - rtp_source_set_sdes_string (sess->source, GST_RTCP_SDES_CNAME, str); + gst_structure_set (sess->sdes, "cname", G_TYPE_STRING, str, NULL); g_free (str); #if 0 /* we do not want to leak the user's real name here */ str = g_strdup_printf ("Anon%u", g_random_int ()); - rtp_source_set_sdes_string (sess->source, GST_RTCP_SDES_NAME, str); + gst_structure_set (sdes, "name", G_TYPE_STRING, str, NULL); g_free (str); #endif - rtp_source_set_sdes_string (sess->source, GST_RTCP_SDES_TOOL, "GStreamer"); + gst_structure_set (sess->sdes, "tool", G_TYPE_STRING, "GStreamer", NULL); + + /* this is the SSRC we suggest */ + sess->suggested_ssrc = rtp_session_create_new_ssrc (sess); sess->first_rtcp = TRUE; + sess->next_rtcp_check_time = GST_CLOCK_TIME_NONE; + sess->allow_early = TRUE; + sess->next_early_rtcp_time = GST_CLOCK_TIME_NONE; sess->rtcp_feedback_retention_window = DEFAULT_RTCP_FEEDBACK_RETENTION_WINDOW; sess->rtcp_immediate_feedback_threshold = DEFAULT_RTCP_IMMEDIATE_FEEDBACK_THRESHOLD; sess->last_keyframe_request = GST_CLOCK_TIME_NONE; - - GST_DEBUG ("%p: session using SSRC: %08x", sess, sess->source->ssrc); } static void @@ -534,14 +523,12 @@ rtp_session_finalize (GObject * object) sess = RTP_SESSION_CAST (object); - g_mutex_clear (&sess->lock); + gst_structure_free (sess->sdes); + for (i = 0; i < 32; i++) g_hash_table_destroy (sess->ssrcs[i]); - g_free (sess->bye_reason); - - g_hash_table_destroy (sess->cnames); - g_object_unref (sess->source); + g_mutex_clear (&sess->lock); G_OBJECT_CLASS (rtp_session_parent_class)->finalize (object); } @@ -586,23 +573,30 @@ rtp_session_set_property (GObject * object, guint prop_id, switch (prop_id) { case PROP_INTERNAL_SSRC: - rtp_session_set_internal_ssrc (sess, g_value_get_uint (value)); break; case PROP_BANDWIDTH: + RTP_SESSION_LOCK (sess); sess->bandwidth = g_value_get_double (value); sess->recalc_bandwidth = TRUE; + RTP_SESSION_UNLOCK (sess); break; case PROP_RTCP_FRACTION: + RTP_SESSION_LOCK (sess); sess->rtcp_bandwidth = g_value_get_double (value); sess->recalc_bandwidth = TRUE; + RTP_SESSION_UNLOCK (sess); break; case PROP_RTCP_RR_BANDWIDTH: + RTP_SESSION_LOCK (sess); sess->rtcp_rr_bandwidth = g_value_get_int (value); sess->recalc_bandwidth = TRUE; + RTP_SESSION_UNLOCK (sess); break; case PROP_RTCP_RS_BANDWIDTH: + RTP_SESSION_LOCK (sess); sess->rtcp_rs_bandwidth = g_value_get_int (value); sess->recalc_bandwidth = TRUE; + RTP_SESSION_UNLOCK (sess); break; case PROP_RTCP_MTU: sess->mtu = g_value_get_uint (value); @@ -628,7 +622,6 @@ rtp_session_set_property (GObject * object, guint prop_id, break; case PROP_PROBATION: sess->probation = g_value_get_uint (value); - g_object_set_property (G_OBJECT (sess->source), "probation", value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -646,10 +639,11 @@ rtp_session_get_property (GObject * object, guint prop_id, switch (prop_id) { case PROP_INTERNAL_SSRC: - g_value_set_uint (value, rtp_session_get_internal_ssrc (sess)); + g_value_set_uint (value, rtp_session_suggest_ssrc (sess)); break; case PROP_INTERNAL_SOURCE: - g_value_take_object (value, rtp_session_get_internal_source (sess)); + /* FIXME, return a random source */ + g_value_set_object (value, NULL); break; case PROP_BANDWIDTH: g_value_set_double (value, sess->bandwidth); @@ -689,7 +683,6 @@ rtp_session_get_property (GObject * object, guint prop_id, break; case PROP_PROBATION: g_value_set_uint (value, sess->probation); - g_object_get_property (G_OBJECT (sess->source), "probation", value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -854,6 +847,10 @@ rtp_session_set_callbacks (RTPSession * sess, RTPSessionCallbacks * callbacks, sess->callbacks.request_time = callbacks->request_time; sess->request_time_user_data = user_data; } + if (callbacks->notify_nack) { + sess->callbacks.notify_nack = callbacks->notify_nack; + sess->notify_nack_user_data = user_data; + } } /** @@ -1061,55 +1058,6 @@ rtp_session_get_rtcp_fraction (RTPSession * sess) return result; } -/** - * rtp_session_set_sdes_string: - * @sess: an #RTPSession - * @type: the type of the SDES item - * @item: a null-terminated string to set. - * - * Store an SDES item of @type in @sess. - * - * Returns: %FALSE if the data was unchanged @type is invalid. - */ -gboolean -rtp_session_set_sdes_string (RTPSession * sess, GstRTCPSDESType type, - const gchar * item) -{ - gboolean result; - - g_return_val_if_fail (RTP_IS_SESSION (sess), FALSE); - - RTP_SESSION_LOCK (sess); - result = rtp_source_set_sdes_string (sess->source, type, item); - RTP_SESSION_UNLOCK (sess); - - return result; -} - -/** - * rtp_session_get_sdes_string: - * @sess: an #RTPSession - * @type: the type of the SDES item - * - * Get the SDES item of @type from @sess. - * - * Returns: a null-terminated copy of the SDES item or NULL when @type was not - * valid. g_free() after usage. - */ -gchar * -rtp_session_get_sdes_string (RTPSession * sess, GstRTCPSDESType type) -{ - gchar *result; - - g_return_val_if_fail (RTP_IS_SESSION (sess), NULL); - - RTP_SESSION_LOCK (sess); - result = rtp_source_get_sdes_string (sess->source, type); - RTP_SESSION_UNLOCK (sess); - - return result; -} - /** * rtp_session_get_sdes_struct: * @sess: an #RTSPSession @@ -1122,15 +1070,13 @@ rtp_session_get_sdes_string (RTPSession * sess, GstRTCPSDESType type) GstStructure * rtp_session_get_sdes_struct (RTPSession * sess) { - const GstStructure *sdes; GstStructure *result = NULL; g_return_val_if_fail (RTP_IS_SESSION (sess), NULL); RTP_SESSION_LOCK (sess); - sdes = rtp_source_get_sdes_struct (sess->source); - if (sdes) - result = gst_structure_copy (sdes); + if (sess->sdes) + result = gst_structure_copy (sess->sdes); RTP_SESSION_UNLOCK (sess); return result; @@ -1150,7 +1096,9 @@ rtp_session_set_sdes_struct (RTPSession * sess, const GstStructure * sdes) g_return_if_fail (RTP_IS_SESSION (sess)); RTP_SESSION_LOCK (sess); - rtp_source_set_sdes_struct (sess->source, gst_structure_copy (sdes)); + if (sess->sdes) + gst_structure_free (sess->sdes); + sess->sdes = gst_structure_copy (sdes); RTP_SESSION_UNLOCK (sess); } @@ -1159,7 +1107,7 @@ source_push_rtp (RTPSource * source, gpointer data, RTPSession * session) { GstFlowReturn result = GST_FLOW_OK; - if (source == session->source) { + if (source->internal) { GST_LOG ("source %08x pushed sender RTP packet", source->ssrc); RTP_SESSION_UNLOCK (session); @@ -1215,19 +1163,21 @@ static RTPSourceCallbacks callbacks = { static gboolean check_collision (RTPSession * sess, RTPSource * source, - RTPArrivalStats * arrival, gboolean rtp) + RTPPacketInfo * pinfo, gboolean rtp) { - /* If we have no arrival address, we can't do collision checking */ - if (!arrival->address) + guint32 ssrc; + + /* If we have no pinfo address, we can't do collision checking */ + if (!pinfo->address) return FALSE; - if (sess->source != source) { + ssrc = rtp_source_get_ssrc (source); + + if (!source->internal) { GSocketAddress *from; /* This is not our local source, but lets check if two remote - * source collide - */ - + * source collide */ if (rtp) { from = source->rtp_from; } else { @@ -1235,20 +1185,19 @@ check_collision (RTPSession * sess, RTPSource * source, } if (from) { - if (__g_socket_address_equal (from, arrival->address)) { + if (__g_socket_address_equal (from, pinfo->address)) { /* Address is the same */ return FALSE; } else { - GST_LOG ("we have a third-party collision or loop ssrc:%x", - rtp_source_get_ssrc (source)); + GST_LOG ("we have a third-party collision or loop ssrc:%x", ssrc); if (sess->favor_new) { if (rtp_source_find_conflicting_address (source, - arrival->address, arrival->current_time)) { + pinfo->address, pinfo->current_time)) { gchar *buf1; - buf1 = __g_socket_address_to_string (arrival->address); - GST_LOG ("Known conflict on %x for %s, dropping packet", - rtp_source_get_ssrc (source), buf1); + buf1 = __g_socket_address_to_string (pinfo->address); + GST_LOG ("Known conflict on %x for %s, dropping packet", ssrc, + buf1); g_free (buf1); return TRUE; @@ -1259,19 +1208,18 @@ check_collision (RTPSession * sess, RTPSource * source, * a new source. Save old address in possible conflict list */ rtp_source_add_conflicting_address (source, from, - arrival->current_time); + pinfo->current_time); buf1 = __g_socket_address_to_string (from); - buf2 = __g_socket_address_to_string (arrival->address); + buf2 = __g_socket_address_to_string (pinfo->address); GST_DEBUG ("New conflict for ssrc %x, replacing %s with %s," - " saving old as known conflict", - rtp_source_get_ssrc (source), buf1, buf2); + " saving old as known conflict", ssrc, buf1, buf2); if (rtp) - rtp_source_set_rtp_from (source, arrival->address); + rtp_source_set_rtp_from (source, pinfo->address); else - rtp_source_set_rtcp_from (source, arrival->address); + rtp_source_set_rtcp_from (source, pinfo->address); g_free (buf1); g_free (buf2); @@ -1286,9 +1234,9 @@ check_collision (RTPSession * sess, RTPSource * source, } else { /* We don't already have a from address for RTP, just set it */ if (rtp) - rtp_source_set_rtp_from (source, arrival->address); + rtp_source_set_rtp_from (source, pinfo->address); else - rtp_source_set_rtcp_from (source, arrival->address); + rtp_source_set_rtcp_from (source, pinfo->address); return FALSE; } @@ -1296,68 +1244,75 @@ check_collision (RTPSession * sess, RTPSource * source, * Maybe should be done in upper layer, only the SDES can tell us * if its a collision or a loop */ - - /* If the source has been inactive for some time, we assume that it has - * simply changed its transport source address. Hence, there is no true - * third-party collision - only a simulated one. */ - if (arrival->current_time > source->last_activity) { - GstClockTime inactivity_period = - arrival->current_time - source->last_activity; - if (inactivity_period > 1 * GST_SECOND) { - /* Use new network address */ - if (rtp) { - g_assert (source->rtp_from); - rtp_source_set_rtp_from (source, arrival->address); - } else { - g_assert (source->rtcp_from); - rtp_source_set_rtcp_from (source, arrival->address); - } - return FALSE; - } - } } else { /* This is sending with our ssrc, is it an address we already know */ - - if (rtp_source_find_conflicting_address (source, arrival->address, - arrival->current_time)) { + if (rtp_source_find_conflicting_address (source, pinfo->address, + pinfo->current_time)) { /* Its a known conflict, its probably a loop, not a collision * lets just drop the incoming packet */ GST_DEBUG ("Our packets are being looped back to us, dropping"); } else { /* Its a new collision, lets change our SSRC */ + rtp_source_add_conflicting_address (source, pinfo->address, + pinfo->current_time); - rtp_source_add_conflicting_address (source, arrival->address, - arrival->current_time); + GST_DEBUG ("Collision for SSRC %x", ssrc); + /* mark the source BYE */ + rtp_source_mark_bye (source, "SSRC Collision"); + /* if we were suggesting this SSRC, change to something else */ + if (sess->suggested_ssrc == ssrc) + sess->suggested_ssrc = rtp_session_create_new_ssrc (sess); - GST_DEBUG ("Collision for SSRC %x", rtp_source_get_ssrc (source)); on_ssrc_collision (sess, source); - sess->change_ssrc = TRUE; - - rtp_session_schedule_bye_locked (sess, "SSRC Collision", - arrival->current_time); + rtp_session_schedule_bye_locked (sess, pinfo->current_time); } } return TRUE; } +static RTPSource * +find_source (RTPSession * sess, guint32 ssrc) +{ + return g_hash_table_lookup (sess->ssrcs[sess->mask_idx], + GINT_TO_POINTER (ssrc)); +} + +static void +add_source (RTPSession * sess, RTPSource * src) +{ + g_hash_table_insert (sess->ssrcs[sess->mask_idx], + GINT_TO_POINTER (src->ssrc), src); + /* report the new source ASAP */ + src->generation = sess->generation; + /* we have one more source now */ + sess->total_sources++; + if (RTP_SOURCE_IS_ACTIVE (src)) + sess->stats.active_sources++; + if (src->internal) { + sess->stats.internal_sources++; + if (sess->suggested_ssrc != src->ssrc) + sess->suggested_ssrc = src->ssrc; + } +} /* must be called with the session lock, the returned source needs to be * unreffed after usage. */ static RTPSource * obtain_source (RTPSession * sess, guint32 ssrc, gboolean * created, - RTPArrivalStats * arrival, gboolean rtp) + RTPPacketInfo * pinfo, gboolean rtp) { RTPSource *source; - source = - g_hash_table_lookup (sess->ssrcs[sess->mask_idx], GINT_TO_POINTER (ssrc)); + source = find_source (sess, ssrc); if (source == NULL) { /* make new Source in probation and insert */ source = rtp_source_new (ssrc); + GST_DEBUG ("creating new source %08x %p", ssrc, source); + /* for RTP packets we need to set the source in probation. Receiving RTCP * packets of an SSRC, on the other hand, is a strong indication that we * are dealing with a valid source. */ @@ -1367,26 +1322,22 @@ obtain_source (RTPSession * sess, guint32 ssrc, gboolean * created, g_object_set (source, "probation", 0, NULL); /* store from address, if any */ - if (arrival->address) { + if (pinfo->address) { if (rtp) - rtp_source_set_rtp_from (source, arrival->address); + rtp_source_set_rtp_from (source, pinfo->address); else - rtp_source_set_rtcp_from (source, arrival->address); + rtp_source_set_rtcp_from (source, pinfo->address); } /* configure a callback on the source */ rtp_source_set_callbacks (source, &callbacks, sess); - g_hash_table_insert (sess->ssrcs[sess->mask_idx], GINT_TO_POINTER (ssrc), - source); - - /* we have one more source now */ - sess->total_sources++; + add_source (sess, source); *created = TRUE; } else { *created = FALSE; /* check for collision, this updates the address when not previously set */ - if (check_collision (sess, source, arrival, rtp)) { + if (check_collision (sess, source, pinfo, rtp)) { return NULL; } /* Receiving RTCP packets of an SSRC is a strong indication that we @@ -1395,83 +1346,63 @@ obtain_source (RTPSession * sess, guint32 ssrc, gboolean * created, g_object_set (source, "probation", 0, NULL); } /* update last activity */ - source->last_activity = arrival->current_time; + source->last_activity = pinfo->current_time; if (rtp) - source->last_rtp_activity = arrival->current_time; + source->last_rtp_activity = pinfo->current_time; g_object_ref (source); return source; } -/** - * rtp_session_get_internal_source: - * @sess: a #RTPSession - * - * Get the internal #RTPSource of @sess. - * - * Returns: The internal #RTPSource. g_object_unref() after usage. - */ -RTPSource * -rtp_session_get_internal_source (RTPSession * sess) +/* must be called with the session lock, the returned source needs to be + * unreffed after usage. */ +static RTPSource * +obtain_internal_source (RTPSession * sess, guint32 ssrc, gboolean * created) { - RTPSource *result; - - g_return_val_if_fail (RTP_IS_SESSION (sess), NULL); - - result = g_object_ref (sess->source); + RTPSource *source; - return result; -} + source = find_source (sess, ssrc); + if (source == NULL) { + /* make new internal Source and insert */ + source = rtp_source_new (ssrc); -/** - * rtp_session_set_internal_ssrc: - * @sess: a #RTPSession - * @ssrc: an SSRC - * - * Set the SSRC of @sess to @ssrc. - */ -void -rtp_session_set_internal_ssrc (RTPSession * sess, guint32 ssrc) -{ - RTP_SESSION_LOCK (sess); - if (ssrc != sess->source->ssrc) { - g_hash_table_steal (sess->ssrcs[sess->mask_idx], - GINT_TO_POINTER (sess->source->ssrc)); + GST_DEBUG ("creating new internal source %08x %p", ssrc, source); - GST_DEBUG ("setting internal SSRC to %08x", ssrc); - /* After this call, any receiver of the old SSRC either in RTP or RTCP - * packets will timeout on the old SSRC, we could potentially schedule a - * BYE RTCP for the old SSRC... */ - sess->source->ssrc = ssrc; - rtp_source_reset (sess->source); + source->validated = TRUE; + source->internal = TRUE; + rtp_source_set_sdes_struct (source, gst_structure_copy (sess->sdes)); + rtp_source_set_callbacks (source, &callbacks, sess); - /* rehash with the new SSRC */ - g_hash_table_insert (sess->ssrcs[sess->mask_idx], - GINT_TO_POINTER (sess->source->ssrc), sess->source); + add_source (sess, source); + *created = TRUE; + } else { + *created = FALSE; } - RTP_SESSION_UNLOCK (sess); + g_object_ref (source); - g_object_notify (G_OBJECT (sess), "internal-ssrc"); + return source; } /** - * rtp_session_get_internal_ssrc: + * rtp_session_suggest_ssrc: * @sess: a #RTPSession * - * Get the internal SSRC of @sess. + * Suggest an unused SSRC in @sess. * - * Returns: The SSRC of the session. + * Returns: a free unused SSRC */ guint32 -rtp_session_get_internal_ssrc (RTPSession * sess) +rtp_session_suggest_ssrc (RTPSession * sess) { - guint32 ssrc; + guint32 result; + + g_return_val_if_fail (RTP_IS_SESSION (sess), 0); RTP_SESSION_LOCK (sess); - ssrc = sess->source->ssrc; + result = sess->suggested_ssrc; RTP_SESSION_UNLOCK (sess); - return ssrc; + return result; } /** @@ -1494,14 +1425,9 @@ rtp_session_add_source (RTPSession * sess, RTPSource * src) g_return_val_if_fail (src != NULL, FALSE); RTP_SESSION_LOCK (sess); - find = - g_hash_table_lookup (sess->ssrcs[sess->mask_idx], - GINT_TO_POINTER (src->ssrc)); + find = find_source (sess, src->ssrc); if (find == NULL) { - g_hash_table_insert (sess->ssrcs[sess->mask_idx], - GINT_TO_POINTER (src->ssrc), src); - /* we have one more source now */ - sess->total_sources++; + add_source (sess, src); result = TRUE; } RTP_SESSION_UNLOCK (sess); @@ -1572,35 +1498,7 @@ rtp_session_get_source_by_ssrc (RTPSession * sess, guint32 ssrc) g_return_val_if_fail (RTP_IS_SESSION (sess), NULL); RTP_SESSION_LOCK (sess); - result = - g_hash_table_lookup (sess->ssrcs[sess->mask_idx], GINT_TO_POINTER (ssrc)); - if (result) - g_object_ref (result); - RTP_SESSION_UNLOCK (sess); - - return result; -} - -/** - * rtp_session_get_source_by_cname: - * @sess: a #RTPSession - * @cname: an CNAME - * - * Find the source with @cname in @sess. - * - * Returns: a #RTPSource with CNAME @cname or NULL if the source was not found. - * g_object_unref() after usage. - */ -RTPSource * -rtp_session_get_source_by_cname (RTPSession * sess, const gchar * cname) -{ - RTPSource *result; - - g_return_val_if_fail (RTP_IS_SESSION (sess), NULL); - g_return_val_if_fail (cname != NULL, NULL); - - RTP_SESSION_LOCK (sess); - result = g_hash_table_lookup (sess->cnames, cname); + result = find_source (sess, ssrc); if (result) g_object_ref (result); RTP_SESSION_UNLOCK (sess); @@ -1618,8 +1516,7 @@ rtp_session_create_new_ssrc (RTPSession * sess) ssrc = g_random_int (); /* see if it exists in the session, we're done if it doesn't */ - if (g_hash_table_lookup (sess->ssrcs[sess->mask_idx], - GINT_TO_POINTER (ssrc)) == NULL) + if (find_source (sess, ssrc) == NULL) break; } return ssrc; @@ -1647,60 +1544,158 @@ rtp_session_create_source (RTPSession * sess) rtp_source_set_callbacks (source, &callbacks, sess); /* we need an additional ref for the source in the hashtable */ g_object_ref (source); - g_hash_table_insert (sess->ssrcs[sess->mask_idx], GINT_TO_POINTER (ssrc), - source); - /* we have one more source now */ - sess->total_sources++; + add_source (sess, source); RTP_SESSION_UNLOCK (sess); return source; } -/* update the RTPArrivalStats structure with the current time and other bits +static gboolean +update_packet (GstBuffer ** buffer, guint idx, RTPPacketInfo * pinfo) +{ + GstNetAddressMeta *meta; + + /* get packet size including header overhead */ + pinfo->bytes += gst_buffer_get_size (*buffer) + pinfo->header_len; + pinfo->packets++; + + if (pinfo->rtp) { + GstRTPBuffer rtp = { NULL }; + + if (!gst_rtp_buffer_map (*buffer, GST_MAP_READ, &rtp)) + goto invalid_packet; + + pinfo->payload_len += gst_rtp_buffer_get_payload_len (&rtp); + if (idx == 0) { + gint i; + + /* only keep info for first buffer */ + pinfo->ssrc = gst_rtp_buffer_get_ssrc (&rtp); + pinfo->seqnum = gst_rtp_buffer_get_seq (&rtp); + pinfo->pt = gst_rtp_buffer_get_payload_type (&rtp); + pinfo->rtptime = gst_rtp_buffer_get_timestamp (&rtp); + /* copy available csrc */ + pinfo->csrc_count = gst_rtp_buffer_get_csrc_count (&rtp); + for (i = 0; i < pinfo->csrc_count; i++) + pinfo->csrcs[i] = gst_rtp_buffer_get_csrc (&rtp, i); + } + gst_rtp_buffer_unmap (&rtp); + } + + if (idx == 0) { + /* for netbuffer we can store the IP address to check for collisions */ + meta = gst_buffer_get_net_address_meta (*buffer); + if (pinfo->address) + g_object_unref (pinfo->address); + if (meta) { + pinfo->address = G_SOCKET_ADDRESS (g_object_ref (meta->addr)); + } else { + pinfo->address = NULL; + } + } + return TRUE; + + /* ERRORS */ +invalid_packet: + { + GST_DEBUG ("invalid RTP packet received"); + return FALSE; + } +} + +/* update the RTPPacketInfo structure with the current time and other bits * about the current buffer we are handling. * This function is typically called when a validated packet is received. * This function should be called with the SESSION_LOCK */ +static gboolean +update_packet_info (RTPSession * sess, RTPPacketInfo * pinfo, + gboolean send, gboolean rtp, gboolean is_list, gpointer data, + GstClockTime current_time, GstClockTime running_time, guint64 ntpnstime) +{ + gboolean res; + + pinfo->send = send; + pinfo->rtp = rtp; + pinfo->is_list = is_list; + pinfo->data = data; + pinfo->current_time = current_time; + pinfo->running_time = running_time; + pinfo->ntpnstime = ntpnstime; + pinfo->header_len = sess->header_len; + pinfo->bytes = 0; + pinfo->payload_len = 0; + pinfo->packets = 0; + + if (is_list) { + GstBufferList *list = GST_BUFFER_LIST_CAST (data); + res = + gst_buffer_list_foreach (list, (GstBufferListFunc) update_packet, + pinfo); + } else { + GstBuffer *buffer = GST_BUFFER_CAST (data); + res = update_packet (&buffer, 0, pinfo); + } + return res; +} + static void -update_arrival_stats (RTPSession * sess, RTPArrivalStats * arrival, - gboolean rtp, GstBuffer * buffer, GstClockTime current_time, - GstClockTime running_time, guint64 ntpnstime) +clean_packet_info (RTPPacketInfo * pinfo) { - GstNetAddressMeta *meta; - GstRTPBuffer rtpb = { NULL }; - - /* get time of arrival */ - arrival->current_time = current_time; - arrival->running_time = running_time; - arrival->ntpnstime = ntpnstime; + if (pinfo->address) + g_object_unref (pinfo->address); + if (pinfo->data) { + gst_mini_object_unref (pinfo->data); + pinfo->data = NULL; + } +} - /* get packet size including header overhead */ - arrival->bytes = gst_buffer_get_size (buffer) + sess->header_len; +static gboolean +source_update_active (RTPSession * sess, RTPSource * source, + gboolean prevactive) +{ + gboolean active = RTP_SOURCE_IS_ACTIVE (source); + guint32 ssrc = source->ssrc; - if (rtp) { - gst_rtp_buffer_map (buffer, GST_MAP_READ, &rtpb); - arrival->payload_len = gst_rtp_buffer_get_payload_len (&rtpb); - gst_rtp_buffer_unmap (&rtpb); - } else { - arrival->payload_len = 0; - } + if (prevactive == active) + return FALSE; - /* for netbuffer we can store the IP address to check for collisions */ - meta = gst_buffer_get_net_address_meta (buffer); - if (arrival->address) - g_object_unref (arrival->address); - if (meta) { - arrival->address = G_SOCKET_ADDRESS (g_object_ref (meta->addr)); + if (active) { + sess->stats.active_sources++; + GST_DEBUG ("source: %08x became active, %d active sources", ssrc, + sess->stats.active_sources); } else { - arrival->address = NULL; + sess->stats.active_sources--; + GST_DEBUG ("source: %08x became inactive, %d active sources", ssrc, + sess->stats.active_sources); } + return TRUE; } -static void -clean_arrival_stats (RTPArrivalStats * arrival) +static gboolean +source_update_sender (RTPSession * sess, RTPSource * source, + gboolean prevsender) { - if (arrival->address) - g_object_unref (arrival->address); + gboolean sender = RTP_SOURCE_IS_SENDER (source); + guint32 ssrc = source->ssrc; + + if (prevsender == sender) + return FALSE; + + if (sender) { + sess->stats.sender_sources++; + if (source->internal) + sess->stats.internal_sender_sources++; + GST_DEBUG ("source: %08x became sender, %d sender sources", ssrc, + sess->stats.sender_sources); + } else { + sess->stats.sender_sources--; + if (source->internal) + sess->stats.internal_sender_sources--; + GST_DEBUG ("source: %08x became non sender, %d sender sources", ssrc, + sess->stats.sender_sources); + } + return TRUE; } /** @@ -1717,70 +1712,48 @@ clean_arrival_stats (RTPArrivalStats * arrival) */ GstFlowReturn rtp_session_process_rtp (RTPSession * sess, GstBuffer * buffer, - GstClockTime current_time, GstClockTime running_time) + GstClockTime current_time, GstClockTime running_time, guint64 ntpnstime) { GstFlowReturn result; guint32 ssrc; RTPSource *source; gboolean created; gboolean prevsender, prevactive; - RTPArrivalStats arrival = { NULL, }; - guint32 csrcs[16]; - guint8 i, count; + RTPPacketInfo pinfo = { 0, }; guint64 oldrate; - GstRTPBuffer rtp = { NULL }; g_return_val_if_fail (RTP_IS_SESSION (sess), GST_FLOW_ERROR); g_return_val_if_fail (GST_IS_BUFFER (buffer), GST_FLOW_ERROR); - if (!gst_rtp_buffer_map (buffer, GST_MAP_READ, &rtp)) - goto invalid_packet; - RTP_SESSION_LOCK (sess); - /* ignore more RTP packets when we left the session */ - if (sess->source->received_bye) - goto ignore; - /* update arrival stats */ - update_arrival_stats (sess, &arrival, TRUE, buffer, current_time, - running_time, -1); + /* update pinfo stats */ + if (!update_packet_info (sess, &pinfo, FALSE, TRUE, FALSE, buffer, + current_time, running_time, ntpnstime)) { + GST_DEBUG ("invalid RTP packet received"); + RTP_SESSION_UNLOCK (sess); + return rtp_session_process_rtcp (sess, buffer, current_time, ntpnstime); + } + + ssrc = pinfo.ssrc; - /* get SSRC and look up in session database */ - ssrc = gst_rtp_buffer_get_ssrc (&rtp); - source = obtain_source (sess, ssrc, &created, &arrival, TRUE); + source = obtain_source (sess, ssrc, &created, &pinfo, TRUE); if (!source) goto collision; - /* copy available csrc for later */ - count = gst_rtp_buffer_get_csrc_count (&rtp); - /* make sure to not overflow our array. An RTP buffer can maximally contain - * 16 CSRCs */ - count = MIN (count, 16); - - for (i = 0; i < count; i++) - csrcs[i] = gst_rtp_buffer_get_csrc (&rtp, i); - - gst_rtp_buffer_unmap (&rtp); - prevsender = RTP_SOURCE_IS_SENDER (source); prevactive = RTP_SOURCE_IS_ACTIVE (source); oldrate = source->bitrate; /* let source process the packet */ - result = rtp_source_process_rtp (source, buffer, &arrival); + result = rtp_source_process_rtp (source, &pinfo); /* source became active */ - if (prevactive != RTP_SOURCE_IS_ACTIVE (source)) { - sess->stats.active_sources++; - GST_DEBUG ("source: %08x became active, %d active sources", ssrc, - sess->stats.active_sources); + if (source_update_active (sess, source, prevactive)) on_ssrc_validated (sess, source); - } - if (prevsender != RTP_SOURCE_IS_SENDER (source)) { - sess->stats.sender_sources++; - GST_DEBUG ("source: %08x became sender, %d sender sources", ssrc, - sess->stats.sender_sources); - } + + source_update_sender (sess, source, prevsender); + if (oldrate != source->bitrate) sess->recalc_bandwidth = TRUE; @@ -1789,24 +1762,24 @@ rtp_session_process_rtp (RTPSession * sess, GstBuffer * buffer, if (source->validated) { gboolean created; + gint i; /* for validated sources, we add the CSRCs as well */ - for (i = 0; i < count; i++) { + for (i = 0; i < pinfo.csrc_count; i++) { guint32 csrc; RTPSource *csrc_src; - csrc = csrcs[i]; + csrc = pinfo.csrcs[i]; /* get source */ - csrc_src = obtain_source (sess, csrc, &created, &arrival, TRUE); + csrc_src = obtain_source (sess, csrc, &created, &pinfo, TRUE); if (!csrc_src) continue; if (created) { GST_DEBUG ("created new CSRC: %08x", csrc); rtp_source_set_as_csrc (csrc_src); - if (RTP_SOURCE_IS_ACTIVE (csrc_src)) - sess->stats.active_sources++; + source_update_active (sess, csrc_src, FALSE); on_new_ssrc (sess, csrc_src); } g_object_unref (csrc_src); @@ -1816,31 +1789,16 @@ rtp_session_process_rtp (RTPSession * sess, GstBuffer * buffer, RTP_SESSION_UNLOCK (sess); - clean_arrival_stats (&arrival); + clean_packet_info (&pinfo); return result; /* ERRORS */ -invalid_packet: - { - gst_buffer_unref (buffer); - GST_DEBUG ("invalid RTP packet received"); - return GST_FLOW_OK; - } -ignore: - { - RTP_SESSION_UNLOCK (sess); - gst_rtp_buffer_unmap (&rtp); - gst_buffer_unref (buffer); - GST_DEBUG ("ignoring RTP packet because we are leaving"); - return GST_FLOW_OK; - } collision: { RTP_SESSION_UNLOCK (sess); - gst_rtp_buffer_unmap (&rtp); gst_buffer_unref (buffer); - clean_arrival_stats (&arrival); + clean_packet_info (&pinfo); GST_DEBUG ("ignoring packet because its collisioning"); return GST_FLOW_OK; } @@ -1848,7 +1806,7 @@ collision: static void rtp_session_process_rb (RTPSession * sess, RTPSource * source, - GstRTCPPacket * packet, RTPArrivalStats * arrival) + GstRTCPPacket * packet, RTPPacketInfo * pinfo) { guint count, i; @@ -1857,17 +1815,24 @@ rtp_session_process_rb (RTPSession * sess, RTPSource * source, guint32 ssrc, exthighestseq, jitter, lsr, dlsr; guint8 fractionlost; gint32 packetslost; + RTPSource *src; gst_rtcp_packet_get_rb (packet, i, &ssrc, &fractionlost, &packetslost, &exthighestseq, &jitter, &lsr, &dlsr); GST_DEBUG ("RB %d: SSRC %08x, jitter %" G_GUINT32_FORMAT, i, ssrc, jitter); - if (ssrc == sess->source->ssrc) { + /* find our own source */ + src = find_source (sess, ssrc); + if (src == NULL) + continue; + + if (src->internal && RTP_SOURCE_IS_ACTIVE (src)) { /* only deal with report blocks for our session, we update the stats of * the sender of the RTCP message. We could also compare our stats against * the other sender to see if we are better or worse. */ - rtp_source_process_rb (source, arrival->ntpnstime, fractionlost, + /* FIXME, need to keep track who the RB block is from */ + rtp_source_process_rb (source, pinfo->ntpnstime, fractionlost, packetslost, exthighestseq, jitter, lsr, dlsr); } } @@ -1885,7 +1850,7 @@ rtp_session_process_rb (RTPSession * sess, RTPSource * source, */ static void rtp_session_process_sr (RTPSession * sess, GstRTCPPacket * packet, - RTPArrivalStats * arrival, gboolean * do_sync) + RTPPacketInfo * pinfo, gboolean * do_sync) { guint32 senderssrc, rtptime, packet_count, octet_count; guint64 ntptime; @@ -1896,14 +1861,14 @@ rtp_session_process_sr (RTPSession * sess, GstRTCPPacket * packet, &packet_count, &octet_count); GST_DEBUG ("got SR packet: SSRC %08x, time %" GST_TIME_FORMAT, - senderssrc, GST_TIME_ARGS (arrival->current_time)); + senderssrc, GST_TIME_ARGS (pinfo->current_time)); - source = obtain_source (sess, senderssrc, &created, arrival, FALSE); + source = obtain_source (sess, senderssrc, &created, pinfo, FALSE); if (!source) return; /* don't try to do lip-sync for sources that sent a BYE */ - if (rtp_source_received_bye (source)) + if (RTP_SOURCE_IS_MARKED_BYE (source)) *do_sync = FALSE; else *do_sync = TRUE; @@ -1911,19 +1876,15 @@ rtp_session_process_sr (RTPSession * sess, GstRTCPPacket * packet, prevsender = RTP_SOURCE_IS_SENDER (source); /* first update the source */ - rtp_source_process_sr (source, arrival->current_time, ntptime, rtptime, + rtp_source_process_sr (source, pinfo->current_time, ntptime, rtptime, packet_count, octet_count); - if (prevsender != RTP_SOURCE_IS_SENDER (source)) { - sess->stats.sender_sources++; - GST_DEBUG ("source: %08x became sender, %d sender sources", senderssrc, - sess->stats.sender_sources); - } + source_update_sender (sess, source, prevsender); if (created) on_new_ssrc (sess, source); - rtp_session_process_rb (sess, source, packet, arrival); + rtp_session_process_rb (sess, source, packet, pinfo); g_object_unref (source); } @@ -1935,7 +1896,7 @@ rtp_session_process_sr (RTPSession * sess, GstRTCPPacket * packet, */ static void rtp_session_process_rr (RTPSession * sess, GstRTCPPacket * packet, - RTPArrivalStats * arrival) + RTPPacketInfo * pinfo) { guint32 senderssrc; RTPSource *source; @@ -1945,21 +1906,21 @@ rtp_session_process_rr (RTPSession * sess, GstRTCPPacket * packet, GST_DEBUG ("got RR packet: SSRC %08x", senderssrc); - source = obtain_source (sess, senderssrc, &created, arrival, FALSE); + source = obtain_source (sess, senderssrc, &created, pinfo, FALSE); if (!source) return; if (created) on_new_ssrc (sess, source); - rtp_session_process_rb (sess, source, packet, arrival); + rtp_session_process_rb (sess, source, packet, pinfo); g_object_unref (source); } /* Get SDES items and store them in the SSRC */ static void rtp_session_process_sdes (RTPSession * sess, GstRTCPPacket * packet, - RTPArrivalStats * arrival) + RTPPacketInfo * pinfo) { guint items, i, j; gboolean more_items, more_entries; @@ -1971,7 +1932,7 @@ rtp_session_process_sdes (RTPSession * sess, GstRTCPPacket * packet, i = 0; while (more_items) { guint32 ssrc; - gboolean changed, created, validated; + gboolean changed, created, prevactive; RTPSource *source; GstStructure *sdes; @@ -1982,7 +1943,7 @@ rtp_session_process_sdes (RTPSession * sess, GstRTCPPacket * packet, changed = FALSE; /* find src, no probation when dealing with RTCP */ - source = obtain_source (sess, ssrc, &created, arrival, FALSE); + source = obtain_source (sess, ssrc, &created, pinfo, FALSE); if (!source) return; @@ -2024,19 +1985,15 @@ rtp_session_process_sdes (RTPSession * sess, GstRTCPPacket * packet, /* takes ownership of sdes */ changed = rtp_source_set_sdes_struct (source, sdes); - validated = !RTP_SOURCE_IS_ACTIVE (source); + prevactive = RTP_SOURCE_IS_ACTIVE (source); source->validated = TRUE; if (created) on_new_ssrc (sess, source); /* source became active */ - if (validated) { - sess->stats.active_sources++; - GST_DEBUG ("source: %08x became active, %d active sources", ssrc, - sess->stats.active_sources); + if (source_update_active (sess, source, prevactive)) on_ssrc_validated (sess, source); - } if (changed) on_ssrc_sdes (sess, source); @@ -2052,7 +2009,7 @@ rtp_session_process_sdes (RTPSession * sess, GstRTCPPacket * packet, */ static void rtp_session_process_bye (RTPSession * sess, GstRTCPPacket * packet, - RTPArrivalStats * arrival) + RTPPacketInfo * pinfo) { guint count, i; gchar *reason; @@ -2071,52 +2028,49 @@ rtp_session_process_bye (RTPSession * sess, GstRTCPPacket * packet, ssrc = gst_rtcp_packet_bye_get_nth_ssrc (packet, i); GST_DEBUG ("SSRC: %08x", ssrc); - if (ssrc == sess->source->ssrc) - return; - /* find src and mark bye, no probation when dealing with RTCP */ - source = obtain_source (sess, ssrc, &created, arrival, FALSE); + source = obtain_source (sess, ssrc, &created, pinfo, FALSE); if (!source) return; + if (source->internal) { + /* our own source, something weird with this packet */ + g_object_unref (source); + continue; + } + /* store time for when we need to time out this source */ - source->bye_time = arrival->current_time; + source->bye_time = pinfo->current_time; prevactive = RTP_SOURCE_IS_ACTIVE (source); prevsender = RTP_SOURCE_IS_SENDER (source); - /* let the source handle the rest */ - rtp_source_process_bye (source, reason); + /* mark the source BYE */ + rtp_source_mark_bye (source, reason); pmembers = sess->stats.active_sources; - if (prevactive && !RTP_SOURCE_IS_ACTIVE (source)) { - sess->stats.active_sources--; - GST_DEBUG ("source: %08x became inactive, %d active sources", ssrc, - sess->stats.active_sources); - } - if (prevsender && !RTP_SOURCE_IS_SENDER (source)) { - sess->stats.sender_sources--; - GST_DEBUG ("source: %08x became non sender, %d sender sources", ssrc, - sess->stats.sender_sources); - } + source_update_active (sess, source, prevactive); + source_update_sender (sess, source, prevsender); + members = sess->stats.active_sources; - if (!sess->source->received_bye && members < pmembers) { + if (!sess->scheduled_bye && members < pmembers) { /* some members went away since the previous timeout estimate. * Perform reverse reconsideration but only when we are not scheduling a * BYE ourselves. */ - if (arrival->current_time < sess->next_rtcp_check_time) { + if (sess->next_rtcp_check_time != GST_CLOCK_TIME_NONE && + pinfo->current_time < sess->next_rtcp_check_time) { GstClockTime time_remaining; - time_remaining = sess->next_rtcp_check_time - arrival->current_time; + time_remaining = sess->next_rtcp_check_time - pinfo->current_time; sess->next_rtcp_check_time = gst_util_uint64_scale (time_remaining, members, pmembers); GST_DEBUG ("reverse reconsideration %" GST_TIME_FORMAT, GST_TIME_ARGS (sess->next_rtcp_check_time)); - sess->next_rtcp_check_time += arrival->current_time; + sess->next_rtcp_check_time += pinfo->current_time; /* mark pending reconsider. We only want to signal the reconsideration * once after we handled all the source in the bye packet */ @@ -2143,7 +2097,7 @@ rtp_session_process_bye (RTPSession * sess, GstRTCPPacket * packet, static void rtp_session_process_app (RTPSession * sess, GstRTCPPacket * packet, - RTPArrivalStats * arrival) + RTPPacketInfo * pinfo) { GST_DEBUG ("received APP"); } @@ -2160,8 +2114,7 @@ rtp_session_request_local_key_unit (RTPSession * sess, RTPSource * src, GstClockTime round_trip_in_ns = gst_util_uint64_scale (round_trip, GST_SECOND, 65536); - if (sess->last_keyframe_request != GST_CLOCK_TIME_NONE && - current_time - sess->last_keyframe_request < 2 * round_trip_in_ns) { + if (current_time - sess->last_keyframe_request < 2 * round_trip_in_ns) { GST_DEBUG ("Ignoring %s request because one was send without one " "RTT (%" GST_TIME_FORMAT " < %" GST_TIME_FORMAT ")", fir ? "FIR" : "PLI", @@ -2194,8 +2147,7 @@ rtp_session_process_pli (RTPSession * sess, guint32 sender_ssrc, if (!sess->callbacks.request_key_unit) return; - src = g_hash_table_lookup (sess->ssrcs[sess->mask_idx], - GINT_TO_POINTER (sender_ssrc)); + src = find_source (sess, sender_ssrc); if (!src) return; @@ -2217,35 +2169,34 @@ rtp_session_process_fir (RTPSession * sess, guint32 sender_ssrc, if (fci_length < 8) return; - src = g_hash_table_lookup (sess->ssrcs[sess->mask_idx], - GINT_TO_POINTER (sender_ssrc)); + src = find_source (sess, sender_ssrc); /* Hack because Google fails to set the sender_ssrc correctly */ if (!src && sender_ssrc == 1) { GHashTableIter iter; - if (sess->stats.sender_sources > - RTP_SOURCE_IS_SENDER (sess->source) ? 2 : 1) + /* we can't find the source if there are multiple */ + if (sess->stats.sender_sources > sess->stats.internal_sender_sources + 1) return; g_hash_table_iter_init (&iter, sess->ssrcs[sess->mask_idx]); - while (g_hash_table_iter_next (&iter, NULL, (gpointer *) & src)) { - if (src != sess->source && rtp_source_is_sender (src)) + if (!src->internal && rtp_source_is_sender (src)) break; src = NULL; } } - if (!src) return; for (position = 0; position < fci_length; position += 8) { guint8 *data = fci_data + position; + RTPSource *own; ssrc = GST_READ_UINT32_BE (data); - if (ssrc == rtp_source_get_ssrc (sess->source)) { + own = find_source (sess, ssrc); + if (own->internal) { our_request = TRUE; break; } @@ -2257,15 +2208,42 @@ rtp_session_process_fir (RTPSession * sess, guint32 sender_ssrc, } static void -rtp_session_process_feedback (RTPSession * sess, GstRTCPPacket * packet, - RTPArrivalStats * arrival, GstClockTime current_time) +rtp_session_process_nack (RTPSession * sess, guint32 sender_ssrc, + guint32 media_ssrc, guint8 * fci_data, guint fci_length, + GstClockTime current_time) { - GstRTCPType type = gst_rtcp_packet_get_type (packet); + if (!sess->callbacks.notify_nack) + return; + + while (fci_length > 0) { + guint16 seqnum, blp; + + seqnum = GST_READ_UINT16_BE (fci_data); + blp = GST_READ_UINT16_BE (fci_data + 2); + + GST_DEBUG ("NACK #%u, blp %04x", seqnum, blp); + + RTP_SESSION_UNLOCK (sess); + sess->callbacks.notify_nack (sess, seqnum, blp, + sess->notify_nack_user_data); + RTP_SESSION_LOCK (sess); + + fci_data += 4; + fci_length -= 4; + } +} + +static void +rtp_session_process_feedback (RTPSession * sess, GstRTCPPacket * packet, + RTPPacketInfo * pinfo, GstClockTime current_time) +{ + GstRTCPType type = gst_rtcp_packet_get_type (packet); GstRTCPFBType fbtype = gst_rtcp_packet_fb_get_type (packet); guint32 sender_ssrc = gst_rtcp_packet_fb_get_sender_ssrc (packet); guint32 media_ssrc = gst_rtcp_packet_fb_get_media_ssrc (packet); guint8 *fci_data = gst_rtcp_packet_fb_get_fci (packet); guint fci_length = 4 * gst_rtcp_packet_fb_get_fci_length (packet); + RTPSource *src; GST_DEBUG ("received feedback %d:%d from %08X about %08X with FCI of " "length %d", type, fbtype, sender_ssrc, media_ssrc, fci_length); @@ -2278,7 +2256,7 @@ rtp_session_process_feedback (RTPSession * sess, GstRTCPPacket * packet, fci_buffer = gst_buffer_copy_region (packet->rtcp->buffer, GST_BUFFER_COPY_MEMORY, fci_data - packet->rtcp->map.data, fci_length); - GST_BUFFER_TIMESTAMP (fci_buffer) = arrival->running_time; + GST_BUFFER_TIMESTAMP (fci_buffer) = pinfo->running_time; } RTP_SESSION_UNLOCK (sess); @@ -2290,15 +2268,15 @@ rtp_session_process_feedback (RTPSession * sess, GstRTCPPacket * packet, gst_buffer_unref (fci_buffer); } - if (sess->rtcp_feedback_retention_window) { - RTPSource *src = g_hash_table_lookup (sess->ssrcs[sess->mask_idx], - GINT_TO_POINTER (media_ssrc)); + src = find_source (sess, media_ssrc); + if (!src) + return; - if (src) - rtp_source_retain_rtcp_packet (src, packet, arrival->running_time); + if (sess->rtcp_feedback_retention_window) { + rtp_source_retain_rtcp_packet (src, packet, pinfo->running_time); } - if (rtp_source_get_ssrc (sess->source) == media_ssrc || + if (src->internal || /* PSFB FIR puts the media ssrc inside the FCI */ (type == GST_RTCP_TYPE_PSFB && fbtype == GST_RTCP_PSFB_TYPE_FIR)) { switch (type) { @@ -2317,6 +2295,14 @@ rtp_session_process_feedback (RTPSession * sess, GstRTCPPacket * packet, } break; case GST_RTCP_TYPE_RTPFB: + switch (fbtype) { + case GST_RTCP_RTPFB_TYPE_NACK: + rtp_session_process_nack (sess, sender_ssrc, media_ssrc, + fci_data, fci_length, current_time); + break; + default: + break; + } default: break; } @@ -2341,7 +2327,7 @@ rtp_session_process_rtcp (RTPSession * sess, GstBuffer * buffer, { GstRTCPPacket packet; gboolean more, is_bye = FALSE, do_sync = FALSE; - RTPArrivalStats arrival = { NULL, }; + RTPPacketInfo pinfo = { 0, }; GstFlowReturn result = GST_FLOW_OK; GstRTCPBuffer rtcp = { NULL, }; @@ -2354,12 +2340,9 @@ rtp_session_process_rtcp (RTPSession * sess, GstBuffer * buffer, GST_DEBUG ("received RTCP packet"); RTP_SESSION_LOCK (sess); - /* update arrival stats */ - update_arrival_stats (sess, &arrival, FALSE, buffer, current_time, -1, - ntpnstime); - - if (sess->sent_bye) - goto ignore; + /* update pinfo stats */ + update_packet_info (sess, &pinfo, FALSE, FALSE, FALSE, buffer, current_time, + -1, ntpnstime); /* start processing the compound packet */ gst_rtcp_buffer_map (buffer, GST_MAP_READ, &rtcp); @@ -2370,33 +2353,33 @@ rtp_session_process_rtcp (RTPSession * sess, GstBuffer * buffer, type = gst_rtcp_packet_get_type (&packet); /* when we are leaving the session, we should ignore all non-BYE messages */ - if (sess->source->received_bye && type != GST_RTCP_TYPE_BYE) { + if (sess->scheduled_bye && type != GST_RTCP_TYPE_BYE) { GST_DEBUG ("ignoring non-BYE RTCP packet because we are leaving"); goto next; } switch (type) { case GST_RTCP_TYPE_SR: - rtp_session_process_sr (sess, &packet, &arrival, &do_sync); + rtp_session_process_sr (sess, &packet, &pinfo, &do_sync); break; case GST_RTCP_TYPE_RR: - rtp_session_process_rr (sess, &packet, &arrival); + rtp_session_process_rr (sess, &packet, &pinfo); break; case GST_RTCP_TYPE_SDES: - rtp_session_process_sdes (sess, &packet, &arrival); + rtp_session_process_sdes (sess, &packet, &pinfo); break; case GST_RTCP_TYPE_BYE: is_bye = TRUE; /* don't try to attempt lip-sync anymore for streams with a BYE */ do_sync = FALSE; - rtp_session_process_bye (sess, &packet, &arrival); + rtp_session_process_bye (sess, &packet, &pinfo); break; case GST_RTCP_TYPE_APP: - rtp_session_process_app (sess, &packet, &arrival); + rtp_session_process_app (sess, &packet, &pinfo); break; case GST_RTCP_TYPE_RTPFB: case GST_RTCP_TYPE_PSFB: - rtp_session_process_feedback (sess, &packet, &arrival, current_time); + rtp_session_process_feedback (sess, &packet, &pinfo, current_time); break; default: GST_WARNING ("got unknown RTCP packet"); @@ -2410,27 +2393,25 @@ rtp_session_process_rtcp (RTPSession * sess, GstBuffer * buffer, /* if we are scheduling a BYE, we only want to count bye packets, else we * count everything */ - if (sess->source->received_bye) { + if (sess->scheduled_bye) { if (is_bye) { sess->stats.bye_members++; - UPDATE_AVG (sess->stats.avg_rtcp_packet_size, arrival.bytes); + UPDATE_AVG (sess->stats.avg_rtcp_packet_size, pinfo.bytes); } } else { /* keep track of average packet size */ - UPDATE_AVG (sess->stats.avg_rtcp_packet_size, arrival.bytes); + UPDATE_AVG (sess->stats.avg_rtcp_packet_size, pinfo.bytes); } GST_DEBUG ("%p, received RTCP packet, avg size %u, %u", &sess->stats, - sess->stats.avg_rtcp_packet_size, arrival.bytes); + sess->stats.avg_rtcp_packet_size, pinfo.bytes); RTP_SESSION_UNLOCK (sess); - clean_arrival_stats (&arrival); + pinfo.data = NULL; + clean_packet_info (&pinfo); /* notify caller of sr packets in the callback */ if (do_sync && sess->callbacks.sync_rtcp) { - /* make writable, we might want to change the buffer */ - buffer = gst_buffer_make_writable (buffer); - - result = sess->callbacks.sync_rtcp (sess, sess->source, buffer, + result = sess->callbacks.sync_rtcp (sess, buffer, sess->sync_rtcp_user_data); } else gst_buffer_unref (buffer); @@ -2444,14 +2425,6 @@ invalid_packet: gst_buffer_unref (buffer); return GST_FLOW_OK; } -ignore: - { - RTP_SESSION_UNLOCK (sess); - gst_buffer_unref (buffer); - clean_arrival_stats (&arrival); - GST_DEBUG ("ignoring RTCP packet because we left"); - return GST_FLOW_OK; - } } /** @@ -2464,14 +2437,28 @@ ignore: void rtp_session_update_send_caps (RTPSession * sess, GstCaps * caps) { + GstStructure *s; + guint ssrc; + g_return_if_fail (RTP_IS_SESSION (sess)); g_return_if_fail (GST_IS_CAPS (caps)); GST_LOG ("received caps %" GST_PTR_FORMAT, caps); - RTP_SESSION_LOCK (sess); - rtp_source_update_caps (sess->source, caps); - RTP_SESSION_UNLOCK (sess); + s = gst_caps_get_structure (caps, 0); + + if (gst_structure_get_uint (s, "ssrc", &ssrc)) { + RTPSource *source; + gboolean created; + + RTP_SESSION_LOCK (sess); + source = obtain_internal_source (sess, ssrc, &created); + if (source) { + rtp_source_update_caps (source, caps); + g_object_unref (source); + } + RTP_SESSION_UNLOCK (sess); + } } /** @@ -2495,6 +2482,8 @@ rtp_session_send_rtp (RTPSession * sess, gpointer data, gboolean is_list, RTPSource *source; gboolean prevsender; guint64 oldrate; + RTPPacketInfo pinfo = { 0, }; + gboolean created; g_return_val_if_fail (RTP_IS_SESSION (sess), GST_FLOW_ERROR); g_return_val_if_fail (is_list || GST_IS_BUFFER (data), GST_FLOW_ERROR); @@ -2502,7 +2491,11 @@ rtp_session_send_rtp (RTPSession * sess, gpointer data, gboolean is_list, GST_LOG ("received RTP %s for sending", is_list ? "list" : "packet"); RTP_SESSION_LOCK (sess); - source = sess->source; + if (!update_packet_info (sess, &pinfo, TRUE, TRUE, is_list, data, + current_time, running_time, -1)) + goto invalid_packet; + + source = obtain_internal_source (sess, pinfo.ssrc, &created); /* update last activity */ source->last_rtp_activity = current_time; @@ -2511,15 +2504,26 @@ rtp_session_send_rtp (RTPSession * sess, gpointer data, gboolean is_list, oldrate = source->bitrate; /* we use our own source to send */ - result = rtp_source_send_rtp (source, data, is_list, running_time); + result = rtp_source_send_rtp (source, &pinfo); + + source_update_sender (sess, source, prevsender); - if (RTP_SOURCE_IS_SENDER (source) && !prevsender) - sess->stats.sender_sources++; if (oldrate != source->bitrate) sess->recalc_bandwidth = TRUE; RTP_SESSION_UNLOCK (sess); + g_object_unref (source); + clean_packet_info (&pinfo); + return result; + +invalid_packet: + { + gst_mini_object_unref (GST_MINI_OBJECT_CAST (data)); + RTP_SESSION_UNLOCK (sess); + GST_DEBUG ("invalid RTP packet received"); + return GST_FLOW_OK; + } } static void @@ -2528,6 +2532,7 @@ add_bitrates (gpointer key, RTPSource * source, gdouble * bandwidth) *bandwidth += source->bitrate; } +/* must be called with session lock */ static GstClockTime calculate_rtcp_interval (RTPSession * sess, gboolean deterministic, gboolean first) @@ -2542,9 +2547,10 @@ calculate_rtcp_interval (RTPSession * sess, gboolean deterministic, bandwidth = sess->bandwidth; else { /* If it is <= 0, then try to estimate the actual bandwidth */ - bandwidth = sess->source->bitrate; + bandwidth = 0; - g_hash_table_foreach (sess->cnames, (GHFunc) add_bitrates, &bandwidth); + g_hash_table_foreach (sess->ssrcs[sess->mask_idx], + (GHFunc) add_bitrates, &bandwidth); bandwidth /= 8.0; } if (bandwidth < 8000) @@ -2556,11 +2562,11 @@ calculate_rtcp_interval (RTPSession * sess, gboolean deterministic, sess->recalc_bandwidth = FALSE; } - if (sess->source->received_bye) { + if (sess->scheduled_bye) { result = rtp_stats_calculate_bye_interval (&sess->stats); } else { result = rtp_stats_calculate_rtcp_interval (&sess->stats, - RTP_SOURCE_IS_SENDER (sess->source), first); + sess->stats.internal_sender_sources > 0, first); } GST_DEBUG ("next deterministic interval: %" GST_TIME_FORMAT ", first %d", @@ -2574,40 +2580,60 @@ calculate_rtcp_interval (RTPSession * sess, gboolean deterministic, return result; } +static void +source_mark_bye (const gchar * key, RTPSource * source, const gchar * reason) +{ + if (source->internal) + rtp_source_mark_bye (source, reason); +} + +/** + * rtp_session_mark_all_bye: + * @sess: an #RTPSession + * @reason: a reason + * + * Mark all internal sources of the session as BYE with @reason. + */ +void +rtp_session_mark_all_bye (RTPSession * sess, const gchar * reason) +{ + g_return_if_fail (RTP_IS_SESSION (sess)); + + RTP_SESSION_LOCK (sess); + g_hash_table_foreach (sess->ssrcs[sess->mask_idx], + (GHFunc) source_mark_bye, (gpointer) reason); + RTP_SESSION_UNLOCK (sess); +} + /* Stop the current @sess and schedule a BYE message for the other members. * One must have the session lock to call this function */ static GstFlowReturn -rtp_session_schedule_bye_locked (RTPSession * sess, const gchar * reason, - GstClockTime current_time) +rtp_session_schedule_bye_locked (RTPSession * sess, GstClockTime current_time) { GstFlowReturn result = GST_FLOW_OK; - RTPSource *source; GstClockTime interval; - g_return_val_if_fail (RTP_IS_SESSION (sess), GST_FLOW_ERROR); - - source = sess->source; - - /* ignore more BYEs */ - if (source->received_bye) + /* nothing to do it we already scheduled bye */ + if (sess->scheduled_bye) goto done; - /* we have BYE now */ - source->received_bye = TRUE; + /* we schedule BYE now */ + sess->scheduled_bye = TRUE; /* at least one member wants to send a BYE */ - g_free (sess->bye_reason); - sess->bye_reason = g_strdup (reason); INIT_AVG (sess->stats.avg_rtcp_packet_size, 100); sess->stats.bye_members = 1; sess->first_rtcp = TRUE; - sess->sent_bye = FALSE; sess->allow_early = TRUE; /* reschedule transmission */ sess->last_rtcp_send_time = current_time; interval = calculate_rtcp_interval (sess, FALSE, TRUE); - sess->next_rtcp_check_time = current_time + interval; + + if (interval != GST_CLOCK_TIME_NONE) + sess->next_rtcp_check_time = current_time + interval; + else + sess->next_rtcp_check_time = GST_CLOCK_TIME_NONE; GST_DEBUG ("Schedule BYE for %" GST_TIME_FORMAT ", %" GST_TIME_FORMAT, GST_TIME_ARGS (interval), GST_TIME_ARGS (sess->next_rtcp_check_time)); @@ -2625,23 +2651,21 @@ done: /** * rtp_session_schedule_bye: * @sess: an #RTPSession - * @reason: a reason or NULL * @current_time: the current system time * - * Stop the current @sess and schedule a BYE message for the other members. + * Schedule a BYE message for all sources marked as BYE in @sess. * * Returns: a #GstFlowReturn. */ GstFlowReturn -rtp_session_schedule_bye (RTPSession * sess, const gchar * reason, - GstClockTime current_time) +rtp_session_schedule_bye (RTPSession * sess, GstClockTime current_time) { GstFlowReturn result = GST_FLOW_OK; g_return_val_if_fail (RTP_IS_SESSION (sess), GST_FLOW_ERROR); RTP_SESSION_LOCK (sess); - result = rtp_session_schedule_bye_locked (sess, reason, current_time); + result = rtp_session_schedule_bye_locked (sess, current_time); RTP_SESSION_UNLOCK (sess); return result; @@ -2667,27 +2691,26 @@ rtp_session_next_timeout (RTPSession * sess, GstClockTime current_time) RTP_SESSION_LOCK (sess); if (GST_CLOCK_TIME_IS_VALID (sess->next_early_rtcp_time)) { + GST_DEBUG ("have early rtcp time"); result = sess->next_early_rtcp_time; goto early_exit; } result = sess->next_rtcp_check_time; - GST_DEBUG ("current time: %" GST_TIME_FORMAT ", next :%" GST_TIME_FORMAT, + GST_DEBUG ("current time: %" GST_TIME_FORMAT + ", next time: %" GST_TIME_FORMAT, GST_TIME_ARGS (current_time), GST_TIME_ARGS (result)); - if (result < current_time) { + if (result == GST_CLOCK_TIME_NONE || result < current_time) { GST_DEBUG ("take current time as base"); /* our previous check time expired, start counting from the current time * again. */ result = current_time; } - if (sess->source->received_bye) { - if (sess->sent_bye) { - GST_DEBUG ("we sent BYE already"); - interval = GST_CLOCK_TIME_NONE; - } else if (sess->stats.active_sources >= 50) { + if (sess->scheduled_bye) { + if (sess->stats.active_sources >= 50) { GST_DEBUG ("reconsider BYE, more than 50 sources"); /* reconsider BYE if members >= 50 */ interval = calculate_rtcp_interval (sess, FALSE, TRUE); @@ -2721,30 +2744,43 @@ early_exit: return result; } +typedef struct +{ + RTPSource *source; + gboolean is_bye; + GstBuffer *buffer; +} ReportOutput; + typedef struct { GstRTCPBuffer rtcpbuf; RTPSession *sess; + RTPSource *source; + guint num_to_report; + gboolean have_fir; + gboolean have_pli; + gboolean have_nack; GstBuffer *rtcp; GstClockTime current_time; guint64 ntpnstime; GstClockTime running_time; GstClockTime interval; GstRTCPPacket packet; - gboolean is_bye; gboolean has_sdes; gboolean is_early; gboolean may_suppress; + GQueue output; } ReportData; static void session_start_rtcp (RTPSession * sess, ReportData * data) { GstRTCPPacket *packet = &data->packet; - RTPSource *own = sess->source; + RTPSource *own = data->source; GstRTCPBuffer *rtcp = &data->rtcpbuf; data->rtcp = gst_rtcp_buffer_new (sess->mtu); + data->has_sdes = FALSE; gst_rtcp_buffer_map (data->rtcp, GST_MAP_READWRITE, rtcp); @@ -2781,40 +2817,192 @@ session_report_blocks (const gchar * key, RTPSource * source, ReportData * data) { RTPSession *sess = data->sess; GstRTCPPacket *packet = &data->packet; + guint8 fractionlost; + gint32 packetslost; + guint32 exthighestseq, jitter; + guint32 lsr, dlsr; + + /* don't report for sources in future generations */ + if (((gint16) (source->generation - sess->generation)) > 0) { + GST_DEBUG ("source %08x generation %u > %u", source->ssrc, + source->generation, sess->generation); + return; + } - /* create a new buffer if needed */ - if (data->rtcp == NULL) { - session_start_rtcp (sess, data); - } else if (data->is_early) { - /* Put a single RR or SR in minimal compound packets */ + /* only report about other sender */ + if (source == data->source) + goto reported; + + if (gst_rtcp_packet_get_rb_count (packet) == GST_RTCP_MAX_RB_COUNT) { + GST_DEBUG ("max RB count reached"); return; } - if (gst_rtcp_packet_get_rb_count (packet) < GST_RTCP_MAX_RB_COUNT) { - /* only report about other sender sources */ - if (source != sess->source && RTP_SOURCE_IS_SENDER (source)) { - guint8 fractionlost; - gint32 packetslost; - guint32 exthighestseq, jitter; - guint32 lsr, dlsr; - - /* get new stats */ - rtp_source_get_new_rb (source, data->current_time, &fractionlost, - &packetslost, &exthighestseq, &jitter, &lsr, &dlsr); - - /* store last generated RR packet */ - source->last_rr.is_valid = TRUE; - source->last_rr.fractionlost = fractionlost; - source->last_rr.packetslost = packetslost; - source->last_rr.exthighestseq = exthighestseq; - source->last_rr.jitter = jitter; - source->last_rr.lsr = lsr; - source->last_rr.dlsr = dlsr; - - /* packet is not yet filled, add report block for this source. */ - gst_rtcp_packet_add_rb (packet, source->ssrc, fractionlost, packetslost, - exthighestseq, jitter, lsr, dlsr); - } + + if (!RTP_SOURCE_IS_SENDER (source)) { + GST_DEBUG ("source %08x not sender", source->ssrc); + goto reported; + } + + GST_DEBUG ("create RB for SSRC %08x", source->ssrc); + + /* get new stats */ + rtp_source_get_new_rb (source, data->current_time, &fractionlost, + &packetslost, &exthighestseq, &jitter, &lsr, &dlsr); + + /* store last generated RR packet */ + source->last_rr.is_valid = TRUE; + source->last_rr.fractionlost = fractionlost; + source->last_rr.packetslost = packetslost; + source->last_rr.exthighestseq = exthighestseq; + source->last_rr.jitter = jitter; + source->last_rr.lsr = lsr; + source->last_rr.dlsr = dlsr; + + /* packet is not yet filled, add report block for this source. */ + gst_rtcp_packet_add_rb (packet, source->ssrc, fractionlost, packetslost, + exthighestseq, jitter, lsr, dlsr); + +reported: + /* source is reported, move to next generation */ + source->generation = sess->generation + 1; + + /* if we reported all sources in this generation, move to next */ + if (--data->num_to_report == 0) { + sess->generation++; + GST_DEBUG ("all reported, generation now %u", sess->generation); + } +} + +/* construct FIR */ +static void +session_add_fir (const gchar * key, RTPSource * source, ReportData * data) +{ + GstRTCPPacket *packet = &data->packet; + guint16 len; + guint8 *fci_data; + + if (!source->send_fir) + return; + + len = gst_rtcp_packet_fb_get_fci_length (packet); + if (!gst_rtcp_packet_fb_set_fci_length (packet, len + 2)) + /* exit because the packet is full, will put next request in a + * further packet */ + return; + + fci_data = gst_rtcp_packet_fb_get_fci (packet) + (len * 4); + + GST_WRITE_UINT32_BE (fci_data, source->ssrc); + fci_data += 4; + fci_data[0] = source->current_send_fir_seqnum; + fci_data[1] = fci_data[2] = fci_data[3] = 0; + + source->send_fir = FALSE; +} + +static void +session_fir (RTPSession * sess, ReportData * data) +{ + GstRTCPBuffer *rtcp = &data->rtcpbuf; + GstRTCPPacket *packet = &data->packet; + + if (!gst_rtcp_buffer_add_packet (rtcp, GST_RTCP_TYPE_PSFB, packet)) + return; + + gst_rtcp_packet_fb_set_type (packet, GST_RTCP_PSFB_TYPE_FIR); + gst_rtcp_packet_fb_set_sender_ssrc (packet, data->source->ssrc); + gst_rtcp_packet_fb_set_media_ssrc (packet, 0); + + g_hash_table_foreach (sess->ssrcs[sess->mask_idx], + (GHFunc) session_add_fir, data); + + if (gst_rtcp_packet_fb_get_fci_length (packet) == 0) + gst_rtcp_packet_remove (packet); + else + data->may_suppress = FALSE; +} + +static gboolean +has_pli_compare_func (gconstpointer a, gconstpointer ignored) +{ + GstRTCPPacket packet; + GstRTCPBuffer rtcp = { NULL, }; + gboolean ret = FALSE; + + gst_rtcp_buffer_map ((GstBuffer *) a, GST_MAP_READ, &rtcp); + + if (gst_rtcp_buffer_get_first_packet (&rtcp, &packet)) { + if (gst_rtcp_packet_get_type (&packet) == GST_RTCP_TYPE_PSFB && + gst_rtcp_packet_fb_get_type (&packet) == GST_RTCP_PSFB_TYPE_PLI) + ret = TRUE; + } + + gst_rtcp_buffer_unmap (&rtcp); + + return ret; +} + +/* construct PLI */ +static void +session_pli (const gchar * key, RTPSource * source, ReportData * data) +{ + GstRTCPBuffer *rtcp = &data->rtcpbuf; + GstRTCPPacket *packet = &data->packet; + + if (!source->send_pli) + return; + + if (rtp_source_has_retained (source, has_pli_compare_func, NULL)) + return; + + if (!gst_rtcp_buffer_add_packet (rtcp, GST_RTCP_TYPE_PSFB, packet)) + /* exit because the packet is full, will put next request in a + * further packet */ + return; + + gst_rtcp_packet_fb_set_type (packet, GST_RTCP_PSFB_TYPE_PLI); + gst_rtcp_packet_fb_set_sender_ssrc (packet, data->source->ssrc); + gst_rtcp_packet_fb_set_media_ssrc (packet, source->ssrc); + + source->send_pli = FALSE; + data->may_suppress = FALSE; +} + +/* construct NACK */ +static void +session_nack (const gchar * key, RTPSource * source, ReportData * data) +{ + GstRTCPBuffer *rtcp = &data->rtcpbuf; + GstRTCPPacket *packet = &data->packet; + guint32 *nacks; + guint n_nacks, i; + guint8 *fci_data; + + if (!source->send_nack) + return; + + if (!gst_rtcp_buffer_add_packet (rtcp, GST_RTCP_TYPE_RTPFB, packet)) + /* exit because the packet is full, will put next request in a + * further packet */ + return; + + gst_rtcp_packet_fb_set_type (packet, GST_RTCP_RTPFB_TYPE_NACK); + gst_rtcp_packet_fb_set_sender_ssrc (packet, data->source->ssrc); + gst_rtcp_packet_fb_set_media_ssrc (packet, source->ssrc); + + nacks = rtp_source_get_nacks (source, &n_nacks); + GST_DEBUG ("%u NACKs", n_nacks); + if (!gst_rtcp_packet_fb_set_fci_length (packet, n_nacks)) + return; + + fci_data = gst_rtcp_packet_fb_get_fci (packet); + for (i = 0; i < n_nacks; i++) { + GST_WRITE_UINT32_BE (fci_data, nacks[i]); + fci_data += 4; } + + rtp_source_clear_nacks (source); + data->may_suppress = FALSE; } /* perform cleanup of sources that timed out */ @@ -2829,6 +3017,21 @@ session_cleanup (const gchar * key, RTPSource * source, ReportData * data) GstClockTime interval, binterval; GstClockTime btime; + GST_DEBUG ("look at %08x, generation %u", source->ssrc, source->generation); + + /* check for outdated collisions */ + if (source->internal) { + GST_DEBUG ("Timing out collisions for %x", source->ssrc); + rtp_source_timeout (source, data->current_time, + /* "a relatively long time" -- RFC 3550 section 8.2 */ + RTP_STATS_MIN_INTERVAL * GST_SECOND * 10, + data->running_time - sess->rtcp_feedback_retention_window); + } + + /* nothing else to do when without RTCP */ + if (data->interval == GST_CLOCK_TIME_NONE) + return; + is_sender = RTP_SOURCE_IS_SENDER (source); is_active = RTP_SOURCE_IS_ACTIVE (source); @@ -2839,7 +3042,7 @@ session_cleanup (const gchar * key, RTPSource * source, ReportData * data) * interval = CLAMP (sender_interval, data->interval, 5 * GST_SECOND) * where sender_interval is difference between last 2 received RTCP reports */ - if (data->interval >= 5 * GST_SECOND || (source == sess->source)) { + if (data->interval >= 5 * GST_SECOND || source->internal) { binterval = data->interval; } else { GST_LOG ("prev_rtcp %" GST_TIME_FORMAT ", last_rtcp %" GST_TIME_FORMAT, @@ -2855,9 +3058,8 @@ session_cleanup (const gchar * key, RTPSource * source, ReportData * data) GST_LOG ("timeout base interval %" GST_TIME_FORMAT, GST_TIME_ARGS (binterval)); - /* check for our own source, we don't want to delete our own source. */ - if (!(source == sess->source)) { - if (source->received_bye) { + if (!source->internal) { + if (source->marked_bye) { /* if we received a BYE from the source, remove the source after some * time. */ if (data->current_time > source->bye_time && @@ -2882,38 +3084,57 @@ session_cleanup (const gchar * key, RTPSource * source, ReportData * data) } /* senders that did not send for a long time become a receiver, this also - * holds for our own source. */ + * holds for our own sources. */ if (is_sender) { /* mind old time that might pre-date last time going to PLAYING */ btime = MAX (source->last_rtp_activity, sess->start_time); if (data->current_time > btime) { interval = MAX (binterval * 2, 5 * GST_SECOND); if (data->current_time - btime > interval) { - GST_DEBUG ("sender source %08x timed out and became receiver, last %" - GST_TIME_FORMAT, source->ssrc, GST_TIME_ARGS (btime)); - source->is_sender = FALSE; - sess->stats.sender_sources--; - sendertimeout = TRUE; + if (source->internal && source->sent_bye) { + /* an internal source is BYE and stopped sending RTP, remove */ + GST_DEBUG ("internal BYE source %08x timed out, last %" + GST_TIME_FORMAT, source->ssrc, GST_TIME_ARGS (btime)); + remove = TRUE; + } else { + GST_DEBUG ("sender source %08x timed out and became receiver, last %" + GST_TIME_FORMAT, source->ssrc, GST_TIME_ARGS (btime)); + sendertimeout = TRUE; + } } } } if (remove) { sess->total_sources--; - if (is_sender) + if (is_sender) { sess->stats.sender_sources--; + if (source->internal) + sess->stats.internal_sender_sources--; + } if (is_active) sess->stats.active_sources--; + if (source->internal) + sess->stats.internal_sources--; + if (byetimeout) on_bye_timeout (sess, source); else on_timeout (sess, source); } else { - if (sendertimeout) + if (sendertimeout) { + source->is_sender = FALSE; + sess->stats.sender_sources--; + if (source->internal) + sess->stats.internal_sender_sources--; + on_sender_timeout (sess, source); + } + /* count how many source to report in this generation */ + if (((gint16) (source->generation - sess->generation)) <= 0) + data->num_to_report++; } - source->closing = remove; } @@ -2928,9 +3149,9 @@ session_sdes (RTPSession * sess, ReportData * data) /* add SDES packet */ gst_rtcp_buffer_add_packet (rtcp, GST_RTCP_TYPE_SDES, packet); - gst_rtcp_packet_sdes_add_item (packet, sess->source->ssrc); + gst_rtcp_packet_sdes_add_item (packet, data->source->ssrc); - sdes = rtp_source_get_sdes_struct (sess->source); + sdes = rtp_source_get_sdes_struct (data->source); /* add all fields in the structure, the order is not important. */ n_fields = gst_structure_n_fields (sdes); @@ -2984,90 +3205,101 @@ session_sdes (RTPSession * sess, ReportData * data) /* schedule a BYE packet */ static void -session_bye (RTPSession * sess, ReportData * data) +make_source_bye (RTPSession * sess, RTPSource * source, ReportData * data) { GstRTCPPacket *packet = &data->packet; GstRTCPBuffer *rtcp = &data->rtcpbuf; - /* open packet */ - session_start_rtcp (sess, data); - /* add SDES */ session_sdes (sess, data); - /* add a BYE packet */ gst_rtcp_buffer_add_packet (rtcp, GST_RTCP_TYPE_BYE, packet); - gst_rtcp_packet_bye_add_ssrc (packet, sess->source->ssrc); - if (sess->bye_reason) - gst_rtcp_packet_bye_set_reason (packet, sess->bye_reason); + gst_rtcp_packet_bye_add_ssrc (packet, source->ssrc); + if (source->bye_reason) + gst_rtcp_packet_bye_set_reason (packet, source->bye_reason); /* we have a BYE packet now */ - data->is_bye = TRUE; + source->sent_bye = TRUE; } static gboolean is_rtcp_time (RTPSession * sess, GstClockTime current_time, ReportData * data) { GstClockTime new_send_time, elapsed; + GstClockTime interval; + + if (GST_CLOCK_TIME_IS_VALID (sess->next_early_rtcp_time)) + data->is_early = TRUE; + else + data->is_early = FALSE; - if (data->is_early && sess->next_early_rtcp_time < current_time) + if (data->is_early && sess->next_early_rtcp_time < current_time) { + GST_DEBUG ("early feedback %" GST_TIME_FORMAT " < now %" + GST_TIME_FORMAT, GST_TIME_ARGS (sess->next_early_rtcp_time), + GST_TIME_ARGS (current_time)); goto early; + } /* no need to check yet */ - if (sess->next_rtcp_check_time > current_time) { + if (sess->next_rtcp_check_time == GST_CLOCK_TIME_NONE || + sess->next_rtcp_check_time > current_time) { GST_DEBUG ("no check time yet, next %" GST_TIME_FORMAT " > now %" GST_TIME_FORMAT, GST_TIME_ARGS (sess->next_rtcp_check_time), GST_TIME_ARGS (current_time)); return FALSE; } +early: /* get elapsed time since we last reported */ elapsed = current_time - sess->last_rtcp_send_time; - /* perform forward reconsideration */ - new_send_time = rtp_stats_add_rtcp_jitter (&sess->stats, data->interval); - - GST_DEBUG ("forward reconsideration %" GST_TIME_FORMAT ", elapsed %" - GST_TIME_FORMAT, GST_TIME_ARGS (new_send_time), GST_TIME_ARGS (elapsed)); - - new_send_time += sess->last_rtcp_send_time; + /* take interval and add jitter */ + interval = data->interval; + if (interval != GST_CLOCK_TIME_NONE) + interval = rtp_stats_add_rtcp_jitter (&sess->stats, interval); - /* check if reconsideration */ - if (current_time < new_send_time) { - GST_DEBUG ("reconsider RTCP for %" GST_TIME_FORMAT, - GST_TIME_ARGS (new_send_time)); - /* store new check time */ - sess->next_rtcp_check_time = new_send_time; - return FALSE; + /* perform forward reconsideration */ + if (interval != GST_CLOCK_TIME_NONE) { + GST_DEBUG ("forward reconsideration %" GST_TIME_FORMAT ", elapsed %" + GST_TIME_FORMAT, GST_TIME_ARGS (interval), GST_TIME_ARGS (elapsed)); + new_send_time = interval + sess->last_rtcp_send_time; + } else { + new_send_time = sess->last_rtcp_send_time; } -early: - - new_send_time = calculate_rtcp_interval (sess, FALSE, FALSE); + if (!data->is_early) { + /* check if reconsideration */ + if (new_send_time == GST_CLOCK_TIME_NONE || current_time < new_send_time) { + GST_DEBUG ("reconsider RTCP for %" GST_TIME_FORMAT, + GST_TIME_ARGS (new_send_time)); + /* store new check time */ + sess->next_rtcp_check_time = new_send_time; + return FALSE; + } + sess->next_rtcp_check_time = current_time + interval; + } else if (interval != GST_CLOCK_TIME_NONE) { + /* Apply the rules from RFC 4585 section 3.5.3 */ + if (sess->stats.min_interval != 0 && !sess->first_rtcp) { + GstClockTime T_rr_current_interval = + g_random_double_range (0.5, 1.5) * sess->stats.min_interval; + + /* This will caused the RTCP to be suppressed if no FB packets are added */ + if (sess->last_rtcp_send_time + T_rr_current_interval > new_send_time) { + GST_DEBUG ("RTCP packet could be suppressed min: %" GST_TIME_FORMAT + " last: %" GST_TIME_FORMAT + " + T_rr_current_interval: %" GST_TIME_FORMAT + " > new_send_time: %" GST_TIME_FORMAT, + GST_TIME_ARGS (sess->stats.min_interval), + GST_TIME_ARGS (sess->last_rtcp_send_time), + GST_TIME_ARGS (T_rr_current_interval), + GST_TIME_ARGS (new_send_time)); + data->may_suppress = TRUE; + } + } + } GST_DEBUG ("can send RTCP now, next interval %" GST_TIME_FORMAT, GST_TIME_ARGS (new_send_time)); - sess->next_rtcp_check_time = current_time + new_send_time; - - /* Apply the rules from RFC 4585 section 3.5.3 */ - if (sess->stats.min_interval != 0 && !sess->first_rtcp) { - GstClockTimeDiff T_rr_current_interval = g_random_double_range (0.5, 1.5) * - sess->stats.min_interval; - - /* This will caused the RTCP to be suppressed if no FB packets are added */ - if (sess->last_rtcp_send_time + T_rr_current_interval > - sess->next_rtcp_check_time) { - GST_DEBUG ("RTCP packet could be suppressed min: %" GST_TIME_FORMAT - " last: %" GST_TIME_FORMAT - " + T_rr_current_interval: %" GST_TIME_FORMAT - " > sess->next_rtcp_check_time: %" GST_TIME_FORMAT, - GST_TIME_ARGS (sess->stats.min_interval), - GST_TIME_ARGS (sess->last_rtcp_send_time), - GST_TIME_ARGS (T_rr_current_interval), - GST_TIME_ARGS (sess->next_rtcp_check_time)); - data->may_suppress = TRUE; - } - } return TRUE; } @@ -3079,9 +3311,70 @@ clone_ssrcs_hashtable (gchar * key, RTPSource * source, GHashTable * hash_table) } static gboolean -remove_closing_sources (const gchar * key, RTPSource * source, gpointer * data) +remove_closing_sources (const gchar * key, RTPSource * source, + ReportData * data) { - return source->closing; + if (source->closing) + return TRUE; + + if (source->send_fir) + data->have_fir = TRUE; + if (source->send_pli) + data->have_pli = TRUE; + if (source->send_nack) + data->have_nack = TRUE; + + return FALSE; +} + +static void +generate_rtcp (const gchar * key, RTPSource * source, ReportData * data) +{ + RTPSession *sess = data->sess; + gboolean is_bye = FALSE; + ReportOutput *output; + + /* only generate RTCP for active internal sources */ + if (!source->internal || source->sent_bye) + return; + + data->source = source; + + /* open packet */ + session_start_rtcp (sess, data); + + if (source->marked_bye) { + /* send BYE */ + make_source_bye (sess, source, data); + is_bye = TRUE; + } else if (!data->is_early) { + /* loop over all known sources and add report blocks. If we are early, we + * just make a minimal RTCP packet and skip this step */ + g_hash_table_foreach (sess->ssrcs[sess->mask_idx], + (GHFunc) session_report_blocks, data); + } + if (!data->has_sdes) + session_sdes (sess, data); + + if (data->have_fir) + session_fir (sess, data); + + if (data->have_pli) + g_hash_table_foreach (sess->ssrcs[sess->mask_idx], + (GHFunc) session_pli, data); + + if (data->have_nack) + g_hash_table_foreach (sess->ssrcs[sess->mask_idx], + (GHFunc) session_nack, data); + + gst_rtcp_buffer_unmap (&data->rtcpbuf); + + output = g_slice_new (ReportOutput); + output->source = g_object_ref (source); + output->is_bye = is_bye; + output->buffer = data->rtcp; + /* queue the RTCP packet to push later */ + g_queue_push_tail (&data->output, output); } /** @@ -3108,30 +3401,38 @@ rtp_session_on_timeout (RTPSession * sess, GstClockTime current_time, { GstFlowReturn result = GST_FLOW_OK; ReportData data = { GST_RTCP_BUFFER_INIT }; - RTPSource *own; GHashTable *table_copy; - gboolean notify = FALSE; + ReportOutput *output; g_return_val_if_fail (RTP_IS_SESSION (sess), GST_FLOW_ERROR); - GST_DEBUG ("reporting at %" GST_TIME_FORMAT ", NTP time %" GST_TIME_FORMAT, - GST_TIME_ARGS (current_time), GST_TIME_ARGS (ntpnstime)); + GST_DEBUG ("reporting at %" GST_TIME_FORMAT ", NTP time %" GST_TIME_FORMAT + ", running-time %" GST_TIME_FORMAT, GST_TIME_ARGS (current_time), + GST_TIME_ARGS (ntpnstime), GST_TIME_ARGS (running_time)); data.sess = sess; - data.rtcp = NULL; data.current_time = current_time; data.ntpnstime = ntpnstime; - data.is_bye = FALSE; - data.has_sdes = FALSE; - data.may_suppress = FALSE; data.running_time = running_time; - - own = sess->source; + data.num_to_report = 0; + data.may_suppress = FALSE; + g_queue_init (&data.output); RTP_SESSION_LOCK (sess); /* get a new interval, we need this for various cleanups etc */ data.interval = calculate_rtcp_interval (sess, TRUE, sess->first_rtcp); + GST_DEBUG ("interval %" GST_TIME_FORMAT, GST_TIME_ARGS (data.interval)); + + /* we need an internal source now */ + if (sess->stats.internal_sources == 0) { + RTPSource *source; + gboolean created; + + source = obtain_internal_source (sess, sess->suggested_ssrc, &created); + g_object_unref (source); + } + /* Make a local copy of the hashtable. We need to do this because the * cleanup stage below releases the session lock. */ table_copy = g_hash_table_new_full (NULL, NULL, NULL, @@ -3146,108 +3447,73 @@ rtp_session_on_timeout (RTPSession * sess, GstClockTime current_time, /* Now remove the marked sources */ g_hash_table_foreach_remove (sess->ssrcs[sess->mask_idx], - (GHRFunc) remove_closing_sources, NULL); - - if (GST_CLOCK_TIME_IS_VALID (sess->next_early_rtcp_time)) - data.is_early = TRUE; - else - data.is_early = FALSE; + (GHRFunc) remove_closing_sources, &data); /* see if we need to generate SR or RR packets */ - if (is_rtcp_time (sess, current_time, &data)) { - if (own->received_bye) { - /* generate BYE instead */ - GST_DEBUG ("generating BYE message"); - session_bye (sess, &data); - sess->sent_bye = TRUE; - } else { - /* loop over all known sources and do something */ - g_hash_table_foreach (sess->ssrcs[sess->mask_idx], - (GHFunc) session_report_blocks, &data); - } - } - - if (data.rtcp) { - /* we keep track of the last report time in order to timeout inactive - * receivers or senders */ - if (!data.is_early && !data.may_suppress) - sess->last_rtcp_send_time = data.current_time; - sess->first_rtcp = FALSE; - sess->next_early_rtcp_time = GST_CLOCK_TIME_NONE; - - /* add SDES for this source when not already added */ - if (!data.has_sdes) - session_sdes (sess, &data); - } - - /* check for outdated collisions */ - GST_DEBUG ("Timing out collisions"); - rtp_source_timeout (sess->source, current_time, - /* "a relatively long time" -- RFC 3550 section 8.2 */ - RTP_STATS_MIN_INTERVAL * GST_SECOND * 10, - running_time - sess->rtcp_feedback_retention_window); - - if (sess->change_ssrc) { - GST_DEBUG ("need to change our SSRC (%08x)", own->ssrc); - g_hash_table_steal (sess->ssrcs[sess->mask_idx], - GINT_TO_POINTER (own->ssrc)); - - own->ssrc = rtp_session_create_new_ssrc (sess); - rtp_source_reset (own); + if (!is_rtcp_time (sess, current_time, &data)) + goto done; - g_hash_table_insert (sess->ssrcs[sess->mask_idx], - GINT_TO_POINTER (own->ssrc), own); + GST_DEBUG ("doing RTCP generation %u for %u sources, early %d", + sess->generation, data.num_to_report, data.is_early); - g_free (sess->bye_reason); - sess->bye_reason = NULL; - sess->sent_bye = FALSE; - sess->change_ssrc = FALSE; - notify = TRUE; - GST_DEBUG ("changed our SSRC to %08x", own->ssrc); - } + /* generate RTCP for all internal sources */ + g_hash_table_foreach (sess->ssrcs[sess->mask_idx], + (GHFunc) generate_rtcp, &data); - sess->allow_early = TRUE; + /* we keep track of the last report time in order to timeout inactive + * receivers or senders */ + if (!data.is_early && !data.may_suppress) + sess->last_rtcp_send_time = data.current_time; + sess->first_rtcp = FALSE; + sess->next_early_rtcp_time = GST_CLOCK_TIME_NONE; +done: RTP_SESSION_UNLOCK (sess); - if (notify) - g_object_notify (G_OBJECT (sess), "internal-ssrc"); - - /* push out the RTCP packet */ - if (data.rtcp) { + /* push out the RTCP packets */ + while ((output = g_queue_pop_head (&data.output))) { gboolean do_not_suppress; - - gst_rtcp_buffer_unmap (&data.rtcpbuf); + GstBuffer *buffer = output->buffer; + RTPSource *source = output->source; /* Give the user a change to add its own packet */ g_signal_emit (sess, rtp_session_signals[SIGNAL_ON_SENDING_RTCP], 0, - data.rtcp, data.is_early, &do_not_suppress); + buffer, data.is_early, &do_not_suppress); if (sess->callbacks.send_rtcp && (do_not_suppress || !data.may_suppress)) { guint packet_size; - packet_size = gst_buffer_get_size (data.rtcp) + sess->header_len; + packet_size = gst_buffer_get_size (buffer) + sess->header_len; UPDATE_AVG (sess->stats.avg_rtcp_packet_size, packet_size); GST_DEBUG ("%p, sending RTCP packet, avg size %u, %u", &sess->stats, sess->stats.avg_rtcp_packet_size, packet_size); result = - sess->callbacks.send_rtcp (sess, own, data.rtcp, sess->sent_bye, + sess->callbacks.send_rtcp (sess, source, buffer, output->is_bye, sess->send_rtcp_user_data); } else { GST_DEBUG ("freeing packet callback: %p" " do_not_suppress: %d may_suppress: %d", sess->callbacks.send_rtcp, do_not_suppress, data.may_suppress); - gst_buffer_unref (data.rtcp); + gst_buffer_unref (buffer); } + g_object_unref (source); + g_slice_free (ReportOutput, output); } - return result; } +/** + * rtp_session_request_early_rtcp: + * @sess: an #RTPSession + * @current_time: the current system time + * @max_delay: maximum delay + * + * Request transmission of early RTCP + */ void rtp_session_request_early_rtcp (RTPSession * sess, GstClockTime current_time, - GstClockTimeDiff max_delay) + GstClockTime max_delay) { GstClockTime T_dither_max; @@ -3257,12 +3523,24 @@ rtp_session_request_early_rtcp (RTPSession * sess, GstClockTime current_time, /* Check if already requested */ /* RFC 4585 section 3.5.2 step 2 */ - if (GST_CLOCK_TIME_IS_VALID (sess->next_early_rtcp_time)) + if (GST_CLOCK_TIME_IS_VALID (sess->next_early_rtcp_time)) { + GST_LOG_OBJECT (sess, "already have next early rtcp time"); + goto dont_send; + } + + if (!GST_CLOCK_TIME_IS_VALID (sess->next_rtcp_check_time)) { + GST_LOG_OBJECT (sess, "no next RTCP check time"); goto dont_send; + } /* Ignore the request a scheduled packet will be in time anyway */ - if (current_time + max_delay > sess->next_rtcp_check_time) + if (current_time + max_delay > sess->next_rtcp_check_time) { + GST_LOG_OBJECT (sess, "next scheduled time is soon %" GST_TIME_FORMAT " + %" + GST_TIME_FORMAT " > %" GST_TIME_FORMAT, + GST_TIME_ARGS (current_time), + GST_TIME_ARGS (max_delay), GST_TIME_ARGS (sess->next_rtcp_check_time)); goto dont_send; + } /* RFC 4585 section 3.5.2 step 2b */ /* If the total sources is <=2, then there is only us and one peer */ @@ -3275,8 +3553,10 @@ rtp_session_request_early_rtcp (RTPSession * sess, GstClockTime current_time, } /* RFC 4585 section 3.5.2 step 3 */ - if (current_time + T_dither_max > sess->next_rtcp_check_time) + if (current_time + T_dither_max > sess->next_rtcp_check_time) { + GST_LOG_OBJECT (sess, "don't send because of dither"); goto dont_send; + } /* RFC 4585 section 3.5.2 step 4 * Don't send if allow_early is FALSE, but not if we are in @@ -3284,8 +3564,10 @@ rtp_session_request_early_rtcp (RTPSession * sess, GstClockTime current_time, * application-specific threshold. */ if (sess->total_sources > sess->rtcp_immediate_feedback_threshold && - sess->allow_early == FALSE) + sess->allow_early == FALSE) { + GST_LOG_OBJECT (sess, "can't allow early feedback"); goto dont_send; + } if (T_dither_max) { /* Schedule an early transmission later */ @@ -3296,6 +3578,8 @@ rtp_session_request_early_rtcp (RTPSession * sess, GstClockTime current_time, sess->next_early_rtcp_time = current_time; } + GST_LOG_OBJECT (sess, "next early RTCP time %" GST_TIME_FORMAT, + GST_TIME_ARGS (sess->next_early_rtcp_time)); RTP_SESSION_UNLOCK (sess); /* notify app of need to send packet early @@ -3310,15 +3594,29 @@ dont_send: RTP_SESSION_UNLOCK (sess); } +static void +rtp_session_send_rtcp (RTPSession * sess, GstClockTime max_delay) +{ + GstClockTime now; + + if (!sess->callbacks.send_rtcp) + return; + + now = sess->callbacks.request_time (sess, sess->request_time_user_data); + + rtp_session_request_early_rtcp (sess, now, max_delay); +} + gboolean -rtp_session_request_key_unit (RTPSession * sess, guint32 ssrc, GstClockTime now, +rtp_session_request_key_unit (RTPSession * sess, guint32 ssrc, gboolean fir, gint count) { - RTPSource *src = g_hash_table_lookup (sess->ssrcs[sess->mask_idx], - GUINT_TO_POINTER (ssrc)); + RTPSource *src; + RTP_SESSION_LOCK (sess); + src = find_source (sess, ssrc); if (!src) - return FALSE; + goto no_source; if (fir) { src->send_pli = FALSE; @@ -3330,123 +3628,54 @@ rtp_session_request_key_unit (RTPSession * sess, guint32 ssrc, GstClockTime now, } else if (!src->send_fir) { src->send_pli = TRUE; } + RTP_SESSION_UNLOCK (sess); - rtp_session_request_early_rtcp (sess, now, 200 * GST_MSECOND); + rtp_session_send_rtcp (sess, 200 * GST_MSECOND); return TRUE; -} -static gboolean -has_pli_compare_func (gconstpointer a, gconstpointer ignored) -{ - GstRTCPPacket packet; - GstRTCPBuffer rtcp = { NULL, }; - gboolean ret = FALSE; - - gst_rtcp_buffer_map ((GstBuffer *) a, GST_MAP_READ, &rtcp); - - if (gst_rtcp_buffer_get_first_packet (&rtcp, &packet)) { - if (gst_rtcp_packet_get_type (&packet) == GST_RTCP_TYPE_PSFB && - gst_rtcp_packet_fb_get_type (&packet) == GST_RTCP_PSFB_TYPE_PLI) - ret = TRUE; + /* ERRORS */ +no_source: + { + RTP_SESSION_UNLOCK (sess); + return FALSE; } - - gst_rtcp_buffer_unmap (&rtcp); - - return ret; } -static gboolean -rtp_session_on_sending_rtcp (RTPSession * sess, GstBuffer * buffer, - gboolean early) +/** + * rtp_session_request_nack: + * @sess: a #RTPSession + * @ssrc: the SSRC + * @seqnum: the missing seqnum + * @max_delay: max delay to request NACK + * + * Request scheduling of a NACK feedback packet for @seqnum in @ssrc. + * + * Returns: %TRUE if the NACK feedback could be scheduled + */ +gboolean +rtp_session_request_nack (RTPSession * sess, guint32 ssrc, guint16 seqnum, + GstClockTime max_delay) { - gboolean ret = FALSE; - GHashTableIter iter; - gpointer key, value; - gboolean started_fir = FALSE; - GstRTCPPacket fir_rtcppacket; - GstRTCPBuffer rtcp = { NULL, }; + RTPSource *source; RTP_SESSION_LOCK (sess); + source = find_source (sess, ssrc); + if (source == NULL) + goto no_source; - gst_rtcp_buffer_map (buffer, GST_MAP_READWRITE, &rtcp); - - g_hash_table_iter_init (&iter, sess->ssrcs[sess->mask_idx]); - while (g_hash_table_iter_next (&iter, &key, &value)) { - guint media_ssrc = GPOINTER_TO_UINT (key); - RTPSource *media_src = value; - guint8 *fci_data; - - if (media_src->send_fir) { - if (!started_fir) { - if (!gst_rtcp_buffer_add_packet (&rtcp, GST_RTCP_TYPE_PSFB, - &fir_rtcppacket)) - break; - gst_rtcp_packet_fb_set_type (&fir_rtcppacket, GST_RTCP_PSFB_TYPE_FIR); - gst_rtcp_packet_fb_set_sender_ssrc (&fir_rtcppacket, - rtp_source_get_ssrc (sess->source)); - gst_rtcp_packet_fb_set_media_ssrc (&fir_rtcppacket, 0); - - if (!gst_rtcp_packet_fb_set_fci_length (&fir_rtcppacket, 2)) { - gst_rtcp_packet_remove (&fir_rtcppacket); - break; - } - ret = TRUE; - started_fir = TRUE; - } else { - if (!gst_rtcp_packet_fb_set_fci_length (&fir_rtcppacket, - !gst_rtcp_packet_fb_get_fci_length (&fir_rtcppacket) + 2)) - break; - } - - fci_data = gst_rtcp_packet_fb_get_fci (&fir_rtcppacket) - - ((gst_rtcp_packet_fb_get_fci_length (&fir_rtcppacket) - 2) * 4); - - GST_WRITE_UINT32_BE (fci_data, media_ssrc); - fci_data += 4; - fci_data[0] = media_src->current_send_fir_seqnum; - fci_data[1] = fci_data[2] = fci_data[3] = 0; - media_src->send_fir = FALSE; - } - } - - g_hash_table_iter_init (&iter, sess->ssrcs[sess->mask_idx]); - while (g_hash_table_iter_next (&iter, &key, &value)) { - guint media_ssrc = GPOINTER_TO_UINT (key); - RTPSource *media_src = value; - GstRTCPPacket pli_rtcppacket; - - if (media_src->send_pli && !rtp_source_has_retained (media_src, - has_pli_compare_func, NULL)) { - if (!gst_rtcp_buffer_add_packet (&rtcp, GST_RTCP_TYPE_PSFB, - &pli_rtcppacket)) - /* Break because the packet is full, will put next request in a - * further packet */ - break; - gst_rtcp_packet_fb_set_type (&pli_rtcppacket, GST_RTCP_PSFB_TYPE_PLI); - gst_rtcp_packet_fb_set_sender_ssrc (&pli_rtcppacket, - rtp_source_get_ssrc (sess->source)); - gst_rtcp_packet_fb_set_media_ssrc (&pli_rtcppacket, media_ssrc); - ret = TRUE; - } - media_src->send_pli = FALSE; - } - gst_rtcp_buffer_unmap (&rtcp); - + GST_DEBUG ("request NACK for %08x, #%u", ssrc, seqnum); + rtp_source_register_nack (source, seqnum); RTP_SESSION_UNLOCK (sess); - return ret; -} - -static void -rtp_session_send_rtcp (RTPSession * sess, GstClockTimeDiff max_delay) -{ - GstClockTime now; + rtp_session_send_rtcp (sess, max_delay); - if (!sess->callbacks.send_rtcp) - return; - - now = sess->callbacks.request_time (sess, sess->request_time_user_data); + return TRUE; - rtp_session_request_early_rtcp (sess, now, max_delay); + /* ERRORS */ +no_source: + { + RTP_SESSION_UNLOCK (sess); + return FALSE; + } } diff --git a/gst/rtpmanager/rtpsession.h b/gst/rtpmanager/rtpsession.h index 46a2349d50e7c4fc76294b1a67cf1fc0aee3d0da..3ca6c161e209197825a44b034f40706dc96ae0f2 100644 --- a/gst/rtpmanager/rtpsession.h +++ b/gst/rtpmanager/rtpsession.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __RTP_SESSION_H__ @@ -85,7 +85,6 @@ typedef GstFlowReturn (*RTPSessionSendRTCP) (RTPSession *sess, RTPSource *src, G /** * RTPSessionSyncRTCP: * @sess: an #RTPSession - * @src: the #RTPSource * @buffer: the RTCP buffer ready for synchronisation * @user_data: user data specified when registering * @@ -94,7 +93,7 @@ typedef GstFlowReturn (*RTPSessionSendRTCP) (RTPSession *sess, RTPSource *src, G * * Returns: a #GstFlowReturn. */ -typedef GstFlowReturn (*RTPSessionSyncRTCP) (RTPSession *sess, RTPSource *src, GstBuffer *buffer, gpointer user_data); +typedef GstFlowReturn (*RTPSessionSyncRTCP) (RTPSession *sess, GstBuffer *buffer, gpointer user_data); /** * RTPSessionClockRate: @@ -125,7 +124,7 @@ typedef void (*RTPSessionReconsider) (RTPSession *sess, gpointer user_data); * @all_headers: %TRUE if "all-headers" property should be set on the key unit * request * @user_data: user data specified when registering -* + * * Asks the encoder to produce a key unit as soon as possibly within the * bandwidth constraints */ @@ -143,6 +142,18 @@ typedef void (*RTPSessionRequestKeyUnit) (RTPSession *sess, typedef GstClockTime (*RTPSessionRequestTime) (RTPSession *sess, gpointer user_data); +/** + * RTPSessionNotifyNACK: + * @sess: an #RTPSession + * @seqnum: the missing seqnum + * @blp: other missing seqnums + * @user_data: user data specified when registering + * + * Notifies of NACKed frames. + */ +typedef void (*RTPSessionNotifyNACK) (RTPSession *sess, + guint16 seqnum, guint16 blp, gpointer user_data); + /** * RTPSessionCallbacks: * @RTPSessionProcessRTP: callback to process RTP packets @@ -151,6 +162,8 @@ typedef GstClockTime (*RTPSessionRequestTime) (RTPSession *sess, * @RTPSessionSyncRTCP: callback for handling SR packets * @RTPSessionReconsider: callback for reconsidering the timeout * @RTPSessionRequestKeyUnit: callback for requesting a new key unit + * @RTPSessionRequestTime: callback for requesting the current time + * @RTPSessionNotifyNACK: callback for notifying NACK * * These callbacks can be installed on the session manager to get notification * when RTP and RTCP packets are ready for further processing. These callbacks @@ -165,6 +178,7 @@ typedef struct { RTPSessionReconsider reconsider; RTPSessionRequestKeyUnit request_key_unit; RTPSessionRequestTime request_time; + RTPSessionNotifyNACK notify_nack; } RTPSessionCallbacks; /** @@ -172,7 +186,6 @@ typedef struct { * @lock: lock to protect the session * @source: the source of this session * @ssrcs: Hashtable of sources indexed by SSRC - * @cnames: Hashtable of sources indexed by CNAME * @num_sources: the number of sources * @activecount: the number of active sources * @callbacks: callbacks @@ -189,6 +202,8 @@ struct _RTPSession { guint header_len; guint mtu; + GstStructure *sdes; + guint probation; /* bandwidths */ @@ -198,16 +213,16 @@ struct _RTPSession { guint rtcp_rr_bandwidth; guint rtcp_rs_bandwidth; - RTPSource *source; + guint32 suggested_ssrc; /* for sender/receiver counting */ guint32 key; guint32 mask_idx; guint32 mask; GHashTable *ssrcs[32]; - GHashTable *cnames; guint total_sources; + guint16 generation; GstClockTime next_rtcp_check_time; GstClockTime last_rtcp_send_time; GstClockTime start_time; @@ -216,8 +231,7 @@ struct _RTPSession { GstClockTime next_early_rtcp_time; - gchar *bye_reason; - gboolean sent_bye; + gboolean scheduled_bye; RTPSessionCallbacks callbacks; gpointer process_rtp_user_data; @@ -228,10 +242,10 @@ struct _RTPSession { gpointer reconsider_user_data; gpointer request_key_unit_user_data; gpointer request_time_user_data; + gpointer notify_nack_user_data; RTPSessionStats stats; - gboolean change_ssrc; gboolean favor_new; GstClockTime rtcp_feedback_retention_window; guint rtcp_immediate_feedback_threshold; @@ -267,7 +281,7 @@ struct _RTPSessionClass { gboolean early); void (*on_feedback_rtcp) (RTPSession *sess, guint type, guint fbtype, guint sender_ssrc, guint media_ssrc, GstBuffer *fci); - void (*send_rtcp) (RTPSession *sess, GstClockTimeDiff max_delay); + void (*send_rtcp) (RTPSession *sess, GstClockTime max_delay); }; GType rtp_session_get_type (void); @@ -304,30 +318,23 @@ gdouble rtp_session_get_bandwidth (RTPSession *sess); void rtp_session_set_rtcp_fraction (RTPSession *sess, gdouble fraction); gdouble rtp_session_get_rtcp_fraction (RTPSession *sess); -gboolean rtp_session_set_sdes_string (RTPSession *sess, GstRTCPSDESType type, - const gchar *cname); -gchar* rtp_session_get_sdes_string (RTPSession *sess, GstRTCPSDESType type); - GstStructure * rtp_session_get_sdes_struct (RTPSession *sess); void rtp_session_set_sdes_struct (RTPSession *sess, const GstStructure *sdes); /* handling sources */ -RTPSource* rtp_session_get_internal_source (RTPSession *sess); - -void rtp_session_set_internal_ssrc (RTPSession *sess, guint32 ssrc); -guint32 rtp_session_get_internal_ssrc (RTPSession *sess); +guint32 rtp_session_suggest_ssrc (RTPSession *sess); gboolean rtp_session_add_source (RTPSession *sess, RTPSource *src); guint rtp_session_get_num_sources (RTPSession *sess); guint rtp_session_get_num_active_sources (RTPSession *sess); RTPSource* rtp_session_get_source_by_ssrc (RTPSession *sess, guint32 ssrc); -RTPSource* rtp_session_get_source_by_cname (RTPSession *sess, const gchar *cname); RTPSource* rtp_session_create_source (RTPSession *sess); /* processing packets from receivers */ GstFlowReturn rtp_session_process_rtp (RTPSession *sess, GstBuffer *buffer, GstClockTime current_time, - GstClockTime running_time); + GstClockTime running_time, + guint64 ntpnstime); GstFlowReturn rtp_session_process_rtcp (RTPSession *sess, GstBuffer *buffer, GstClockTime current_time, guint64 ntpnstime); @@ -337,9 +344,9 @@ void rtp_session_update_send_caps (RTPSession *sess, GstCaps *c GstFlowReturn rtp_session_send_rtp (RTPSession *sess, gpointer data, gboolean is_list, GstClockTime current_time, GstClockTime running_time); -/* stopping the session */ -GstFlowReturn rtp_session_schedule_bye (RTPSession *sess, const gchar *reason, - GstClockTime current_time); +/* scheduling bye */ +void rtp_session_mark_all_bye (RTPSession *sess, const gchar *reason); +GstFlowReturn rtp_session_schedule_bye (RTPSession *sess, GstClockTime current_time); /* get interval for next RTCP interval */ GstClockTime rtp_session_next_timeout (RTPSession *sess, GstClockTime current_time); @@ -348,13 +355,17 @@ GstFlowReturn rtp_session_on_timeout (RTPSession *sess, GstClockTi /* request the transmittion of an early RTCP packet */ void rtp_session_request_early_rtcp (RTPSession * sess, GstClockTime current_time, - GstClockTimeDiff max_delay); + GstClockTime max_delay); /* Notify session of a request for a new key unit */ gboolean rtp_session_request_key_unit (RTPSession * sess, guint32 ssrc, - GstClockTime now, gboolean fir, gint count); +gboolean rtp_session_request_nack (RTPSession * sess, + guint32 ssrc, + guint16 seqnum, + GstClockTime max_delay); + #endif /* __RTP_SESSION_H__ */ diff --git a/gst/rtpmanager/rtpsource.c b/gst/rtpmanager/rtpsource.c index d76d209512a2829a259b844d552b366ef811d1f8..dea2e78a980e8a3e50c6801a5d089199976f5f1d 100644 --- a/gst/rtpmanager/rtpsource.c +++ b/gst/rtpmanager/rtpsource.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <string.h> @@ -126,7 +126,7 @@ rtp_source_class_init (RTPSourceClass * klass) * name application/x-rtp-source-stats with the following fields: * * "ssrc" G_TYPE_UINT The SSRC of this source - * "internal" G_TYPE_BOOLEAN If this source is the source of the session + * "internal" G_TYPE_BOOLEAN If this source is a source of the session * "validated" G_TYPE_BOOLEAN If the source is validated * "received-bye" G_TYPE_BOOLEAN If we received a BYE from this source * "is-csrc" G_TYPE_BOOLEAN If this source was found as CSRC @@ -219,13 +219,24 @@ rtp_source_class_init (RTPSourceClass * klass) void rtp_source_reset (RTPSource * src) { - src->received_bye = FALSE; + src->marked_bye = FALSE; + if (src->bye_reason) + g_free (src->bye_reason); + src->bye_reason = NULL; + src->sent_bye = FALSE; src->stats.cycles = -1; src->stats.jitter = 0; src->stats.transit = -1; src->stats.curr_sr = 0; + src->stats.sr[0].is_valid = FALSE; src->stats.curr_rr = 0; + src->stats.rr[0].is_valid = FALSE; + src->stats.prev_rtptime = GST_CLOCK_TIME_NONE; + src->stats.prev_rtcptime = GST_CLOCK_TIME_NONE; + src->stats.last_rtptime = GST_CLOCK_TIME_NONE; + src->stats.last_rtcptime = GST_CLOCK_TIME_NONE; + g_array_set_size (src->nacks, 0); } static void @@ -248,6 +259,7 @@ rtp_source_init (RTPSource * src) src->last_rtptime = -1; src->retained_feedback = g_queue_new (); + src->nacks = g_array_new (FALSE, FALSE, sizeof (guint32)); rtp_source_reset (src); } @@ -285,6 +297,8 @@ rtp_source_finalize (GObject * object) gst_buffer_unref (buffer); g_queue_free (src->retained_feedback); + g_array_free (src->nacks, TRUE); + if (src->rtp_from) g_object_unref (src->rtp_from); if (src->rtcp_from) @@ -321,7 +335,7 @@ rtp_source_create_stats (RTPSource * src) "ssrc", G_TYPE_UINT, (guint) src->ssrc, "internal", G_TYPE_BOOLEAN, internal, "validated", G_TYPE_BOOLEAN, src->validated, - "received-bye", G_TYPE_BOOLEAN, src->received_bye, + "received-bye", G_TYPE_BOOLEAN, src->marked_bye, "is-csrc", G_TYPE_BOOLEAN, src->is_csrc, "is-sender", G_TYPE_BOOLEAN, is_sender, "seqnum-base", G_TYPE_INT, src->seqnum_base, @@ -426,7 +440,7 @@ sdes_struct_compare_func (GQuark field_id, const GValue * value, } /** - * rtp_source_set_sdes: + * rtp_source_set_sdes_struct: * @src: an #RTPSource * @sdes: the SDES structure * @@ -454,7 +468,6 @@ rtp_source_set_sdes_struct (RTPSource * src, GstStructure * sdes) } else { gst_structure_free (sdes); } - return changed; } @@ -670,21 +683,21 @@ rtp_source_is_sender (RTPSource * src) } /** - * rtp_source_received_bye: + * rtp_source_is_marked_bye: * @src: an #RTPSource * - * Check if @src has receoved a BYE packet. + * Check if @src is marked as leaving the session with a BYE packet. * - * Returns: %TRUE if @src has received a BYE packet. + * Returns: %TRUE if @src has been marked BYE. */ gboolean -rtp_source_received_bye (RTPSource * src) +rtp_source_is_marked_bye (RTPSource * src) { gboolean result; g_return_val_if_fail (RTP_IS_SOURCE (src), FALSE); - result = src->received_bye; + result = RTP_SOURCE_IS_MARKED_BYE (src); return result; } @@ -694,11 +707,11 @@ rtp_source_received_bye (RTPSource * src) * rtp_source_get_bye_reason: * @src: an #RTPSource * - * Get the BYE reason for @src. Check if the source receoved a BYE message first - * with rtp_source_received_bye(). + * Get the BYE reason for @src. Check if the source is marked as leaving the + * session with a BYE message first with rtp_source_is_marked_bye(). * - * Returns: The BYE reason or NULL when no reason was given or the source did - * not receive a BYE message yet. g_fee() after usage. + * Returns: The BYE reason or NULL when no reason was given or the source was + * not marked BYE yet. g_free() after usage. */ gchar * rtp_source_get_bye_reason (RTPSource * src) @@ -755,75 +768,6 @@ rtp_source_update_caps (RTPSource * src, GstCaps * caps) gst_caps_replace (&src->caps, caps); } -/** - * rtp_source_set_sdes_string: - * @src: an #RTPSource - * @type: the type of the SDES item - * @data: the SDES data - * - * Store an SDES item of @type in @src. - * - * Returns: %FALSE if the SDES item was unchanged or @type is unknown. - */ -gboolean -rtp_source_set_sdes_string (RTPSource * src, GstRTCPSDESType type, - const gchar * data) -{ - const gchar *old; - const gchar *field; - - field = gst_rtcp_sdes_type_to_name (type); - - if (gst_structure_has_field (src->sdes, field)) - old = gst_structure_get_string (src->sdes, field); - else - old = NULL; - - if (old == NULL && data == NULL) - return FALSE; - - if (old != NULL && data != NULL && strcmp (old, data) == 0) - return FALSE; - - if (data == NULL) - gst_structure_remove_field (src->sdes, field); - else - gst_structure_set (src->sdes, field, G_TYPE_STRING, data, NULL); - - return TRUE; -} - -/** - * rtp_source_get_sdes_string: - * @src: an #RTPSource - * @type: the type of the SDES item - * - * Get the SDES item of @type from @src. - * - * Returns: a null-terminated copy of the SDES item or NULL when @type was not - * valid or the SDES item was unset. g_free() after usage. - */ -gchar * -rtp_source_get_sdes_string (RTPSource * src, GstRTCPSDESType type) -{ - gchar *result; - const gchar *type_name; - - g_return_val_if_fail (RTP_IS_SOURCE (src), NULL); - - if (type < 0 || type > GST_RTCP_SDES_PRIV - 1) - return NULL; - - type_name = gst_rtcp_sdes_type_to_name (type); - - if (!gst_structure_has_field (src->sdes, type_name)) - return NULL; - - result = g_strdup (gst_structure_get_string (src->sdes, type_name)); - - return result; -} - /** * rtp_source_set_rtp_from: * @src: an #RTPSource @@ -919,34 +863,27 @@ get_clock_rate (RTPSource * src, guint8 payload) * 50 milliseconds apart and arrive 60 milliseconds apart, then the jitter is 10 * milliseconds. */ static void -calculate_jitter (RTPSource * src, GstBuffer * buffer, - RTPArrivalStats * arrival) +calculate_jitter (RTPSource * src, RTPPacketInfo * pinfo) { GstClockTime running_time; guint32 rtparrival, transit, rtptime; gint32 diff; gint clock_rate; guint8 pt; - GstRTPBuffer rtp = { NULL }; /* get arrival time */ - if ((running_time = arrival->running_time) == GST_CLOCK_TIME_NONE) + if ((running_time = pinfo->running_time) == GST_CLOCK_TIME_NONE) goto no_time; - if (!gst_rtp_buffer_map (buffer, GST_MAP_READ, &rtp)) - goto invalid_packet; - - pt = gst_rtp_buffer_get_payload_type (&rtp); + pt = pinfo->pt; GST_LOG ("SSRC %08x got payload %d", src->ssrc, pt); /* get clockrate */ - if ((clock_rate = get_clock_rate (src, pt)) == -1) { - gst_rtp_buffer_unmap (&rtp); + if ((clock_rate = get_clock_rate (src, pt)) == -1) goto no_clock_rate; - } - rtptime = gst_rtp_buffer_get_timestamp (&rtp); + rtptime = pinfo->rtptime; /* convert arrival time to RTP timestamp units, truncate to 32 bits, we don't * care about the absolute value, just the difference. */ @@ -975,7 +912,6 @@ calculate_jitter (RTPSource * src, GstBuffer * buffer, GST_LOG ("rtparrival %u, rtptime %u, clock-rate %d, diff %d, jitter: %f", rtparrival, rtptime, clock_rate, diff, (src->stats.jitter) / 16.0); - gst_rtp_buffer_unmap (&rtp); return; /* ERRORS */ @@ -984,11 +920,6 @@ no_time: GST_WARNING ("cannot get current running_time"); return; } -invalid_packet: - { - GST_WARNING ("invalid RTP packet"); - return; - } no_clock_rate: { GST_WARNING ("cannot get clock-rate for pt %d", pt); @@ -1049,35 +980,29 @@ do_bitrate_estimation (RTPSource * src, GstClockTime running_time, /** * rtp_source_process_rtp: * @src: an #RTPSource - * @buffer: an RTP buffer + * @pinfo: an #RTPPacketInfo * - * Let @src handle the incomming RTP @buffer. + * Let @src handle the incomming RTP packet described in @pinfo. * * Returns: a #GstFlowReturn. */ GstFlowReturn -rtp_source_process_rtp (RTPSource * src, GstBuffer * buffer, - RTPArrivalStats * arrival) +rtp_source_process_rtp (RTPSource * src, RTPPacketInfo * pinfo) { GstFlowReturn result = GST_FLOW_OK; guint16 seqnr, udelta; RTPSourceStats *stats; guint16 expected; - GstRTPBuffer rtp = { NULL }; g_return_val_if_fail (RTP_IS_SOURCE (src), GST_FLOW_ERROR); - g_return_val_if_fail (GST_IS_BUFFER (buffer), GST_FLOW_ERROR); + g_return_val_if_fail (pinfo != NULL, GST_FLOW_ERROR); stats = &src->stats; - if (!gst_rtp_buffer_map (buffer, GST_MAP_READ, &rtp)) - goto invalid_packet; - - seqnr = gst_rtp_buffer_get_seq (&rtp); - gst_rtp_buffer_unmap (&rtp); + seqnr = pinfo->seqnum; if (stats->cycles == -1) { - GST_DEBUG ("received first buffer"); + GST_DEBUG ("received first packet"); /* first time we heard of this source */ init_seq (src, seqnr); src->stats.max_seq = seqnr - 1; @@ -1102,9 +1027,10 @@ rtp_source_process_rtp (RTPSource * src, GstBuffer * buffer, } else { GstBuffer *q; - GST_DEBUG ("probation %d: queue buffer", src->curr_probation); + GST_DEBUG ("probation %d: queue packet", src->curr_probation); /* when still in probation, keep packets in a list. */ - g_queue_push_tail (src->packets, buffer); + g_queue_push_tail (src->packets, pinfo->data); + pinfo->data = NULL; /* remove packets from queue if there are too many */ while (g_queue_get_length (src->packets) > RTP_MAX_PROBATION_LEN) { q = g_queue_pop_head (src->packets); @@ -1140,40 +1066,34 @@ rtp_source_process_rtp (RTPSource * src, GstBuffer * buffer, GST_WARNING ("duplicate or reordered packet (seqnr %d)", seqnr); } - src->stats.octets_received += arrival->payload_len; - src->stats.bytes_received += arrival->bytes; + src->stats.octets_received += pinfo->payload_len; + src->stats.bytes_received += pinfo->bytes; src->stats.packets_received++; /* for the bitrate estimation */ - src->bytes_received += arrival->payload_len; + src->bytes_received += pinfo->payload_len; /* the source that sent the packet must be a sender */ src->is_sender = TRUE; src->validated = TRUE; - do_bitrate_estimation (src, arrival->running_time, &src->bytes_received); + do_bitrate_estimation (src, pinfo->running_time, &src->bytes_received); GST_LOG ("seq %d, PC: %" G_GUINT64_FORMAT ", OC: %" G_GUINT64_FORMAT, seqnr, src->stats.packets_received, src->stats.octets_received); /* calculate jitter for the stats */ - calculate_jitter (src, buffer, arrival); + calculate_jitter (src, pinfo); /* we're ready to push the RTP packet now */ - result = push_packet (src, buffer); + result = push_packet (src, pinfo->data); + pinfo->data = NULL; done: return result; /* ERRORS */ -invalid_packet: - { - GST_WARNING ("invalid packet received"); - gst_buffer_unref (buffer); - return GST_FLOW_OK; - } bad_sequence: { GST_WARNING ("unacceptable seqnum received"); - gst_buffer_unref (buffer); return GST_FLOW_OK; } probation_seqnum: @@ -1181,44 +1101,32 @@ probation_seqnum: GST_WARNING ("probation: seqnr %d != expected %d", seqnr, expected); src->curr_probation = src->probation; src->stats.max_seq = seqnr; - gst_buffer_unref (buffer); return GST_FLOW_OK; } } /** - * rtp_source_process_bye: + * rtp_source_mark_bye: * @src: an #RTPSource * @reason: the reason for leaving * - * Notify @src that a BYE packet has been received. This will make the source - * inactive. + * Mark @src in the BYE state. This can happen when the source wants to + * leave the sesssion or when a BYE packets has been received. + * + * This will make the source inactive. */ void -rtp_source_process_bye (RTPSource * src, const gchar * reason) +rtp_source_mark_bye (RTPSource * src, const gchar * reason) { g_return_if_fail (RTP_IS_SOURCE (src)); GST_DEBUG ("marking SSRC %08x as BYE, reason: %s", src->ssrc, GST_STR_NULL (reason)); - /* copy the reason and mark as received_bye */ + /* copy the reason and mark as bye */ g_free (src->bye_reason); src->bye_reason = g_strdup (reason); - src->received_bye = TRUE; -} - -static gboolean -set_ssrc (GstBuffer ** buffer, guint idx, RTPSource * src) -{ - GstRTPBuffer rtp = { NULL }; - - *buffer = gst_buffer_make_writable (*buffer); - if (gst_rtp_buffer_map (*buffer, GST_MAP_WRITE, &rtp)) { - gst_rtp_buffer_set_ssrc (&rtp, src->ssrc); - gst_rtp_buffer_unmap (&rtp); - } - return TRUE; + src->marked_bye = TRUE; } /** @@ -1235,69 +1143,30 @@ set_ssrc (GstBuffer ** buffer, guint idx, RTPSource * src) * Returns: a #GstFlowReturn. */ GstFlowReturn -rtp_source_send_rtp (RTPSource * src, gpointer data, gboolean is_list, - GstClockTime running_time) +rtp_source_send_rtp (RTPSource * src, RTPPacketInfo * pinfo) { GstFlowReturn result; - guint len; + GstClockTime running_time; guint32 rtptime; guint64 ext_rtptime; guint64 rt_diff, rtp_diff; - GstBufferList *list = NULL; - GstBuffer *buffer = NULL; - guint packets; - guint32 ssrc; - GstRTPBuffer rtp = { NULL }; g_return_val_if_fail (RTP_IS_SOURCE (src), GST_FLOW_ERROR); - g_return_val_if_fail (is_list || GST_IS_BUFFER (data), GST_FLOW_ERROR); - - if (is_list) { - list = GST_BUFFER_LIST_CAST (data); - - /* We can grab the caps from the first group, since all - * groups of a buffer list have same caps. */ - buffer = gst_buffer_list_get (list, 0); - if (!buffer) - goto no_buffer; - } else { - buffer = GST_BUFFER_CAST (data); - } /* we are a sender now */ src->is_sender = TRUE; - if (is_list) { - gint i; - - /* Each group makes up a network packet. */ - packets = gst_buffer_list_length (list); - for (i = 0, len = 0; i < packets; i++) { - if (!gst_rtp_buffer_map (gst_buffer_list_get (list, i), GST_MAP_READ, - &rtp)) - goto invalid_packet; - - len += gst_rtp_buffer_get_payload_len (&rtp); - gst_rtp_buffer_unmap (&rtp); - } - /* subsequent info taken from first list member */ - gst_rtp_buffer_map (gst_buffer_list_get (list, 0), GST_MAP_READ, &rtp); - } else { - packets = 1; - if (!gst_rtp_buffer_map (buffer, GST_MAP_READ, &rtp)) - goto invalid_packet; - - len = gst_rtp_buffer_get_payload_len (&rtp); - } - /* update stats for the SR */ - src->stats.packets_sent += packets; - src->stats.octets_sent += len; - src->bytes_sent += len; + src->stats.packets_sent += pinfo->packets; + src->stats.octets_sent += pinfo->payload_len; + src->bytes_sent += pinfo->payload_len; + + running_time = pinfo->running_time; do_bitrate_estimation (src, running_time, &src->bytes_sent); - rtptime = gst_rtp_buffer_get_timestamp (&rtp); + rtptime = pinfo->rtptime; + ext_rtptime = src->last_rtptime; ext_rtptime = gst_rtp_buffer_ext_timestamp (&ext_rtptime, rtptime); @@ -1321,56 +1190,21 @@ rtp_source_send_rtp (RTPSource * src, gpointer data, gboolean is_list, src->last_rtptime = ext_rtptime; /* push packet */ - if (!src->callbacks.push_rtp) { - gst_rtp_buffer_unmap (&rtp); + if (!src->callbacks.push_rtp) goto no_callback; - } - - ssrc = gst_rtp_buffer_get_ssrc (&rtp); - gst_rtp_buffer_unmap (&rtp); - if (ssrc != src->ssrc) { - /* the SSRC of the packet is not correct, make a writable buffer and - * update the SSRC. This could involve a complete copy of the packet when - * it is not writable. Usually the payloader will use caps negotiation to - * get the correct SSRC from the session manager before pushing anything. */ + GST_LOG ("pushing RTP %s %" G_GUINT64_FORMAT, + pinfo->is_list ? "list" : "packet", src->stats.packets_sent); - /* FIXME, we don't want to warn yet because we can't inform any payloader - * of the changes SSRC yet because we don't implement pad-alloc. */ - GST_LOG ("updating SSRC from %08x to %08x, fix the payloader", ssrc, - src->ssrc); - - if (is_list) { - list = gst_buffer_list_make_writable (list); - gst_buffer_list_foreach (list, (GstBufferListFunc) set_ssrc, src); - } else { - set_ssrc (&buffer, 0, src); - } - } - GST_LOG ("pushing RTP %s %" G_GUINT64_FORMAT, is_list ? "list" : "packet", - src->stats.packets_sent); - - result = src->callbacks.push_rtp (src, data, src->user_data); + result = src->callbacks.push_rtp (src, pinfo->data, src->user_data); + pinfo->data = NULL; return result; /* ERRORS */ -invalid_packet: - { - GST_WARNING ("invalid packet received"); - gst_mini_object_unref (GST_MINI_OBJECT_CAST (data)); - return GST_FLOW_OK; - } -no_buffer: - { - GST_WARNING ("no buffers in buffer list"); - gst_mini_object_unref (GST_MINI_OBJECT_CAST (data)); - return GST_FLOW_OK; - } no_callback: { GST_WARNING ("no callback installed, dropping packet"); - gst_mini_object_unref (GST_MINI_OBJECT_CAST (data)); return GST_FLOW_OK; } } @@ -1872,3 +1706,74 @@ rtp_source_has_retained (RTPSource * src, GCompareFunc func, gconstpointer data) else return FALSE; } + +/** + * @src: The #RTPSource + * @seqnum: a seqnum + * + * Register that @seqnum has not been received from @src. + */ +void +rtp_source_register_nack (RTPSource * src, guint16 seqnum) +{ + guint i, len; + guint32 dword = seqnum << 16; + gint diff = 16; + + len = src->nacks->len; + for (i = 0; i < len; i++) { + guint32 tdword; + guint16 tseq; + + tdword = g_array_index (src->nacks, guint32, i); + tseq = tdword >> 16; + + diff = gst_rtp_buffer_compare_seqnum (tseq, seqnum); + if (diff < 16) + break; + } + /* we already have this seqnum */ + if (diff == 0) + return; + /* it comes before the recorded seqnum, FIXME, we could merge it + * if not to far away */ + if (diff < 0) { + GST_DEBUG ("insert NACK #%u at %u", seqnum, i); + g_array_insert_val (src->nacks, i, dword); + } else if (diff < 16) { + /* we can merge it */ + dword = g_array_index (src->nacks, guint32, i); + dword |= 1 << (diff - 1); + GST_DEBUG ("merge NACK #%u at %u with NACK #%u -> 0x%08x", seqnum, i, + dword >> 16, dword); + g_array_index (src->nacks, guint32, i) = dword; + } else { + GST_DEBUG ("append NACK #%u", seqnum); + g_array_append_val (src->nacks, dword); + } + src->send_nack = TRUE; +} + +/** + * @src: The #RTPSource + * @n_nacks: result number of nacks + * + * Get the registered NACKS since the last rtp_source_clear_nacks(). + * + * Returns: an array of @n_nacks seqnum values. + */ +guint32 * +rtp_source_get_nacks (RTPSource * src, guint * n_nacks) +{ + if (n_nacks) + *n_nacks = src->nacks->len; + + return (guint32 *) src->nacks->data; +} + +void +rtp_source_clear_nacks (RTPSource * src) +{ + g_array_set_size (src->nacks, 0); + src->send_nack = FALSE; +} diff --git a/gst/rtpmanager/rtpsource.h b/gst/rtpmanager/rtpsource.h index 7414f94e55de20f4816d5921dbe30afd0ffb85a1..3a957bb65568eeb40c14fe610449e56431997ac6 100644 --- a/gst/rtpmanager/rtpsource.h +++ b/gst/rtpmanager/rtpsource.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __RTP_SOURCE_H__ @@ -51,7 +51,7 @@ typedef struct _RTPSourceClass RTPSourceClass; * Check if @src is active. A source is active when it has been validated * and has not yet received a BYE packet. */ -#define RTP_SOURCE_IS_ACTIVE(src) (src->validated && !src->received_bye) +#define RTP_SOURCE_IS_ACTIVE(src) (src->validated && !src->marked_bye) /** * RTP_SOURCE_IS_SENDER: @@ -60,11 +60,19 @@ typedef struct _RTPSourceClass RTPSourceClass; * Check if @src is a sender. */ #define RTP_SOURCE_IS_SENDER(src) (src->is_sender) +/** + * RTP_SOURCE_IS_MARKED_BYE: + * @src: an #RTPSource + * + * Check if @src is a marked as BYE. + */ +#define RTP_SOURCE_IS_MARKED_BYE(src) (src->marked_bye) + /** * RTPSourcePushRTP: * @src: an #RTPSource - * @buffer: the RTP buffer ready for processing + * @data: the RTP buffer or buffer list ready for processing * @user_data: user data specified when registering * * This callback will be called when @src has @buffer ready for further @@ -72,7 +80,7 @@ typedef struct _RTPSourceClass RTPSourceClass; * * Returns: a #GstFlowReturn. */ -typedef GstFlowReturn (*RTPSourcePushRTP) (RTPSource *src, GstBuffer *buffer, +typedef GstFlowReturn (*RTPSourcePushRTP) (RTPSource *src, gpointer data, gpointer user_data); /** @@ -127,6 +135,7 @@ struct _RTPSource { /*< private >*/ guint32 ssrc; + guint16 generation; guint probation; guint curr_probation; gboolean validated; @@ -137,8 +146,9 @@ struct _RTPSource { GstStructure *sdes; - gboolean received_bye; + gboolean marked_bye; gchar *bye_reason; + gboolean sent_bye; GSocketAddress *rtp_from; GSocketAddress *rtcp_from; @@ -177,6 +187,10 @@ struct _RTPSource { gboolean send_fir; guint8 current_send_fir_seqnum; gint last_fir_count; + + gboolean send_nack; + GArray *nacks; + }; struct _RTPSourceClass { @@ -199,15 +213,13 @@ gboolean rtp_source_is_active (RTPSource *src); gboolean rtp_source_is_validated (RTPSource *src); gboolean rtp_source_is_sender (RTPSource *src); -gboolean rtp_source_received_bye (RTPSource *src); +void rtp_source_mark_bye (RTPSource *src, const gchar *reason); +gboolean rtp_source_is_marked_bye (RTPSource *src); gchar * rtp_source_get_bye_reason (RTPSource *src); void rtp_source_update_caps (RTPSource *src, GstCaps *caps); /* SDES info */ -gboolean rtp_source_set_sdes_string (RTPSource *src, GstRTCPSDESType type, - const gchar *data); -gchar* rtp_source_get_sdes_string (RTPSource *src, GstRTCPSDESType type); const GstStructure * rtp_source_get_sdes_struct (RTPSource * src); gboolean rtp_source_set_sdes_struct (RTPSource * src, GstStructure *sdes); @@ -217,12 +229,11 @@ void rtp_source_set_rtp_from (RTPSource *src, GSocketAddress * void rtp_source_set_rtcp_from (RTPSource *src, GSocketAddress *address); /* handling RTP */ -GstFlowReturn rtp_source_process_rtp (RTPSource *src, GstBuffer *buffer, RTPArrivalStats *arrival); +GstFlowReturn rtp_source_process_rtp (RTPSource *src, RTPPacketInfo *pinfo); + +GstFlowReturn rtp_source_send_rtp (RTPSource *src, RTPPacketInfo *pinfo); -GstFlowReturn rtp_source_send_rtp (RTPSource *src, gpointer data, gboolean is_list, - GstClockTime running_time); /* RTCP messages */ -void rtp_source_process_bye (RTPSource *src, const gchar *reason); void rtp_source_process_sr (RTPSource *src, GstClockTime time, guint64 ntptime, guint32 rtptime, guint32 packet_count, guint32 octet_count); void rtp_source_process_rb (RTPSource *src, guint64 ntpnstime, guint8 fractionlost, @@ -261,10 +272,13 @@ void rtp_source_timeout (RTPSource * src, void rtp_source_retain_rtcp_packet (RTPSource * src, GstRTCPPacket *pkt, GstClockTime running_time); - gboolean rtp_source_has_retained (RTPSource * src, GCompareFunc func, gconstpointer data); +void rtp_source_register_nack (RTPSource * src, + guint16 seqnum); +guint32 * rtp_source_get_nacks (RTPSource * src, guint *n_nacks); +void rtp_source_clear_nacks (RTPSource * src); #endif /* __RTP_SOURCE_H__ */ diff --git a/gst/rtpmanager/rtpstats.c b/gst/rtpmanager/rtpstats.c index 734f4c046e5425070374d667d9211a110effb59a..a73e1c6b5dbce8777c82d2a3b1adaf66fb916268 100644 --- a/gst/rtpmanager/rtpstats.c +++ b/gst/rtpmanager/rtpstats.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include "rtpstats.h" diff --git a/gst/rtpmanager/rtpstats.h b/gst/rtpmanager/rtpstats.h index 147ab1ec755b8d084e6798121873ade65bd5f4cc..cb9e06c7ce32c1a910af398d3387c5832cd5e5a2 100644 --- a/gst/rtpmanager/rtpstats.h +++ b/gst/rtpmanager/rtpstats.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __RTP_STATS_H__ @@ -56,24 +56,44 @@ typedef struct { } RTPReceiverReport; /** - * RTPArrivalStats: + * RTPPacketInfo: + * @send: if this is a packet for sending + * @rtp: if this info is about an RTP packet + * @is_list: if this is a bufferlist + * @data: a #GstBuffer or #GstBufferList * @address: address of the sender of the packet * @current_time: current time according to the system clock - * @running_time: arrival time of a packet as buffer running_time - * @ntpnstime: arrival time of a packet NTP time in nanoseconds + * @running_time: time of a packet as buffer running_time + * @ntpnstime: time of a packet NTP time in nanoseconds + * @header_len: number of overhead bytes per packet * @bytes: bytes of the packet including lowlevel overhead * @payload_len: bytes of the RTP payload + * @seqnum: the seqnum of the packet + * @pt: the payload type of the packet + * @rtptime: the RTP time of the packet * - * Structure holding information about the arrival stats of a packet. + * Structure holding information about the packet. */ typedef struct { + gboolean send; + gboolean rtp; + gboolean is_list; + gpointer data; GSocketAddress *address; GstClockTime current_time; GstClockTime running_time; guint64 ntpnstime; + guint header_len; guint bytes; + guint packets; guint payload_len; -} RTPArrivalStats; + guint32 ssrc; + guint16 seqnum; + guint8 pt; + guint32 rtptime; + guint32 csrc_count; + guint32 csrcs[16]; +} RTPPacketInfo; /** * RTPSourceStats: @@ -179,7 +199,9 @@ typedef struct { gdouble receiver_fraction; gdouble min_interval; GstClockTime bye_timeout; + guint internal_sources; guint sender_sources; + guint internal_sender_sources; guint active_sources; guint avg_rtcp_packet_size; guint bye_members; diff --git a/gst/rtsp/Makefile.am b/gst/rtsp/Makefile.am index 9cc3cdf0fba6fda68811dfa01b326b6e2cb0c078..1f0213b37e818fd29dfa2ed0e3012e00a0eaf536 100644 --- a/gst/rtsp/Makefile.am +++ b/gst/rtsp/Makefile.am @@ -4,9 +4,9 @@ libgstrtsp_la_SOURCES = gstrtsp.c gstrtspsrc.c \ gstrtpdec.c gstrtspext.c libgstrtsp_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) -libgstrtsp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) \ +libgstrtsp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) $(GST_BASE_LIBS) \ -lgstrtp-@GST_API_VERSION@ -lgstrtsp-@GST_API_VERSION@ \ - -lgstsdp-@GST_API_VERSION@ $(GST_LIBS) + -lgstsdp-@GST_API_VERSION@ -lgstnet-@GST_API_VERSION@ $(GST_LIBS) libgstrtsp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstrtsp_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) diff --git a/gst/rtsp/Makefile.in b/gst/rtsp/Makefile.in index 9ab7035e7ec7b1345e3715c1edb7edfc8890d903..47a5ea96bcfac5f7bfa65f13304d77f8eb1cc8e1 100644 --- a/gst/rtsp/Makefile.in +++ b/gst/rtsp/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/rtsp -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -129,7 +155,8 @@ am__installdirs = "$(DESTDIR)$(plugindir)" LTLIBRARIES = $(plugin_LTLIBRARIES) am__DEPENDENCIES_1 = libgstrtsp_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) am_libgstrtsp_la_OBJECTS = libgstrtsp_la-gstrtsp.lo \ libgstrtsp_la-gstrtspsrc.lo libgstrtsp_la-gstrtpdec.lo \ libgstrtsp_la-gstrtspext.lo @@ -137,10 +164,23 @@ libgstrtsp_la_OBJECTS = $(am_libgstrtsp_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstrtsp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstrtsp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstrtsp_la_CFLAGS) $(CFLAGS) \ $(libgstrtsp_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +193,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstrtsp_la_SOURCES) DIST_SOURCES = $(libgstrtsp_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +211,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +395,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -507,9 +561,9 @@ libgstrtsp_la_SOURCES = gstrtsp.c gstrtspsrc.c \ gstrtpdec.c gstrtspext.c libgstrtsp_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) -libgstrtsp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) \ +libgstrtsp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) $(GST_BASE_LIBS) \ -lgstrtp-@GST_API_VERSION@ -lgstrtsp-@GST_API_VERSION@ \ - -lgstsdp-@GST_API_VERSION@ $(GST_LIBS) + -lgstsdp-@GST_API_VERSION@ -lgstnet-@GST_API_VERSION@ $(GST_LIBS) libgstrtsp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstrtsp_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) @@ -552,6 +606,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -578,12 +633,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstrtsp.la: $(libgstrtsp_la_OBJECTS) $(libgstrtsp_la_DEPENDENCIES) $(EXTRA_libgstrtsp_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstrtsp_la_LINK) -rpath $(plugindir) $(libgstrtsp_la_OBJECTS) $(libgstrtsp_la_LIBADD) $(LIBS) @@ -599,22 +657,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtsp_la-gstrtspsrc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -653,26 +714,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -684,15 +734,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -701,6 +747,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -845,19 +906,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/rtsp/gstrtpdec.c b/gst/rtsp/gstrtpdec.c index a639b8c70392e33487704177987a0b3ea8ed3fa4..f12004803f70da7009d25e89ed2ae968739f756d 100644 --- a/gst/rtsp/gstrtpdec.c +++ b/gst/rtsp/gstrtpdec.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. @@ -198,76 +198,6 @@ static guint gst_rtp_dec_signals[LAST_SIGNAL] = { 0 }; #define gst_rtp_dec_parent_class parent_class G_DEFINE_TYPE (GstRTPDec, gst_rtp_dec, GST_TYPE_ELEMENT); - -/* BOXED:UINT,UINT */ -#define g_marshal_value_peek_uint(v) g_value_get_uint (v) - -static void -gst_rtp_dec_marshal_BOXED__UINT_UINT (GClosure * closure, - GValue * return_value, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint, gpointer marshal_data) -{ - typedef gpointer (*GMarshalFunc_BOXED__UINT_UINT) (gpointer data1, - guint arg_1, guint arg_2, gpointer data2); - register GMarshalFunc_BOXED__UINT_UINT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - gpointer v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_BOXED__UINT_UINT) (marshal_data ? marshal_data : - cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_uint (param_values + 1), - g_marshal_value_peek_uint (param_values + 2), data2); - - g_value_take_boxed (return_value, v_return); -} - -static void -gst_rtp_dec_marshal_VOID__UINT_UINT (GClosure * closure, - GValue * return_value, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint, gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__UINT_UINT) (gpointer data1, - guint arg_1, guint arg_2, gpointer data2); - register GMarshalFunc_VOID__UINT_UINT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_VOID__UINT_UINT) (marshal_data ? marshal_data : - cc->callback); - - callback (data1, - g_marshal_value_peek_uint (param_values + 1), - g_marshal_value_peek_uint (param_values + 2), data2); -} - static void gst_rtp_dec_class_init (GstRTPDecClass * g_class) { @@ -301,8 +231,8 @@ gst_rtp_dec_class_init (GstRTPDecClass * g_class) gst_rtp_dec_signals[SIGNAL_REQUEST_PT_MAP] = g_signal_new ("request-pt-map", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRTPDecClass, request_pt_map), - NULL, NULL, gst_rtp_dec_marshal_BOXED__UINT_UINT, GST_TYPE_CAPS, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, GST_TYPE_CAPS, 2, G_TYPE_UINT, + G_TYPE_UINT); gst_rtp_dec_signals[SIGNAL_CLEAR_PT_MAP] = g_signal_new ("clear-pt-map", G_TYPE_FROM_CLASS (klass), @@ -320,8 +250,8 @@ gst_rtp_dec_class_init (GstRTPDecClass * g_class) gst_rtp_dec_signals[SIGNAL_ON_NEW_SSRC] = g_signal_new ("on-new-ssrc", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRTPDecClass, on_new_ssrc), - NULL, NULL, gst_rtp_dec_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRTPDec::on-ssrc_collision: * @rtpbin: the object which received the signal @@ -333,8 +263,8 @@ gst_rtp_dec_class_init (GstRTPDecClass * g_class) gst_rtp_dec_signals[SIGNAL_ON_SSRC_COLLISION] = g_signal_new ("on-ssrc-collision", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRTPDecClass, on_ssrc_collision), - NULL, NULL, gst_rtp_dec_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRTPDec::on-ssrc_validated: * @rtpbin: the object which received the signal @@ -346,8 +276,8 @@ gst_rtp_dec_class_init (GstRTPDecClass * g_class) gst_rtp_dec_signals[SIGNAL_ON_SSRC_VALIDATED] = g_signal_new ("on-ssrc-validated", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRTPDecClass, on_ssrc_validated), - NULL, NULL, gst_rtp_dec_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRTPDec::on-bye-ssrc: @@ -360,8 +290,8 @@ gst_rtp_dec_class_init (GstRTPDecClass * g_class) gst_rtp_dec_signals[SIGNAL_ON_BYE_SSRC] = g_signal_new ("on-bye-ssrc", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRTPDecClass, on_bye_ssrc), - NULL, NULL, gst_rtp_dec_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRTPDec::on-bye-timeout: * @rtpbin: the object which received the signal @@ -373,8 +303,8 @@ gst_rtp_dec_class_init (GstRTPDecClass * g_class) gst_rtp_dec_signals[SIGNAL_ON_BYE_TIMEOUT] = g_signal_new ("on-bye-timeout", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRTPDecClass, on_bye_timeout), - NULL, NULL, gst_rtp_dec_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); /** * GstRTPDec::on-timeout: * @rtpbin: the object which received the signal @@ -386,8 +316,8 @@ gst_rtp_dec_class_init (GstRTPDecClass * g_class) gst_rtp_dec_signals[SIGNAL_ON_TIMEOUT] = g_signal_new ("on-timeout", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRTPDecClass, on_timeout), - NULL, NULL, gst_rtp_dec_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_UINT, + G_TYPE_UINT); gstelement_class->provide_clock = GST_DEBUG_FUNCPTR (gst_rtp_dec_provide_clock); diff --git a/gst/rtsp/gstrtpdec.h b/gst/rtsp/gstrtpdec.h index 08128f48232d2685f234ec00df7c19a511df2349..5e83e2365aae32c46abc32f4be60f3a27524528e 100644 --- a/gst/rtsp/gstrtpdec.h +++ b/gst/rtsp/gstrtpdec.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/rtsp/gstrtsp.c b/gst/rtsp/gstrtsp.c index e0f24de82f28af631f65c033cea02390f889cb3b..66e2c3f6d485a5aa44ff37d92c603ed99c154a27 100644 --- a/gst/rtsp/gstrtsp.c +++ b/gst/rtsp/gstrtsp.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. @@ -54,7 +54,6 @@ static gboolean plugin_init (GstPlugin * plugin) { #ifdef ENABLE_NLS - setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif /* ENABLE_NLS */ diff --git a/gst/rtsp/gstrtsp.h b/gst/rtsp/gstrtsp.h index f29c35994ac9593f72897b678bbcac572cdc9a2f..e0f5ef8e0218e5ab1a00b97a328454ba6dbc4ea6 100644 --- a/gst/rtsp/gstrtsp.h +++ b/gst/rtsp/gstrtsp.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/rtsp/gstrtspext.c b/gst/rtsp/gstrtspext.c index b4cc8f9714fd1b1195dd7aebfe4266a2e5a26f5d..07b5a97d71586bf1d402cb45deb7b01679afdf65 100644 --- a/gst/rtsp/gstrtspext.c +++ b/gst/rtsp/gstrtspext.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/rtsp/gstrtspext.h b/gst/rtsp/gstrtspext.h index f30b302ff48ee9b5265eb77fc881b2341fb3620a..2e877968eb1dd324c44570b93fb600a927406433 100644 --- a/gst/rtsp/gstrtspext.h +++ b/gst/rtsp/gstrtspext.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index 98577b86aa8957a03164db6d84a4107e19ce1694..2be6543c5aea0348220148fa66635bd7154c8a32 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. @@ -89,6 +89,7 @@ #include <stdio.h> #include <stdarg.h> +#include <gst/net/gstnet.h> #include <gst/sdp/gstsdpmessage.h> #include <gst/rtp/gstrtppayloads.h> @@ -119,7 +120,9 @@ GST_STATIC_PAD_TEMPLATE ("internalsink_%u", enum { - /* FILL ME */ + SIGNAL_HANDLE_REQUEST, + SIGNAL_ON_SDP, + SIGNAL_SELECT_STREAM, LAST_SIGNAL }; @@ -179,6 +182,10 @@ gst_rtsp_src_buffer_mode_get_type (void) #define DEFAULT_PORT_RANGE NULL #define DEFAULT_SHORT_HEADER FALSE #define DEFAULT_PROBATION 2 +#define DEFAULT_UDP_RECONNECT TRUE +#define DEFAULT_MULTICAST_IFACE NULL +#define DEFAULT_NTP_SYNC FALSE +#define DEFAULT_USE_PIPELINE_CLOCK FALSE enum { @@ -196,6 +203,8 @@ enum PROP_DO_RTCP, PROP_DO_RTSP_KEEP_ALIVE, PROP_PROXY, + PROP_PROXY_ID, + PROP_PROXY_PW, PROP_RTP_BLOCKSIZE, PROP_USER_ID, PROP_USER_PW, @@ -204,6 +213,11 @@ enum PROP_UDP_BUFFER_SIZE, PROP_SHORT_HEADER, PROP_PROBATION, + PROP_UDP_RECONNECT, + PROP_MULTICAST_IFACE, + PROP_NTP_SYNC, + PROP_USE_PIPELINE_CLOCK, + PROP_SDES, PROP_LAST }; @@ -232,6 +246,8 @@ static void gst_rtspsrc_set_property (GObject * object, guint prop_id, static void gst_rtspsrc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); +static GstClock *gst_rtspsrc_provide_clock (GstElement * element); + static void gst_rtspsrc_uri_handler_init (gpointer g_iface, gpointer iface_data); @@ -251,7 +267,8 @@ static void gst_rtspsrc_handle_message (GstBin * bin, GstMessage * message); static gboolean gst_rtspsrc_setup_auth (GstRTSPSrc * src, GstRTSPMessage * response); -static void gst_rtspsrc_loop_send_cmd (GstRTSPSrc * src, gint cmd, gint mask); +static gboolean gst_rtspsrc_loop_send_cmd (GstRTSPSrc * src, gint cmd, + gint mask); static GstRTSPResult gst_rtspsrc_send_cb (GstRTSPExtension * ext, GstRTSPMessage * request, GstRTSPMessage * response, GstRTSPSrc * src); @@ -293,11 +310,33 @@ G_STMT_START { \ g_free (__txt); \ } G_STMT_END -/*static guint gst_rtspsrc_signals[LAST_SIGNAL] = { 0 }; */ +static guint gst_rtspsrc_signals[LAST_SIGNAL] = { 0 }; + #define gst_rtspsrc_parent_class parent_class G_DEFINE_TYPE_WITH_CODE (GstRTSPSrc, gst_rtspsrc, GST_TYPE_BIN, G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, gst_rtspsrc_uri_handler_init)); +static gboolean +default_select_stream (GstRTSPSrc * src, guint id, GstCaps * caps) +{ + GST_DEBUG_OBJECT (src, "default handler"); + return TRUE; +} + +static gboolean +select_stream_accum (GSignalInvocationHint * ihint, + GValue * return_accu, const GValue * handler_return, gpointer data) +{ + gboolean myboolean; + + myboolean = g_value_get_boolean (handler_return); + GST_DEBUG ("accum %d", myboolean); + g_value_set_boolean (return_accu, myboolean); + + /* stop emission if FALSE */ + return myboolean; +} + static void gst_rtspsrc_class_init (GstRTSPSrcClass * klass) { @@ -411,6 +450,30 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass) g_param_spec_string ("proxy", "Proxy", "Proxy settings for HTTP tunneling. Format: [http://][user:passwd@]host[:port]", DEFAULT_PROXY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * GstRTSPSrc::proxy-id + * + * Sets the proxy URI user id for authentication. If the URI set via the + * "proxy" property contains a user-id already, that will take precedence. + * + * Since: 1.2 + */ + g_object_class_install_property (gobject_class, PROP_PROXY_ID, + g_param_spec_string ("proxy-id", "proxy-id", + "HTTP proxy URI user id for authentication", "", + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * GstRTSPSrc::proxy-pw + * + * Sets the proxy URI password for authentication. If the URI set via the + * "proxy" property contains a password already, that will take precedence. + * + * Since: 1.2 + */ + g_object_class_install_property (gobject_class, PROP_PROXY_PW, + g_param_spec_string ("proxy-pw", "proxy-pw", + "HTTP proxy URI user password for authentication", "", + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GstRTSPSrc::rtp_blocksize @@ -493,7 +556,97 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass) 0, G_MAXUINT, DEFAULT_PROBATION, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_UDP_RECONNECT, + g_param_spec_boolean ("udp-reconnect", "Reconnect to the server", + "Reconnect to the server if RTSP connection is closed when doing UDP", + DEFAULT_UDP_RECONNECT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_MULTICAST_IFACE, + g_param_spec_string ("multicast-iface", "Multicast Interface", + "The network interface on which to join the multicast group", + DEFAULT_MULTICAST_IFACE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_NTP_SYNC, + g_param_spec_boolean ("ntp-sync", "Sync on NTP clock", + "Synchronize received streams to the NTP clock", DEFAULT_NTP_SYNC, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_USE_PIPELINE_CLOCK, + g_param_spec_boolean ("use-pipeline-clock", "Use pipeline clock", + "Use the pipeline running-time to set the NTP time in the RTCP SR messages", + DEFAULT_USE_PIPELINE_CLOCK, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, PROP_SDES, + g_param_spec_boxed ("sdes", "SDES", + "The SDES items of this session", + GST_TYPE_STRUCTURE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + /** + * GstRTSPSrc::handle-request: + * @rtspsrc: a #GstRTSPSrc + * @request: a #GstRTSPMessage + * @response: a #GstRTSPMessage + * + * Handle a server request in @request and prepare @response. + * + * This signal is called from the streaming thread, you should therefore not + * do any state changes on @rtspsrc because this might deadlock. If you want + * to modify the state as a result of this signal, post a + * #GST_MESSAGE_REQUEST_STATE message on the bus or signal the main thread + * in some other way. + * + * Since: 1.2 + */ + gst_rtspsrc_signals[SIGNAL_HANDLE_REQUEST] = + g_signal_new ("handle-request", G_TYPE_FROM_CLASS (klass), 0, + 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, + G_TYPE_POINTER, G_TYPE_POINTER); + + /** + * GstRTSPSrc::on-sdp: + * @rtspsrc: a #GstRTSPSrc + * @sdp: a #GstSDPMessage + * + * Emited when the client has retrieved the SDP and before it configures the + * streams in the SDP. @sdp can be inspected and modified. + * + * This signal is called from the streaming thread, you should therefore not + * do any state changes on @rtspsrc because this might deadlock. If you want + * to modify the state as a result of this signal, post a + * #GST_MESSAGE_REQUEST_STATE message on the bus or signal the main thread + * in some other way. + * + * Since: 1.2 + */ + gst_rtspsrc_signals[SIGNAL_ON_SDP] = + g_signal_new ("on-sdp", G_TYPE_FROM_CLASS (klass), 0, + 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, + GST_TYPE_SDP_MESSAGE | G_SIGNAL_TYPE_STATIC_SCOPE); + + /** + * GstRTSPSrc::select-stream: + * @rtspsrc: a #GstRTSPSrc + * @num: the stream number + * @caps: the stream caps + * + * Emited before the client decides to configure the stream @num with + * @caps. + * + * Returns: %TRUE when the stream should be selected, %FALSE when the stream + * is to be ignored. + * + * Since: 1.2 + */ + gst_rtspsrc_signals[SIGNAL_SELECT_STREAM] = + g_signal_new_class_handler ("select-stream", G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_FIRST | G_SIGNAL_RUN_CLEANUP, + (GCallback) default_select_stream, select_stream_accum, NULL, + g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 2, G_TYPE_UINT, + GST_TYPE_CAPS); + gstelement_class->send_event = gst_rtspsrc_send_event; + gstelement_class->provide_clock = gst_rtspsrc_provide_clock; gstelement_class->change_state = gst_rtspsrc_change_state; gst_element_class_add_pad_template (gstelement_class, @@ -511,7 +664,6 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass) gst_rtsp_ext_list_init (); } - static void gst_rtspsrc_init (GstRTSPSrc * src) { @@ -537,6 +689,11 @@ gst_rtspsrc_init (GstRTSPSrc * src) src->udp_buffer_size = DEFAULT_UDP_BUFFER_SIZE; src->short_header = DEFAULT_SHORT_HEADER; src->probation = DEFAULT_PROBATION; + src->udp_reconnect = DEFAULT_UDP_RECONNECT; + src->multi_iface = g_strdup (DEFAULT_MULTICAST_IFACE); + src->ntp_sync = DEFAULT_NTP_SYNC; + src->use_pipeline_clock = DEFAULT_USE_PIPELINE_CLOCK; + src->sdes = NULL; /* get a list of all extensions */ src->extensions = gst_rtsp_ext_list_get (); @@ -570,11 +727,17 @@ gst_rtspsrc_finalize (GObject * object) g_free (rtspsrc->conninfo.url_str); g_free (rtspsrc->user_id); g_free (rtspsrc->user_pw); + g_free (rtspsrc->multi_iface); if (rtspsrc->sdp) { gst_sdp_message_free (rtspsrc->sdp); rtspsrc->sdp = NULL; } + if (rtspsrc->provided_clock) + gst_object_unref (rtspsrc->provided_clock); + + if (rtspsrc->sdes) + gst_structure_free (rtspsrc->sdes); /* free locks */ g_rec_mutex_clear (&rtspsrc->stream_rec_lock); @@ -583,6 +746,18 @@ gst_rtspsrc_finalize (GObject * object) G_OBJECT_CLASS (parent_class)->finalize (object); } +static GstClock * +gst_rtspsrc_provide_clock (GstElement * element) +{ + GstRTSPSrc *src = GST_RTSPSRC (element); + GstClock *clock; + + if ((clock = src->provided_clock) != NULL) + gst_object_ref (clock); + + return clock; +} + /* a proxy string of the format [user:passwd@]host[:port] */ static gboolean gst_rtspsrc_set_proxy (GstRTSPSrc * rtsp, const gchar * proxy) @@ -619,6 +794,15 @@ gst_rtspsrc_set_proxy (GstRTSPSrc * rtsp, const gchar * proxy) /* move to host */ p = at + 1; + } else { + if (rtsp->prop_proxy_id != NULL && *rtsp->prop_proxy_id != '\0') + rtsp->proxy_user = g_strdup (rtsp->prop_proxy_id); + if (rtsp->prop_proxy_pw != NULL && *rtsp->prop_proxy_pw != '\0') + rtsp->proxy_passwd = g_strdup (rtsp->prop_proxy_pw); + if (rtsp->proxy_user != NULL || rtsp->proxy_passwd != NULL) { + GST_LOG_OBJECT (rtsp, "set proxy user/pw from properties: %s:%s", + GST_STR_NULL (rtsp->proxy_user), GST_STR_NULL (rtsp->proxy_passwd)); + } } col = strchr (p, ':'); @@ -695,6 +879,16 @@ gst_rtspsrc_set_property (GObject * object, guint prop_id, const GValue * value, case PROP_PROXY: gst_rtspsrc_set_proxy (rtspsrc, g_value_get_string (value)); break; + case PROP_PROXY_ID: + if (rtspsrc->prop_proxy_id) + g_free (rtspsrc->prop_proxy_id); + rtspsrc->prop_proxy_id = g_value_dup_string (value); + break; + case PROP_PROXY_PW: + if (rtspsrc->prop_proxy_pw) + g_free (rtspsrc->prop_proxy_pw); + rtspsrc->prop_proxy_pw = g_value_dup_string (value); + break; case PROP_RTP_BLOCKSIZE: rtspsrc->rtp_blocksize = g_value_get_uint (value); break; @@ -734,6 +928,26 @@ gst_rtspsrc_set_property (GObject * object, guint prop_id, const GValue * value, case PROP_PROBATION: rtspsrc->probation = g_value_get_uint (value); break; + case PROP_UDP_RECONNECT: + rtspsrc->udp_reconnect = g_value_get_boolean (value); + break; + case PROP_MULTICAST_IFACE: + g_free (rtspsrc->multi_iface); + + if (g_value_get_string (value) == NULL) + rtspsrc->multi_iface = g_strdup (DEFAULT_MULTICAST_IFACE); + else + rtspsrc->multi_iface = g_value_dup_string (value); + break; + case PROP_NTP_SYNC: + rtspsrc->ntp_sync = g_value_get_boolean (value); + break; + case PROP_USE_PIPELINE_CLOCK: + rtspsrc->use_pipeline_clock = g_value_get_boolean (value); + break; + case PROP_SDES: + rtspsrc->sdes = g_value_dup_boxed (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -804,6 +1018,12 @@ gst_rtspsrc_get_property (GObject * object, guint prop_id, GValue * value, g_value_take_string (value, str); break; } + case PROP_PROXY_ID: + g_value_set_string (value, rtspsrc->prop_proxy_id); + break; + case PROP_PROXY_PW: + g_value_set_string (value, rtspsrc->prop_proxy_pw); + break; case PROP_RTP_BLOCKSIZE: g_value_set_uint (value, rtspsrc->rtp_blocksize); break; @@ -838,6 +1058,21 @@ gst_rtspsrc_get_property (GObject * object, guint prop_id, GValue * value, case PROP_PROBATION: g_value_set_uint (value, rtspsrc->probation); break; + case PROP_UDP_RECONNECT: + g_value_set_boolean (value, rtspsrc->udp_reconnect); + break; + case PROP_MULTICAST_IFACE: + g_value_set_string (value, rtspsrc->multi_iface); + break; + case PROP_NTP_SYNC: + g_value_set_boolean (value, rtspsrc->ntp_sync); + break; + case PROP_USE_PIPELINE_CLOCK: + g_value_set_boolean (value, rtspsrc->use_pipeline_clock); + break; + case PROP_SDES: + g_value_set_boxed (value, rtspsrc->sdes); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1240,6 +1475,10 @@ gst_rtspsrc_cleanup (GstRTSPSrc * src) gst_event_unref (src->start_segment); src->start_segment = NULL; } + if (src->provided_clock) { + gst_object_unref (src->provided_clock); + src->provided_clock = NULL; + } } #define PARSE_INT(p, del, res) \ @@ -1652,6 +1891,8 @@ again: * server told us to really use the UDP ports. */ stream->udpsrc[0] = gst_object_ref_sink (udpsrc0); stream->udpsrc[1] = gst_object_ref_sink (udpsrc1); + gst_element_set_locked_state (stream->udpsrc[0], TRUE); + gst_element_set_locked_state (stream->udpsrc[1], TRUE); /* keep track of next available port number when we have a range * configured */ @@ -1697,13 +1938,31 @@ cleanup: } } +static void +gst_rtspsrc_set_state (GstRTSPSrc * src, GstState state) +{ + GList *walk; + + if (src->manager) + gst_element_set_state (GST_ELEMENT_CAST (src->manager), state); + + for (walk = src->streams; walk; walk = g_list_next (walk)) { + GstRTSPStream *stream = (GstRTSPStream *) walk->data; + gint i; + + for (i = 0; i < 2; i++) { + if (stream->udpsrc[i]) + gst_element_set_state (stream->udpsrc[i], state); + } + } +} + static void gst_rtspsrc_flush (GstRTSPSrc * src, gboolean flush, gboolean playing) { GstEvent *event; - gint cmd, i; + gint cmd; GstState state; - GList *walk; if (flush) { event = gst_event_new_flush_start (); @@ -1721,22 +1980,7 @@ gst_rtspsrc_flush (GstRTSPSrc * src, gboolean flush, gboolean playing) } gst_rtspsrc_push_event (src, event); gst_rtspsrc_loop_send_cmd (src, cmd, CMD_LOOP); - - /* to manage jitterbuffer buffer mode */ - if (src->manager) - gst_element_set_state (GST_ELEMENT_CAST (src->manager), state); - - /* make running time start start at 0 again */ - for (walk = src->streams; walk; walk = g_list_next (walk)) { - GstRTSPStream *stream = (GstRTSPStream *) walk->data; - - for (i = 0; i < 2; i++) { - /* for udp case */ - if (stream->udpsrc[i]) { - gst_element_set_state (stream->udpsrc[i], state); - } - } - } + gst_rtspsrc_set_state (src, state); } static GstRTSPResult @@ -2404,9 +2648,8 @@ gst_rtspsrc_stream_configure_manager (GstRTSPSrc * src, GstRTSPStream * stream, /* configure the manager */ if (src->manager == NULL) { GObjectClass *klass; - GstState target; - if (!(src->manager = gst_element_factory_make (manager, NULL))) { + if (!(src->manager = gst_element_factory_make (manager, "manager"))) { /* fallback */ if (gst_rtsp_transport_get_manager (transport->trans, &manager, 1) < 0) goto no_manager; @@ -2414,24 +2657,35 @@ gst_rtspsrc_stream_configure_manager (GstRTSPSrc * src, GstRTSPStream * stream, if (!manager) goto use_no_manager; - if (!(src->manager = gst_element_factory_make (manager, NULL))) + if (!(src->manager = gst_element_factory_make (manager, "manager"))) goto manager_failed; } /* we manage this element */ + gst_element_set_locked_state (src->manager, TRUE); gst_bin_add (GST_BIN_CAST (src), src->manager); - GST_OBJECT_LOCK (src); - target = GST_STATE_TARGET (src); - GST_OBJECT_UNLOCK (src); - - ret = gst_element_set_state (src->manager, target); + ret = gst_element_set_state (src->manager, GST_STATE_PAUSED); if (ret == GST_STATE_CHANGE_FAILURE) goto start_manager_failure; g_object_set (src->manager, "latency", src->latency, NULL); klass = G_OBJECT_GET_CLASS (G_OBJECT (src->manager)); + + if (g_object_class_find_property (klass, "ntp-sync")) { + g_object_set (src->manager, "ntp-sync", src->ntp_sync, NULL); + } + + if (g_object_class_find_property (klass, "use-pipeline-clock")) { + g_object_set (src->manager, "use-pipeline-clock", + src->use_pipeline_clock, NULL); + } + + if (src->sdes && g_object_class_find_property (klass, "sdes")) { + g_object_set (src->manager, "sdes", src->sdes, NULL); + } + if (g_object_class_find_property (klass, "drop-on-latency")) { g_object_set (src->manager, "drop-on-latency", src->drop_on_latency, NULL); @@ -2759,12 +3013,19 @@ gst_rtspsrc_stream_configure_mcast (GstRTSPSrc * src, GstRTSPStream * stream, g_object_set (G_OBJECT (stream->udpsrc[0]), "buffer-size", src->udp_buffer_size, NULL); + if (src->multi_iface != NULL) + g_object_set (G_OBJECT (stream->udpsrc[0]), "multicast-iface", + src->multi_iface, NULL); + /* change state */ + gst_element_set_locked_state (stream->udpsrc[0], TRUE); gst_element_set_state (stream->udpsrc[0], GST_STATE_PAUSED); } /* creating another UDP source for RTCP */ if (max != -1) { + GstCaps *caps; + uri = g_strdup_printf ("udp://%s:%d", destination, max); stream->udpsrc[1] = gst_element_make_from_uri (GST_URI_SRC, uri, NULL, NULL); @@ -2772,9 +3033,17 @@ gst_rtspsrc_stream_configure_mcast (GstRTSPSrc * src, GstRTSPStream * stream, if (stream->udpsrc[1] == NULL) goto no_element; + caps = gst_caps_new_empty_simple ("application/x-rtcp"); + g_object_set (stream->udpsrc[1], "caps", caps, NULL); + gst_caps_unref (caps); + /* take ownership */ gst_object_ref_sink (stream->udpsrc[1]); + if (src->multi_iface != NULL) + g_object_set (G_OBJECT (stream->udpsrc[0]), "multicast-iface", + src->multi_iface, NULL); + gst_element_set_state (stream->udpsrc[1], GST_STATE_PAUSED); } return TRUE; @@ -2805,6 +3074,7 @@ gst_rtspsrc_stream_configure_udp (GstRTSPSrc * src, GstRTSPStream * stream, /* we manage the UDP elements now. For unicast, the UDP sources where * allocated in the stream when we suggested a transport. */ if (stream->udpsrc[0]) { + gst_element_set_locked_state (stream->udpsrc[0], TRUE); gst_bin_add (GST_BIN_CAST (src), stream->udpsrc[0]); GST_DEBUG_OBJECT (src, "setting up UDP source"); @@ -2812,8 +3082,8 @@ gst_rtspsrc_stream_configure_udp (GstRTSPSrc * src, GstRTSPStream * stream, /* configure a timeout on the UDP port. When the timeout message is * posted, we assume UDP transport is not possible. We reconnect using TCP * if we can. */ - g_object_set (G_OBJECT (stream->udpsrc[0]), "timeout", src->udp_timeout, - NULL); + g_object_set (G_OBJECT (stream->udpsrc[0]), "timeout", + src->udp_timeout * 1000, NULL); /* get output pad of the UDP source. */ *outpad = gst_element_get_static_pad (stream->udpsrc[0], "src"); @@ -2843,8 +3113,15 @@ gst_rtspsrc_stream_configure_udp (GstRTSPSrc * src, GstRTSPStream * stream, /* RTCP port */ if (stream->udpsrc[1]) { + GstCaps *caps; + + gst_element_set_locked_state (stream->udpsrc[1], TRUE); gst_bin_add (GST_BIN_CAST (src), stream->udpsrc[1]); + caps = gst_caps_new_empty_simple ("application/x-rtcp"); + g_object_set (stream->udpsrc[1], "caps", caps, NULL); + gst_caps_unref (caps); + if (stream->channelpad[1]) { GstPad *pad; @@ -3439,15 +3716,18 @@ gst_rtspsrc_connection_flush (GstRTSPSrc * src, gboolean flush) GST_DEBUG_OBJECT (src, "set flushing %d", flush); GST_RTSP_STATE_LOCK (src); - if (src->conninfo.connection) { + if (src->conninfo.connection && src->conninfo.flushing != flush) { GST_DEBUG_OBJECT (src, "connection flush"); gst_rtsp_connection_flush (src->conninfo.connection, flush); + src->conninfo.flushing = flush; } for (walk = src->streams; walk; walk = g_list_next (walk)) { GstRTSPStream *stream = (GstRTSPStream *) walk->data; - GST_DEBUG_OBJECT (src, "stream %p flush", stream); - if (stream->conninfo.connection) + if (stream->conninfo.connection && stream->conninfo.flushing != flush) { + GST_DEBUG_OBJECT (src, "stream %p flush", stream); gst_rtsp_connection_flush (stream->conninfo.connection, flush); + stream->conninfo.flushing = flush; + } } GST_RTSP_STATE_UNLOCK (src); } @@ -3469,13 +3749,16 @@ gst_rtspsrc_handle_request (GstRTSPSrc * src, GstRTSPConnection * conn, if (res == GST_RTSP_ENOTIMPL) { /* default implementation, send OK */ + GST_DEBUG_OBJECT (src, "prepare OK reply"); res = gst_rtsp_message_init_response (&response, GST_RTSP_STS_OK, "OK", request); if (res < 0) goto send_error; - GST_DEBUG_OBJECT (src, "replying with OK"); + /* let app parse and reply */ + g_signal_emit (src, gst_rtspsrc_signals[SIGNAL_HANDLE_REQUEST], + 0, request, &response); if (src->debug) gst_rtsp_message_dump (&response); @@ -3566,98 +3849,19 @@ send_error: } static GstFlowReturn -gst_rtspsrc_loop_interleaved (GstRTSPSrc * src) +gst_rtspsrc_handle_data (GstRTSPSrc * src, GstRTSPMessage * message) { - GstRTSPMessage message = { 0 }; - GstRTSPResult res; + GstFlowReturn ret = GST_FLOW_OK; gint channel; GstRTSPStream *stream; GstPad *outpad = NULL; guint8 *data; guint size; - GstFlowReturn ret = GST_FLOW_OK; GstBuffer *buf; - gboolean is_rtcp, have_data; + gboolean is_rtcp; GstEvent *event; - /* here we are only interested in data messages */ - have_data = FALSE; - do { - GTimeVal tv_timeout; - - /* get the next timeout interval */ - gst_rtsp_connection_next_timeout (src->conninfo.connection, &tv_timeout); - - /* see if the timeout period expired */ - if ((tv_timeout.tv_sec | tv_timeout.tv_usec) == 0) { - GST_DEBUG_OBJECT (src, "timout, sending keep-alive"); - /* send keep-alive, only act on interrupt, a warning will be posted for - * other errors. */ - if ((res = gst_rtspsrc_send_keep_alive (src)) == GST_RTSP_EINTR) - goto interrupt; - /* get new timeout */ - gst_rtsp_connection_next_timeout (src->conninfo.connection, &tv_timeout); - } - - GST_DEBUG_OBJECT (src, "doing receive with timeout %ld seconds, %ld usec", - tv_timeout.tv_sec, tv_timeout.tv_usec); - - /* protect the connection with the connection lock so that we can see when - * we are finished doing server communication */ - res = - gst_rtspsrc_connection_receive (src, src->conninfo.connection, - &message, src->ptcp_timeout); - - switch (res) { - case GST_RTSP_OK: - GST_DEBUG_OBJECT (src, "we received a server message"); - break; - case GST_RTSP_EINTR: - /* we got interrupted this means we need to stop */ - goto interrupt; - case GST_RTSP_ETIMEOUT: - /* no reply, send keep alive */ - GST_DEBUG_OBJECT (src, "timeout, sending keep-alive"); - if ((res = gst_rtspsrc_send_keep_alive (src)) == GST_RTSP_EINTR) - goto interrupt; - continue; - case GST_RTSP_EEOF: - /* go EOS when the server closed the connection */ - goto server_eof; - default: - goto receive_error; - } - - switch (message.type) { - case GST_RTSP_MESSAGE_REQUEST: - /* server sends us a request message, handle it */ - res = - gst_rtspsrc_handle_request (src, src->conninfo.connection, - &message); - if (res == GST_RTSP_EEOF) - goto server_eof; - else if (res < 0) - goto handle_request_failed; - break; - case GST_RTSP_MESSAGE_RESPONSE: - /* we ignore response messages */ - GST_DEBUG_OBJECT (src, "ignoring response message"); - if (src->debug) - gst_rtsp_message_dump (&message); - break; - case GST_RTSP_MESSAGE_DATA: - GST_DEBUG_OBJECT (src, "got data message"); - have_data = TRUE; - break; - default: - GST_WARNING_OBJECT (src, "ignoring unknown message type %d", - message.type); - break; - } - } - while (!have_data); - - channel = message.type_data.data.channel; + channel = message->type_data.data.channel; stream = find_stream (src, &channel, (gpointer) find_stream_by_channel); if (!stream) @@ -3674,7 +3878,7 @@ gst_rtspsrc_loop_interleaved (GstRTSPSrc * src) } /* take a look at the body to figure out what we have */ - gst_rtsp_message_get_body (&message, &data, &size); + gst_rtsp_message_get_body (message, &data, &size); if (size < 2) goto invalid_length; @@ -3690,7 +3894,7 @@ gst_rtspsrc_loop_interleaved (GstRTSPSrc * src) goto unknown_stream; /* take the message body for further processing */ - gst_rtsp_message_steal_body (&message, &data, &size); + gst_rtsp_message_steal_body (message, &data, &size); /* strip the trailing \0 */ size -= 1; @@ -3700,12 +3904,37 @@ gst_rtspsrc_loop_interleaved (GstRTSPSrc * src) gst_memory_new_wrapped (0, data, size, 0, size, data, g_free)); /* don't need message anymore */ - gst_rtsp_message_unset (&message); + gst_rtsp_message_unset (message); GST_DEBUG_OBJECT (src, "pushing data of size %d on channel %d", size, channel); if (src->need_activate) { + gchar *stream_id; + GstEvent *event; + GChecksum *cs; + gchar *uri; + GList *streams; + guint group_id = gst_util_group_id_next (); + + /* generate an SHA256 sum of the URI */ + cs = g_checksum_new (G_CHECKSUM_SHA256); + uri = src->conninfo.location; + g_checksum_update (cs, (const guchar *) uri, strlen (uri)); + + for (streams = src->streams; streams; streams = g_list_next (streams)) { + GstRTSPStream *ostream = (GstRTSPStream *) streams->data; + + stream_id = + g_strdup_printf ("%s/%d", g_checksum_get_string (cs), ostream->id); + event = gst_event_new_stream_start (stream_id); + gst_event_set_group_id (event, group_id); + + g_free (stream_id); + gst_rtspsrc_stream_push_event (src, ostream, event); + } + g_checksum_free (cs); + gst_rtspsrc_activate_streams (src); src->need_activate = FALSE; } @@ -3766,9 +3995,102 @@ gst_rtspsrc_loop_interleaved (GstRTSPSrc * src) unknown_stream: { GST_DEBUG_OBJECT (src, "unknown stream on channel %d, ignored", channel); - gst_rtsp_message_unset (&message); + gst_rtsp_message_unset (message); return GST_FLOW_OK; } +invalid_length: + { + GST_ELEMENT_WARNING (src, RESOURCE, READ, (NULL), + ("Short message received, ignoring.")); + gst_rtsp_message_unset (message); + return GST_FLOW_OK; + } +} + +static GstFlowReturn +gst_rtspsrc_loop_interleaved (GstRTSPSrc * src) +{ + GstRTSPMessage message = { 0 }; + GstRTSPResult res; + GstFlowReturn ret = GST_FLOW_OK; + GTimeVal tv_timeout; + + while (TRUE) { + /* get the next timeout interval */ + gst_rtsp_connection_next_timeout (src->conninfo.connection, &tv_timeout); + + /* see if the timeout period expired */ + if ((tv_timeout.tv_sec | tv_timeout.tv_usec) == 0) { + GST_DEBUG_OBJECT (src, "timout, sending keep-alive"); + /* send keep-alive, only act on interrupt, a warning will be posted for + * other errors. */ + if ((res = gst_rtspsrc_send_keep_alive (src)) == GST_RTSP_EINTR) + goto interrupt; + /* get new timeout */ + gst_rtsp_connection_next_timeout (src->conninfo.connection, &tv_timeout); + } + + GST_DEBUG_OBJECT (src, "doing receive with timeout %ld seconds, %ld usec", + tv_timeout.tv_sec, tv_timeout.tv_usec); + + /* protect the connection with the connection lock so that we can see when + * we are finished doing server communication */ + res = + gst_rtspsrc_connection_receive (src, src->conninfo.connection, + &message, src->ptcp_timeout); + + switch (res) { + case GST_RTSP_OK: + GST_DEBUG_OBJECT (src, "we received a server message"); + break; + case GST_RTSP_EINTR: + /* we got interrupted this means we need to stop */ + goto interrupt; + case GST_RTSP_ETIMEOUT: + /* no reply, send keep alive */ + GST_DEBUG_OBJECT (src, "timeout, sending keep-alive"); + if ((res = gst_rtspsrc_send_keep_alive (src)) == GST_RTSP_EINTR) + goto interrupt; + continue; + case GST_RTSP_EEOF: + /* go EOS when the server closed the connection */ + goto server_eof; + default: + goto receive_error; + } + + switch (message.type) { + case GST_RTSP_MESSAGE_REQUEST: + /* server sends us a request message, handle it */ + res = + gst_rtspsrc_handle_request (src, src->conninfo.connection, + &message); + if (res == GST_RTSP_EEOF) + goto server_eof; + else if (res < 0) + goto handle_request_failed; + break; + case GST_RTSP_MESSAGE_RESPONSE: + /* we ignore response messages */ + GST_DEBUG_OBJECT (src, "ignoring response message"); + if (src->debug) + gst_rtsp_message_dump (&message); + break; + case GST_RTSP_MESSAGE_DATA: + GST_DEBUG_OBJECT (src, "got data message"); + ret = gst_rtspsrc_handle_data (src, &message); + if (ret != GST_FLOW_OK) + goto handle_data_failed; + break; + default: + GST_WARNING_OBJECT (src, "ignoring unknown message type %d", + message.type); + break; + } + } + g_assert_not_reached (); + + /* ERRORS */ server_eof: { GST_DEBUG_OBJECT (src, "we got an eof from the server"); @@ -3781,8 +4103,7 @@ server_eof: interrupt: { gst_rtsp_message_unset (&message); - GST_DEBUG_OBJECT (src, "got interrupted: stop connection flush"); - gst_rtspsrc_connection_flush (src, FALSE); + GST_DEBUG_OBJECT (src, "got interrupted"); return GST_FLOW_FLUSHING; } receive_error: @@ -3806,12 +4127,10 @@ handle_request_failed: gst_rtsp_message_unset (&message); return GST_FLOW_ERROR; } -invalid_length: +handle_data_failed: { - GST_ELEMENT_WARNING (src, RESOURCE, READ, (NULL), - ("Short message received, ignoring.")); - gst_rtsp_message_unset (&message); - return GST_FLOW_OK; + GST_DEBUG_OBJECT (src, "could no handle data message"); + return ret; } } @@ -3857,10 +4176,13 @@ gst_rtspsrc_loop_udp (GstRTSPSrc * src) * see what happens. */ GST_ELEMENT_WARNING (src, RESOURCE, READ, (NULL), ("The server closed the connection.")); - if ((res = - gst_rtsp_conninfo_reconnect (src, &src->conninfo, FALSE)) < 0) - goto connect_error; - + if (src->udp_reconnect) { + if ((res = + gst_rtsp_conninfo_reconnect (src, &src->conninfo, FALSE)) < 0) + goto connect_error; + } else { + goto server_eof; + } continue; case GST_RTSP_ENET: GST_DEBUG_OBJECT (src, "An ethernet problem occured."); @@ -3907,13 +4229,13 @@ gst_rtspsrc_loop_udp (GstRTSPSrc * src) break; } } + g_assert_not_reached (); /* we get here when the connection got interrupted */ interrupt: { gst_rtsp_message_unset (&message); - GST_DEBUG_OBJECT (src, "got interrupted: stop connection flush"); - gst_rtspsrc_connection_flush (src, FALSE); + GST_DEBUG_OBJECT (src, "got interrupted"); return GST_FLOW_FLUSHING; } connect_error: @@ -4134,10 +4456,11 @@ gst_rtspsrc_loop_end_cmd (GstRTSPSrc * src, gint cmd, GstRTSPResult ret) gst_rtspsrc_loop_error_cmd (src, cmd); } -static void +static gboolean gst_rtspsrc_loop_send_cmd (GstRTSPSrc * src, gint cmd, gint mask) { gint old; + gboolean flushed = FALSE; /* start new request */ gst_rtspsrc_loop_start_cmd (src, cmd); @@ -4163,12 +4486,15 @@ gst_rtspsrc_loop_send_cmd (GstRTSPSrc * src, gint cmd, gint mask) if (src->busy_cmd & mask) { GST_DEBUG_OBJECT (src, "connection flush busy %d", src->busy_cmd); gst_rtspsrc_connection_flush (src, TRUE); + flushed = TRUE; } else { GST_DEBUG_OBJECT (src, "not interrupting busy cmd %d", src->busy_cmd); } if (src->task) gst_task_start (src->task); GST_OBJECT_UNLOCK (src); + + return flushed; } static gboolean @@ -4560,7 +4886,8 @@ next: break; case GST_RTSP_MESSAGE_DATA: /* get next response */ - GST_DEBUG_OBJECT (src, "ignoring data response message"); + GST_DEBUG_OBJECT (src, "handle data response message"); + gst_rtspsrc_handle_data (src, response); goto next; default: GST_WARNING_OBJECT (src, "ignoring unknown message type %d", @@ -4609,8 +4936,8 @@ receive_error: { switch (res) { case GST_RTSP_EEOF: - GST_WARNING_OBJECT (src, "server closed connection, doing reconnect"); - if (try == 0) { + GST_WARNING_OBJECT (src, "server closed connection"); + if ((try == 0) && !src->interleaved && src->udp_reconnect) { try++; /* if reconnect succeeds, try again */ if ((res = @@ -4811,9 +5138,7 @@ gst_rtspsrc_parse_methods (GstRTSPSrc * src, GstRTSPMessage * response) { GstRTSPHeaderField field; gchar *respoptions; - gchar **options; gint indx = 0; - gint i; /* reset supported methods */ src->methods = 0; @@ -4831,25 +5156,7 @@ gst_rtspsrc_parse_methods (GstRTSPSrc * src, GstRTSPMessage * response) if (!respoptions) break; - /* If we get here, the server gave a list of supported methods, parse - * them here. The string is like: - * - * OPTIONS, DESCRIBE, ANNOUNCE, PLAY, SETUP, ... - */ - options = g_strsplit (respoptions, ",", 0); - - for (i = 0; options[i]; i++) { - gchar *stripped; - gint method; - - stripped = g_strstrip (options[i]); - method = gst_rtsp_find_method (stripped); - - /* keep bitfield of supported methods */ - if (method != GST_RTSP_INVALID) - src->methods |= method; - } - g_strfreev (options); + src->methods |= gst_rtsp_options_from_text (respoptions); indx++; } @@ -5128,6 +5435,7 @@ gst_rtspsrc_setup_streams (GstRTSPSrc * src, gboolean async) gchar *transports; gint retry = 0; guint mask = 0; + gboolean selected; stream = (GstRTSPStream *) walk->data; @@ -5139,6 +5447,15 @@ gst_rtspsrc_setup_streams (GstRTSPSrc * src, gboolean async) continue; } + g_signal_emit (src, gst_rtspsrc_signals[SIGNAL_SELECT_STREAM], 0, + stream->id, stream->caps, &selected); + if (!selected) { + GST_DEBUG_OBJECT (src, "skipping stream %p, disabled by signal", stream); + stream->disabled = TRUE; + continue; + } + stream->disabled = FALSE; + /* merge/overwrite global caps */ if (stream->caps) { guint j, num; @@ -5227,16 +5544,14 @@ gst_rtspsrc_setup_streams (GstRTSPSrc * src, gboolean async) goto create_request_failed; } - /* select transport, copy is made when adding to header so we can free it. */ - gst_rtsp_message_add_header (&request, GST_RTSP_HDR_TRANSPORT, transports); - g_free (transports); + /* select transport */ + gst_rtsp_message_take_header (&request, GST_RTSP_HDR_TRANSPORT, transports); /* if the user wants a non default RTP packet size we add the blocksize * parameter */ if (src->rtp_blocksize > 0) { hval = g_strdup_printf ("%d", src->rtp_blocksize); - gst_rtsp_message_add_header (&request, GST_RTSP_HDR_BLOCKSIZE, hval); - g_free (hval); + gst_rtsp_message_take_header (&request, GST_RTSP_HDR_BLOCKSIZE, hval); } if (async) @@ -5524,6 +5839,70 @@ gst_rtspsrc_parse_range (GstRTSPSrc * src, const gchar * range, return TRUE; } +/* Parse clock profived by the server with following syntax: + * + * "GstNetTimeProvider <wrapped-clock> <server-IP:port> <clock-time>" + */ +static gboolean +gst_rtspsrc_parse_gst_clock (GstRTSPSrc * src, const gchar * gstclock) +{ + gboolean res = FALSE; + + if (g_str_has_prefix (gstclock, "GstNetTimeProvider ")) { + gchar **fields = NULL, **parts = NULL; + gchar *remote_ip, *str; + gint port; + GstClockTime base_time; + GstClock *netclock; + + fields = g_strsplit (gstclock, " ", 0); + + /* wrapped clock, not very interesting for now */ + if (fields[1] == NULL) + goto cleanup; + + /* remote IP address and port */ + if ((str = fields[2]) == NULL) + goto cleanup; + + parts = g_strsplit (str, ":", 0); + + if ((remote_ip = parts[0]) == NULL) + goto cleanup; + + if ((str = parts[1]) == NULL) + goto cleanup; + + port = atoi (str); + if (port == 0) + goto cleanup; + + /* base-time */ + if ((str = fields[3]) == NULL) + goto cleanup; + + base_time = g_ascii_strtoull (str, NULL, 10); + + netclock = + gst_net_client_clock_new ((gchar *) "GstRTSPClock", remote_ip, port, + base_time); + + if (src->provided_clock) + gst_object_unref (src->provided_clock); + src->provided_clock = netclock; + + gst_element_post_message (GST_ELEMENT_CAST (src), + gst_message_new_clock_provide (GST_OBJECT_CAST (src), + src->provided_clock, TRUE)); + + res = TRUE; + cleanup: + g_strfreev (fields); + g_strfreev (parts); + } + return res; +} + /* must be called with the RTSP state lock */ static GstRTSPResult gst_rtspsrc_open_from_sdp (GstRTSPSrc * src, GstSDPMessage * sdp, @@ -5543,6 +5922,9 @@ gst_rtspsrc_open_from_sdp (GstRTSPSrc * src, GstSDPMessage * sdp, gst_rtsp_ext_list_parse_sdp (src->extensions, sdp, src->props); + /* let the app inspect and change the SDP */ + g_signal_emit (src, gst_rtspsrc_signals[SIGNAL_ON_SDP], 0, sdp); + gst_segment_init (&src->segment, GST_FORMAT_TIME); /* parse range for duration reporting. */ @@ -5559,6 +5941,22 @@ gst_rtspsrc_open_from_sdp (GstRTSPSrc * src, GstSDPMessage * sdp, break; } } + /* parse clock information. This is GStreamer specific, a server can tell the + * client what clock it is using and wrap that in a network clock. The + * advantage of that is that we can slave to it. */ + { + const gchar *gstclock; + + for (i = 0;; i++) { + gstclock = gst_sdp_message_get_attribute_val_n (sdp, "x-gst-clock", i); + if (gstclock == NULL) + break; + + /* parse the clock and expose it in the provide_clock method */ + if (gst_rtspsrc_parse_gst_clock (src, gstclock)) + break; + } + } /* try to find a global control attribute. Note that a '*' means that we should * do aggregate control with the current url (so we don't do anything and * leave the current connection as is) */ @@ -5845,6 +6243,8 @@ gst_rtspsrc_close (GstRTSPSrc * src, gboolean async, gboolean only_close) GST_DEBUG_OBJECT (src, "TEARDOWN..."); + gst_rtspsrc_set_state (src, GST_STATE_READY); + if (src->state < GST_RTSP_STATE_READY) { GST_DEBUG_OBJECT (src, "not ready, doing cleanup"); goto close; @@ -6164,27 +6564,11 @@ gst_rtspsrc_play (GstRTSPSrc * src, GstSegment * segment, gboolean async) * udp sources */ gst_rtspsrc_send_dummy_packets (src); - /* activate receive elements; - * only in async case, since receive elements may not have been affected - * by overall state change (e.g. not around yet), - * do not mess with state in sync case (e.g. seeking) */ - if (async) { - /* state change might be happening in the application thread. A - * specific case is when chaging state to NULL where we will wait - * for this task to finish (gst_rtspsrc_stop). However this task - * will try to change the state to PLAYING causing a deadlock. */ - - /* make sure we are not in the middle of a state change. The - * state lock is a recursive lock so it's safe to lock twice from - * the same thread */ - if (GST_STATE_TRYLOCK (src)) { - gst_element_set_state (GST_ELEMENT_CAST (src), GST_STATE_PLAYING); - GST_STATE_UNLOCK (src); - } else { - res = GST_RTSP_ERROR; - goto changing_state; - } - } + /* require new SR packets */ + if (src->manager) + g_signal_emit_by_name (src->manager, "reset-sync", NULL); + + gst_rtspsrc_set_state (src, GST_STATE_PLAYING); /* construct a control url */ if (src->control) @@ -6219,8 +6603,7 @@ gst_rtspsrc_play (GstRTSPSrc * src, GstSegment * segment, gboolean async) if (src->need_range) { hval = gen_range_header (src, segment); - gst_rtsp_message_add_header (&request, GST_RTSP_HDR_RANGE, hval); - g_free (hval); + gst_rtsp_message_take_header (&request, GST_RTSP_HDR_RANGE, hval); /* store the newsegment event so it can be sent from the streaming thread. */ if (src->start_segment) @@ -6347,11 +6730,6 @@ was_playing: GST_DEBUG_OBJECT (src, "we were already PLAYING"); goto done; } -changing_state: - { - GST_DEBUG_OBJECT (src, "failed going to PLAYING, already changing state"); - goto done; - } create_request_failed: { gchar *str = gst_rtsp_strresult (res); @@ -6447,6 +6825,9 @@ gst_rtspsrc_pause (GstRTSPSrc * src, gboolean async) break; } + /* change element states now */ + gst_rtspsrc_set_state (src, GST_STATE_PAUSED); + no_connection: src->state = GST_RTSP_STATE_READY; @@ -6585,7 +6966,8 @@ gst_rtspsrc_thread (GstRTSPSrc * src) GST_OBJECT_LOCK (src); cmd = src->pending_cmd; - if (cmd == CMD_RECONNECT || cmd == CMD_PLAY || cmd == CMD_LOOP) + if (cmd == CMD_RECONNECT || cmd == CMD_PLAY || cmd == CMD_PAUSE + || cmd == CMD_LOOP) src->pending_cmd = CMD_LOOP; else src->pending_cmd = CMD_WAIT; @@ -6720,10 +7102,11 @@ gst_rtspsrc_change_state (GstElement * element, GstStateChange transition) case GST_STATE_CHANGE_PAUSED_TO_PLAYING: case GST_STATE_CHANGE_PLAYING_TO_PAUSED: /* unblock the tcp tasks and make the loop waiting */ - gst_rtspsrc_loop_send_cmd (rtspsrc, CMD_WAIT, CMD_LOOP); - /* make sure it is waiting before we send PAUSE or PLAY below */ - GST_RTSP_STREAM_LOCK (rtspsrc); - GST_RTSP_STREAM_UNLOCK (rtspsrc); + if (gst_rtspsrc_loop_send_cmd (rtspsrc, CMD_WAIT, CMD_LOOP)) { + /* make sure it is waiting before we send PAUSE or PLAY below */ + GST_RTSP_STREAM_LOCK (rtspsrc); + GST_RTSP_STREAM_UNLOCK (rtspsrc); + } break; case GST_STATE_CHANGE_PAUSED_TO_READY: break; @@ -6736,22 +7119,28 @@ gst_rtspsrc_change_state (GstElement * element, GstStateChange transition) goto done; switch (transition) { + case GST_STATE_CHANGE_NULL_TO_READY: + ret = GST_STATE_CHANGE_SUCCESS; + break; + case GST_STATE_CHANGE_READY_TO_PAUSED: + ret = GST_STATE_CHANGE_NO_PREROLL; + break; case GST_STATE_CHANGE_PAUSED_TO_PLAYING: gst_rtspsrc_loop_send_cmd (rtspsrc, CMD_PLAY, 0); + ret = GST_STATE_CHANGE_SUCCESS; break; case GST_STATE_CHANGE_PLAYING_TO_PAUSED: /* send pause request and keep the idle task around */ gst_rtspsrc_loop_send_cmd (rtspsrc, CMD_PAUSE, CMD_LOOP); ret = GST_STATE_CHANGE_NO_PREROLL; break; - case GST_STATE_CHANGE_READY_TO_PAUSED: - ret = GST_STATE_CHANGE_NO_PREROLL; - break; case GST_STATE_CHANGE_PAUSED_TO_READY: gst_rtspsrc_loop_send_cmd (rtspsrc, CMD_CLOSE, CMD_PAUSE); + ret = GST_STATE_CHANGE_SUCCESS; break; case GST_STATE_CHANGE_READY_TO_NULL: gst_rtspsrc_stop (rtspsrc); + ret = GST_STATE_CHANGE_SUCCESS; break; default: break; @@ -6797,7 +7186,9 @@ static const gchar *const * gst_rtspsrc_uri_get_protocols (GType type) { static const gchar *protocols[] = - { "rtsp", "rtspu", "rtspt", "rtsph", "rtsp-sdp", NULL }; + { "rtsp", "rtspu", "rtspt", "rtsph", "rtsp-sdp", + "rtsps", "rtspsu", "rtspst", "rtspsh", NULL + }; return protocols; } diff --git a/gst/rtsp/gstrtspsrc.h b/gst/rtsp/gstrtspsrc.h index 1f8ee222105eefec1d8fb1d7859cbf99bfe022de..e042a3dd3684ccbd6a026ffa7b044667675ca981 100644 --- a/gst/rtsp/gstrtspsrc.h +++ b/gst/rtsp/gstrtspsrc.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* * Unless otherwise indicated, Source Code is licensed under MIT license. @@ -87,6 +87,7 @@ struct _GstRTSPConnInfo { gchar *url_str; GstRTSPConnection *connection; gboolean connected; + gboolean flushing; }; typedef struct _GstRTSPStream GstRTSPStream; @@ -208,8 +209,10 @@ struct _GstRTSPSrc { gboolean do_rtsp_keep_alive; gchar *proxy_host; guint proxy_port; - gchar *proxy_user; - gchar *proxy_passwd; + gchar *proxy_user; /* from url or property */ + gchar *proxy_passwd; /* from url or property */ + gchar *prop_proxy_id; /* set via property */ + gchar *prop_proxy_pw; /* set via property */ guint rtp_blocksize; gchar *user_id; gchar *user_pw; @@ -218,6 +221,11 @@ struct _GstRTSPSrc { gint udp_buffer_size; gboolean short_header; guint probation; + gboolean udp_reconnect; + gchar *multi_iface; + gboolean ntp_sync; + gboolean use_pipeline_clock; + GstStructure *sdes; /* state */ GstRTSPState state; @@ -229,6 +237,7 @@ struct _GstRTSPSrc { GstRTSPTimeRange *range; gchar *control; guint next_port_num; + GstClock *provided_clock; /* supported methods */ gint methods; diff --git a/gst/shapewipe/Makefile.in b/gst/shapewipe/Makefile.in index c9a8143b22cc7320f0ab94a4b47e80ab16948a93..90236a665bc54c7dfc26325a641ceabf48132c0d 100644 --- a/gst/shapewipe/Makefile.in +++ b/gst/shapewipe/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/shapewipe -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -135,10 +161,23 @@ libgstshapewipe_la_OBJECTS = $(am_libgstshapewipe_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstshapewipe_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstshapewipe_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstshapewipe_la_CFLAGS) $(CFLAGS) \ $(libgstshapewipe_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -151,20 +190,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstshapewipe_la_SOURCES) DIST_SOURCES = $(libgstshapewipe_la_SOURCES) am__can_run_installinfo = \ @@ -173,6 +208,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -340,6 +392,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -541,6 +594,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -567,12 +621,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstshapewipe.la: $(libgstshapewipe_la_OBJECTS) $(libgstshapewipe_la_DEPENDENCIES) $(EXTRA_libgstshapewipe_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstshapewipe_la_LINK) -rpath $(plugindir) $(libgstshapewipe_la_OBJECTS) $(libgstshapewipe_la_LIBADD) $(LIBS) @@ -585,22 +642,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstshapewipe_la-gstshapewipe.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -618,26 +678,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -649,15 +698,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -666,6 +711,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -810,19 +870,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/shapewipe/gstshapewipe.c b/gst/shapewipe/gstshapewipe.c index 41bc34e8303ca769c4dc78ee45b8f0ba554d06ad..024ef6842524fbbf27309d7b0a29cdad6320d6ba 100644 --- a/gst/shapewipe/gstshapewipe.c +++ b/gst/shapewipe/gstshapewipe.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -32,7 +32,7 @@ * <refsect2> * <title>Example launch line</title> * |[ - * gst-launch-1.0 -v videotestsrc ! video/x-raw,format=(string)AYUV,width=640,height=480 ! shapewipe position=0.5 name=shape ! videomixer name=mixer ! videoconvert ! autovideosink filesrc location=mask.png ! typefind ! decodebin2 ! videoconvert ! videoscale ! queue ! shape.mask_sink videotestsrc pattern=snow ! video/x-raw,format=(string)AYUV,width=640,height=480 ! queue ! mixer. + * gst-launch-1.0 -v videotestsrc ! video/x-raw,format=AYUV,width=640,height=480 ! shapewipe position=0.5 name=shape ! videomixer name=mixer ! videoconvert ! autovideosink filesrc location=mask.png ! typefind ! decodebin ! videoconvert ! videoscale ! queue ! shape.mask_sink videotestsrc pattern=snow ! video/x-raw,format=AYUV,width=640,height=480 ! queue ! mixer. * ]| This pipeline adds the transition from mask.png with position 0.5 to an SMPTE test screen and snow. * </refsect2> */ @@ -486,6 +486,7 @@ gst_shape_wipe_mask_sink_getcaps (GstShapeWipe * self, GstPad * pad, if (gst_caps_is_empty (ret)) goto done; + ret = gst_caps_make_writable (ret); n = gst_caps_get_size (ret); tmp = gst_caps_new_empty (); for (i = 0; i < n; i++) { @@ -831,7 +832,6 @@ gst_shape_wipe_video_sink_chain (GstPad * pad, GstObject * parent, GstFlowReturn ret = GST_FLOW_OK; GstBuffer *mask = NULL, *outbuf = NULL; GstClockTime timestamp; - gboolean new_outbuf = FALSE; GstVideoFrame inframe, outframe, maskframe; if (G_UNLIKELY (GST_VIDEO_INFO_FORMAT (&self->vinfo) == @@ -866,20 +866,10 @@ gst_shape_wipe_video_sink_chain (GstPad * pad, GstObject * parent, if (!gst_shape_wipe_do_qos (self, GST_BUFFER_TIMESTAMP (buffer))) goto qos; - /* Try to blend inplace, if it's not possible - * get a new buffer from downstream. */ - if (!gst_buffer_is_writable (buffer)) { - outbuf = gst_buffer_new_allocate (NULL, gst_buffer_get_size (buffer), NULL); - gst_buffer_copy_into (outbuf, buffer, GST_BUFFER_COPY_METADATA, 0, -1); - new_outbuf = TRUE; - } else { - outbuf = buffer; - } - - gst_video_frame_map (&inframe, &self->vinfo, buffer, - new_outbuf ? GST_MAP_READ : GST_MAP_READWRITE); - gst_video_frame_map (&outframe, &self->vinfo, outbuf, - new_outbuf ? GST_MAP_WRITE : GST_MAP_READWRITE); + /* Will blend inplace if buffer is writable */ + outbuf = gst_buffer_make_writable (buffer); + gst_video_frame_map (&outframe, &self->vinfo, outbuf, GST_MAP_READWRITE); + gst_video_frame_map (&inframe, &self->vinfo, outbuf, GST_MAP_READ); gst_video_frame_map (&maskframe, &self->minfo, mask, GST_MAP_READ); @@ -910,8 +900,6 @@ gst_shape_wipe_video_sink_chain (GstPad * pad, GstObject * parent, gst_video_frame_unmap (&maskframe); gst_buffer_unref (mask); - if (new_outbuf) - gst_buffer_unref (buffer); ret = gst_pad_push (self->srcpad, outbuf); if (G_UNLIKELY (ret != GST_FLOW_OK)) @@ -941,8 +929,9 @@ qos: } push_failed: { - GST_ERROR_OBJECT (self, "Pushing buffer downstream failed: %s", - gst_flow_get_name (ret)); + if (ret != GST_FLOW_FLUSHING) + GST_ERROR_OBJECT (self, "Pushing buffer downstream failed: %s", + gst_flow_get_name (ret)); return ret; } } diff --git a/gst/shapewipe/gstshapewipe.h b/gst/shapewipe/gstshapewipe.h index 1df8c5e10f14167effb3d5e89fdac8748d536f87..66731ce72df3bcd8b0e5dc28c398ae9aa5146af2 100644 --- a/gst/shapewipe/gstshapewipe.h +++ b/gst/shapewipe/gstshapewipe.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_SHAPE_WIPE_H__ diff --git a/gst/smpte/Makefile.in b/gst/smpte/Makefile.in index 5b1c030e190a8a786be014f2c2f6c4bdf1cde47e..fc9fd43d368f056646ab12e4aaa52e52bd0314f6 100644 --- a/gst/smpte/Makefile.in +++ b/gst/smpte/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/smpte -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -138,10 +164,23 @@ libgstsmpte_la_OBJECTS = $(am_libgstsmpte_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstsmpte_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstsmpte_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstsmpte_la_CFLAGS) $(CFLAGS) \ $(libgstsmpte_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -154,20 +193,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstsmpte_la_SOURCES) DIST_SOURCES = $(libgstsmpte_la_SOURCES) am__can_run_installinfo = \ @@ -176,6 +211,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -343,6 +395,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -546,6 +599,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -572,12 +626,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstsmpte.la: $(libgstsmpte_la_OBJECTS) $(libgstsmpte_la_DEPENDENCIES) $(EXTRA_libgstsmpte_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstsmpte_la_LINK) -rpath $(plugindir) $(libgstsmpte_la_OBJECTS) $(libgstsmpte_la_LIBADD) $(LIBS) @@ -595,22 +652,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsmpte_la-plugin.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -663,26 +723,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -694,15 +743,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -711,6 +756,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -855,19 +915,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/smpte/barboxwipes.c b/gst/smpte/barboxwipes.c index b8f00f7fc42cb809bde91b2c4c1ed9a4552b1f70..7855eaabbc2388ec919c4529ad3a9d877cb276bd 100644 --- a/gst/smpte/barboxwipes.c +++ b/gst/smpte/barboxwipes.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/smpte/gstmask.c b/gst/smpte/gstmask.c index 940bf8285a82c6a65d7d18bbbcc4f5f902514138..92b591936c71b78874e48f983b7dca4505f78312 100644 --- a/gst/smpte/gstmask.c +++ b/gst/smpte/gstmask.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/smpte/gstmask.h b/gst/smpte/gstmask.h index 576475cd14713acdce6831a5cc473fa25fb5f028..53a5082a124e671926f4dd64bcaebe8ec83e0d9e 100644 --- a/gst/smpte/gstmask.h +++ b/gst/smpte/gstmask.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/smpte/gstsmpte.c b/gst/smpte/gstsmpte.c index f82f6123bbbc23edc9ff0c424f7718e050e8895a..37a383dcb1f8848e8b790d7bc1f248082015d564 100644 --- a/gst/smpte/gstsmpte.c +++ b/gst/smpte/gstsmpte.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/smpte/gstsmpte.h b/gst/smpte/gstsmpte.h index a91f6a2ffcd64a6e16c70fd36db5bea730318de9..59a48305c7b7cb0f2f95708e42a0bcbb680b0f9e 100644 --- a/gst/smpte/gstsmpte.h +++ b/gst/smpte/gstsmpte.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/smpte/gstsmptealpha.c b/gst/smpte/gstsmptealpha.c index 00d25c38b3f2aa4ee65f4b5f3fc9987b42c7c77d..25f5e38066a27e13df6fa6f91f536e21afbad508 100644 --- a/gst/smpte/gstsmptealpha.c +++ b/gst/smpte/gstsmptealpha.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/gst/smpte/gstsmptealpha.h b/gst/smpte/gstsmptealpha.h index e8ce957e8258aec8ec7f3480d5665a9594b223da..f8d2b3549a789c180c6bd5b3ae337aed61b6fb04 100644 --- a/gst/smpte/gstsmptealpha.h +++ b/gst/smpte/gstsmptealpha.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/smpte/paint.c b/gst/smpte/paint.c index 7c2ba0dc86195348f456924aa00903306b117229..cd97323cba40e6a0c9d6e64228a7ce643658ada4 100644 --- a/gst/smpte/paint.c +++ b/gst/smpte/paint.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/smpte/paint.h b/gst/smpte/paint.h index 3de748148cbb6ab1d5f09aead109531d3cbc3c82..c815e0bee2dbe96cbcbc46be08df82425e0d99ae 100644 --- a/gst/smpte/paint.h +++ b/gst/smpte/paint.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_SMPTE_PAINT_H__ diff --git a/gst/smpte/plugin.c b/gst/smpte/plugin.c index 5c00570def32e15c2b4f941be969af90ba8796ad..43eba8a7e7b20b48cc5d84979051e361c6f6a3ea 100644 --- a/gst/smpte/plugin.c +++ b/gst/smpte/plugin.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/spectrum/Makefile.in b/gst/spectrum/Makefile.in index e56265caf31e220c36e545e5bafba1e3d7df5275..dd1a76c0daa6f3a7ca0cf258ac8bd5652f82c911 100644 --- a/gst/spectrum/Makefile.in +++ b/gst/spectrum/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/spectrum -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,10 +162,23 @@ libgstspectrum_la_OBJECTS = $(am_libgstspectrum_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstspectrum_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstspectrum_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstspectrum_la_CFLAGS) $(CFLAGS) \ $(libgstspectrum_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -152,20 +191,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstspectrum_la_SOURCES) DIST_SOURCES = $(libgstspectrum_la_SOURCES) am__can_run_installinfo = \ @@ -174,6 +209,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -341,6 +393,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -547,6 +600,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -573,12 +627,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstspectrum.la: $(libgstspectrum_la_OBJECTS) $(libgstspectrum_la_DEPENDENCIES) $(EXTRA_libgstspectrum_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstspectrum_la_LINK) -rpath $(plugindir) $(libgstspectrum_la_OBJECTS) $(libgstspectrum_la_LIBADD) $(LIBS) @@ -591,22 +648,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstspectrum_la-gstspectrum.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -624,26 +684,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -655,15 +704,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -672,6 +717,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -816,19 +876,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/spectrum/README b/gst/spectrum/README deleted file mode 100644 index 87555712fa7bee2dd66686e20079a82afee85d2c..0000000000000000000000000000000000000000 --- a/gst/spectrum/README +++ /dev/null @@ -1,5 +0,0 @@ -This is a simple, rather lame spectrum analyzer made from the fix_fft.c -code, as found I think in xmms-0.9.1 (the 75-wide output sounds like xmms -to me), which is actually written by other people (see fix_fft.c for -credits). It worked last time I had GiST working, which was a while ago. -Yes, GiST is not included here yet, it will be in 0.1.0. diff --git a/gst/spectrum/gstspectrum.c b/gst/spectrum/gstspectrum.c index f6a2caa99ccf063ab9fb92a2878424b5f7fc2d59..75a9152b8226ef45fa0aca0fbd48695a8ccb0c66 100644 --- a/gst/spectrum/gstspectrum.c +++ b/gst/spectrum/gstspectrum.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-spectrum @@ -176,13 +176,6 @@ gst_spectrum_class_init (GstSpectrumClass * klass) filter_class->setup = GST_DEBUG_FUNCPTR (gst_spectrum_setup); - /** - * GstSpectrum:post-messages - * - * Post messages on the bus with spectrum information. - * - * Since: 0.10.17 - */ g_object_class_install_property (gobject_class, PROP_POST_MESSAGES, g_param_spec_boolean ("post-messages", "Post Messages", "Whether to post a 'spectrum' element message on the bus for each " @@ -219,13 +212,6 @@ gst_spectrum_class_init (GstSpectrumClass * klass) G_MININT, 0, DEFAULT_THRESHOLD, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * GstSpectrum:multi-channel - * - * Send separate results for each channel - * - * Since: 0.10.29 - */ g_object_class_install_property (gobject_class, PROP_MULTI_CHANNEL, g_param_spec_boolean ("multi-channel", "Multichannel results", "Send separate results for each channel", diff --git a/gst/spectrum/gstspectrum.h b/gst/spectrum/gstspectrum.h index e8f0f89525be44efe7e45270fe59db1694227239..c6e7e8a92a04220315b1544c51864994fa7cb74b 100644 --- a/gst/spectrum/gstspectrum.h +++ b/gst/spectrum/gstspectrum.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/udp/Makefile.am b/gst/udp/Makefile.am index 53e4c06fff53bb7f8e5a4ececef91bb6e7cae112..7c109d5bd2c4f1bfb92eda548f2f3be2bd272d5b 100644 --- a/gst/udp/Makefile.am +++ b/gst/udp/Makefile.am @@ -1,18 +1,5 @@ plugin_LTLIBRARIES = libgstudp.la -# variables used for enum/marshal generation -glib_enum_headers = gstudp.h -glib_enum_define = GST_UDP -glib_gen_prefix = gst_udp -glib_gen_basename = gstudp - -include $(top_srcdir)/common/gst-glib-gen.mak - -built_sources = gstudp-enumtypes.c gstudp-marshal.c -built_headers = gstudp-enumtypes.h gstudp-marshal.h - -BUILT_SOURCES = $(built_sources) $(built_headers) - libgstudp_la_SOURCES = gstudp.c gstudpsrc.c gstudpsink.c gstmultiudpsink.c gstdynudpsink.c gstudpnetutils.c libgstudp_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_NET_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS) @@ -20,12 +7,9 @@ libgstudp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_NET_LIBS) libgstudp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstudp_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) -nodist_libgstudp_la_SOURCES = \ - $(built_sources) - -noinst_HEADERS = gstudpsink.h gstudpsrc.h gstudp.h gstmultiudpsink.h gstdynudpsink.h gstudpnetutils.h +noinst_HEADERS = gstudpsink.h gstudpsrc.h gstmultiudpsink.h gstdynudpsink.h gstudpnetutils.h -EXTRA_DIST = README gstudp-marshal.list +EXTRA_DIST = README CLEANFILES = $(BUILT_SOURCES) diff --git a/gst/udp/Makefile.in b/gst/udp/Makefile.in index e8d5b8cc92b38392a51cb6ef9f4b307e1b365f73..5605d84443d02ea7f2bf20324dd449d3ba7905d4 100644 --- a/gst/udp/Makefile.in +++ b/gst/udp/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,33 +14,53 @@ @SET_MAKE@ -# these are the variables your Makefile.am should set -# the example is based on the colorbalance interface - -#glib_enum_headers=$(colorbalance_headers) -#glib_enum_define=GST_COLOR_BALANCE -#glib_gen_prefix=gst_color_balance -#glib_gen_basename=colorbalance - VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -61,16 +80,15 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/common/gst-glib-gen.mak subdir = gst/udp +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -143,18 +161,27 @@ am_libgstudp_la_OBJECTS = libgstudp_la-gstudp.lo \ libgstudp_la-gstudpsrc.lo libgstudp_la-gstudpsink.lo \ libgstudp_la-gstmultiudpsink.lo libgstudp_la-gstdynudpsink.lo \ libgstudp_la-gstudpnetutils.lo -am__objects_1 = libgstudp_la-gstudp-enumtypes.lo \ - libgstudp_la-gstudp-marshal.lo -nodist_libgstudp_la_OBJECTS = $(am__objects_1) -libgstudp_la_OBJECTS = $(am_libgstudp_la_OBJECTS) \ - $(nodist_libgstudp_la_OBJECTS) +libgstudp_la_OBJECTS = $(am_libgstudp_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstudp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstudp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstudp_la_CFLAGS) $(CFLAGS) \ $(libgstudp_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -167,21 +194,17 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libgstudp_la_SOURCES) $(nodist_libgstudp_la_SOURCES) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgstudp_la_SOURCES) DIST_SOURCES = $(libgstudp_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ @@ -189,6 +212,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -356,6 +396,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -517,33 +558,19 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ plugin_LTLIBRARIES = libgstudp.la - -# variables used for enum/marshal generation -glib_enum_headers = gstudp.h -glib_enum_define = GST_UDP -glib_gen_prefix = gst_udp -glib_gen_basename = gstudp -enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\") -built_sources = gstudp-enumtypes.c gstudp-marshal.c -built_headers = gstudp-enumtypes.h gstudp-marshal.h -BUILT_SOURCES = $(built_sources) $(built_headers) libgstudp_la_SOURCES = gstudp.c gstudpsrc.c gstudpsink.c gstmultiudpsink.c gstdynudpsink.c gstudpnetutils.c libgstudp_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_NET_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS) libgstudp_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_NET_LIBS) $(GIO_LIBS) libgstudp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstudp_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) -nodist_libgstudp_la_SOURCES = \ - $(built_sources) - -noinst_HEADERS = gstudpsink.h gstudpsrc.h gstudp.h gstmultiudpsink.h gstdynudpsink.h gstudpnetutils.h -EXTRA_DIST = README gstudp-marshal.list +noinst_HEADERS = gstudpsink.h gstudpsrc.h gstmultiudpsink.h gstdynudpsink.h gstudpnetutils.h +EXTRA_DIST = README CLEANFILES = $(BUILT_SOURCES) -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am +all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/gst-glib-gen.mak $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -564,7 +591,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/common/gst-glib-gen.mak: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -574,6 +600,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -600,12 +627,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstudp.la: $(libgstudp_la_OBJECTS) $(libgstudp_la_DEPENDENCIES) $(EXTRA_libgstudp_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstudp_la_LINK) -rpath $(plugindir) $(libgstudp_la_OBJECTS) $(libgstudp_la_LIBADD) $(LIBS) @@ -617,30 +647,31 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstudp_la-gstdynudpsink.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstudp_la-gstmultiudpsink.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstudp_la-gstudp-enumtypes.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstudp_la-gstudp-marshal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstudp_la-gstudp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstudp_la-gstudpnetutils.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstudp_la-gstudpsink.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstudp_la-gstudpsrc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -687,46 +718,21 @@ libgstudp_la-gstudpnetutils.lo: gstudpnetutils.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 $(libgstudp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstudp_la_CFLAGS) $(CFLAGS) -c -o libgstudp_la-gstudpnetutils.lo `test -f 'gstudpnetutils.c' || echo '$(srcdir)/'`gstudpnetutils.c -libgstudp_la-gstudp-enumtypes.lo: gstudp-enumtypes.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstudp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstudp_la_CFLAGS) $(CFLAGS) -MT libgstudp_la-gstudp-enumtypes.lo -MD -MP -MF $(DEPDIR)/libgstudp_la-gstudp-enumtypes.Tpo -c -o libgstudp_la-gstudp-enumtypes.lo `test -f 'gstudp-enumtypes.c' || echo '$(srcdir)/'`gstudp-enumtypes.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstudp_la-gstudp-enumtypes.Tpo $(DEPDIR)/libgstudp_la-gstudp-enumtypes.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstudp-enumtypes.c' object='libgstudp_la-gstudp-enumtypes.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 $(libgstudp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstudp_la_CFLAGS) $(CFLAGS) -c -o libgstudp_la-gstudp-enumtypes.lo `test -f 'gstudp-enumtypes.c' || echo '$(srcdir)/'`gstudp-enumtypes.c - -libgstudp_la-gstudp-marshal.lo: gstudp-marshal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstudp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstudp_la_CFLAGS) $(CFLAGS) -MT libgstudp_la-gstudp-marshal.lo -MD -MP -MF $(DEPDIR)/libgstudp_la-gstudp-marshal.Tpo -c -o libgstudp_la-gstudp-marshal.lo `test -f 'gstudp-marshal.c' || echo '$(srcdir)/'`gstudp-marshal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstudp_la-gstudp-marshal.Tpo $(DEPDIR)/libgstudp_la-gstudp-marshal.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstudp-marshal.c' object='libgstudp_la-gstudp-marshal.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstudp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstudp_la_CFLAGS) $(CFLAGS) -c -o libgstudp_la-gstudp-marshal.lo `test -f 'gstudp-marshal.c' || echo '$(srcdir)/'`gstudp-marshal.c - mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -738,15 +744,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -755,6 +757,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -790,15 +807,13 @@ distdir: $(DISTFILES) fi; \ done check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am +check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(plugindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am +install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -829,7 +844,6 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ @@ -901,58 +915,23 @@ ps-am: uninstall-am: uninstall-pluginLTLIBRARIES -.MAKE: all check install install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES - - -# these are all the rules generating the relevant files -$(glib_gen_basename)-marshal.h: $(glib_gen_basename)-marshal.list - $(AM_V_GEN)$(GLIB_GENMARSHAL) --header --prefix=$(glib_gen_prefix)_marshal $^ > $(glib_gen_basename)-marshal.h.tmp && \ - mv $(glib_gen_basename)-marshal.h.tmp $(glib_gen_basename)-marshal.h - -$(glib_gen_basename)-marshal.c: $(glib_gen_basename)-marshal.list - $(AM_V_GEN)echo "#include \"$(glib_gen_basename)-marshal.h\"" >> $(glib_gen_basename)-marshal.c.tmp && \ - $(GLIB_GENMARSHAL) --body --prefix=$(glib_gen_prefix)_marshal $^ >> $(glib_gen_basename)-marshal.c.tmp && \ - mv $(glib_gen_basename)-marshal.c.tmp $(glib_gen_basename)-marshal.c - -$(glib_gen_basename)-enumtypes.h: $(glib_enum_headers) - $(AM_V_GEN)$(GLIB_MKENUMS) \ - --fhead "#ifndef __$(glib_enum_define)_ENUM_TYPES_H__\n#define __$(glib_enum_define)_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \ - --fprod "\n/* enumerations from \"@filename@\" */\n" \ - --vhead "GType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ - --ftail "G_END_DECLS\n\n#endif /* __$(glib_enum_define)_ENUM_TYPES_H__ */" \ - $^ > $@ - -$(glib_gen_basename)-enumtypes.c: $(glib_enum_headers) - @if test "x$(glib_enum_headers)" = "x"; then echo "ERROR: glib_enum_headers is empty, please fix Makefile"; exit 1; fi - $(AM_V_GEN)$(GLIB_MKENUMS) \ - --fhead "#include \"$(glib_gen_basename)-enumtypes.h\"\n$(enum_headers)" \ - --fprod "\n/* enumerations from \"@filename@\" */" \ - --vhead "GType\n@enum_name@_get_type (void)\n{\n static volatile gsize g_define_type_id__volatile = 0;\n if (g_once_init_enter (&g_define_type_id__volatile)) {\n static const G@Type@Value values[] = {" \ - --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ - --vtail " { 0, NULL, NULL }\n };\n GType g_define_type_id = g_@type@_register_static (\"@EnumName@\", values);\n g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n }\n return g_define_type_id__volatile;\n}\n" \ - $^ > $@ - -# a hack rule to make sure .Plo files exist because they get include'd -# from Makefile's -.deps/%-marshal.Plo: - @touch $@ - -.deps/%-enumtypes.Plo: - @touch $@ +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES + Android.mk: Makefile.am $(BUILT_SOURCES) androgenizer \ diff --git a/gst/udp/gstdynudpsink.c b/gst/udp/gstdynudpsink.c index fadbd7f62ff0539c4dd8a3258588ccf01e6bfe5d..328e9020a3d02693de6d2dd9b0b5fd5e5202b99c 100644 --- a/gst/udp/gstdynudpsink.c +++ b/gst/udp/gstdynudpsink.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* FIXME 0.11: suppress warnings for deprecated API such as GValueArray @@ -28,7 +28,6 @@ #ifdef HAVE_CONFIG_H #include "config.h" #endif -#include "gstudp-marshal.h" #include "gstdynudpsink.h" #include <gst/net/gstnetaddressmeta.h> @@ -55,12 +54,17 @@ enum #define UDP_DEFAULT_SOCKET NULL #define UDP_DEFAULT_CLOSE_SOCKET TRUE +#define UDP_DEFAULT_BIND_ADDRESS NULL +#define UDP_DEFAULT_BIND_PORT 0 enum { PROP_0, PROP_SOCKET, - PROP_CLOSE_SOCKET + PROP_SOCKET_V6, + PROP_CLOSE_SOCKET, + PROP_BIND_ADDRESS, + PROP_BIND_PORT }; static void gst_dynudpsink_finalize (GObject * object); @@ -105,18 +109,30 @@ gst_dynudpsink_class_init (GstDynUDPSinkClass * klass) g_signal_new ("get-stats", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GstDynUDPSinkClass, get_stats), - NULL, NULL, gst_udp_marshal_BOXED__STRING_INT, GST_TYPE_STRUCTURE, 2, + NULL, NULL, g_cclosure_marshal_generic, GST_TYPE_STRUCTURE, 2, G_TYPE_STRING, G_TYPE_INT); g_object_class_install_property (gobject_class, PROP_SOCKET, g_param_spec_object ("socket", "Socket", "Socket to use for UDP sending. (NULL == allocate)", G_TYPE_SOCKET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_SOCKET_V6, + g_param_spec_object ("socket-v6", "Socket IPv6", + "Socket to use for UDPv6 sending. (NULL == allocate)", + G_TYPE_SOCKET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_CLOSE_SOCKET, g_param_spec_boolean ("close-socket", "Close socket", "Close socket if passed as property on state change", UDP_DEFAULT_CLOSE_SOCKET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_BIND_ADDRESS, + g_param_spec_string ("bind-address", "Bind Address", + "Address to bind the socket to", UDP_DEFAULT_BIND_ADDRESS, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_BIND_PORT, + g_param_spec_int ("bind-port", "Bind Port", + "Port to bind the socket to", 0, G_MAXUINT16, + UDP_DEFAULT_BIND_PORT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&sink_template)); @@ -141,12 +157,15 @@ static void gst_dynudpsink_init (GstDynUDPSink * sink) { sink->socket = UDP_DEFAULT_SOCKET; + sink->socket_v6 = UDP_DEFAULT_SOCKET; sink->close_socket = UDP_DEFAULT_CLOSE_SOCKET; sink->external_socket = FALSE; + sink->bind_address = UDP_DEFAULT_BIND_ADDRESS; + sink->bind_port = UDP_DEFAULT_BIND_PORT; sink->used_socket = NULL; + sink->used_socket_v6 = NULL; sink->cancellable = g_cancellable_new (); - sink->family = G_SOCKET_FAMILY_IPV6; } static void @@ -164,10 +183,21 @@ gst_dynudpsink_finalize (GObject * object) g_object_unref (sink->socket); sink->socket = NULL; + if (sink->socket_v6) + g_object_unref (sink->socket_v6); + sink->socket_v6 = NULL; + if (sink->used_socket) g_object_unref (sink->used_socket); sink->used_socket = NULL; + if (sink->used_socket_v6) + g_object_unref (sink->used_socket_v6); + sink->used_socket_v6 = NULL; + + g_free (sink->bind_address); + sink->bind_address = NULL; + G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -181,11 +211,12 @@ gst_dynudpsink_render (GstBaseSink * bsink, GstBuffer * buffer) GSocketAddress *addr; GError *err = NULL; GSocketFamily family; + GSocket *socket; meta = gst_buffer_get_net_address_meta (buffer); if (meta == NULL) { - GST_DEBUG ("Received buffer is not a GstNetBuffer, skipping"); + GST_DEBUG ("Received buffer without GstNetAddressMeta, skipping"); return GST_FLOW_OK; } @@ -195,7 +226,7 @@ gst_dynudpsink_render (GstBaseSink * bsink, GstBuffer * buffer) addr = meta->addr; family = g_socket_address_get_family (addr); - if (sink->family != family && family != G_SOCKET_FAMILY_IPV4) + if (family == G_SOCKET_FAMILY_IPV6 && !sink->used_socket_v6) goto invalid_family; gst_buffer_map (buffer, &map, GST_MAP_READ); @@ -216,8 +247,14 @@ gst_dynudpsink_render (GstBaseSink * bsink, GstBuffer * buffer) } #endif + /* Select socket to send from for this address */ + if (family == G_SOCKET_FAMILY_IPV6 || !sink->used_socket) + socket = sink->used_socket_v6; + else + socket = sink->used_socket; + ret = - g_socket_send_to (sink->used_socket, addr, (gchar *) map.data, map.size, + g_socket_send_to (socket, addr, (gchar *) map.data, map.size, sink->cancellable, &err); gst_buffer_unmap (buffer, &map); @@ -236,8 +273,7 @@ send_error: } invalid_family: { - GST_DEBUG ("invalid family (got %d, expected %d)", - g_socket_address_get_family (addr), sink->family); + GST_DEBUG ("invalid address family (got %d)", family); return GST_FLOW_ERROR; } } @@ -267,9 +303,33 @@ gst_dynudpsink_set_property (GObject * object, guint prop_id, udpsink->socket = g_value_dup_object (value); GST_DEBUG ("setting socket to %p", udpsink->socket); break; + case PROP_SOCKET_V6: + if (udpsink->socket_v6 != NULL + && udpsink->socket_v6 != udpsink->used_socket_v6 + && udpsink->close_socket) { + GError *err = NULL; + + if (!g_socket_close (udpsink->socket_v6, &err)) { + GST_ERROR ("failed to close socket %p: %s", udpsink->socket_v6, + err->message); + g_clear_error (&err); + } + } + if (udpsink->socket_v6) + g_object_unref (udpsink->socket_v6); + udpsink->socket_v6 = g_value_dup_object (value); + GST_DEBUG ("setting socket v6 to %p", udpsink->socket_v6); + break; case PROP_CLOSE_SOCKET: udpsink->close_socket = g_value_get_boolean (value); break; + case PROP_BIND_ADDRESS: + g_free (udpsink->bind_address); + udpsink->bind_address = g_value_dup_string (value); + break; + case PROP_BIND_PORT: + udpsink->bind_port = g_value_get_int (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -288,9 +348,18 @@ gst_dynudpsink_get_property (GObject * object, guint prop_id, GValue * value, case PROP_SOCKET: g_value_set_object (value, udpsink->socket); break; + case PROP_SOCKET_V6: + g_value_set_object (value, udpsink->socket_v6); + break; case PROP_CLOSE_SOCKET: g_value_set_boolean (value, udpsink->close_socket); break; + case PROP_BIND_ADDRESS: + g_value_set_string (value, udpsink->bind_address); + break; + case PROP_BIND_PORT: + g_value_set_int (value, udpsink->bind_port); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -306,46 +375,116 @@ gst_dynudpsink_start (GstBaseSink * bsink) udpsink = GST_DYNUDPSINK (bsink); - if (udpsink->socket == NULL) { + udpsink->external_socket = FALSE; + + if (udpsink->socket) { + if (g_socket_get_family (udpsink->socket) == G_SOCKET_FAMILY_IPV6) { + udpsink->used_socket_v6 = G_SOCKET (g_object_ref (udpsink->socket)); + udpsink->external_socket = TRUE; + } else { + udpsink->used_socket = G_SOCKET (g_object_ref (udpsink->socket)); + udpsink->external_socket = TRUE; + } + } + + if (udpsink->socket_v6) { + g_return_val_if_fail (g_socket_get_family (udpsink->socket) != + G_SOCKET_FAMILY_IPV6, FALSE); + + if (udpsink->used_socket_v6 + && udpsink->used_socket_v6 != udpsink->socket_v6) { + GST_ERROR_OBJECT (udpsink, + "Provided different IPv6 sockets in socket and socket-v6 properties"); + return FALSE; + } + + udpsink->used_socket_v6 = G_SOCKET (g_object_ref (udpsink->socket_v6)); + udpsink->external_socket = TRUE; + } + + if (!udpsink->used_socket && !udpsink->used_socket_v6) { GSocketAddress *bind_addr; GInetAddress *bind_iaddr; - /* create sender socket if none available, first try IPv6, then - * fall-back to IPv4 */ - udpsink->family = G_SOCKET_FAMILY_IPV6; - if ((udpsink->used_socket = - g_socket_new (G_SOCKET_FAMILY_IPV6, - G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, &err)) == NULL) { - g_clear_error (&err); - udpsink->family = G_SOCKET_FAMILY_IPV4; + if (udpsink->bind_address) { + GSocketFamily family; + + bind_iaddr = g_inet_address_new_from_string (udpsink->bind_address); + if (!bind_iaddr) { + GList *results; + GResolver *resolver; + + resolver = g_resolver_get_default (); + results = + g_resolver_lookup_by_name (resolver, udpsink->bind_address, + udpsink->cancellable, &err); + if (!results) { + g_object_unref (resolver); + goto name_resolve; + } + bind_iaddr = G_INET_ADDRESS (g_object_ref (results->data)); + g_resolver_free_addresses (results); + g_object_unref (resolver); + } + + bind_addr = g_inet_socket_address_new (bind_iaddr, udpsink->bind_port); + g_object_unref (bind_iaddr); + family = g_socket_address_get_family (G_SOCKET_ADDRESS (bind_addr)); + + if ((udpsink->used_socket = + g_socket_new (family, G_SOCKET_TYPE_DATAGRAM, + G_SOCKET_PROTOCOL_UDP, &err)) == NULL) { + g_object_unref (bind_addr); + goto no_socket; + } + + g_socket_bind (udpsink->used_socket, bind_addr, TRUE, &err); + if (err != NULL) + goto bind_error; + } else { + /* create sender sockets if none available */ if ((udpsink->used_socket = g_socket_new (G_SOCKET_FAMILY_IPV4, G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, &err)) == NULL) goto no_socket; - } - bind_iaddr = g_inet_address_new_any (udpsink->family); - bind_addr = g_inet_socket_address_new (bind_iaddr, 0); - g_socket_bind (udpsink->used_socket, bind_addr, TRUE, &err); - g_object_unref (bind_addr); - g_object_unref (bind_iaddr); - if (err != NULL) - goto bind_error; - - udpsink->external_socket = FALSE; - } else { - udpsink->used_socket = G_SOCKET (g_object_ref (udpsink->socket)); - udpsink->external_socket = TRUE; - udpsink->family = g_socket_get_family (udpsink->used_socket); + bind_iaddr = g_inet_address_new_any (G_SOCKET_FAMILY_IPV4); + bind_addr = g_inet_socket_address_new (bind_iaddr, 0); + g_socket_bind (udpsink->used_socket, bind_addr, TRUE, &err); + g_object_unref (bind_addr); + g_object_unref (bind_iaddr); + if (err != NULL) + goto bind_error; + + if ((udpsink->used_socket_v6 = g_socket_new (G_SOCKET_FAMILY_IPV6, + G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, + &err)) == NULL) { + GST_INFO_OBJECT (udpsink, "Failed to create IPv6 socket: %s", + err->message); + g_clear_error (&err); + } else { + bind_iaddr = g_inet_address_new_any (G_SOCKET_FAMILY_IPV6); + bind_addr = g_inet_socket_address_new (bind_iaddr, 0); + g_socket_bind (udpsink->used_socket_v6, bind_addr, TRUE, &err); + g_object_unref (bind_addr); + g_object_unref (bind_iaddr); + if (err != NULL) + goto bind_error; + } + } } - g_socket_set_broadcast (udpsink->used_socket, TRUE); + if (udpsink->used_socket) + g_socket_set_broadcast (udpsink->used_socket, TRUE); + if (udpsink->used_socket_v6) + g_socket_set_broadcast (udpsink->used_socket_v6, TRUE); return TRUE; /* ERRORS */ no_socket: { - GST_ERROR_OBJECT (udpsink, "Failed to create socket: %s", err->message); + GST_ERROR_OBJECT (udpsink, "Failed to create IPv4 socket: %s", + err->message); g_clear_error (&err); return FALSE; } @@ -356,6 +495,14 @@ bind_error: g_clear_error (&err); return FALSE; } +name_resolve: + { + GST_ELEMENT_ERROR (udpsink, RESOURCE, FAILED, (NULL), + ("Failed to resolve bind address %s: %s", udpsink->bind_address, + err->message)); + g_clear_error (&err); + return FALSE; + } } static GstStructure * @@ -385,6 +532,20 @@ gst_dynudpsink_stop (GstBaseSink * bsink) udpsink->used_socket = NULL; } + if (udpsink->used_socket_v6) { + if (udpsink->close_socket || !udpsink->external_socket) { + GError *err = NULL; + + if (!g_socket_close (udpsink->used_socket_v6, &err)) { + GST_ERROR_OBJECT (udpsink, "Failed to close socket: %s", err->message); + g_clear_error (&err); + } + } + + g_object_unref (udpsink->used_socket_v6); + udpsink->used_socket_v6 = NULL; + } + return TRUE; } diff --git a/gst/udp/gstdynudpsink.h b/gst/udp/gstdynudpsink.h index 38013288aae01fff7107bfde5965fae1ba0e9ceb..9b82eec8ec8851ac339342895933051f6a1c00f6 100644 --- a/gst/udp/gstdynudpsink.h +++ b/gst/udp/gstdynudpsink.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_DYNUDPSINK_H__ @@ -27,7 +27,6 @@ G_BEGIN_DECLS #include "gstudpnetutils.h" -#include "gstudp.h" #define GST_TYPE_DYNUDPSINK (gst_dynudpsink_get_type()) #define GST_DYNUDPSINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DYNUDPSINK,GstDynUDPSink)) @@ -45,14 +44,15 @@ struct _GstDynUDPSink { GstBaseSink parent; /* properties */ - GSocket *socket; + GSocket *socket, *socket_v6; gboolean close_socket; + gchar *bind_address; + gint bind_port; /* the socket in use */ - GSocket *used_socket; + GSocket *used_socket, *used_socket_v6; gboolean external_socket; GCancellable *cancellable; - GSocketFamily family; }; struct _GstDynUDPSinkClass { diff --git a/gst/udp/gstmultiudpsink.c b/gst/udp/gstmultiudpsink.c index 69011c77d783b4260da12213898d8bd9d7d9f66c..cb2674ba6de5886486cfe2ffa5cf472cde45d54a 100644 --- a/gst/udp/gstmultiudpsink.c +++ b/gst/udp/gstmultiudpsink.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -36,7 +36,6 @@ #ifdef HAVE_CONFIG_H #include "config.h" #endif -#include "gstudp-marshal.h" #include "gstmultiudpsink.h" #include <string.h> @@ -93,6 +92,8 @@ enum #define DEFAULT_QOS_DSCP -1 #define DEFAULT_SEND_DUPLICATES TRUE #define DEFAULT_BUFFER_SIZE 0 +#define DEFAULT_BIND_ADDRESS NULL +#define DEFAULT_BIND_PORT 0 enum { @@ -100,8 +101,10 @@ enum PROP_BYTES_TO_SERVE, PROP_BYTES_SERVED, PROP_SOCKET, + PROP_SOCKET_V6, PROP_CLOSE_SOCKET, PROP_USED_SOCKET, + PROP_USED_SOCKET_V6, PROP_CLIENTS, PROP_AUTO_MULTICAST, PROP_MULTICAST_IFACE, @@ -112,6 +115,8 @@ enum PROP_QOS_DSCP, PROP_SEND_DUPLICATES, PROP_BUFFER_SIZE, + PROP_BIND_ADDRESS, + PROP_BIND_PORT, PROP_LAST }; @@ -174,7 +179,7 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) g_signal_new ("add", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GstMultiUDPSinkClass, add), - NULL, NULL, gst_udp_marshal_VOID__STRING_INT, G_TYPE_NONE, 2, + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); /** * GstMultiUDPSink::remove: @@ -189,7 +194,7 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) g_signal_new ("remove", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GstMultiUDPSinkClass, remove), - NULL, NULL, gst_udp_marshal_VOID__STRING_INT, G_TYPE_NONE, 2, + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); /** * GstMultiUDPSink::clear: @@ -201,7 +206,7 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) g_signal_new ("clear", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GstMultiUDPSinkClass, clear), - NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * GstMultiUDPSink::get-stats: * @gstmultiudpsink: the sink on which the signal is emitted @@ -217,7 +222,7 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) g_signal_new ("get-stats", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GstMultiUDPSinkClass, get_stats), - NULL, NULL, gst_udp_marshal_BOXED__STRING_INT, GST_TYPE_STRUCTURE, 2, + NULL, NULL, g_cclosure_marshal_generic, GST_TYPE_STRUCTURE, 2, G_TYPE_STRING, G_TYPE_INT); /** * GstMultiUDPSink::client-added: @@ -231,7 +236,7 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) gst_multiudpsink_signals[SIGNAL_CLIENT_ADDED] = g_signal_new ("client-added", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstMultiUDPSinkClass, client_added), - NULL, NULL, gst_udp_marshal_VOID__STRING_INT, G_TYPE_NONE, 2, + NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); /** * GstMultiUDPSink::client-removed: @@ -245,7 +250,7 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) gst_multiudpsink_signals[SIGNAL_CLIENT_REMOVED] = g_signal_new ("client-removed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstMultiUDPSinkClass, - client_removed), NULL, NULL, gst_udp_marshal_VOID__STRING_INT, + client_removed), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_BYTES_TO_SERVE, @@ -260,6 +265,10 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) g_param_spec_object ("socket", "Socket Handle", "Socket to use for UDP sending. (NULL == allocate)", G_TYPE_SOCKET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_SOCKET_V6, + g_param_spec_object ("socket-v6", "Socket Handle IPv6", + "Socket to use for UDPv6 sending. (NULL == allocate)", + G_TYPE_SOCKET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_CLOSE_SOCKET, g_param_spec_boolean ("close-socket", "Close socket", "Close socket if passed as property on state change", @@ -268,6 +277,10 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) g_param_spec_object ("used-socket", "Used Socket Handle", "Socket currently in use for UDP sending. (NULL == no socket)", G_TYPE_SOCKET, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_USED_SOCKET_V6, + g_param_spec_object ("used-socket-v6", "Used Socket Handle IPv6", + "Socket currently in use for UDPv6 sending. (NULL == no socket)", + G_TYPE_SOCKET, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_CLIENTS, g_param_spec_string ("clients", "Clients", "A comma separated list of host:port pairs with destinations", @@ -304,8 +317,8 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) */ g_object_class_install_property (gobject_class, PROP_FORCE_IPV4, g_param_spec_boolean ("force-ipv4", "Force IPv4", - "Forcing the use of an IPv4 socket", DEFAULT_FORCE_IPV4, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + "Forcing the use of an IPv4 socket (DEPRECATED, has no effect anymore)", + DEFAULT_FORCE_IPV4, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_QOS_DSCP, g_param_spec_int ("qos-dscp", "QoS diff srv code point", @@ -331,6 +344,15 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) "Size of the kernel send buffer in bytes, 0=default", 0, G_MAXINT, DEFAULT_BUFFER_SIZE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_BIND_ADDRESS, + g_param_spec_string ("bind-address", "Bind Address", + "Address to bind the socket to", DEFAULT_BIND_ADDRESS, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_BIND_PORT, + g_param_spec_int ("bind-port", "Bind Port", + "Port to bind the socket to", 0, G_MAXUINT16, + DEFAULT_BIND_PORT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&sink_template)); @@ -356,9 +378,13 @@ gst_multiudpsink_class_init (GstMultiUDPSinkClass * klass) static void gst_multiudpsink_init (GstMultiUDPSink * sink) { + guint max_mem; + g_mutex_init (&sink->client_lock); sink->socket = DEFAULT_SOCKET; + sink->socket_v6 = DEFAULT_SOCKET; sink->used_socket = DEFAULT_USED_SOCKET; + sink->used_socket_v6 = DEFAULT_USED_SOCKET; sink->close_socket = DEFAULT_CLOSE_SOCKET; sink->external_socket = (sink->socket != NULL); sink->auto_multicast = DEFAULT_AUTO_MULTICAST; @@ -371,6 +397,14 @@ gst_multiudpsink_init (GstMultiUDPSink * sink) sink->multi_iface = g_strdup (DEFAULT_MULTICAST_IFACE); sink->cancellable = g_cancellable_new (); + + /* allocate OutputVector and MapInfo for use in the render function, buffers can + * hold up to a maximum amount of memory so we can create a maximally sized + * array for them. */ + max_mem = gst_buffer_get_max_memory (); + + sink->vec = g_new (GOutputVector, max_mem); + sink->map = g_new (GstMapInfo, max_mem); } static GstUDPClient * @@ -452,10 +486,18 @@ gst_multiudpsink_finalize (GObject * object) g_object_unref (sink->socket); sink->socket = NULL; + if (sink->socket_v6) + g_object_unref (sink->socket_v6); + sink->socket_v6 = NULL; + if (sink->used_socket) g_object_unref (sink->used_socket); sink->used_socket = NULL; + if (sink->used_socket_v6) + g_object_unref (sink->used_socket_v6); + sink->used_socket_v6 = NULL; + if (sink->cancellable) g_object_unref (sink->cancellable); sink->cancellable = NULL; @@ -463,6 +505,14 @@ gst_multiudpsink_finalize (GObject * object) g_free (sink->multi_iface); sink->multi_iface = NULL; + g_free (sink->vec); + sink->vec = NULL; + g_free (sink->map); + sink->map = NULL; + + g_free (sink->bind_address); + sink->bind_address = NULL; + g_mutex_clear (&sink->client_lock); G_OBJECT_CLASS (parent_class)->finalize (object); @@ -487,8 +537,10 @@ gst_multiudpsink_render (GstBaseSink * bsink, GstBuffer * buffer) if (n_mem == 0) goto no_data; - vec = g_new (GOutputVector, n_mem); - map = g_new (GstMapInfo, n_mem); + /* allocated on the stack, the max number of memory blocks is limited so this + * should not cause stack overflows */ + vec = sink->vec; + map = sink->map; size = 0; for (i = 0; i < n_mem; i++) { @@ -506,12 +558,15 @@ gst_multiudpsink_render (GstBaseSink * bsink, GstBuffer * buffer) /* grab lock while iterating and sending to clients, this should be * fast as UDP never blocks */ g_mutex_lock (&sink->client_lock); - GST_LOG_OBJECT (bsink, "about to send %" G_GSIZE_FORMAT " bytes", size); + GST_LOG_OBJECT (bsink, "about to send %" G_GSIZE_FORMAT " bytes in %u blocks", + size, n_mem); no_clients = 0; num = 0; for (clients = sink->clients; clients; clients = g_list_next (clients)) { GstUDPClient *client; + GSocket *socket; + GSocketFamily family; gint count; client = (GstUDPClient *) clients->data; @@ -519,13 +574,20 @@ gst_multiudpsink_render (GstBaseSink * bsink, GstBuffer * buffer) GST_LOG_OBJECT (sink, "sending %" G_GSIZE_FORMAT " bytes to client %p", size, client); + family = g_socket_address_get_family (G_SOCKET_ADDRESS (client->addr)); + /* Select socket to send from for this address */ + if (family == G_SOCKET_FAMILY_IPV6 || !sink->used_socket) + socket = sink->used_socket_v6; + else + socket = sink->used_socket; + count = sink->send_duplicates ? client->refcount : 1; while (count--) { gssize ret; ret = - g_socket_send_message (sink->used_socket, client->addr, vec, n_mem, + g_socket_send_message (socket, client->addr, vec, n_mem, NULL, 0, 0, sink->cancellable, &err); if (G_UNLIKELY (ret < 0)) { @@ -561,9 +623,6 @@ gst_multiudpsink_render (GstBaseSink * bsink, GstBuffer * buffer) gst_memory_unref (map[i].memory); } - g_free (vec); - g_free (map); - GST_LOG_OBJECT (sink, "sent %" G_GSIZE_FORMAT " bytes to %d (of %d) clients", size, num, no_clients); @@ -643,13 +702,13 @@ gst_multiudpsink_get_clients_string (GstMultiUDPSink * sink) } static void -gst_multiudpsink_setup_qos_dscp (GstMultiUDPSink * sink) +gst_multiudpsink_setup_qos_dscp (GstMultiUDPSink * sink, GSocket * socket) { /* don't touch on -1 */ if (sink->qos_dscp < 0) return; - if (sink->used_socket == NULL) + if (socket == NULL) return; #ifdef IP_TOS @@ -657,7 +716,7 @@ gst_multiudpsink_setup_qos_dscp (GstMultiUDPSink * sink) gint tos; gint fd; - fd = g_socket_get_fd (sink->used_socket); + fd = g_socket_get_fd (socket); GST_DEBUG_OBJECT (sink, "setting TOS to %d", sink->qos_dscp); @@ -701,6 +760,23 @@ gst_multiudpsink_set_property (GObject * object, guint prop_id, udpsink->socket = g_value_dup_object (value); GST_DEBUG_OBJECT (udpsink, "setting socket to %p", udpsink->socket); break; + case PROP_SOCKET_V6: + if (udpsink->socket_v6 != NULL + && udpsink->socket_v6 != udpsink->used_socket_v6 + && udpsink->close_socket) { + GError *err = NULL; + + if (!g_socket_close (udpsink->socket_v6, &err)) { + GST_ERROR ("failed to close socket %p: %s", udpsink->socket_v6, + err->message); + g_clear_error (&err); + } + } + if (udpsink->socket_v6) + g_object_unref (udpsink->socket_v6); + udpsink->socket_v6 = g_value_dup_object (value); + GST_DEBUG_OBJECT (udpsink, "setting socket to %p", udpsink->socket_v6); + break; case PROP_CLOSE_SOCKET: udpsink->close_socket = g_value_get_boolean (value); break; @@ -732,7 +808,8 @@ gst_multiudpsink_set_property (GObject * object, guint prop_id, break; case PROP_QOS_DSCP: udpsink->qos_dscp = g_value_get_int (value); - gst_multiudpsink_setup_qos_dscp (udpsink); + gst_multiudpsink_setup_qos_dscp (udpsink, udpsink->used_socket); + gst_multiudpsink_setup_qos_dscp (udpsink, udpsink->used_socket_v6); break; case PROP_SEND_DUPLICATES: udpsink->send_duplicates = g_value_get_boolean (value); @@ -740,6 +817,13 @@ gst_multiudpsink_set_property (GObject * object, guint prop_id, case PROP_BUFFER_SIZE: udpsink->buffer_size = g_value_get_int (value); break; + case PROP_BIND_ADDRESS: + g_free (udpsink->bind_address); + udpsink->bind_address = g_value_dup_string (value); + break; + case PROP_BIND_PORT: + udpsink->bind_port = g_value_get_int (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -764,12 +848,18 @@ gst_multiudpsink_get_property (GObject * object, guint prop_id, GValue * value, case PROP_SOCKET: g_value_set_object (value, udpsink->socket); break; + case PROP_SOCKET_V6: + g_value_set_object (value, udpsink->socket_v6); + break; case PROP_CLOSE_SOCKET: g_value_set_boolean (value, udpsink->close_socket); break; case PROP_USED_SOCKET: g_value_set_object (value, udpsink->used_socket); break; + case PROP_USED_SOCKET_V6: + g_value_set_object (value, udpsink->used_socket_v6); + break; case PROP_CLIENTS: g_value_take_string (value, gst_multiudpsink_get_clients_string (udpsink)); @@ -801,6 +891,12 @@ gst_multiudpsink_get_property (GObject * object, guint prop_id, GValue * value, case PROP_BUFFER_SIZE: g_value_set_int (value, udpsink->buffer_size); break; + case PROP_BIND_ADDRESS: + g_value_set_string (value, udpsink->bind_address); + break; + case PROP_BIND_PORT: + g_value_set_int (value, udpsink->bind_port); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -813,25 +909,36 @@ gst_multiudpsink_configure_client (GstMultiUDPSink * sink, { GInetSocketAddress *saddr = G_INET_SOCKET_ADDRESS (client->addr); GInetAddress *addr = g_inet_socket_address_get_address (saddr); + GSocketFamily family = g_socket_address_get_family (G_SOCKET_ADDRESS (saddr)); + GSocket *socket; GError *err = NULL; GST_DEBUG_OBJECT (sink, "configuring client %p", client); + if (family == G_SOCKET_FAMILY_IPV6 && !sink->used_socket_v6) + goto invalid_family; + + /* Select socket to send from for this address */ + if (family == G_SOCKET_FAMILY_IPV6 || !sink->used_socket) + socket = sink->used_socket_v6; + else + socket = sink->used_socket; + if (g_inet_address_get_is_multicast (addr)) { GST_DEBUG_OBJECT (sink, "we have a multicast client %p", client); if (sink->auto_multicast) { GST_DEBUG_OBJECT (sink, "autojoining group"); - if (!g_socket_join_multicast_group (sink->used_socket, addr, FALSE, + if (!g_socket_join_multicast_group (socket, addr, FALSE, sink->multi_iface, &err)) goto join_group_failed; } GST_DEBUG_OBJECT (sink, "setting loop to %d", sink->loop); - g_socket_set_multicast_loopback (sink->used_socket, sink->loop); + g_socket_set_multicast_loopback (socket, sink->loop); GST_DEBUG_OBJECT (sink, "setting ttl to %d", sink->ttl_mc); - g_socket_set_multicast_ttl (sink->used_socket, sink->ttl_mc); + g_socket_set_multicast_ttl (socket, sink->ttl_mc); } else { GST_DEBUG_OBJECT (sink, "setting unicast ttl to %d", sink->ttl); - g_socket_set_ttl (sink->used_socket, sink->ttl); + g_socket_set_ttl (socket, sink->ttl); } return TRUE; @@ -845,6 +952,13 @@ join_group_failed: g_clear_error (&err); return FALSE; } +invalid_family: + { + gst_multiudpsink_stop (GST_BASE_SINK (sink)); + GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, (NULL), + ("Invalid address family (got %d)", family)); + return FALSE; + } } /* create a socket for sending to remote machine */ @@ -858,41 +972,104 @@ gst_multiudpsink_start (GstBaseSink * bsink) sink = GST_MULTIUDPSINK (bsink); - if (sink->socket == NULL) { + sink->external_socket = FALSE; + + if (sink->socket) { + GST_DEBUG_OBJECT (sink, "using configured socket"); + if (g_socket_get_family (sink->socket) == G_SOCKET_FAMILY_IPV6) { + sink->used_socket_v6 = G_SOCKET (g_object_ref (sink->socket)); + sink->external_socket = TRUE; + } else { + sink->used_socket = G_SOCKET (g_object_ref (sink->socket)); + sink->external_socket = TRUE; + } + } + + if (sink->socket_v6) { + GST_DEBUG_OBJECT (sink, "using configured IPv6 socket"); + g_return_val_if_fail (g_socket_get_family (sink->socket) != + G_SOCKET_FAMILY_IPV6, FALSE); + + if (sink->used_socket_v6 && sink->used_socket_v6 != sink->socket_v6) { + GST_ERROR_OBJECT (sink, + "Provided different IPv6 sockets in socket and socket-v6 properties"); + return FALSE; + } + + sink->used_socket_v6 = G_SOCKET (g_object_ref (sink->socket_v6)); + sink->external_socket = TRUE; + } + + if (!sink->used_socket && !sink->used_socket_v6) { GSocketAddress *bind_addr; GInetAddress *bind_iaddr; - GSocketFamily family = G_SOCKET_FAMILY_IPV6; - - GST_DEBUG_OBJECT (sink, "creating sockets"); - /* create sender socket try IP6, fall back to IP4 */ - if (sink->force_ipv4 || (sink->used_socket = - g_socket_new (G_SOCKET_FAMILY_IPV6, - G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, &err)) == NULL) { - g_clear_error (&err); + + if (sink->bind_address) { + GSocketFamily family; + + bind_iaddr = g_inet_address_new_from_string (sink->bind_address); + if (!bind_iaddr) { + GList *results; + GResolver *resolver; + + resolver = g_resolver_get_default (); + results = + g_resolver_lookup_by_name (resolver, sink->bind_address, + sink->cancellable, &err); + if (!results) { + g_object_unref (resolver); + goto name_resolve; + } + bind_iaddr = G_INET_ADDRESS (g_object_ref (results->data)); + g_resolver_free_addresses (results); + g_object_unref (resolver); + } + + bind_addr = g_inet_socket_address_new (bind_iaddr, sink->bind_port); + g_object_unref (bind_iaddr); + family = g_socket_address_get_family (G_SOCKET_ADDRESS (bind_addr)); + + if ((sink->used_socket = + g_socket_new (family, G_SOCKET_TYPE_DATAGRAM, + G_SOCKET_PROTOCOL_UDP, &err)) == NULL) { + g_object_unref (bind_addr); + goto no_socket; + } + + g_socket_bind (sink->used_socket, bind_addr, TRUE, &err); + if (err != NULL) + goto bind_error; + } else { + /* create sender sockets if none available */ if ((sink->used_socket = g_socket_new (G_SOCKET_FAMILY_IPV4, G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, &err)) == NULL) goto no_socket; - else - family = G_SOCKET_FAMILY_IPV4; - } - bind_iaddr = g_inet_address_new_any (family); - bind_addr = g_inet_socket_address_new (bind_iaddr, 0); - g_socket_bind (sink->used_socket, bind_addr, TRUE, &err); - g_object_unref (bind_addr); - g_object_unref (bind_iaddr); - if (err != NULL) - goto bind_error; - - GST_DEBUG_OBJECT (sink, "have socket"); - sink->external_socket = FALSE; - } else { - GST_DEBUG_OBJECT (sink, "using configured socket"); - /* we use the configured socket */ - sink->used_socket = G_SOCKET (g_object_ref (sink->socket)); - sink->external_socket = TRUE; + bind_iaddr = g_inet_address_new_any (G_SOCKET_FAMILY_IPV4); + bind_addr = g_inet_socket_address_new (bind_iaddr, 0); + g_socket_bind (sink->used_socket, bind_addr, TRUE, &err); + g_object_unref (bind_addr); + g_object_unref (bind_iaddr); + if (err != NULL) + goto bind_error; + + if ((sink->used_socket_v6 = g_socket_new (G_SOCKET_FAMILY_IPV6, + G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, + &err)) == NULL) { + GST_INFO_OBJECT (sink, "Failed to create IPv6 socket: %s", + err->message); + g_clear_error (&err); + } else { + bind_iaddr = g_inet_address_new_any (G_SOCKET_FAMILY_IPV6); + bind_addr = g_inet_socket_address_new (bind_iaddr, 0); + g_socket_bind (sink->used_socket_v6, bind_addr, TRUE, &err); + g_object_unref (bind_addr); + g_object_unref (bind_iaddr); + if (err != NULL) + goto bind_error; + } + } } - #ifdef SO_SNDBUF { socklen_t len; @@ -906,35 +1083,78 @@ gst_multiudpsink_start (GstBaseSink * bsink) /* set buffer size, Note that on Linux this is typically limited to a * maximum of around 100K. Also a minimum of 128 bytes is required on * Linux. */ - ret = - setsockopt (g_socket_get_fd (sink->used_socket), SOL_SOCKET, - SO_SNDBUF, (void *) &sndsize, len); - if (ret != 0) { - GST_ELEMENT_WARNING (sink, RESOURCE, SETTINGS, (NULL), - ("Could not create a buffer of requested %d bytes, %d: %s", - sndsize, ret, g_strerror (errno))); + + if (sink->used_socket) { + ret = + setsockopt (g_socket_get_fd (sink->used_socket), SOL_SOCKET, + SO_SNDBUF, (void *) &sndsize, len); + if (ret != 0) { + GST_ELEMENT_WARNING (sink, RESOURCE, SETTINGS, (NULL), + ("Could not create a buffer of requested %d bytes, %d: %s", + sndsize, ret, g_strerror (errno))); + } + } + + if (sink->used_socket_v6) { + ret = + setsockopt (g_socket_get_fd (sink->used_socket_v6), SOL_SOCKET, + SO_SNDBUF, (void *) &sndsize, len); + if (ret != 0) { + GST_ELEMENT_WARNING (sink, RESOURCE, SETTINGS, (NULL), + ("Could not create a buffer of requested %d bytes, %d: %s", + sndsize, ret, g_strerror (errno))); + } } } /* read the value of the receive buffer. Note that on linux this returns 2x the * value we set because the kernel allocates extra memory for metadata. * The default on Linux is about 100K (which is about 50K without metadata) */ - ret = - getsockopt (g_socket_get_fd (sink->used_socket), SOL_SOCKET, SO_SNDBUF, - (void *) &sndsize, &len); - if (ret == 0) - GST_DEBUG_OBJECT (sink, "have udp buffer of %d bytes", sndsize); - else - GST_DEBUG_OBJECT (sink, "could not get udp buffer size"); + if (sink->used_socket) { + ret = + getsockopt (g_socket_get_fd (sink->used_socket), SOL_SOCKET, + SO_SNDBUF, (void *) &sndsize, &len); + if (ret == 0) + GST_DEBUG_OBJECT (sink, "have UDP buffer of %d bytes", sndsize); + else + GST_DEBUG_OBJECT (sink, "could not get UDP buffer size"); + } + + if (sink->used_socket_v6) { + ret = + getsockopt (g_socket_get_fd (sink->used_socket_v6), SOL_SOCKET, + SO_SNDBUF, (void *) &sndsize, &len); + if (ret == 0) + GST_DEBUG_OBJECT (sink, "have UDPv6 buffer of %d bytes", sndsize); + else + GST_DEBUG_OBJECT (sink, "could not get UDPv6 buffer size"); + } } #endif - g_socket_set_broadcast (sink->used_socket, TRUE); +#ifdef SO_BINDTODEVICE + if (sink->multi_iface) { + if (sink->used_socket) { + setsockopt (g_socket_get_fd (sink->used_socket), SOL_SOCKET, + SO_BINDTODEVICE, sink->multi_iface, strlen (sink->multi_iface)); + } + if (sink->used_socket_v6) { + setsockopt (g_socket_get_fd (sink->used_socket_v6), SOL_SOCKET, + SO_BINDTODEVICE, sink->multi_iface, strlen (sink->multi_iface)); + } + } +#endif + + if (sink->used_socket) + g_socket_set_broadcast (sink->used_socket, TRUE); + if (sink->used_socket_v6) + g_socket_set_broadcast (sink->used_socket_v6, TRUE); sink->bytes_to_serve = 0; sink->bytes_served = 0; - gst_multiudpsink_setup_qos_dscp (sink); + gst_multiudpsink_setup_qos_dscp (sink, sink->used_socket); + gst_multiudpsink_setup_qos_dscp (sink, sink->used_socket_v6); /* look for multicast clients and join multicast groups appropriately set also ttl and multicast loopback delivery appropriately */ @@ -961,6 +1181,14 @@ bind_error: g_clear_error (&err); return FALSE; } +name_resolve: + { + GST_ELEMENT_ERROR (sink, RESOURCE, FAILED, (NULL), + ("Failed to resolve bind address %s: %s", sink->bind_address, + err->message)); + g_clear_error (&err); + return FALSE; + } } static gboolean @@ -984,6 +1212,20 @@ gst_multiudpsink_stop (GstBaseSink * bsink) udpsink->used_socket = NULL; } + if (udpsink->used_socket_v6) { + if (udpsink->close_socket || !udpsink->external_socket) { + GError *err = NULL; + + if (!g_socket_close (udpsink->used_socket_v6, &err)) { + GST_ERROR_OBJECT (udpsink, "Failed to close socket: %s", err->message); + g_clear_error (&err); + } + } + + g_object_unref (udpsink->used_socket_v6); + udpsink->used_socket_v6 = NULL; + } + return TRUE; } @@ -1079,17 +1321,26 @@ gst_multiudpsink_remove (GstMultiUDPSink * sink, const gchar * host, gint port) if (client->refcount == 0) { GInetSocketAddress *saddr = G_INET_SOCKET_ADDRESS (client->addr); GInetAddress *addr = g_inet_socket_address_get_address (saddr); + GSocketFamily family = + g_socket_address_get_family (G_SOCKET_ADDRESS (saddr)); + GSocket *socket; + + /* Select socket to send from for this address */ + if (family == G_SOCKET_FAMILY_IPV6 || !sink->used_socket) + socket = sink->used_socket_v6; + else + socket = sink->used_socket; GST_DEBUG_OBJECT (sink, "remove client with host %s, port %d", host, port); g_get_current_time (&now); client->disconnect_time = GST_TIMEVAL_TO_TIME (now); - if (sink->used_socket && sink->auto_multicast + if (socket && sink->auto_multicast && g_inet_address_get_is_multicast (addr)) { GError *err = NULL; - if (!g_socket_leave_multicast_group (sink->used_socket, addr, FALSE, + if (!g_socket_leave_multicast_group (socket, addr, FALSE, sink->multi_iface, &err)) { GST_DEBUG_OBJECT (sink, "Failed to leave multicast group: %s", err->message); diff --git a/gst/udp/gstmultiudpsink.h b/gst/udp/gstmultiudpsink.h index a3e96c644e5b35a3828d0b37185164b8f30ab307..a1be566b65e0364fbb0ae6a15ad8a332b15d58fe 100644 --- a/gst/udp/gstmultiudpsink.h +++ b/gst/udp/gstmultiudpsink.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_MULTIUDPSINK_H__ @@ -27,7 +27,6 @@ G_BEGIN_DECLS #include "gstudpnetutils.h" -#include "gstudp.h" #define GST_TYPE_MULTIUDPSINK (gst_multiudpsink_get_type()) #define GST_MULTIUDPSINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MULTIUDPSINK,GstMultiUDPSink)) @@ -57,16 +56,19 @@ typedef struct { struct _GstMultiUDPSink { GstBaseSink parent; - GSocket *used_socket; + GSocket *used_socket, *used_socket_v6; GCancellable *cancellable; GMutex client_lock; GList *clients; + GOutputVector *vec; + GstMapInfo *map; + /* properties */ guint64 bytes_to_serve; guint64 bytes_served; - GSocket *socket; + GSocket *socket, *socket_v6; gboolean close_socket; gboolean external_socket; @@ -81,6 +83,8 @@ struct _GstMultiUDPSink { gboolean send_duplicates; gint buffer_size; + gchar *bind_address; + gint bind_port; }; struct _GstMultiUDPSinkClass { diff --git a/gst/udp/gstudp-marshal.list b/gst/udp/gstudp-marshal.list deleted file mode 100644 index b53e79c15eb29ddd48e9dd2bda74fa05b7c4617c..0000000000000000000000000000000000000000 --- a/gst/udp/gstudp-marshal.list +++ /dev/null @@ -1,2 +0,0 @@ -VOID:STRING,INT -BOXED:STRING,INT diff --git a/gst/udp/gstudp.c b/gst/udp/gstudp.c index b9c9fe70ecf3fe24cfc8ca06a9313d7d2fd97b3e..eb021122e9204565318c70cc7826a441ae13800e 100644 --- a/gst/udp/gstudp.c +++ b/gst/udp/gstudp.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -31,6 +31,12 @@ static gboolean plugin_init (GstPlugin * plugin) { + /* not using GLIB_CHECK_VERSION on purpose, run-time version matters */ + if (glib_check_version (2, 36, 0) != NULL) { + GST_WARNING ("Your GLib version is < 2.36, UDP multicasting support may " + "be broken, see https://bugzilla.gnome.org/show_bug.cgi?id=688378"); + } + /* register info of the netaddress metadata so that we can use it from * multiple threads right away. Note that the plugin loading is always * serialized */ diff --git a/gst/udp/gstudp.h b/gst/udp/gstudp.h deleted file mode 100644 index f6879377ce3aafc32f599248f0a5a82745f6b873..0000000000000000000000000000000000000000 --- a/gst/udp/gstudp.h +++ /dev/null @@ -1,39 +0,0 @@ -/* GStreamer - * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "gstudp-enumtypes.h" -#include <glib.h> - -#ifndef __GST_UDP_H__ -#define __GST_UDP_H__ - -G_BEGIN_DECLS - -typedef enum -{ - CONTROL_ZERO, - CONTROL_NONE, - CONTROL_UDP, - CONTROL_TCP -} GstUDPControl; - -G_END_DECLS - -#endif /* __GST_UDP_H__ */ - diff --git a/gst/udp/gstudpnetutils.c b/gst/udp/gstudpnetutils.c index 217c70849b7720b4edbdc430e59d5a9b3ba14a91..b4dc5ef0186894e17ff694086c97278d1a2a37c4 100644 --- a/gst/udp/gstudpnetutils.c +++ b/gst/udp/gstudpnetutils.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/udp/gstudpnetutils.h b/gst/udp/gstudpnetutils.h index 8e8665cced27b5f965db692acf983c17b7fbbc4c..a62be562cb8ec8da5feb6afcaac9e0b95ffad1be 100644 --- a/gst/udp/gstudpnetutils.h +++ b/gst/udp/gstudpnetutils.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/gst.h> diff --git a/gst/udp/gstudpsink.c b/gst/udp/gstudpsink.c index b59917f633ad3c97a46c75153497cba909641567..224d57818db3ef2e7b3b90988f2fcce501a051b8 100644 --- a/gst/udp/gstudpsink.c +++ b/gst/udp/gstudpsink.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-udpsink diff --git a/gst/udp/gstudpsink.h b/gst/udp/gstudpsink.h index b04fdda92cedf7013b2ea96b06e224e5cd03bd37..a7b5b343b18f6ce0623ffcbf46e2c3b08dbbc11f 100644 --- a/gst/udp/gstudpsink.h +++ b/gst/udp/gstudpsink.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ @@ -26,7 +26,6 @@ G_BEGIN_DECLS -#include "gstudp.h" #include "gstudpnetutils.h" #define GST_TYPE_UDPSINK (gst_udpsink_get_type()) diff --git a/gst/udp/gstudpsrc.c b/gst/udp/gstudpsrc.c index bdad5b30a597ed390b31de1312fb44308a1a6756..922e381d887663b9f33a4226dae014126d0d3601 100644 --- a/gst/udp/gstudpsrc.c +++ b/gst/udp/gstudpsrc.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -131,6 +131,9 @@ #endif #endif +/* not 100% correct, but a good upper bound for memory allocation purposes */ +#define MAX_IPV4_UDP_PACKET_SIZE (65536 - 8) + GST_DEBUG_CATEGORY_STATIC (udpsrc_debug); #define GST_CAT_DEFAULT (udpsrc_debug) @@ -170,6 +173,7 @@ enum PROP_USED_SOCKET, PROP_AUTO_MULTICAST, PROP_REUSE, + PROP_ADDRESS, PROP_LAST }; @@ -222,9 +226,11 @@ gst_udpsrc_class_init (GstUDPSrcClass * klass) g_param_spec_int ("port", "Port", "The port to receive the packets from, 0=allocate", 0, G_MAXUINT16, UDP_DEFAULT_PORT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /* FIXME 2.0: Remove multicast-group property */ g_object_class_install_property (gobject_class, PROP_MULTICAST_GROUP, g_param_spec_string ("multicast-group", "Multicast Group", - "The Address of multicast group to join", UDP_DEFAULT_MULTICAST_GROUP, + "The Address of multicast group to join. DEPRECATED: " + "Use address property instead", UDP_DEFAULT_MULTICAST_GROUP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_MULTICAST_IFACE, g_param_spec_string ("multicast-iface", "Multicast Interface", @@ -274,6 +280,11 @@ gst_udpsrc_class_init (GstUDPSrcClass * klass) g_object_class_install_property (gobject_class, PROP_REUSE, g_param_spec_boolean ("reuse", "Reuse", "Enable reuse of the port", UDP_DEFAULT_REUSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_ADDRESS, + g_param_spec_string ("address", "Address", + "Address to receive packets for. This is equivalent to the " + "multicast-group property for now", UDP_DEFAULT_MULTICAST_GROUP, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&src_template)); @@ -300,7 +311,7 @@ gst_udpsrc_init (GstUDPSrc * udpsrc) g_strdup_printf ("udp://%s:%u", UDP_DEFAULT_MULTICAST_GROUP, UDP_DEFAULT_PORT); - udpsrc->host = g_strdup (UDP_DEFAULT_MULTICAST_GROUP); + udpsrc->address = g_strdup (UDP_DEFAULT_MULTICAST_GROUP); udpsrc->port = UDP_DEFAULT_PORT; udpsrc->socket = UDP_DEFAULT_SOCKET; udpsrc->multi_iface = g_strdup (UDP_DEFAULT_MULTICAST_IFACE); @@ -341,8 +352,8 @@ gst_udpsrc_finalize (GObject * object) g_free (udpsrc->uri); udpsrc->uri = NULL; - g_free (udpsrc->host); - udpsrc->host = NULL; + g_free (udpsrc->address); + udpsrc->address = NULL; if (udpsrc->socket) g_object_unref (udpsrc->socket); @@ -397,13 +408,20 @@ retry: goto no_select; do { + gint64 timeout; + try_again = FALSE; + if (udpsrc->timeout) + timeout = udpsrc->timeout / 1000; + else + timeout = -1; + GST_LOG_OBJECT (udpsrc, "doing select, timeout %" G_GUINT64_FORMAT, - udpsrc->timeout); + timeout); - if (!g_socket_condition_wait (udpsrc->used_socket, G_IO_IN | G_IO_PRI, - udpsrc->cancellable, &err)) { + if (!g_socket_condition_timed_wait (udpsrc->used_socket, G_IO_IN | G_IO_PRI, + timeout, udpsrc->cancellable, &err)) { if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_BUSY) || g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { goto stopped; @@ -450,6 +468,11 @@ retry: no_select: GST_LOG_OBJECT (udpsrc, "ioctl says %d bytes available", (int) readsize); + /* sanity check value from _get_available_bytes(), which might be as + * large as the kernel-side buffer on some operating systems */ + if (g_socket_get_family (udpsrc->used_socket) == G_SOCKET_FAMILY_IPV4) + readsize = MIN (MAX_IPV4_UDP_PACKET_SIZE, readsize); + ret = GST_BASE_SRC_CLASS (parent_class)->alloc (GST_BASE_SRC_CAST (udpsrc), -1, readsize, &outbuf); if (ret != GST_FLOW_OK) @@ -560,17 +583,17 @@ skip_error: static gboolean gst_udpsrc_set_uri (GstUDPSrc * src, const gchar * uri, GError ** error) { - gchar *host; + gchar *address; guint16 port; - if (!gst_udp_parse_uri (uri, &host, &port)) + if (!gst_udp_parse_uri (uri, &address, &port)) goto wrong_uri; if (port == (guint16) - 1) port = UDP_DEFAULT_PORT; - g_free (src->host); - src->host = host; + g_free (src->address); + src->address = address; src->port = port; g_free (src->uri); @@ -602,20 +625,23 @@ gst_udpsrc_set_property (GObject * object, guint prop_id, const GValue * value, case PROP_PORT: udpsrc->port = g_value_get_int (value); g_free (udpsrc->uri); - udpsrc->uri = g_strdup_printf ("udp://%s:%u", udpsrc->host, udpsrc->port); + udpsrc->uri = + g_strdup_printf ("udp://%s:%u", udpsrc->address, udpsrc->port); break; case PROP_MULTICAST_GROUP: + case PROP_ADDRESS: { const gchar *group; - g_free (udpsrc->host); + g_free (udpsrc->address); if ((group = g_value_get_string (value))) - udpsrc->host = g_strdup (group); + udpsrc->address = g_strdup (group); else - udpsrc->host = g_strdup (UDP_DEFAULT_MULTICAST_GROUP); + udpsrc->address = g_strdup (UDP_DEFAULT_MULTICAST_GROUP); g_free (udpsrc->uri); - udpsrc->uri = g_strdup_printf ("udp://%s:%u", udpsrc->host, udpsrc->port); + udpsrc->uri = + g_strdup_printf ("udp://%s:%u", udpsrc->address, udpsrc->port); break; } case PROP_MULTICAST_IFACE: @@ -700,7 +726,8 @@ gst_udpsrc_get_property (GObject * object, guint prop_id, GValue * value, g_value_set_int (value, udpsrc->port); break; case PROP_MULTICAST_GROUP: - g_value_set_string (value, udpsrc->host); + case PROP_ADDRESS: + g_value_set_string (value, udpsrc->address); break; case PROP_MULTICAST_IFACE: g_value_set_string (value, udpsrc->multi_iface); @@ -738,6 +765,48 @@ gst_udpsrc_get_property (GObject * object, guint prop_id, GValue * value, } } +static GInetAddress * +gst_udpsrc_resolve (GstUDPSrc * src, const gchar * address) +{ + GInetAddress *addr; + GError *err = NULL; + GResolver *resolver; + + addr = g_inet_address_new_from_string (address); + if (!addr) { + GList *results; + + GST_DEBUG_OBJECT (src, "resolving IP address for host %s", address); + resolver = g_resolver_get_default (); + results = + g_resolver_lookup_by_name (resolver, address, src->cancellable, &err); + if (!results) + goto name_resolve; + addr = G_INET_ADDRESS (g_object_ref (results->data)); + + g_resolver_free_addresses (results); + g_object_unref (resolver); + } +#ifndef GST_DISABLE_GST_DEBUG + { + gchar *ip = g_inet_address_to_string (addr); + + GST_DEBUG_OBJECT (src, "IP address for host %s is %s", address, ip); + g_free (ip); + } +#endif + + return addr; + +name_resolve: + { + GST_WARNING_OBJECT (src, "Failed to resolve %s: %s", address, err->message); + g_clear_error (&err); + g_object_unref (resolver); + return NULL; + } +} + /* create a socket for sending to remote machine */ static gboolean gst_udpsrc_start (GstBaseSrc * bsrc) @@ -745,39 +814,18 @@ gst_udpsrc_start (GstBaseSrc * bsrc) GstUDPSrc *src; GInetAddress *addr, *bind_addr; GSocketAddress *bind_saddr; - GResolver *resolver; GError *err = NULL; src = GST_UDPSRC (bsrc); if (src->socket == NULL) { /* need to allocate a socket */ - GST_DEBUG_OBJECT (src, "allocating socket for %s:%d", src->host, src->port); - - addr = g_inet_address_new_from_string (src->host); - if (!addr) { - GList *results; - - GST_DEBUG_OBJECT (src, "resolving IP address for host %s", src->host); - resolver = g_resolver_get_default (); - results = - g_resolver_lookup_by_name (resolver, src->host, src->cancellable, - &err); - if (!results) - goto name_resolve; - addr = G_INET_ADDRESS (g_object_ref (results->data)); - - g_resolver_free_addresses (results); - g_object_unref (resolver); - } -#ifndef GST_DISABLE_GST_DEBUG - { - gchar *ip = g_inet_address_to_string (addr); + GST_DEBUG_OBJECT (src, "allocating socket for %s:%d", src->address, + src->port); - GST_DEBUG_OBJECT (src, "IP address for host %s is %s", src->host, ip); - g_free (ip); - } -#endif + addr = gst_udpsrc_resolve (src, src->address); + if (!addr) + goto name_resolve; if ((src->used_socket = g_socket_new (g_inet_address_get_family (addr), @@ -795,9 +843,20 @@ gst_udpsrc_start (GstBaseSrc * bsrc) GST_DEBUG_OBJECT (src, "binding on port %d", src->port); + /* On Windows it's not possible to bind to a multicast address + * but the OS will make sure to filter out all packets that + * arrive not for the multicast address the socket joined. + * + * On Linux and others it is necessary to bind to a multicast + * address to let the OS filter out all packets that are received + * on the same port but for different addresses than the multicast + * address + */ +#ifdef G_OS_WIN32 if (g_inet_address_get_is_multicast (addr)) bind_addr = g_inet_address_new_any (g_inet_address_get_family (addr)); else +#endif bind_addr = G_INET_ADDRESS (g_object_ref (addr)); g_object_unref (addr); @@ -823,9 +882,6 @@ gst_udpsrc_start (GstBaseSrc * bsrc) goto getsockname_error; } - if (src->timeout) - g_socket_set_timeout (src->used_socket, src->timeout / GST_SECOND); - #if GLIB_CHECK_VERSION (2, 35, 7) { gint val = 0; @@ -906,7 +962,7 @@ gst_udpsrc_start (GstBaseSrc * bsrc) && g_inet_address_get_is_multicast (g_inet_socket_address_get_address (src->addr))) { - GST_DEBUG_OBJECT (src, "joining multicast group %s", src->host); + GST_DEBUG_OBJECT (src, "joining multicast group %s", src->address); if (!g_socket_join_multicast_group (src->used_socket, g_inet_socket_address_get_address (src->addr), FALSE, src->multi_iface, &err)) @@ -940,10 +996,6 @@ gst_udpsrc_start (GstBaseSrc * bsrc) /* ERRORS */ name_resolve: { - GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL), - ("Name resolval failed: %s", err->message)); - g_clear_error (&err); - g_object_unref (resolver); return FALSE; } no_socket: @@ -1023,7 +1075,7 @@ gst_udpsrc_stop (GstBaseSrc * bsrc) (src->addr))) { GError *err = NULL; - GST_DEBUG_OBJECT (src, "leaving multicast group %s", src->host); + GST_DEBUG_OBJECT (src, "leaving multicast group %s", src->address); if (!g_socket_leave_multicast_group (src->used_socket, g_inet_socket_address_get_address (src->addr), FALSE, diff --git a/gst/udp/gstudpsrc.h b/gst/udp/gstudpsrc.h index dc5ea33c1c74e675f42bba2636c06d038f7e59d0..c631e35eab3275e5a2c12028ebccc59ca71aa5bf 100644 --- a/gst/udp/gstudpsrc.h +++ b/gst/udp/gstudpsrc.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ @@ -28,7 +28,6 @@ G_BEGIN_DECLS #include "gstudpnetutils.h" -#include "gstudp.h" #define GST_TYPE_UDPSRC \ (gst_udpsrc_get_type()) @@ -49,7 +48,7 @@ struct _GstUDPSrc { GstPushSrc parent; /* properties */ - gchar *host; + gchar *address; gint port; gchar *multi_iface; gint ttl; diff --git a/gst/videobox/Makefile.in b/gst/videobox/Makefile.in index d22ac07e3a9db4ee7d14db259a2fdbc291a392ed..9fae437f90d3aeca0941f962a2d1341ecc59aa14 100644 --- a/gst/videobox/Makefile.in +++ b/gst/videobox/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -39,23 +38,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -75,8 +102,9 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/common/orc.mak +DIST_COMMON = $(top_srcdir)/common/orc.mak $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/depcomp $(noinst_HEADERS) \ + README subdir = gst/videobox ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -84,7 +112,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -161,10 +188,23 @@ libgstvideobox_la_OBJECTS = $(am_libgstvideobox_la_OBJECTS) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstvideobox_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstvideobox_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstvideobox_la_CFLAGS) $(CFLAGS) \ $(libgstvideobox_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -177,20 +217,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstvideobox_la_SOURCES) \ $(nodist_libgstvideobox_la_SOURCES) DIST_SOURCES = $(libgstvideobox_la_SOURCES) @@ -200,6 +236,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -367,6 +420,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -590,6 +644,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -616,12 +671,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstvideobox.la: $(libgstvideobox_la_OBJECTS) $(libgstvideobox_la_DEPENDENCIES) $(EXTRA_libgstvideobox_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstvideobox_la_LINK) -rpath $(plugindir) $(libgstvideobox_la_OBJECTS) $(libgstvideobox_la_LIBADD) $(LIBS) @@ -635,22 +693,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideobox_la-tmp-orc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -675,26 +736,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -706,15 +756,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -723,6 +769,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -873,19 +934,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: all check install install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-local clean-pluginLTLIBRARIES ctags \ - dist-hook distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-pluginLTLIBRARIES install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-local clean-pluginLTLIBRARIES \ + cscopelist-am ctags ctags-am dist-hook distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pluginLTLIBRARIES \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ uninstall-pluginLTLIBRARIES diff --git a/gst/videobox/gstvideobox.c b/gst/videobox/gstvideobox.c index d0216cd32f7bfc8a39a320bbef689edb9f59b68f..de70b1b16639b80e7a29292b9b44648f47f801fc 100644 --- a/gst/videobox/gstvideobox.c +++ b/gst/videobox/gstvideobox.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-videobox diff --git a/gst/videobox/gstvideobox.h b/gst/videobox/gstvideobox.h index 2dec46d6f97b5bc5f60be08d2876e9b0b54f86b2..cbb98ac397a5749b1c9dc933be8a7e46ea668f88 100644 --- a/gst/videobox/gstvideobox.h +++ b/gst/videobox/gstvideobox.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/gst.h> diff --git a/gst/videobox/gstvideoboxorc-dist.c b/gst/videobox/gstvideoboxorc-dist.c index 8b2dcd38bee58e3d05537abe0b43302e15c3630d..15bbf1defe64ba4bdc078180d9fbbb3f29948ecf 100644 --- a/gst/videobox/gstvideoboxorc-dist.c +++ b/gst/videobox/gstvideoboxorc-dist.c @@ -203,6 +203,15 @@ video_box_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) if (!p_inited) { OrcProgram *p; +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 105, 100, 101, 111, 95, 98, 111, 120, 95, 111, 114, 99, + 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, 112, + 0, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_box_orc_splat_u32); +#else p = orc_program_new (); orc_program_set_name (p, "video_box_orc_splat_u32"); orc_program_set_backup_function (p, _backup_video_box_orc_splat_u32); @@ -211,6 +220,7 @@ video_box_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1); +#endif orc_program_compile (p); c = orc_program_take_code (p); diff --git a/gst/videocrop/Makefile.in b/gst/videocrop/Makefile.in index d89d2925c363a41329a66f7153af95e582eb2a96..7cff4cf00153ef2ec0df096d147b44a6ac81a7de 100644 --- a/gst/videocrop/Makefile.in +++ b/gst/videocrop/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/videocrop -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,10 +162,23 @@ libgstvideocrop_la_OBJECTS = $(am_libgstvideocrop_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstvideocrop_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstvideocrop_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstvideocrop_la_CFLAGS) $(CFLAGS) \ $(libgstvideocrop_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -152,20 +191,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstvideocrop_la_SOURCES) DIST_SOURCES = $(libgstvideocrop_la_SOURCES) am__can_run_installinfo = \ @@ -174,6 +209,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -341,6 +393,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -547,6 +600,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -573,12 +627,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstvideocrop.la: $(libgstvideocrop_la_OBJECTS) $(libgstvideocrop_la_DEPENDENCIES) $(EXTRA_libgstvideocrop_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstvideocrop_la_LINK) -rpath $(plugindir) $(libgstvideocrop_la_OBJECTS) $(libgstvideocrop_la_LIBADD) $(LIBS) @@ -592,22 +649,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideocrop_la-gstvideocrop.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -632,26 +692,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -663,15 +712,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -680,6 +725,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -824,19 +884,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/videocrop/gstaspectratiocrop.c b/gst/videocrop/gstaspectratiocrop.c index 1e0f3d232f08e128a97bbc2d1924ae7aa880df67..a4a65537e279298c3e3f1d554ad42d3add2b8bf1 100644 --- a/gst/videocrop/gstaspectratiocrop.c +++ b/gst/videocrop/gstaspectratiocrop.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -54,11 +54,12 @@ enum ARG_ASPECT_RATIO_CROP, }; -/* we support the same caps as videocrop */ +/* we support the same caps as videocrop (sync changes) */ #define ASPECT_RATIO_CROP_CAPS \ GST_VIDEO_CAPS_MAKE ("{ RGBx, xRGB, BGRx, xBGR, " \ "RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, " \ - "YVYU, UYVY, I420, RGB16, RGB15, GRAY8 }") + "YVYU, UYVY, I420, YV12, RGB16, RGB15, GRAY8, " \ + "NV12, NV21, GRAY16_LE, GRAY16_BE }") static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, diff --git a/gst/videocrop/gstaspectratiocrop.h b/gst/videocrop/gstaspectratiocrop.h index e6ceae6ca89be37a38320f48d254fda15ccd8cf5..5e108402bf2ab329c69b2efc5be17ef5bbad6fcd 100644 --- a/gst/videocrop/gstaspectratiocrop.h +++ b/gst/videocrop/gstaspectratiocrop.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_ASPECT_RATIO_CROP_H__ diff --git a/gst/videocrop/gstvideocrop.c b/gst/videocrop/gstvideocrop.c index 21738c570c98983f1ddaa8f81f325651dd50a074..a6c736f5c8ecb17094177905fc42d5dcbfbb862d 100644 --- a/gst/videocrop/gstvideocrop.c +++ b/gst/videocrop/gstvideocrop.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -77,10 +77,12 @@ enum ARG_BOTTOM }; +/* we support the same caps as aspectratiocrop (sync changes) */ #define VIDEO_CROP_CAPS \ GST_VIDEO_CAPS_MAKE ("{ RGBx, xRGB, BGRx, xBGR, " \ "RGBA, ARGB, BGRA, ABGR, RGB, BGR, AYUV, YUY2, " \ - "YVYU, UYVY, I420, RGB16, RGB15, GRAY8 }") + "YVYU, UYVY, I420, YV12, RGB16, RGB15, GRAY8, " \ + "NV12, NV21, GRAY16_LE, GRAY16_BE }") static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, @@ -179,17 +181,21 @@ gst_video_crop_class_init (GstVideoCropClass * klass) gobject_class->get_property = gst_video_crop_get_property; g_object_class_install_property (gobject_class, ARG_LEFT, - g_param_spec_int ("left", "Left", "Pixels to crop at left", - 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_param_spec_int ("left", "Left", + "Pixels to crop at left (-1 to auto-crop)", -1, G_MAXINT, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_RIGHT, - g_param_spec_int ("right", "Right", "Pixels to crop at right", - 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_param_spec_int ("right", "Right", + "Pixels to crop at right (-1 to auto-crop)", -1, G_MAXINT, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_TOP, - g_param_spec_int ("top", "Top", "Pixels to crop at top", - 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_param_spec_int ("top", "Top", + "Pixels to crop at top (-1 to auto-crop)", -1, G_MAXINT, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_BOTTOM, - g_param_spec_int ("bottom", "Bottom", "Pixels to crop at bottom", - 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_param_spec_int ("bottom", "Bottom", + "Pixels to crop at bottom (-1 to auto-crop)", -1, G_MAXINT, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template)); @@ -369,6 +375,47 @@ gst_video_crop_transform_planar (GstVideoCrop * vcrop, } } +static void +gst_video_crop_transform_semi_planar (GstVideoCrop * vcrop, + GstVideoFrame * in_frame, GstVideoFrame * out_frame) +{ + gint width, height; + guint8 *y_out, *uv_out; + guint8 *y_in, *uv_in; + guint i, dx; + + width = GST_VIDEO_FRAME_WIDTH (out_frame); + height = GST_VIDEO_FRAME_HEIGHT (out_frame); + + /* Y plane */ + y_in = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0); + y_out = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0); + + /* UV plane */ + uv_in = GST_VIDEO_FRAME_PLANE_DATA (in_frame, 1); + uv_out = GST_VIDEO_FRAME_PLANE_DATA (out_frame, 1); + + y_in += vcrop->crop_top * GST_VIDEO_FRAME_PLANE_STRIDE (in_frame, 0) + + vcrop->crop_left; + dx = width; + + for (i = 0; i < height; ++i) { + memcpy (y_out, y_in, dx); + y_in += GST_VIDEO_FRAME_PLANE_STRIDE (in_frame, 0); + y_out += GST_VIDEO_FRAME_PLANE_STRIDE (out_frame, 0); + } + + uv_in += (vcrop->crop_top / 2) * GST_VIDEO_FRAME_PLANE_STRIDE (in_frame, 1); + uv_in += GST_ROUND_DOWN_2 (vcrop->crop_left); + dx = GST_ROUND_UP_2 (width); + + for (i = 0; i < GST_ROUND_UP_2 (height) / 2; i++) { + memcpy (uv_out, uv_in, dx); + uv_in += GST_VIDEO_FRAME_PLANE_STRIDE (in_frame, 1); + uv_out += GST_VIDEO_FRAME_PLANE_STRIDE (out_frame, 1); + } +} + static GstFlowReturn gst_video_crop_transform_frame (GstVideoFilter * vfilter, GstVideoFrame * in_frame, GstVideoFrame * out_frame) @@ -386,6 +433,9 @@ gst_video_crop_transform_frame (GstVideoFilter * vfilter, case VIDEO_CROP_PIXEL_FORMAT_PLANAR: gst_video_crop_transform_planar (vcrop, in_frame, out_frame); break; + case VIDEO_CROP_PIXEL_FORMAT_SEMI_PLANAR: + gst_video_crop_transform_semi_planar (vcrop, in_frame, out_frame); + break; default: g_assert_not_reached (); } @@ -406,33 +456,69 @@ gst_video_crop_transform_dimension (gint val, gint delta) static gboolean gst_video_crop_transform_dimension_value (const GValue * src_val, - gint delta, GValue * dest_val) + gint delta, GValue * dest_val, GstPadDirection direction, gboolean dynamic) { gboolean ret = TRUE; - g_value_init (dest_val, G_VALUE_TYPE (src_val)); - if (G_VALUE_HOLDS_INT (src_val)) { gint ival = g_value_get_int (src_val); - ival = gst_video_crop_transform_dimension (ival, delta); - g_value_set_int (dest_val, ival); + + if (dynamic) { + if (direction == GST_PAD_SRC) { + if (ival == G_MAXINT) { + g_value_init (dest_val, G_TYPE_INT); + g_value_set_int (dest_val, ival); + } else { + g_value_init (dest_val, GST_TYPE_INT_RANGE); + gst_value_set_int_range (dest_val, ival, G_MAXINT); + } + } else { + if (ival == 1) { + g_value_init (dest_val, G_TYPE_INT); + g_value_set_int (dest_val, ival); + } else { + g_value_init (dest_val, GST_TYPE_INT_RANGE); + gst_value_set_int_range (dest_val, 1, ival); + } + } + } else { + g_value_init (dest_val, G_TYPE_INT); + g_value_set_int (dest_val, ival); + } } else if (GST_VALUE_HOLDS_INT_RANGE (src_val)) { gint min = gst_value_get_int_range_min (src_val); gint max = gst_value_get_int_range_max (src_val); min = gst_video_crop_transform_dimension (min, delta); max = gst_video_crop_transform_dimension (max, delta); - gst_value_set_int_range (dest_val, min, max); + + if (dynamic) { + if (direction == GST_PAD_SRC) + max = G_MAXINT; + else + min = 1; + } + + if (min == max) { + g_value_init (dest_val, G_TYPE_INT); + g_value_set_int (dest_val, min); + } else { + g_value_init (dest_val, GST_TYPE_INT_RANGE); + gst_value_set_int_range (dest_val, min, max); + } } else if (GST_VALUE_HOLDS_LIST (src_val)) { gint i; + g_value_init (dest_val, GST_TYPE_LIST); + for (i = 0; i < gst_value_list_get_size (src_val); ++i) { const GValue *list_val; GValue newval = { 0, }; list_val = gst_value_list_get_value (src_val, i); - if (gst_video_crop_transform_dimension_value (list_val, delta, &newval)) + if (gst_video_crop_transform_dimension_value (list_val, delta, &newval, + direction, dynamic)) gst_value_list_append_value (dest_val, &newval); g_value_unset (&newval); } @@ -442,7 +528,6 @@ gst_video_crop_transform_dimension_value (const GValue * src_val, ret = FALSE; } } else { - g_value_unset (dest_val); ret = FALSE; } @@ -456,21 +541,30 @@ gst_video_crop_transform_caps (GstBaseTransform * trans, { GstVideoCrop *vcrop; GstCaps *other_caps; - gint dy, dx, i; + gint dy, dx, i, left, right, bottom, top; + gboolean w_dynamic, h_dynamic; vcrop = GST_VIDEO_CROP (trans); GST_OBJECT_LOCK (vcrop); GST_LOG_OBJECT (vcrop, "l=%d,r=%d,b=%d,t=%d", - vcrop->crop_left, vcrop->crop_right, vcrop->crop_bottom, vcrop->crop_top); + vcrop->prop_left, vcrop->prop_right, vcrop->prop_bottom, vcrop->prop_top); + + w_dynamic = (vcrop->prop_left == -1 || vcrop->prop_right == -1); + h_dynamic = (vcrop->prop_top == -1 || vcrop->prop_bottom == -1); + + left = (vcrop->prop_left == -1) ? 0 : vcrop->prop_left; + right = (vcrop->prop_right == -1) ? 0 : vcrop->prop_right; + bottom = (vcrop->prop_bottom == -1) ? 0 : vcrop->prop_bottom; + top = (vcrop->prop_top == -1) ? 0 : vcrop->prop_top; if (direction == GST_PAD_SRC) { - dx = vcrop->crop_left + vcrop->crop_right; - dy = vcrop->crop_top + vcrop->crop_bottom; + dx = left + right; + dy = top + bottom; } else { - dx = 0 - (vcrop->crop_left + vcrop->crop_right); - dy = 0 - (vcrop->crop_top + vcrop->crop_bottom); + dx = 0 - (left + right); + dy = 0 - (top + bottom); } GST_OBJECT_UNLOCK (vcrop); @@ -487,14 +581,16 @@ gst_video_crop_transform_caps (GstBaseTransform * trans, structure = gst_caps_get_structure (caps, i); v = gst_structure_get_value (structure, "width"); - if (!gst_video_crop_transform_dimension_value (v, dx, &w_val)) { + if (!gst_video_crop_transform_dimension_value (v, dx, &w_val, direction, + w_dynamic)) { GST_WARNING_OBJECT (vcrop, "could not tranform width value with dx=%d" ", caps structure=%" GST_PTR_FORMAT, dx, structure); continue; } v = gst_structure_get_value (structure, "height"); - if (!gst_video_crop_transform_dimension_value (v, dy, &h_val)) { + if (!gst_video_crop_transform_dimension_value (v, dy, &h_val, direction, + h_dynamic)) { g_value_unset (&w_val); GST_WARNING_OBJECT (vcrop, "could not tranform height value with dy=%d" ", caps structure=%" GST_PTR_FORMAT, dy, structure); @@ -526,6 +622,41 @@ gst_video_crop_set_info (GstVideoFilter * vfilter, GstCaps * in, GstVideoInfo * in_info, GstCaps * out, GstVideoInfo * out_info) { GstVideoCrop *crop = GST_VIDEO_CROP (vfilter); + int dx, dy; + + crop->crop_left = crop->prop_left; + crop->crop_right = crop->prop_right; + crop->crop_top = crop->prop_top; + crop->crop_bottom = crop->prop_bottom; + + dx = GST_VIDEO_INFO_WIDTH (in_info) - GST_VIDEO_INFO_WIDTH (out_info); + dy = GST_VIDEO_INFO_HEIGHT (in_info) - GST_VIDEO_INFO_HEIGHT (out_info); + + if (crop->prop_left == -1 && crop->prop_right == -1) { + crop->crop_left = dx / 2; + crop->crop_right = dx / 2 + (dx & 1); + } else if (crop->prop_left == -1) { + if (G_UNLIKELY (crop->prop_right > dx)) + goto cropping_too_much; + crop->crop_left = dx - crop->prop_right; + } else if (crop->prop_right == -1) { + if (G_UNLIKELY (crop->prop_left > dx)) + goto cropping_too_much; + crop->crop_right = dx - crop->prop_left; + } + + if (crop->prop_top == -1 && crop->prop_bottom == -1) { + crop->crop_top = dy / 2; + crop->crop_bottom = dy / 2 + (dy & 1); + } else if (crop->prop_top == -1) { + if (G_UNLIKELY (crop->prop_bottom > dy)) + goto cropping_too_much; + crop->crop_top = dy - crop->prop_bottom; + } else if (crop->prop_bottom == -1) { + if (G_UNLIKELY (crop->prop_top > dy)) + goto cropping_too_much; + crop->crop_bottom = dy - crop->prop_top; + } if (G_UNLIKELY ((crop->crop_left + crop->crop_right) >= GST_VIDEO_INFO_WIDTH (in_info) @@ -565,13 +696,14 @@ gst_video_crop_set_info (GstVideoFilter * vfilter, GstCaps * in, crop->macro_y_off = 0; } break; - case GST_VIDEO_FORMAT_GRAY8: - crop->packing = VIDEO_CROP_PIXEL_FORMAT_PACKED_SIMPLE; - break; case GST_VIDEO_FORMAT_I420: case GST_VIDEO_FORMAT_YV12: crop->packing = VIDEO_CROP_PIXEL_FORMAT_PLANAR; break; + case GST_VIDEO_FORMAT_NV12: + case GST_VIDEO_FORMAT_NV21: + crop->packing = VIDEO_CROP_PIXEL_FORMAT_SEMI_PLANAR; + break; default: goto unknown_format; } @@ -582,12 +714,12 @@ gst_video_crop_set_info (GstVideoFilter * vfilter, GstCaps * in, /* ERROR */ cropping_too_much: { - GST_DEBUG_OBJECT (crop, "we are cropping too much"); + GST_WARNING_OBJECT (crop, "we are cropping too much"); return FALSE; } unknown_format: { - GST_DEBUG_OBJECT (crop, "Unsupported format"); + GST_WARNING_OBJECT (crop, "Unsupported format"); return FALSE; } } @@ -607,16 +739,16 @@ gst_video_crop_set_property (GObject * object, guint prop_id, GST_OBJECT_LOCK (video_crop); switch (prop_id) { case ARG_LEFT: - video_crop->crop_left = g_value_get_int (value); + video_crop->prop_left = g_value_get_int (value); break; case ARG_RIGHT: - video_crop->crop_right = g_value_get_int (value); + video_crop->prop_right = g_value_get_int (value); break; case ARG_TOP: - video_crop->crop_top = g_value_get_int (value); + video_crop->prop_top = g_value_get_int (value); break; case ARG_BOTTOM: - video_crop->crop_bottom = g_value_get_int (value); + video_crop->prop_bottom = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -642,16 +774,16 @@ gst_video_crop_get_property (GObject * object, guint prop_id, GValue * value, GST_OBJECT_LOCK (video_crop); switch (prop_id) { case ARG_LEFT: - g_value_set_int (value, video_crop->crop_left); + g_value_set_int (value, video_crop->prop_left); break; case ARG_RIGHT: - g_value_set_int (value, video_crop->crop_right); + g_value_set_int (value, video_crop->prop_right); break; case ARG_TOP: - g_value_set_int (value, video_crop->crop_top); + g_value_set_int (value, video_crop->prop_top); break; case ARG_BOTTOM: - g_value_set_int (value, video_crop->crop_bottom); + g_value_set_int (value, video_crop->prop_bottom); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); diff --git a/gst/videocrop/gstvideocrop.h b/gst/videocrop/gstvideocrop.h index 92969b7319aafa82460bbe462b63da6ddbb8578e..cd8ad06c56911cef375849cbf3d7745477023265 100644 --- a/gst/videocrop/gstvideocrop.h +++ b/gst/videocrop/gstvideocrop.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_VIDEO_CROP_H__ @@ -38,7 +38,8 @@ G_BEGIN_DECLS typedef enum { VIDEO_CROP_PIXEL_FORMAT_PACKED_SIMPLE = 0, /* RGBx, AYUV */ VIDEO_CROP_PIXEL_FORMAT_PACKED_COMPLEX, /* UYVY, YVYU */ - VIDEO_CROP_PIXEL_FORMAT_PLANAR /* I420, YV12 */ + VIDEO_CROP_PIXEL_FORMAT_PLANAR, /* I420, YV12 */ + VIDEO_CROP_PIXEL_FORMAT_SEMI_PLANAR /* NV12, NV21 */ } VideoCropPixelFormat; typedef struct _GstVideoCropImageDetails GstVideoCropImageDetails; @@ -51,6 +52,11 @@ struct _GstVideoCrop GstVideoFilter parent; /*< private >*/ + gint prop_left; + gint prop_right; + gint prop_top; + gint prop_bottom; + gint crop_left; gint crop_right; gint crop_top; diff --git a/gst/videofilter/Makefile.in b/gst/videofilter/Makefile.in index c014a0ac5c483755c676bc22a77ff678e9c35e43..f2c41fede00b739a0f01d92cf60f1489762be211 100644 --- a/gst/videofilter/Makefile.in +++ b/gst/videofilter/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/videofilter -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -139,10 +165,23 @@ libgstvideofilter_la_OBJECTS = $(am_libgstvideofilter_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstvideofilter_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstvideofilter_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstvideofilter_la_CFLAGS) $(CFLAGS) \ $(libgstvideofilter_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -155,20 +194,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstvideofilter_la_SOURCES) DIST_SOURCES = $(libgstvideofilter_la_SOURCES) am__can_run_installinfo = \ @@ -177,6 +212,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -344,6 +396,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -558,6 +611,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -584,12 +638,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstvideofilter.la: $(libgstvideofilter_la_OBJECTS) $(libgstvideofilter_la_DEPENDENCIES) $(EXTRA_libgstvideofilter_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstvideofilter_la_LINK) -rpath $(plugindir) $(libgstvideofilter_la_OBJECTS) $(libgstvideofilter_la_LIBADD) $(LIBS) @@ -606,22 +663,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideofilter_la-plugin.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -667,26 +727,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -698,15 +747,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -715,6 +760,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -860,19 +920,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES gstvideoexample.c: $(srcdir)/make_filter $(srcdir)/gstvideotemplate.c diff --git a/gst/videofilter/gstgamma.c b/gst/videofilter/gstgamma.c index 28c419a59b4dd07cbba80cdee4420fe2450ee216..17acd7cb1e4071b924f4f7de16ca8fd892c9268d 100644 --- a/gst/videofilter/gstgamma.c +++ b/gst/videofilter/gstgamma.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/videofilter/gstgamma.h b/gst/videofilter/gstgamma.h index 6a1b886d29d463e6047fcfd2024b1f685736971e..13f967b73d18f713c28d0d3493e29a2713345c7c 100644 --- a/gst/videofilter/gstgamma.h +++ b/gst/videofilter/gstgamma.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/videofilter/gstvideobalance.c b/gst/videofilter/gstvideobalance.c index c371224bb434f9a2b12ec2f86e630993c2d7cc99..5922e4f7b35cc08dcc32edf38582c9f9b1ee48d1 100644 --- a/gst/videofilter/gstvideobalance.c +++ b/gst/videofilter/gstvideobalance.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/videofilter/gstvideobalance.h b/gst/videofilter/gstvideobalance.h index 194144bb31f10e2d5590fbe87d640a0dbf6c86de..8b9f921f4a528d339748a8e86ef582393c996a84 100644 --- a/gst/videofilter/gstvideobalance.h +++ b/gst/videofilter/gstvideobalance.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/videofilter/gstvideoflip.c b/gst/videofilter/gstvideoflip.c index 6d38453ec3eed3e8328c7a78d56dfc07d8bf33f6..165643b3ca4dedf6c702dbad7b45ad7b8a48f17e 100644 --- a/gst/videofilter/gstvideoflip.c +++ b/gst/videofilter/gstvideoflip.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* @@ -68,8 +68,9 @@ GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ AYUV, " - "ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx,xBGR, BGRx, " - "RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU }")) + "ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx, xBGR, BGRx, " + "RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU, NV12, NV21, " + "GRAY8, GRAY16_BE, GRAY16_LE }")) ); static GstStaticPadTemplate gst_video_flip_sink_template = @@ -77,8 +78,9 @@ GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ AYUV, " - "ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx,xBGR, BGRx, " - "RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU }")) + "ARGB, BGRA, ABGR, RGBA, Y444, xRGB, RGBx, xBGR, BGRx, " + "RGB, BGR, I420, YV12, IYUV, YUY2, UYVY, YVYU, NV12, NV21, " + "GRAY8, GRAY16_BE, GRAY16_LE }")) ); #define GST_TYPE_VIDEO_FLIP_METHOD (gst_video_flip_method_get_type()) @@ -428,6 +430,204 @@ gst_video_flip_planar_yuv (GstVideoFlip * videoflip, GstVideoFrame * dest, } } +static void +gst_video_flip_semi_planar_yuv (GstVideoFlip * videoflip, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint x, y; + guint8 const *s; + guint8 *d; + gint s_off, d_off; + gint src_y_stride, src_uv_stride; + gint src_y_height, src_uv_height; + gint src_y_width, src_uv_width; + gint dest_y_stride, dest_uv_stride; + gint dest_y_height, dest_uv_height; + gint dest_y_width, dest_uv_width; + + + src_y_stride = GST_VIDEO_FRAME_PLANE_STRIDE (src, 0); + src_uv_stride = GST_VIDEO_FRAME_PLANE_STRIDE (src, 1); + + dest_y_stride = GST_VIDEO_FRAME_PLANE_STRIDE (dest, 0); + dest_uv_stride = GST_VIDEO_FRAME_PLANE_STRIDE (dest, 1); + + src_y_width = GST_VIDEO_FRAME_COMP_WIDTH (src, 0); + src_uv_width = GST_VIDEO_FRAME_COMP_WIDTH (src, 1); + + dest_y_width = GST_VIDEO_FRAME_COMP_WIDTH (dest, 0); + dest_uv_width = GST_VIDEO_FRAME_COMP_WIDTH (dest, 1); + + src_y_height = GST_VIDEO_FRAME_COMP_HEIGHT (src, 0); + src_uv_height = GST_VIDEO_FRAME_COMP_HEIGHT (src, 1); + + dest_y_height = GST_VIDEO_FRAME_COMP_HEIGHT (dest, 0); + dest_uv_height = GST_VIDEO_FRAME_COMP_HEIGHT (dest, 1); + + switch (videoflip->method) { + case GST_VIDEO_FLIP_METHOD_90R: + /* Flip Y */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 0); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 0); + for (y = 0; y < dest_y_height; y++) { + for (x = 0; x < dest_y_width; x++) { + d[y * dest_y_stride + x] = + s[(src_y_height - 1 - x) * src_y_stride + y]; + } + } + /* Flip UV */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 1); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 1); + for (y = 0; y < dest_uv_height; y++) { + for (x = 0; x < dest_uv_width; x++) { + d_off = y * dest_uv_stride + x * 2; + s_off = (src_uv_height - 1 - x) * src_uv_stride + y * 2; + d[d_off] = s[s_off]; + d[d_off + 1] = s[s_off + 1]; + } + } + break; + case GST_VIDEO_FLIP_METHOD_90L: + /* Flip Y */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 0); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 0); + for (y = 0; y < dest_y_height; y++) { + for (x = 0; x < dest_y_width; x++) { + d[y * dest_y_stride + x] = + s[x * src_y_stride + (src_y_width - 1 - y)]; + } + } + /* Flip UV */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 1); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 1); + for (y = 0; y < dest_uv_height; y++) { + for (x = 0; x < dest_uv_width; x++) { + d_off = y * dest_uv_stride + x * 2; + s_off = x * src_uv_stride + (src_uv_width - 1 - y) * 2; + d[d_off] = s[s_off]; + d[d_off + 1] = s[s_off + 1]; + } + } + break; + case GST_VIDEO_FLIP_METHOD_180: + /* Flip Y */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 0); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 0); + for (y = 0; y < dest_y_height; y++) { + for (x = 0; x < dest_y_width; x++) { + d[y * dest_y_stride + x] = + s[(src_y_height - 1 - y) * src_y_stride + (src_y_width - 1 - x)]; + } + } + /* Flip UV */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 1); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 1); + for (y = 0; y < dest_uv_height; y++) { + for (x = 0; x < dest_uv_width; x++) { + d_off = y * dest_uv_stride + x * 2; + s_off = (src_uv_height - 1 - y) * src_uv_stride + (src_uv_width - 1 - + x) * 2; + d[d_off] = s[s_off]; + d[d_off + 1] = s[s_off + 1]; + } + } + break; + case GST_VIDEO_FLIP_METHOD_HORIZ: + /* Flip Y */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 0); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 0); + for (y = 0; y < dest_y_height; y++) { + for (x = 0; x < dest_y_width; x++) { + d[y * dest_y_stride + x] = + s[y * src_y_stride + (src_y_width - 1 - x)]; + } + } + /* Flip UV */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 1); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 1); + for (y = 0; y < dest_uv_height; y++) { + for (x = 0; x < dest_uv_width; x++) { + d_off = y * dest_uv_stride + x * 2; + s_off = y * src_uv_stride + (src_uv_width - 1 - x) * 2; + d[d_off] = s[s_off]; + d[d_off + 1] = s[s_off + 1]; + } + } + break; + case GST_VIDEO_FLIP_METHOD_VERT: + /* Flip Y */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 0); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 0); + for (y = 0; y < dest_y_height; y++) { + for (x = 0; x < dest_y_width; x++) { + d[y * dest_y_stride + x] = + s[(src_y_height - 1 - y) * src_y_stride + x]; + } + } + /* Flip UV */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 1); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 1); + for (y = 0; y < dest_uv_height; y++) { + for (x = 0; x < dest_uv_width; x++) { + d_off = y * dest_uv_stride + x * 2; + s_off = (src_uv_height - 1 - y) * src_uv_stride + x * 2; + d[d_off] = s[s_off]; + d[d_off + 1] = s[s_off + 1]; + } + } + break; + case GST_VIDEO_FLIP_METHOD_TRANS: + /* Flip Y */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 0); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 0); + for (y = 0; y < dest_y_height; y++) { + for (x = 0; x < dest_y_width; x++) { + d[y * dest_y_stride + x] = s[x * src_y_stride + y]; + } + } + /* Flip UV */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 1); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 1); + for (y = 0; y < dest_uv_height; y++) { + for (x = 0; x < dest_uv_width; x++) { + d_off = y * dest_uv_stride + x * 2; + s_off = x * src_uv_stride + y * 2; + d[d_off] = s[s_off]; + d[d_off + 1] = s[s_off + 1]; + } + } + case GST_VIDEO_FLIP_METHOD_OTHER: + /* Flip Y */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 0); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 0); + for (y = 0; y < dest_y_height; y++) { + for (x = 0; x < dest_y_width; x++) { + d[y * dest_y_stride + x] = + s[(src_y_height - 1 - x) * src_y_stride + (src_y_width - 1 - y)]; + } + } + /* Flip UV */ + s = GST_VIDEO_FRAME_PLANE_DATA (src, 1); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 1); + for (y = 0; y < dest_uv_height; y++) { + for (x = 0; x < dest_uv_width; x++) { + d_off = y * dest_uv_stride + x * 2; + s_off = (src_uv_height - 1 - x) * src_uv_stride + (src_uv_width - 1 - + y) * 2; + d[d_off] = s[s_off]; + d[d_off + 1] = s[s_off + 1]; + } + } + break; + case GST_VIDEO_FLIP_METHOD_IDENTITY: + g_assert_not_reached (); + break; + default: + g_assert_not_reached (); + break; + } +} + static void gst_video_flip_packed_simple (GstVideoFlip * videoflip, GstVideoFrame * dest, const GstVideoFrame * src) @@ -815,8 +1015,15 @@ gst_video_flip_set_info (GstVideoFilter * vfilter, GstCaps * incaps, case GST_VIDEO_FORMAT_BGRx: case GST_VIDEO_FORMAT_RGB: case GST_VIDEO_FORMAT_BGR: + case GST_VIDEO_FORMAT_GRAY8: + case GST_VIDEO_FORMAT_GRAY16_BE: + case GST_VIDEO_FORMAT_GRAY16_LE: vf->process = gst_video_flip_packed_simple; break; + case GST_VIDEO_FORMAT_NV12: + case GST_VIDEO_FORMAT_NV21: + vf->process = gst_video_flip_semi_planar_yuv; + break; default: break; } diff --git a/gst/videofilter/gstvideoflip.h b/gst/videofilter/gstvideoflip.h index dac4bdb5cf45177ea5dab287309477cd65e63b7b..e868b03219514cd16a7bc2870003ee730915af5a 100644 --- a/gst/videofilter/gstvideoflip.h +++ b/gst/videofilter/gstvideoflip.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_VIDEO_FLIP_H__ diff --git a/gst/videofilter/gstvideomedian.c b/gst/videofilter/gstvideomedian.c index aaf765eaac416ffa2fc7f093262ce2d2f2fbc6a4..a78939a9dc946ae1257307ba16723e7383c5069a 100644 --- a/gst/videofilter/gstvideomedian.c +++ b/gst/videofilter/gstvideomedian.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/videofilter/gstvideomedian.h b/gst/videofilter/gstvideomedian.h index a9eee531abbc09ea0014c1bfa7d31bd6135c5c2e..0877672008792fcc70c425c522c504cfd214f628 100644 --- a/gst/videofilter/gstvideomedian.h +++ b/gst/videofilter/gstvideomedian.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/gst/videofilter/gstvideotemplate.c b/gst/videofilter/gstvideotemplate.c index 4e15dccb9a205fe2890fe4a7a750bed2fb5ebd42..6cd70441da77b3a0410f3c73ff4fdcbfb48bb3e0 100644 --- a/gst/videofilter/gstvideotemplate.c +++ b/gst/videofilter/gstvideotemplate.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/gst/videofilter/plugin.c b/gst/videofilter/plugin.c index 306c3a3257ad44ca95020452f2639040043ab9a2..da736dc85bca9ce6b8c4aaca23d8d89e303fa2b2 100644 --- a/gst/videofilter/plugin.c +++ b/gst/videofilter/plugin.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/gst/videomixer/Makefile.am b/gst/videomixer/Makefile.am index 767337e5629142e9940376475a22f87fb1276670..483ac90896e1966f41505084bda5981bf9aba6f5 100644 --- a/gst/videomixer/Makefile.am +++ b/gst/videomixer/Makefile.am @@ -1,10 +1,13 @@ plugin_LTLIBRARIES = libgstvideomixer.la -ORC_SOURCE=blendorc +ORC_SOURCE=videomixerorc + include $(top_srcdir)/common/orc.mak libgstvideomixer_la_SOURCES = \ blend.c \ + videoconvert.c \ + gstcms.c \ videomixer2.c nodist_libgstvideomixer_la_SOURCES = $(ORC_NODIST_SOURCES) @@ -12,7 +15,7 @@ libgstvideomixer_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \ $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(ORC_CFLAGS) libgstvideomixer_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \ -lgstvideo-@GST_API_VERSION@ \ - $(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS) + $(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS) $(LIBM) libgstvideomixer_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstvideomixer_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) @@ -20,7 +23,9 @@ libgstvideomixer_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ blend.h \ videomixer2.h \ - videomixer2pad.h + videomixer2pad.h \ + videoconvert.h \ + gstcms.h Android.mk: Makefile.am $(BUILT_SOURCES) androgenizer \ diff --git a/gst/videomixer/Makefile.in b/gst/videomixer/Makefile.in index 3a6228eb2ac1db964be50d98b4b27eb8eea771d1..548fb5c73fc1b14f2da37dc35b7617e27a29583a 100644 --- a/gst/videomixer/Makefile.in +++ b/gst/videomixer/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -39,23 +38,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -75,8 +102,9 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/common/orc.mak +DIST_COMMON = $(top_srcdir)/common/orc.mak $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/depcomp $(noinst_HEADERS) \ + README subdir = gst/videomixer ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -84,7 +112,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -152,8 +179,10 @@ LTLIBRARIES = $(plugin_LTLIBRARIES) am__DEPENDENCIES_1 = libgstvideomixer_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_libgstvideomixer_la_OBJECTS = libgstvideomixer_la-blend.lo \ + libgstvideomixer_la-videoconvert.lo \ + libgstvideomixer_la-gstcms.lo \ libgstvideomixer_la-videomixer2.lo am__objects_1 = libgstvideomixer_la-tmp-orc.lo nodist_libgstvideomixer_la_OBJECTS = $(am__objects_1) @@ -162,10 +191,23 @@ libgstvideomixer_la_OBJECTS = $(am_libgstvideomixer_la_OBJECTS) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstvideomixer_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstvideomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstvideomixer_la_CFLAGS) $(CFLAGS) \ $(libgstvideomixer_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -178,20 +220,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstvideomixer_la_SOURCES) \ $(nodist_libgstvideomixer_la_SOURCES) DIST_SOURCES = $(libgstvideomixer_la_SOURCES) @@ -201,6 +239,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -368,6 +423,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -529,7 +585,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ plugin_LTLIBRARIES = libgstvideomixer.la -ORC_SOURCE = blendorc +ORC_SOURCE = videomixerorc EXTRA_DIST = $(ORC_SOURCE).orc ORC_NODIST_SOURCES = tmp-orc.c $(ORC_SOURCE).h BUILT_SOURCES = tmp-orc.c $(ORC_SOURCE).h @@ -541,6 +597,8 @@ cp_v_gen_ = $(cp_v_gen_$(AM_DEFAULT_VERBOSITY)) cp_v_gen_0 = @echo " CP $@"; libgstvideomixer_la_SOURCES = \ blend.c \ + videoconvert.c \ + gstcms.c \ videomixer2.c nodist_libgstvideomixer_la_SOURCES = $(ORC_NODIST_SOURCES) @@ -549,7 +607,7 @@ libgstvideomixer_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \ libgstvideomixer_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \ -lgstvideo-@GST_API_VERSION@ \ - $(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS) + $(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS) $(LIBM) libgstvideomixer_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstvideomixer_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) @@ -558,7 +616,9 @@ libgstvideomixer_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ blend.h \ videomixer2.h \ - videomixer2pad.h + videomixer2pad.h \ + videoconvert.h \ + gstcms.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am @@ -596,6 +656,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -622,12 +683,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstvideomixer.la: $(libgstvideomixer_la_OBJECTS) $(libgstvideomixer_la_DEPENDENCIES) $(EXTRA_libgstvideomixer_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstvideomixer_la_LINK) -rpath $(plugindir) $(libgstvideomixer_la_OBJECTS) $(libgstvideomixer_la_LIBADD) $(LIBS) @@ -638,26 +702,31 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideomixer_la-blend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideomixer_la-gstcms.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideomixer_la-tmp-orc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideomixer_la-videoconvert.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideomixer_la-videomixer2.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -669,6 +738,20 @@ libgstvideomixer_la-blend.lo: blend.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 $(libgstvideomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideomixer_la_CFLAGS) $(CFLAGS) -c -o libgstvideomixer_la-blend.lo `test -f 'blend.c' || echo '$(srcdir)/'`blend.c +libgstvideomixer_la-videoconvert.lo: videoconvert.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideomixer_la_CFLAGS) $(CFLAGS) -MT libgstvideomixer_la-videoconvert.lo -MD -MP -MF $(DEPDIR)/libgstvideomixer_la-videoconvert.Tpo -c -o libgstvideomixer_la-videoconvert.lo `test -f 'videoconvert.c' || echo '$(srcdir)/'`videoconvert.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideomixer_la-videoconvert.Tpo $(DEPDIR)/libgstvideomixer_la-videoconvert.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='videoconvert.c' object='libgstvideomixer_la-videoconvert.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 $(libgstvideomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideomixer_la_CFLAGS) $(CFLAGS) -c -o libgstvideomixer_la-videoconvert.lo `test -f 'videoconvert.c' || echo '$(srcdir)/'`videoconvert.c + +libgstvideomixer_la-gstcms.lo: gstcms.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideomixer_la_CFLAGS) $(CFLAGS) -MT libgstvideomixer_la-gstcms.lo -MD -MP -MF $(DEPDIR)/libgstvideomixer_la-gstcms.Tpo -c -o libgstvideomixer_la-gstcms.lo `test -f 'gstcms.c' || echo '$(srcdir)/'`gstcms.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideomixer_la-gstcms.Tpo $(DEPDIR)/libgstvideomixer_la-gstcms.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstcms.c' object='libgstvideomixer_la-gstcms.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 $(libgstvideomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideomixer_la_CFLAGS) $(CFLAGS) -c -o libgstvideomixer_la-gstcms.lo `test -f 'gstcms.c' || echo '$(srcdir)/'`gstcms.c + libgstvideomixer_la-videomixer2.lo: videomixer2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideomixer_la_CFLAGS) $(CFLAGS) -MT libgstvideomixer_la-videomixer2.lo -MD -MP -MF $(DEPDIR)/libgstvideomixer_la-videomixer2.Tpo -c -o libgstvideomixer_la-videomixer2.lo `test -f 'videomixer2.c' || echo '$(srcdir)/'`videomixer2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideomixer_la-videomixer2.Tpo $(DEPDIR)/libgstvideomixer_la-videomixer2.Plo @@ -689,26 +772,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -720,15 +792,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -737,6 +805,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -887,19 +970,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: all check install install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-local clean-pluginLTLIBRARIES ctags \ - dist-hook distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-pluginLTLIBRARIES install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-local clean-pluginLTLIBRARIES \ + cscopelist-am ctags ctags-am dist-hook distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pluginLTLIBRARIES \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ uninstall-pluginLTLIBRARIES diff --git a/gst/videomixer/blend.c b/gst/videomixer/blend.c index 66461f22320ef36e3f4d2cf741191d8c58b54e6d..894ea210136f0b386eaec1a61f893f6392fc81b6 100644 --- a/gst/videomixer/blend.c +++ b/gst/videomixer/blend.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -27,7 +27,7 @@ #endif #include "blend.h" -#include "blendorc.h" +#include "videomixerorc.h" #include <string.h> diff --git a/gst/videomixer/blend.h b/gst/videomixer/blend.h index ba7033558438e8a195a8fdb1d4708f40d83c92af..7d16c56209d22cd547dcc2438c84595d837de94e 100644 --- a/gst/videomixer/blend.h +++ b/gst/videomixer/blend.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __BLEND_H__ diff --git a/gst/videomixer/blendorc-dist.c b/gst/videomixer/blendorc-dist.c deleted file mode 100644 index 42712510ff3493338eeefc2be222c14c3e73e2ce..0000000000000000000000000000000000000000 --- a/gst/videomixer/blendorc-dist.c +++ /dev/null @@ -1,2244 +0,0 @@ - -/* autogenerated from blendorc.orc */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#include <glib.h> - -#ifndef _ORC_INTEGER_TYPEDEFS_ -#define _ORC_INTEGER_TYPEDEFS_ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#include <stdint.h> -typedef int8_t orc_int8; -typedef int16_t orc_int16; -typedef int32_t orc_int32; -typedef int64_t orc_int64; -typedef uint8_t orc_uint8; -typedef uint16_t orc_uint16; -typedef uint32_t orc_uint32; -typedef uint64_t orc_uint64; -#define ORC_UINT64_C(x) UINT64_C(x) -#elif defined(_MSC_VER) -typedef signed __int8 orc_int8; -typedef signed __int16 orc_int16; -typedef signed __int32 orc_int32; -typedef signed __int64 orc_int64; -typedef unsigned __int8 orc_uint8; -typedef unsigned __int16 orc_uint16; -typedef unsigned __int32 orc_uint32; -typedef unsigned __int64 orc_uint64; -#define ORC_UINT64_C(x) (x##Ui64) -#define inline __inline -#else -#include <limits.h> -typedef signed char orc_int8; -typedef short orc_int16; -typedef int orc_int32; -typedef unsigned char orc_uint8; -typedef unsigned short orc_uint16; -typedef unsigned int orc_uint32; -#if INT_MAX == LONG_MAX -typedef long long orc_int64; -typedef unsigned long long orc_uint64; -#define ORC_UINT64_C(x) (x##ULL) -#else -typedef long orc_int64; -typedef unsigned long orc_uint64; -#define ORC_UINT64_C(x) (x##UL) -#endif -#endif -typedef union -{ - orc_int16 i; - orc_int8 x2[2]; -} orc_union16; -typedef union -{ - orc_int32 i; - float f; - orc_int16 x2[2]; - orc_int8 x4[4]; -} orc_union32; -typedef union -{ - orc_int64 i; - double f; - orc_int32 x2[2]; - float x2f[2]; - orc_int16 x4[4]; -} orc_union64; -#endif -#ifndef ORC_RESTRICT -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define ORC_RESTRICT restrict -#elif defined(__GNUC__) && __GNUC__ >= 4 -#define ORC_RESTRICT __restrict__ -#else -#define ORC_RESTRICT -#endif -#endif - -#ifndef ORC_INTERNAL -#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) -#define ORC_INTERNAL __attribute__((visibility("hidden"))) -#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) -#define ORC_INTERNAL __hidden -#elif defined (__GNUC__) -#define ORC_INTERNAL __attribute__((visibility("hidden"))) -#else -#define ORC_INTERNAL -#endif -#endif - - -#ifndef DISABLE_ORC -#include <orc/orc.h> -#endif -void video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n); -void video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1, - const guint32 * ORC_RESTRICT s1, int n); -void video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); -void video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); -void video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); -void video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); -void video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); - - -/* begin Orc C target preamble */ -#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) -#define ORC_ABS(a) ((a)<0 ? -(a) : (a)) -#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) -#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b)) -#define ORC_SB_MAX 127 -#define ORC_SB_MIN (-1-ORC_SB_MAX) -#define ORC_UB_MAX 255 -#define ORC_UB_MIN 0 -#define ORC_SW_MAX 32767 -#define ORC_SW_MIN (-1-ORC_SW_MAX) -#define ORC_UW_MAX 65535 -#define ORC_UW_MIN 0 -#define ORC_SL_MAX 2147483647 -#define ORC_SL_MIN (-1-ORC_SL_MAX) -#define ORC_UL_MAX 4294967295U -#define ORC_UL_MIN 0 -#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX) -#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX) -#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX) -#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX) -#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX) -#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX) -#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8)) -#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) -#define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56)) -#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) -#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff)) -#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0)) -#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff))) -#define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0)) -#ifndef ORC_RESTRICT -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define ORC_RESTRICT restrict -#elif defined(__GNUC__) && __GNUC__ >= 4 -#define ORC_RESTRICT __restrict__ -#else -#define ORC_RESTRICT -#endif -#endif -/* end Orc C target preamble */ - - - -/* video_mixer_orc_splat_u32 */ -#ifdef DISABLE_ORC -void -video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) -{ - int i; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 var32; - orc_union32 var33; - - ptr0 = (orc_union32 *) d1; - - /* 0: loadpl */ - var32.i = p1; - - for (i = 0; i < n; i++) { - /* 1: copyl */ - var33.i = var32.i; - /* 2: storel */ - ptr0[i] = var33; - } - -} - -#else -static void -_backup_video_mixer_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex) -{ - int i; - int n = ex->n; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 var32; - orc_union32 var33; - - ptr0 = (orc_union32 *) ex->arrays[0]; - - /* 0: loadpl */ - var32.i = ex->params[24]; - - for (i = 0; i < n; i++) { - /* 1: copyl */ - var33.i = var32.i; - /* 2: storel */ - ptr0[i] = var33; - } - -} - -void -video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) -{ - OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - - p = orc_program_new (); - orc_program_set_name (p, "video_mixer_orc_splat_u32"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_splat_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter (p, 4, "p1"); - - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_P1] = p1; - - func = c->exec; - func (ex); -} -#endif - - -/* video_mixer_orc_memcpy_u32 */ -#ifdef DISABLE_ORC -void -video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1, - const guint32 * ORC_RESTRICT s1, int n) -{ - int i; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var32; - orc_union32 var33; - - ptr0 = (orc_union32 *) d1; - ptr4 = (orc_union32 *) s1; - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var32 = ptr4[i]; - /* 1: copyl */ - var33.i = var32.i; - /* 2: storel */ - ptr0[i] = var33; - } - -} - -#else -static void -_backup_video_mixer_orc_memcpy_u32 (OrcExecutor * ORC_RESTRICT ex) -{ - int i; - int n = ex->n; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var32; - orc_union32 var33; - - ptr0 = (orc_union32 *) ex->arrays[0]; - ptr4 = (orc_union32 *) ex->arrays[4]; - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var32 = ptr4[i]; - /* 1: copyl */ - var33.i = var32.i; - /* 2: storel */ - ptr0[i] = var33; - } - -} - -void -video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1, - const guint32 * ORC_RESTRICT s1, int n) -{ - OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - - p = orc_program_new (); - orc_program_set_name (p, "video_mixer_orc_memcpy_u32"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_memcpy_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ex->arrays[ORC_VAR_D1] = d1; - ex->arrays[ORC_VAR_S1] = (void *) s1; - - func = c->exec; - func (ex); -} -#endif - - -/* video_mixer_orc_blend_u8 */ -#ifdef DISABLE_ORC -void -video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) -{ - int i; - int j; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var34; - orc_int8 var35; - orc_union16 var36; - orc_int8 var37; - orc_union16 var38; - orc_union16 var39; - orc_union16 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 5: loadpw */ - var36.i = p1; - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var34 = ptr0[i]; - /* 1: convubw */ - var38.i = (orc_uint8) var34; - /* 2: loadb */ - var35 = ptr4[i]; - /* 3: convubw */ - var39.i = (orc_uint8) var35; - /* 4: subw */ - var40.i = var39.i - var38.i; - /* 6: mullw */ - var41.i = (var40.i * var36.i) & 0xffff; - /* 7: shlw */ - var42.i = var38.i << 8; - /* 8: addw */ - var43.i = var42.i + var41.i; - /* 9: shruw */ - var44.i = ((orc_uint16) var43.i) >> 8; - /* 10: convsuswb */ - var37 = ORC_CLAMP_UB (var44.i); - /* 11: storeb */ - ptr0[i] = var37; - } - } - -} - -#else -static void -_backup_video_mixer_orc_blend_u8 (OrcExecutor * ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var34; - orc_int8 var35; - orc_union16 var36; - orc_int8 var37; - orc_union16 var38; - orc_union16 var39; - orc_union16 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 5: loadpw */ - var36.i = ex->params[24]; - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var34 = ptr0[i]; - /* 1: convubw */ - var38.i = (orc_uint8) var34; - /* 2: loadb */ - var35 = ptr4[i]; - /* 3: convubw */ - var39.i = (orc_uint8) var35; - /* 4: subw */ - var40.i = var39.i - var38.i; - /* 6: mullw */ - var41.i = (var40.i * var36.i) & 0xffff; - /* 7: shlw */ - var42.i = var38.i << 8; - /* 8: addw */ - var43.i = var42.i + var41.i; - /* 9: shruw */ - var44.i = ((orc_uint16) var43.i) >> 8; - /* 10: convsuswb */ - var37 = ORC_CLAMP_UB (var44.i); - /* 11: storeb */ - ptr0[i] = var37; - } - } - -} - -void -video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) -{ - OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_mixer_orc_blend_u8"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 1, 0x00000008, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->params[ORC_VAR_P1] = p1; - - func = c->exec; - func (ex); -} -#endif - - -/* video_mixer_orc_blend_argb */ -#ifdef DISABLE_ORC -void -video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union64 var39; - orc_union32 var40; - orc_union32 var41; - orc_union16 var42; - orc_int8 var43; - orc_union32 var44; - orc_union64 var45; - orc_union64 var46; - orc_union64 var47; - orc_union64 var48; - orc_union32 var49; - orc_union64 var50; - orc_union64 var51; - orc_union64 var52; - orc_union64 var53; - orc_union64 var54; - orc_union32 var55; - orc_union32 var56; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 5: loadpw */ - var39.x4[0] = p1; - var39.x4[1] = p1; - var39.x4[2] = p1; - var39.x4[3] = p1; - /* 16: loadpl */ - var40.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var41 = ptr4[i]; - /* 1: convlw */ - var42.i = var41.i; - /* 2: convwb */ - var43 = var42.i; - /* 3: splatbl */ - var44.i = - ((var43 & 0xff) << 24) | ((var43 & 0xff) << 16) | ((var43 & 0xff) << - 8) | (var43 & 0xff); - /* 4: convubw */ - var45.x4[0] = (orc_uint8) var44.x4[0]; - var45.x4[1] = (orc_uint8) var44.x4[1]; - var45.x4[2] = (orc_uint8) var44.x4[2]; - var45.x4[3] = (orc_uint8) var44.x4[3]; - /* 6: mullw */ - var46.x4[0] = (var45.x4[0] * var39.x4[0]) & 0xffff; - var46.x4[1] = (var45.x4[1] * var39.x4[1]) & 0xffff; - var46.x4[2] = (var45.x4[2] * var39.x4[2]) & 0xffff; - var46.x4[3] = (var45.x4[3] * var39.x4[3]) & 0xffff; - /* 7: shruw */ - var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8; - var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8; - var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8; - var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8; - /* 8: convubw */ - var48.x4[0] = (orc_uint8) var41.x4[0]; - var48.x4[1] = (orc_uint8) var41.x4[1]; - var48.x4[2] = (orc_uint8) var41.x4[2]; - var48.x4[3] = (orc_uint8) var41.x4[3]; - /* 9: loadl */ - var49 = ptr0[i]; - /* 10: convubw */ - var50.x4[0] = (orc_uint8) var49.x4[0]; - var50.x4[1] = (orc_uint8) var49.x4[1]; - var50.x4[2] = (orc_uint8) var49.x4[2]; - var50.x4[3] = (orc_uint8) var49.x4[3]; - /* 11: subw */ - var51.x4[0] = var48.x4[0] - var50.x4[0]; - var51.x4[1] = var48.x4[1] - var50.x4[1]; - var51.x4[2] = var48.x4[2] - var50.x4[2]; - var51.x4[3] = var48.x4[3] - var50.x4[3]; - /* 12: mullw */ - var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff; - var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff; - var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff; - var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff; - /* 13: div255w */ - var53.x4[0] = - ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) + - (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8; - var53.x4[1] = - ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) + - (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8; - var53.x4[2] = - ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) + - (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8; - var53.x4[3] = - ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) + - (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8; - /* 14: addw */ - var54.x4[0] = var50.x4[0] + var53.x4[0]; - var54.x4[1] = var50.x4[1] + var53.x4[1]; - var54.x4[2] = var50.x4[2] + var53.x4[2]; - var54.x4[3] = var50.x4[3] + var53.x4[3]; - /* 15: convwb */ - var55.x4[0] = var54.x4[0]; - var55.x4[1] = var54.x4[1]; - var55.x4[2] = var54.x4[2]; - var55.x4[3] = var54.x4[3]; - /* 17: orl */ - var56.i = var55.i | var40.i; - /* 18: storel */ - ptr0[i] = var56; - } - } - -} - -#else -static void -_backup_video_mixer_orc_blend_argb (OrcExecutor * ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union64 var39; - orc_union32 var40; - orc_union32 var41; - orc_union16 var42; - orc_int8 var43; - orc_union32 var44; - orc_union64 var45; - orc_union64 var46; - orc_union64 var47; - orc_union64 var48; - orc_union32 var49; - orc_union64 var50; - orc_union64 var51; - orc_union64 var52; - orc_union64 var53; - orc_union64 var54; - orc_union32 var55; - orc_union32 var56; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 5: loadpw */ - var39.x4[0] = ex->params[24]; - var39.x4[1] = ex->params[24]; - var39.x4[2] = ex->params[24]; - var39.x4[3] = ex->params[24]; - /* 16: loadpl */ - var40.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var41 = ptr4[i]; - /* 1: convlw */ - var42.i = var41.i; - /* 2: convwb */ - var43 = var42.i; - /* 3: splatbl */ - var44.i = - ((var43 & 0xff) << 24) | ((var43 & 0xff) << 16) | ((var43 & 0xff) << - 8) | (var43 & 0xff); - /* 4: convubw */ - var45.x4[0] = (orc_uint8) var44.x4[0]; - var45.x4[1] = (orc_uint8) var44.x4[1]; - var45.x4[2] = (orc_uint8) var44.x4[2]; - var45.x4[3] = (orc_uint8) var44.x4[3]; - /* 6: mullw */ - var46.x4[0] = (var45.x4[0] * var39.x4[0]) & 0xffff; - var46.x4[1] = (var45.x4[1] * var39.x4[1]) & 0xffff; - var46.x4[2] = (var45.x4[2] * var39.x4[2]) & 0xffff; - var46.x4[3] = (var45.x4[3] * var39.x4[3]) & 0xffff; - /* 7: shruw */ - var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8; - var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8; - var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8; - var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8; - /* 8: convubw */ - var48.x4[0] = (orc_uint8) var41.x4[0]; - var48.x4[1] = (orc_uint8) var41.x4[1]; - var48.x4[2] = (orc_uint8) var41.x4[2]; - var48.x4[3] = (orc_uint8) var41.x4[3]; - /* 9: loadl */ - var49 = ptr0[i]; - /* 10: convubw */ - var50.x4[0] = (orc_uint8) var49.x4[0]; - var50.x4[1] = (orc_uint8) var49.x4[1]; - var50.x4[2] = (orc_uint8) var49.x4[2]; - var50.x4[3] = (orc_uint8) var49.x4[3]; - /* 11: subw */ - var51.x4[0] = var48.x4[0] - var50.x4[0]; - var51.x4[1] = var48.x4[1] - var50.x4[1]; - var51.x4[2] = var48.x4[2] - var50.x4[2]; - var51.x4[3] = var48.x4[3] - var50.x4[3]; - /* 12: mullw */ - var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff; - var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff; - var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff; - var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff; - /* 13: div255w */ - var53.x4[0] = - ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) + - (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8; - var53.x4[1] = - ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) + - (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8; - var53.x4[2] = - ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) + - (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8; - var53.x4[3] = - ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) + - (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8; - /* 14: addw */ - var54.x4[0] = var50.x4[0] + var53.x4[0]; - var54.x4[1] = var50.x4[1] + var53.x4[1]; - var54.x4[2] = var50.x4[2] + var53.x4[2]; - var54.x4[3] = var50.x4[3] + var53.x4[3]; - /* 15: convwb */ - var55.x4[0] = var54.x4[0]; - var55.x4[1] = var54.x4[1]; - var55.x4[2] = var54.x4[2]; - var55.x4[3] = var54.x4[3]; - /* 17: orl */ - var56.i = var55.i | var40.i; - /* 18: storel */ - ptr0[i] = var56; - } - } - -} - -void -video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) -{ - OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_mixer_orc_blend_argb"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_argb); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x000000ff, "c1"); - orc_program_add_constant (p, 4, 0x00000008, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); - - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->params[ORC_VAR_P1] = p1; - - func = c->exec; - func (ex); -} -#endif - - -/* video_mixer_orc_blend_bgra */ -#ifdef DISABLE_ORC -void -video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union64 var40; - orc_union32 var41; - orc_union32 var42; - orc_union32 var43; - orc_union16 var44; - orc_int8 var45; - orc_union32 var46; - orc_union64 var47; - orc_union64 var48; - orc_union64 var49; - orc_union64 var50; - orc_union32 var51; - orc_union64 var52; - orc_union64 var53; - orc_union64 var54; - orc_union64 var55; - orc_union64 var56; - orc_union32 var57; - orc_union32 var58; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 6: loadpw */ - var40.x4[0] = p1; - var40.x4[1] = p1; - var40.x4[2] = p1; - var40.x4[3] = p1; - /* 17: loadpl */ - var41.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var42 = ptr4[i]; - /* 1: shrul */ - var43.i = ((orc_uint32) var42.i) >> 24; - /* 2: convlw */ - var44.i = var43.i; - /* 3: convwb */ - var45 = var44.i; - /* 4: splatbl */ - var46.i = - ((var45 & 0xff) << 24) | ((var45 & 0xff) << 16) | ((var45 & 0xff) << - 8) | (var45 & 0xff); - /* 5: convubw */ - var47.x4[0] = (orc_uint8) var46.x4[0]; - var47.x4[1] = (orc_uint8) var46.x4[1]; - var47.x4[2] = (orc_uint8) var46.x4[2]; - var47.x4[3] = (orc_uint8) var46.x4[3]; - /* 7: mullw */ - var48.x4[0] = (var47.x4[0] * var40.x4[0]) & 0xffff; - var48.x4[1] = (var47.x4[1] * var40.x4[1]) & 0xffff; - var48.x4[2] = (var47.x4[2] * var40.x4[2]) & 0xffff; - var48.x4[3] = (var47.x4[3] * var40.x4[3]) & 0xffff; - /* 8: shruw */ - var49.x4[0] = ((orc_uint16) var48.x4[0]) >> 8; - var49.x4[1] = ((orc_uint16) var48.x4[1]) >> 8; - var49.x4[2] = ((orc_uint16) var48.x4[2]) >> 8; - var49.x4[3] = ((orc_uint16) var48.x4[3]) >> 8; - /* 9: convubw */ - var50.x4[0] = (orc_uint8) var42.x4[0]; - var50.x4[1] = (orc_uint8) var42.x4[1]; - var50.x4[2] = (orc_uint8) var42.x4[2]; - var50.x4[3] = (orc_uint8) var42.x4[3]; - /* 10: loadl */ - var51 = ptr0[i]; - /* 11: convubw */ - var52.x4[0] = (orc_uint8) var51.x4[0]; - var52.x4[1] = (orc_uint8) var51.x4[1]; - var52.x4[2] = (orc_uint8) var51.x4[2]; - var52.x4[3] = (orc_uint8) var51.x4[3]; - /* 12: subw */ - var53.x4[0] = var50.x4[0] - var52.x4[0]; - var53.x4[1] = var50.x4[1] - var52.x4[1]; - var53.x4[2] = var50.x4[2] - var52.x4[2]; - var53.x4[3] = var50.x4[3] - var52.x4[3]; - /* 13: mullw */ - var54.x4[0] = (var53.x4[0] * var49.x4[0]) & 0xffff; - var54.x4[1] = (var53.x4[1] * var49.x4[1]) & 0xffff; - var54.x4[2] = (var53.x4[2] * var49.x4[2]) & 0xffff; - var54.x4[3] = (var53.x4[3] * var49.x4[3]) & 0xffff; - /* 14: div255w */ - var55.x4[0] = - ((orc_uint16) (((orc_uint16) (var54.x4[0] + 128)) + - (((orc_uint16) (var54.x4[0] + 128)) >> 8))) >> 8; - var55.x4[1] = - ((orc_uint16) (((orc_uint16) (var54.x4[1] + 128)) + - (((orc_uint16) (var54.x4[1] + 128)) >> 8))) >> 8; - var55.x4[2] = - ((orc_uint16) (((orc_uint16) (var54.x4[2] + 128)) + - (((orc_uint16) (var54.x4[2] + 128)) >> 8))) >> 8; - var55.x4[3] = - ((orc_uint16) (((orc_uint16) (var54.x4[3] + 128)) + - (((orc_uint16) (var54.x4[3] + 128)) >> 8))) >> 8; - /* 15: addw */ - var56.x4[0] = var52.x4[0] + var55.x4[0]; - var56.x4[1] = var52.x4[1] + var55.x4[1]; - var56.x4[2] = var52.x4[2] + var55.x4[2]; - var56.x4[3] = var52.x4[3] + var55.x4[3]; - /* 16: convwb */ - var57.x4[0] = var56.x4[0]; - var57.x4[1] = var56.x4[1]; - var57.x4[2] = var56.x4[2]; - var57.x4[3] = var56.x4[3]; - /* 18: orl */ - var58.i = var57.i | var41.i; - /* 19: storel */ - ptr0[i] = var58; - } - } - -} - -#else -static void -_backup_video_mixer_orc_blend_bgra (OrcExecutor * ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union64 var40; - orc_union32 var41; - orc_union32 var42; - orc_union32 var43; - orc_union16 var44; - orc_int8 var45; - orc_union32 var46; - orc_union64 var47; - orc_union64 var48; - orc_union64 var49; - orc_union64 var50; - orc_union32 var51; - orc_union64 var52; - orc_union64 var53; - orc_union64 var54; - orc_union64 var55; - orc_union64 var56; - orc_union32 var57; - orc_union32 var58; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 6: loadpw */ - var40.x4[0] = ex->params[24]; - var40.x4[1] = ex->params[24]; - var40.x4[2] = ex->params[24]; - var40.x4[3] = ex->params[24]; - /* 17: loadpl */ - var41.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var42 = ptr4[i]; - /* 1: shrul */ - var43.i = ((orc_uint32) var42.i) >> 24; - /* 2: convlw */ - var44.i = var43.i; - /* 3: convwb */ - var45 = var44.i; - /* 4: splatbl */ - var46.i = - ((var45 & 0xff) << 24) | ((var45 & 0xff) << 16) | ((var45 & 0xff) << - 8) | (var45 & 0xff); - /* 5: convubw */ - var47.x4[0] = (orc_uint8) var46.x4[0]; - var47.x4[1] = (orc_uint8) var46.x4[1]; - var47.x4[2] = (orc_uint8) var46.x4[2]; - var47.x4[3] = (orc_uint8) var46.x4[3]; - /* 7: mullw */ - var48.x4[0] = (var47.x4[0] * var40.x4[0]) & 0xffff; - var48.x4[1] = (var47.x4[1] * var40.x4[1]) & 0xffff; - var48.x4[2] = (var47.x4[2] * var40.x4[2]) & 0xffff; - var48.x4[3] = (var47.x4[3] * var40.x4[3]) & 0xffff; - /* 8: shruw */ - var49.x4[0] = ((orc_uint16) var48.x4[0]) >> 8; - var49.x4[1] = ((orc_uint16) var48.x4[1]) >> 8; - var49.x4[2] = ((orc_uint16) var48.x4[2]) >> 8; - var49.x4[3] = ((orc_uint16) var48.x4[3]) >> 8; - /* 9: convubw */ - var50.x4[0] = (orc_uint8) var42.x4[0]; - var50.x4[1] = (orc_uint8) var42.x4[1]; - var50.x4[2] = (orc_uint8) var42.x4[2]; - var50.x4[3] = (orc_uint8) var42.x4[3]; - /* 10: loadl */ - var51 = ptr0[i]; - /* 11: convubw */ - var52.x4[0] = (orc_uint8) var51.x4[0]; - var52.x4[1] = (orc_uint8) var51.x4[1]; - var52.x4[2] = (orc_uint8) var51.x4[2]; - var52.x4[3] = (orc_uint8) var51.x4[3]; - /* 12: subw */ - var53.x4[0] = var50.x4[0] - var52.x4[0]; - var53.x4[1] = var50.x4[1] - var52.x4[1]; - var53.x4[2] = var50.x4[2] - var52.x4[2]; - var53.x4[3] = var50.x4[3] - var52.x4[3]; - /* 13: mullw */ - var54.x4[0] = (var53.x4[0] * var49.x4[0]) & 0xffff; - var54.x4[1] = (var53.x4[1] * var49.x4[1]) & 0xffff; - var54.x4[2] = (var53.x4[2] * var49.x4[2]) & 0xffff; - var54.x4[3] = (var53.x4[3] * var49.x4[3]) & 0xffff; - /* 14: div255w */ - var55.x4[0] = - ((orc_uint16) (((orc_uint16) (var54.x4[0] + 128)) + - (((orc_uint16) (var54.x4[0] + 128)) >> 8))) >> 8; - var55.x4[1] = - ((orc_uint16) (((orc_uint16) (var54.x4[1] + 128)) + - (((orc_uint16) (var54.x4[1] + 128)) >> 8))) >> 8; - var55.x4[2] = - ((orc_uint16) (((orc_uint16) (var54.x4[2] + 128)) + - (((orc_uint16) (var54.x4[2] + 128)) >> 8))) >> 8; - var55.x4[3] = - ((orc_uint16) (((orc_uint16) (var54.x4[3] + 128)) + - (((orc_uint16) (var54.x4[3] + 128)) >> 8))) >> 8; - /* 15: addw */ - var56.x4[0] = var52.x4[0] + var55.x4[0]; - var56.x4[1] = var52.x4[1] + var55.x4[1]; - var56.x4[2] = var52.x4[2] + var55.x4[2]; - var56.x4[3] = var52.x4[3] + var55.x4[3]; - /* 16: convwb */ - var57.x4[0] = var56.x4[0]; - var57.x4[1] = var56.x4[1]; - var57.x4[2] = var56.x4[2]; - var57.x4[3] = var56.x4[3]; - /* 18: orl */ - var58.i = var57.i | var41.i; - /* 19: storel */ - ptr0[i] = var58; - } - } - -} - -void -video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) -{ - OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_mixer_orc_blend_bgra"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_bgra); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xff000000, "c1"); - orc_program_add_constant (p, 4, 0x00000018, "c2"); - orc_program_add_constant (p, 4, 0x00000008, "c3"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); - orc_program_add_temporary (p, 8, "t8"); - - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->params[ORC_VAR_P1] = p1; - - func = c->exec; - func (ex); -} -#endif - - -/* video_mixer_orc_overlay_argb */ -#ifdef DISABLE_ORC -void -video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union64 var41; - orc_union32 var42; - orc_union32 var43; - orc_union32 var44; - orc_union16 var45; - orc_int8 var46; - orc_union32 var47; - orc_union64 var48; - orc_union64 var49; - orc_union64 var50; - orc_union64 var51; - orc_union64 var52; - orc_union32 var53; - orc_union64 var54; - orc_union64 var55; - orc_union32 var56; - orc_union16 var57; - orc_int8 var58; - orc_union32 var59; - orc_union64 var60; - orc_union64 var61; - orc_union64 var62; - orc_union64 var63; - orc_union64 var64; - orc_union64 var65; - orc_union64 var66; - orc_union64 var67; - orc_union32 var68; - orc_union32 var69; - orc_union32 var70; - orc_union32 var71; - orc_union32 var72; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 5: loadpw */ - var41.x4[0] = p1; - var41.x4[1] = p1; - var41.x4[2] = p1; - var41.x4[3] = p1; - /* 10: loadpl */ - var53.i = (int) 0xffffffff; /* -1 or 2.122e-314f */ - /* 26: loadpl */ - var42.i = (int) 0xffffff00; /* -256 or 2.122e-314f */ - /* 29: loadpl */ - var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var44 = ptr4[i]; - /* 1: convlw */ - var45.i = var44.i; - /* 2: convwb */ - var46 = var45.i; - /* 3: splatbl */ - var47.i = - ((var46 & 0xff) << 24) | ((var46 & 0xff) << 16) | ((var46 & 0xff) << - 8) | (var46 & 0xff); - /* 4: convubw */ - var48.x4[0] = (orc_uint8) var47.x4[0]; - var48.x4[1] = (orc_uint8) var47.x4[1]; - var48.x4[2] = (orc_uint8) var47.x4[2]; - var48.x4[3] = (orc_uint8) var47.x4[3]; - /* 6: mullw */ - var49.x4[0] = (var48.x4[0] * var41.x4[0]) & 0xffff; - var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff; - var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff; - var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff; - /* 7: shruw */ - var50.x4[0] = ((orc_uint16) var49.x4[0]) >> 8; - var50.x4[1] = ((orc_uint16) var49.x4[1]) >> 8; - var50.x4[2] = ((orc_uint16) var49.x4[2]) >> 8; - var50.x4[3] = ((orc_uint16) var49.x4[3]) >> 8; - /* 8: convubw */ - var51.x4[0] = (orc_uint8) var44.x4[0]; - var51.x4[1] = (orc_uint8) var44.x4[1]; - var51.x4[2] = (orc_uint8) var44.x4[2]; - var51.x4[3] = (orc_uint8) var44.x4[3]; - /* 9: mullw */ - var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff; - var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff; - var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff; - var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff; - /* 11: convubw */ - var54.x4[0] = (orc_uint8) var53.x4[0]; - var54.x4[1] = (orc_uint8) var53.x4[1]; - var54.x4[2] = (orc_uint8) var53.x4[2]; - var54.x4[3] = (orc_uint8) var53.x4[3]; - /* 12: subw */ - var55.x4[0] = var54.x4[0] - var50.x4[0]; - var55.x4[1] = var54.x4[1] - var50.x4[1]; - var55.x4[2] = var54.x4[2] - var50.x4[2]; - var55.x4[3] = var54.x4[3] - var50.x4[3]; - /* 13: loadl */ - var56 = ptr0[i]; - /* 14: convlw */ - var57.i = var56.i; - /* 15: convwb */ - var58 = var57.i; - /* 16: splatbl */ - var59.i = - ((var58 & 0xff) << 24) | ((var58 & 0xff) << 16) | ((var58 & 0xff) << - 8) | (var58 & 0xff); - /* 17: convubw */ - var60.x4[0] = (orc_uint8) var59.x4[0]; - var60.x4[1] = (orc_uint8) var59.x4[1]; - var60.x4[2] = (orc_uint8) var59.x4[2]; - var60.x4[3] = (orc_uint8) var59.x4[3]; - /* 18: mullw */ - var61.x4[0] = (var60.x4[0] * var55.x4[0]) & 0xffff; - var61.x4[1] = (var60.x4[1] * var55.x4[1]) & 0xffff; - var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff; - var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff; - /* 19: div255w */ - var62.x4[0] = - ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) + - (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8; - var62.x4[1] = - ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) + - (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8; - var62.x4[2] = - ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) + - (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8; - var62.x4[3] = - ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) + - (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8; - /* 20: convubw */ - var63.x4[0] = (orc_uint8) var56.x4[0]; - var63.x4[1] = (orc_uint8) var56.x4[1]; - var63.x4[2] = (orc_uint8) var56.x4[2]; - var63.x4[3] = (orc_uint8) var56.x4[3]; - /* 21: mullw */ - var64.x4[0] = (var63.x4[0] * var62.x4[0]) & 0xffff; - var64.x4[1] = (var63.x4[1] * var62.x4[1]) & 0xffff; - var64.x4[2] = (var63.x4[2] * var62.x4[2]) & 0xffff; - var64.x4[3] = (var63.x4[3] * var62.x4[3]) & 0xffff; - /* 22: addw */ - var65.x4[0] = var64.x4[0] + var52.x4[0]; - var65.x4[1] = var64.x4[1] + var52.x4[1]; - var65.x4[2] = var64.x4[2] + var52.x4[2]; - var65.x4[3] = var64.x4[3] + var52.x4[3]; - /* 23: addw */ - var66.x4[0] = var62.x4[0] + var50.x4[0]; - var66.x4[1] = var62.x4[1] + var50.x4[1]; - var66.x4[2] = var62.x4[2] + var50.x4[2]; - var66.x4[3] = var62.x4[3] + var50.x4[3]; - /* 24: divluw */ - var67.x4[0] = - ((var66.x4[0] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[0]) / - ((orc_uint16) var66.x4[0] & 0xff)); - var67.x4[1] = - ((var66.x4[1] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[1]) / - ((orc_uint16) var66.x4[1] & 0xff)); - var67.x4[2] = - ((var66.x4[2] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[2]) / - ((orc_uint16) var66.x4[2] & 0xff)); - var67.x4[3] = - ((var66.x4[3] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[3]) / - ((orc_uint16) var66.x4[3] & 0xff)); - /* 25: convwb */ - var68.x4[0] = var67.x4[0]; - var68.x4[1] = var67.x4[1]; - var68.x4[2] = var67.x4[2]; - var68.x4[3] = var67.x4[3]; - /* 27: andl */ - var69.i = var68.i & var42.i; - /* 28: convwb */ - var70.x4[0] = var66.x4[0]; - var70.x4[1] = var66.x4[1]; - var70.x4[2] = var66.x4[2]; - var70.x4[3] = var66.x4[3]; - /* 30: andl */ - var71.i = var70.i & var43.i; - /* 31: orl */ - var72.i = var69.i | var71.i; - /* 32: storel */ - ptr0[i] = var72; - } - } - -} - -#else -static void -_backup_video_mixer_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union64 var41; - orc_union32 var42; - orc_union32 var43; - orc_union32 var44; - orc_union16 var45; - orc_int8 var46; - orc_union32 var47; - orc_union64 var48; - orc_union64 var49; - orc_union64 var50; - orc_union64 var51; - orc_union64 var52; - orc_union32 var53; - orc_union64 var54; - orc_union64 var55; - orc_union32 var56; - orc_union16 var57; - orc_int8 var58; - orc_union32 var59; - orc_union64 var60; - orc_union64 var61; - orc_union64 var62; - orc_union64 var63; - orc_union64 var64; - orc_union64 var65; - orc_union64 var66; - orc_union64 var67; - orc_union32 var68; - orc_union32 var69; - orc_union32 var70; - orc_union32 var71; - orc_union32 var72; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 5: loadpw */ - var41.x4[0] = ex->params[24]; - var41.x4[1] = ex->params[24]; - var41.x4[2] = ex->params[24]; - var41.x4[3] = ex->params[24]; - /* 10: loadpl */ - var53.i = (int) 0xffffffff; /* -1 or 2.122e-314f */ - /* 26: loadpl */ - var42.i = (int) 0xffffff00; /* -256 or 2.122e-314f */ - /* 29: loadpl */ - var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var44 = ptr4[i]; - /* 1: convlw */ - var45.i = var44.i; - /* 2: convwb */ - var46 = var45.i; - /* 3: splatbl */ - var47.i = - ((var46 & 0xff) << 24) | ((var46 & 0xff) << 16) | ((var46 & 0xff) << - 8) | (var46 & 0xff); - /* 4: convubw */ - var48.x4[0] = (orc_uint8) var47.x4[0]; - var48.x4[1] = (orc_uint8) var47.x4[1]; - var48.x4[2] = (orc_uint8) var47.x4[2]; - var48.x4[3] = (orc_uint8) var47.x4[3]; - /* 6: mullw */ - var49.x4[0] = (var48.x4[0] * var41.x4[0]) & 0xffff; - var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff; - var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff; - var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff; - /* 7: shruw */ - var50.x4[0] = ((orc_uint16) var49.x4[0]) >> 8; - var50.x4[1] = ((orc_uint16) var49.x4[1]) >> 8; - var50.x4[2] = ((orc_uint16) var49.x4[2]) >> 8; - var50.x4[3] = ((orc_uint16) var49.x4[3]) >> 8; - /* 8: convubw */ - var51.x4[0] = (orc_uint8) var44.x4[0]; - var51.x4[1] = (orc_uint8) var44.x4[1]; - var51.x4[2] = (orc_uint8) var44.x4[2]; - var51.x4[3] = (orc_uint8) var44.x4[3]; - /* 9: mullw */ - var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff; - var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff; - var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff; - var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff; - /* 11: convubw */ - var54.x4[0] = (orc_uint8) var53.x4[0]; - var54.x4[1] = (orc_uint8) var53.x4[1]; - var54.x4[2] = (orc_uint8) var53.x4[2]; - var54.x4[3] = (orc_uint8) var53.x4[3]; - /* 12: subw */ - var55.x4[0] = var54.x4[0] - var50.x4[0]; - var55.x4[1] = var54.x4[1] - var50.x4[1]; - var55.x4[2] = var54.x4[2] - var50.x4[2]; - var55.x4[3] = var54.x4[3] - var50.x4[3]; - /* 13: loadl */ - var56 = ptr0[i]; - /* 14: convlw */ - var57.i = var56.i; - /* 15: convwb */ - var58 = var57.i; - /* 16: splatbl */ - var59.i = - ((var58 & 0xff) << 24) | ((var58 & 0xff) << 16) | ((var58 & 0xff) << - 8) | (var58 & 0xff); - /* 17: convubw */ - var60.x4[0] = (orc_uint8) var59.x4[0]; - var60.x4[1] = (orc_uint8) var59.x4[1]; - var60.x4[2] = (orc_uint8) var59.x4[2]; - var60.x4[3] = (orc_uint8) var59.x4[3]; - /* 18: mullw */ - var61.x4[0] = (var60.x4[0] * var55.x4[0]) & 0xffff; - var61.x4[1] = (var60.x4[1] * var55.x4[1]) & 0xffff; - var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff; - var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff; - /* 19: div255w */ - var62.x4[0] = - ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) + - (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8; - var62.x4[1] = - ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) + - (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8; - var62.x4[2] = - ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) + - (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8; - var62.x4[3] = - ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) + - (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8; - /* 20: convubw */ - var63.x4[0] = (orc_uint8) var56.x4[0]; - var63.x4[1] = (orc_uint8) var56.x4[1]; - var63.x4[2] = (orc_uint8) var56.x4[2]; - var63.x4[3] = (orc_uint8) var56.x4[3]; - /* 21: mullw */ - var64.x4[0] = (var63.x4[0] * var62.x4[0]) & 0xffff; - var64.x4[1] = (var63.x4[1] * var62.x4[1]) & 0xffff; - var64.x4[2] = (var63.x4[2] * var62.x4[2]) & 0xffff; - var64.x4[3] = (var63.x4[3] * var62.x4[3]) & 0xffff; - /* 22: addw */ - var65.x4[0] = var64.x4[0] + var52.x4[0]; - var65.x4[1] = var64.x4[1] + var52.x4[1]; - var65.x4[2] = var64.x4[2] + var52.x4[2]; - var65.x4[3] = var64.x4[3] + var52.x4[3]; - /* 23: addw */ - var66.x4[0] = var62.x4[0] + var50.x4[0]; - var66.x4[1] = var62.x4[1] + var50.x4[1]; - var66.x4[2] = var62.x4[2] + var50.x4[2]; - var66.x4[3] = var62.x4[3] + var50.x4[3]; - /* 24: divluw */ - var67.x4[0] = - ((var66.x4[0] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[0]) / - ((orc_uint16) var66.x4[0] & 0xff)); - var67.x4[1] = - ((var66.x4[1] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[1]) / - ((orc_uint16) var66.x4[1] & 0xff)); - var67.x4[2] = - ((var66.x4[2] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[2]) / - ((orc_uint16) var66.x4[2] & 0xff)); - var67.x4[3] = - ((var66.x4[3] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[3]) / - ((orc_uint16) var66.x4[3] & 0xff)); - /* 25: convwb */ - var68.x4[0] = var67.x4[0]; - var68.x4[1] = var67.x4[1]; - var68.x4[2] = var67.x4[2]; - var68.x4[3] = var67.x4[3]; - /* 27: andl */ - var69.i = var68.i & var42.i; - /* 28: convwb */ - var70.x4[0] = var66.x4[0]; - var70.x4[1] = var66.x4[1]; - var70.x4[2] = var66.x4[2]; - var70.x4[3] = var66.x4[3]; - /* 30: andl */ - var71.i = var70.i & var43.i; - /* 31: orl */ - var72.i = var69.i | var71.i; - /* 32: storel */ - ptr0[i] = var72; - } - } - -} - -void -video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) -{ - OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_mixer_orc_overlay_argb"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_argb); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xffffffff, "c1"); - orc_program_add_constant (p, 4, 0x000000ff, "c2"); - orc_program_add_constant (p, 4, 0xffffff00, "c3"); - orc_program_add_constant (p, 4, 0x00000008, "c4"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 8, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 4, "t7"); - orc_program_add_temporary (p, 8, "t8"); - orc_program_add_temporary (p, 8, "t9"); - - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T7, ORC_VAR_C1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "divluw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->params[ORC_VAR_P1] = p1; - - func = c->exec; - func (ex); -} -#endif - - -/* video_mixer_orc_overlay_bgra */ -#ifdef DISABLE_ORC -void -video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union64 var42; - orc_union32 var43; - orc_union32 var44; - orc_union32 var45; - orc_union32 var46; - orc_union16 var47; - orc_int8 var48; - orc_union32 var49; - orc_union64 var50; - orc_union64 var51; - orc_union64 var52; - orc_union64 var53; - orc_union64 var54; - orc_union32 var55; - orc_union64 var56; - orc_union64 var57; - orc_union32 var58; - orc_union32 var59; - orc_union16 var60; - orc_int8 var61; - orc_union32 var62; - orc_union64 var63; - orc_union64 var64; - orc_union64 var65; - orc_union64 var66; - orc_union64 var67; - orc_union64 var68; - orc_union64 var69; - orc_union64 var70; - orc_union32 var71; - orc_union32 var72; - orc_union32 var73; - orc_union32 var74; - orc_union32 var75; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 6: loadpw */ - var42.x4[0] = p1; - var42.x4[1] = p1; - var42.x4[2] = p1; - var42.x4[3] = p1; - /* 11: loadpl */ - var55.i = (int) 0xffffffff; /* -1 or 2.122e-314f */ - /* 28: loadpl */ - var43.i = (int) 0x00ffffff; /* 16777215 or 8.28905e-317f */ - /* 31: loadpl */ - var44.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var45 = ptr4[i]; - /* 1: shrul */ - var46.i = ((orc_uint32) var45.i) >> 24; - /* 2: convlw */ - var47.i = var46.i; - /* 3: convwb */ - var48 = var47.i; - /* 4: splatbl */ - var49.i = - ((var48 & 0xff) << 24) | ((var48 & 0xff) << 16) | ((var48 & 0xff) << - 8) | (var48 & 0xff); - /* 5: convubw */ - var50.x4[0] = (orc_uint8) var49.x4[0]; - var50.x4[1] = (orc_uint8) var49.x4[1]; - var50.x4[2] = (orc_uint8) var49.x4[2]; - var50.x4[3] = (orc_uint8) var49.x4[3]; - /* 7: mullw */ - var51.x4[0] = (var50.x4[0] * var42.x4[0]) & 0xffff; - var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff; - var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff; - var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff; - /* 8: shruw */ - var52.x4[0] = ((orc_uint16) var51.x4[0]) >> 8; - var52.x4[1] = ((orc_uint16) var51.x4[1]) >> 8; - var52.x4[2] = ((orc_uint16) var51.x4[2]) >> 8; - var52.x4[3] = ((orc_uint16) var51.x4[3]) >> 8; - /* 9: convubw */ - var53.x4[0] = (orc_uint8) var45.x4[0]; - var53.x4[1] = (orc_uint8) var45.x4[1]; - var53.x4[2] = (orc_uint8) var45.x4[2]; - var53.x4[3] = (orc_uint8) var45.x4[3]; - /* 10: mullw */ - var54.x4[0] = (var53.x4[0] * var52.x4[0]) & 0xffff; - var54.x4[1] = (var53.x4[1] * var52.x4[1]) & 0xffff; - var54.x4[2] = (var53.x4[2] * var52.x4[2]) & 0xffff; - var54.x4[3] = (var53.x4[3] * var52.x4[3]) & 0xffff; - /* 12: convubw */ - var56.x4[0] = (orc_uint8) var55.x4[0]; - var56.x4[1] = (orc_uint8) var55.x4[1]; - var56.x4[2] = (orc_uint8) var55.x4[2]; - var56.x4[3] = (orc_uint8) var55.x4[3]; - /* 13: subw */ - var57.x4[0] = var56.x4[0] - var52.x4[0]; - var57.x4[1] = var56.x4[1] - var52.x4[1]; - var57.x4[2] = var56.x4[2] - var52.x4[2]; - var57.x4[3] = var56.x4[3] - var52.x4[3]; - /* 14: loadl */ - var58 = ptr0[i]; - /* 15: shrul */ - var59.i = ((orc_uint32) var58.i) >> 24; - /* 16: convlw */ - var60.i = var59.i; - /* 17: convwb */ - var61 = var60.i; - /* 18: splatbl */ - var62.i = - ((var61 & 0xff) << 24) | ((var61 & 0xff) << 16) | ((var61 & 0xff) << - 8) | (var61 & 0xff); - /* 19: convubw */ - var63.x4[0] = (orc_uint8) var62.x4[0]; - var63.x4[1] = (orc_uint8) var62.x4[1]; - var63.x4[2] = (orc_uint8) var62.x4[2]; - var63.x4[3] = (orc_uint8) var62.x4[3]; - /* 20: mullw */ - var64.x4[0] = (var63.x4[0] * var57.x4[0]) & 0xffff; - var64.x4[1] = (var63.x4[1] * var57.x4[1]) & 0xffff; - var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff; - var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff; - /* 21: div255w */ - var65.x4[0] = - ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) + - (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8; - var65.x4[1] = - ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) + - (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8; - var65.x4[2] = - ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) + - (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8; - var65.x4[3] = - ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) + - (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8; - /* 22: convubw */ - var66.x4[0] = (orc_uint8) var58.x4[0]; - var66.x4[1] = (orc_uint8) var58.x4[1]; - var66.x4[2] = (orc_uint8) var58.x4[2]; - var66.x4[3] = (orc_uint8) var58.x4[3]; - /* 23: mullw */ - var67.x4[0] = (var66.x4[0] * var65.x4[0]) & 0xffff; - var67.x4[1] = (var66.x4[1] * var65.x4[1]) & 0xffff; - var67.x4[2] = (var66.x4[2] * var65.x4[2]) & 0xffff; - var67.x4[3] = (var66.x4[3] * var65.x4[3]) & 0xffff; - /* 24: addw */ - var68.x4[0] = var67.x4[0] + var54.x4[0]; - var68.x4[1] = var67.x4[1] + var54.x4[1]; - var68.x4[2] = var67.x4[2] + var54.x4[2]; - var68.x4[3] = var67.x4[3] + var54.x4[3]; - /* 25: addw */ - var69.x4[0] = var65.x4[0] + var52.x4[0]; - var69.x4[1] = var65.x4[1] + var52.x4[1]; - var69.x4[2] = var65.x4[2] + var52.x4[2]; - var69.x4[3] = var65.x4[3] + var52.x4[3]; - /* 26: divluw */ - var70.x4[0] = - ((var69.x4[0] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[0]) / - ((orc_uint16) var69.x4[0] & 0xff)); - var70.x4[1] = - ((var69.x4[1] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[1]) / - ((orc_uint16) var69.x4[1] & 0xff)); - var70.x4[2] = - ((var69.x4[2] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[2]) / - ((orc_uint16) var69.x4[2] & 0xff)); - var70.x4[3] = - ((var69.x4[3] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[3]) / - ((orc_uint16) var69.x4[3] & 0xff)); - /* 27: convwb */ - var71.x4[0] = var70.x4[0]; - var71.x4[1] = var70.x4[1]; - var71.x4[2] = var70.x4[2]; - var71.x4[3] = var70.x4[3]; - /* 29: andl */ - var72.i = var71.i & var43.i; - /* 30: convwb */ - var73.x4[0] = var69.x4[0]; - var73.x4[1] = var69.x4[1]; - var73.x4[2] = var69.x4[2]; - var73.x4[3] = var69.x4[3]; - /* 32: andl */ - var74.i = var73.i & var44.i; - /* 33: orl */ - var75.i = var72.i | var74.i; - /* 34: storel */ - ptr0[i] = var75; - } - } - -} - -#else -static void -_backup_video_mixer_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union64 var42; - orc_union32 var43; - orc_union32 var44; - orc_union32 var45; - orc_union32 var46; - orc_union16 var47; - orc_int8 var48; - orc_union32 var49; - orc_union64 var50; - orc_union64 var51; - orc_union64 var52; - orc_union64 var53; - orc_union64 var54; - orc_union32 var55; - orc_union64 var56; - orc_union64 var57; - orc_union32 var58; - orc_union32 var59; - orc_union16 var60; - orc_int8 var61; - orc_union32 var62; - orc_union64 var63; - orc_union64 var64; - orc_union64 var65; - orc_union64 var66; - orc_union64 var67; - orc_union64 var68; - orc_union64 var69; - orc_union64 var70; - orc_union32 var71; - orc_union32 var72; - orc_union32 var73; - orc_union32 var74; - orc_union32 var75; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 6: loadpw */ - var42.x4[0] = ex->params[24]; - var42.x4[1] = ex->params[24]; - var42.x4[2] = ex->params[24]; - var42.x4[3] = ex->params[24]; - /* 11: loadpl */ - var55.i = (int) 0xffffffff; /* -1 or 2.122e-314f */ - /* 28: loadpl */ - var43.i = (int) 0x00ffffff; /* 16777215 or 8.28905e-317f */ - /* 31: loadpl */ - var44.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var45 = ptr4[i]; - /* 1: shrul */ - var46.i = ((orc_uint32) var45.i) >> 24; - /* 2: convlw */ - var47.i = var46.i; - /* 3: convwb */ - var48 = var47.i; - /* 4: splatbl */ - var49.i = - ((var48 & 0xff) << 24) | ((var48 & 0xff) << 16) | ((var48 & 0xff) << - 8) | (var48 & 0xff); - /* 5: convubw */ - var50.x4[0] = (orc_uint8) var49.x4[0]; - var50.x4[1] = (orc_uint8) var49.x4[1]; - var50.x4[2] = (orc_uint8) var49.x4[2]; - var50.x4[3] = (orc_uint8) var49.x4[3]; - /* 7: mullw */ - var51.x4[0] = (var50.x4[0] * var42.x4[0]) & 0xffff; - var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff; - var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff; - var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff; - /* 8: shruw */ - var52.x4[0] = ((orc_uint16) var51.x4[0]) >> 8; - var52.x4[1] = ((orc_uint16) var51.x4[1]) >> 8; - var52.x4[2] = ((orc_uint16) var51.x4[2]) >> 8; - var52.x4[3] = ((orc_uint16) var51.x4[3]) >> 8; - /* 9: convubw */ - var53.x4[0] = (orc_uint8) var45.x4[0]; - var53.x4[1] = (orc_uint8) var45.x4[1]; - var53.x4[2] = (orc_uint8) var45.x4[2]; - var53.x4[3] = (orc_uint8) var45.x4[3]; - /* 10: mullw */ - var54.x4[0] = (var53.x4[0] * var52.x4[0]) & 0xffff; - var54.x4[1] = (var53.x4[1] * var52.x4[1]) & 0xffff; - var54.x4[2] = (var53.x4[2] * var52.x4[2]) & 0xffff; - var54.x4[3] = (var53.x4[3] * var52.x4[3]) & 0xffff; - /* 12: convubw */ - var56.x4[0] = (orc_uint8) var55.x4[0]; - var56.x4[1] = (orc_uint8) var55.x4[1]; - var56.x4[2] = (orc_uint8) var55.x4[2]; - var56.x4[3] = (orc_uint8) var55.x4[3]; - /* 13: subw */ - var57.x4[0] = var56.x4[0] - var52.x4[0]; - var57.x4[1] = var56.x4[1] - var52.x4[1]; - var57.x4[2] = var56.x4[2] - var52.x4[2]; - var57.x4[3] = var56.x4[3] - var52.x4[3]; - /* 14: loadl */ - var58 = ptr0[i]; - /* 15: shrul */ - var59.i = ((orc_uint32) var58.i) >> 24; - /* 16: convlw */ - var60.i = var59.i; - /* 17: convwb */ - var61 = var60.i; - /* 18: splatbl */ - var62.i = - ((var61 & 0xff) << 24) | ((var61 & 0xff) << 16) | ((var61 & 0xff) << - 8) | (var61 & 0xff); - /* 19: convubw */ - var63.x4[0] = (orc_uint8) var62.x4[0]; - var63.x4[1] = (orc_uint8) var62.x4[1]; - var63.x4[2] = (orc_uint8) var62.x4[2]; - var63.x4[3] = (orc_uint8) var62.x4[3]; - /* 20: mullw */ - var64.x4[0] = (var63.x4[0] * var57.x4[0]) & 0xffff; - var64.x4[1] = (var63.x4[1] * var57.x4[1]) & 0xffff; - var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff; - var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff; - /* 21: div255w */ - var65.x4[0] = - ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) + - (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8; - var65.x4[1] = - ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) + - (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8; - var65.x4[2] = - ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) + - (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8; - var65.x4[3] = - ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) + - (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8; - /* 22: convubw */ - var66.x4[0] = (orc_uint8) var58.x4[0]; - var66.x4[1] = (orc_uint8) var58.x4[1]; - var66.x4[2] = (orc_uint8) var58.x4[2]; - var66.x4[3] = (orc_uint8) var58.x4[3]; - /* 23: mullw */ - var67.x4[0] = (var66.x4[0] * var65.x4[0]) & 0xffff; - var67.x4[1] = (var66.x4[1] * var65.x4[1]) & 0xffff; - var67.x4[2] = (var66.x4[2] * var65.x4[2]) & 0xffff; - var67.x4[3] = (var66.x4[3] * var65.x4[3]) & 0xffff; - /* 24: addw */ - var68.x4[0] = var67.x4[0] + var54.x4[0]; - var68.x4[1] = var67.x4[1] + var54.x4[1]; - var68.x4[2] = var67.x4[2] + var54.x4[2]; - var68.x4[3] = var67.x4[3] + var54.x4[3]; - /* 25: addw */ - var69.x4[0] = var65.x4[0] + var52.x4[0]; - var69.x4[1] = var65.x4[1] + var52.x4[1]; - var69.x4[2] = var65.x4[2] + var52.x4[2]; - var69.x4[3] = var65.x4[3] + var52.x4[3]; - /* 26: divluw */ - var70.x4[0] = - ((var69.x4[0] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[0]) / - ((orc_uint16) var69.x4[0] & 0xff)); - var70.x4[1] = - ((var69.x4[1] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[1]) / - ((orc_uint16) var69.x4[1] & 0xff)); - var70.x4[2] = - ((var69.x4[2] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[2]) / - ((orc_uint16) var69.x4[2] & 0xff)); - var70.x4[3] = - ((var69.x4[3] & 0xff) == - 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[3]) / - ((orc_uint16) var69.x4[3] & 0xff)); - /* 27: convwb */ - var71.x4[0] = var70.x4[0]; - var71.x4[1] = var70.x4[1]; - var71.x4[2] = var70.x4[2]; - var71.x4[3] = var70.x4[3]; - /* 29: andl */ - var72.i = var71.i & var43.i; - /* 30: convwb */ - var73.x4[0] = var69.x4[0]; - var73.x4[1] = var69.x4[1]; - var73.x4[2] = var69.x4[2]; - var73.x4[3] = var69.x4[3]; - /* 32: andl */ - var74.i = var73.i & var44.i; - /* 33: orl */ - var75.i = var72.i | var74.i; - /* 34: storel */ - ptr0[i] = var75; - } - } - -} - -void -video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) -{ - OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_mixer_orc_overlay_bgra"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_bgra); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xffffffff, "c1"); - orc_program_add_constant (p, 4, 0xff000000, "c2"); - orc_program_add_constant (p, 4, 0x00ffffff, "c3"); - orc_program_add_constant (p, 4, 0x00000018, "c4"); - orc_program_add_constant (p, 4, 0x00000008, "c5"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); - orc_program_add_temporary (p, 4, "t8"); - orc_program_add_temporary (p, 8, "t9"); - orc_program_add_temporary (p, 8, "t10"); - - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->params[ORC_VAR_P1] = p1; - - func = c->exec; - func (ex); -} -#endif diff --git a/gst/videomixer/blendorc-dist.h b/gst/videomixer/blendorc-dist.h deleted file mode 100644 index e5ec9de170b5e35ce0b025383b4e0136ee8a6ff6..0000000000000000000000000000000000000000 --- a/gst/videomixer/blendorc-dist.h +++ /dev/null @@ -1,96 +0,0 @@ - -/* autogenerated from blendorc.orc */ - -#ifndef _BLENDORC_H_ -#define _BLENDORC_H_ - -#include <glib.h> - -#ifdef __cplusplus -extern "C" { -#endif - - - -#ifndef _ORC_INTEGER_TYPEDEFS_ -#define _ORC_INTEGER_TYPEDEFS_ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#include <stdint.h> -typedef int8_t orc_int8; -typedef int16_t orc_int16; -typedef int32_t orc_int32; -typedef int64_t orc_int64; -typedef uint8_t orc_uint8; -typedef uint16_t orc_uint16; -typedef uint32_t orc_uint32; -typedef uint64_t orc_uint64; -#define ORC_UINT64_C(x) UINT64_C(x) -#elif defined(_MSC_VER) -typedef signed __int8 orc_int8; -typedef signed __int16 orc_int16; -typedef signed __int32 orc_int32; -typedef signed __int64 orc_int64; -typedef unsigned __int8 orc_uint8; -typedef unsigned __int16 orc_uint16; -typedef unsigned __int32 orc_uint32; -typedef unsigned __int64 orc_uint64; -#define ORC_UINT64_C(x) (x##Ui64) -#define inline __inline -#else -#include <limits.h> -typedef signed char orc_int8; -typedef short orc_int16; -typedef int orc_int32; -typedef unsigned char orc_uint8; -typedef unsigned short orc_uint16; -typedef unsigned int orc_uint32; -#if INT_MAX == LONG_MAX -typedef long long orc_int64; -typedef unsigned long long orc_uint64; -#define ORC_UINT64_C(x) (x##ULL) -#else -typedef long orc_int64; -typedef unsigned long orc_uint64; -#define ORC_UINT64_C(x) (x##UL) -#endif -#endif -typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; -typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; -#endif -#ifndef ORC_RESTRICT -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define ORC_RESTRICT restrict -#elif defined(__GNUC__) && __GNUC__ >= 4 -#define ORC_RESTRICT __restrict__ -#else -#define ORC_RESTRICT -#endif -#endif - -#ifndef ORC_INTERNAL -#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) -#define ORC_INTERNAL __attribute__((visibility("hidden"))) -#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) -#define ORC_INTERNAL __hidden -#elif defined (__GNUC__) -#define ORC_INTERNAL __attribute__((visibility("hidden"))) -#else -#define ORC_INTERNAL -#endif -#endif - -void video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n); -void video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n); -void video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); -void video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); -void video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); -void video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); -void video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/gst/videomixer/blendorc.orc b/gst/videomixer/blendorc.orc deleted file mode 100644 index cbc1a4685c91dc76d41c02a8072fcac6e886b482..0000000000000000000000000000000000000000 --- a/gst/videomixer/blendorc.orc +++ /dev/null @@ -1,220 +0,0 @@ -.function video_mixer_orc_splat_u32 -.dest 4 d1 guint32 -.param 4 p1 guint32 - -copyl d1, p1 - -.function video_mixer_orc_memcpy_u32 -.dest 4 d1 guint32 -.source 4 s1 guint32 - -copyl d1, s1 - -.function video_mixer_orc_blend_u8 -.flags 2d -.dest 1 d1 guint8 -.source 1 s1 guint8 -.param 2 p1 -.temp 2 t1 -.temp 2 t2 -.const 1 c1 8 - -convubw t1, d1 -convubw t2, s1 -subw t2, t2, t1 -mullw t2, t2, p1 -shlw t1, t1, c1 -addw t2, t1, t2 -shruw t2, t2, c1 -convsuswb d1, t2 - - -.function video_mixer_orc_blend_argb -.flags 2d -.dest 4 d guint8 -.source 4 s guint8 -.param 2 alpha -.temp 4 t -.temp 2 tw -.temp 1 tb -.temp 4 a -.temp 8 d_wide -.temp 8 s_wide -.temp 8 a_wide -.const 4 a_alpha 0x000000ff - -loadl t, s -convlw tw, t -convwb tb, tw -splatbl a, tb -x4 convubw a_wide, a -x4 mullw a_wide, a_wide, alpha -x4 shruw a_wide, a_wide, 8 -x4 convubw s_wide, t -loadl t, d -x4 convubw d_wide, t -x4 subw s_wide, s_wide, d_wide -x4 mullw s_wide, s_wide, a_wide -x4 div255w s_wide, s_wide -x4 addw d_wide, d_wide, s_wide -x4 convwb t, d_wide -orl t, t, a_alpha -storel d, t - -.function video_mixer_orc_blend_bgra -.flags 2d -.dest 4 d guint8 -.source 4 s guint8 -.param 2 alpha -.temp 4 t -.temp 4 t2 -.temp 2 tw -.temp 1 tb -.temp 4 a -.temp 8 d_wide -.temp 8 s_wide -.temp 8 a_wide -.const 4 a_alpha 0xff000000 - -loadl t, s -shrul t2, t, 24 -convlw tw, t2 -convwb tb, tw -splatbl a, tb -x4 convubw a_wide, a -x4 mullw a_wide, a_wide, alpha -x4 shruw a_wide, a_wide, 8 -x4 convubw s_wide, t -loadl t, d -x4 convubw d_wide, t -x4 subw s_wide, s_wide, d_wide -x4 mullw s_wide, s_wide, a_wide -x4 div255w s_wide, s_wide -x4 addw d_wide, d_wide, s_wide -x4 convwb t, d_wide -orl t, t, a_alpha -storel d, t - - -.function video_mixer_orc_overlay_argb -.flags 2d -.dest 4 d guint8 -.source 4 s guint8 -.param 2 alpha -.temp 4 t -.temp 2 tw -.temp 1 tb -.temp 8 alpha_s -.temp 8 alpha_s_inv -.temp 8 alpha_d -.temp 4 a -.temp 8 d_wide -.temp 8 s_wide -.const 4 xfs 0xffffffff -.const 4 a_alpha 0x000000ff -.const 4 a_alpha_inv 0xffffff00 - -# calc source alpha as alpha_s = alpha_s * alpha / 256 -loadl t, s -convlw tw, t -convwb tb, tw -splatbl a, tb -x4 convubw alpha_s, a -x4 mullw alpha_s, alpha_s, alpha -x4 shruw alpha_s, alpha_s, 8 -x4 convubw s_wide, t -x4 mullw s_wide, s_wide, alpha_s - -# calc destination alpha as alpha_d = (255-alpha_s) * alpha_d / 255 -loadpl a, xfs -x4 convubw alpha_s_inv, a -x4 subw alpha_s_inv, alpha_s_inv, alpha_s -loadl t, d -convlw tw, t -convwb tb, tw -splatbl a, tb -x4 convubw alpha_d, a -x4 mullw alpha_d, alpha_d, alpha_s_inv -x4 div255w alpha_d, alpha_d -x4 convubw d_wide, t -x4 mullw d_wide, d_wide, alpha_d - -# calc final pixel as pix_d = pix_s*alpha_s + pix_d*alpha_d*(255-alpha_s)/255 -x4 addw d_wide, d_wide, s_wide - -# calc the final destination alpha_d = alpha_s + alpha_d * (255-alpha_s)/255 -x4 addw alpha_d, alpha_d, alpha_s - -# now normalize the pix_d by the final alpha to make it associative -x4 divluw, d_wide, d_wide, alpha_d - -# pack the new alpha into the correct spot -x4 convwb t, d_wide -andl t, t, a_alpha_inv -x4 convwb a, alpha_d -andl a, a, a_alpha -orl t, t, a -storel d, t - -.function video_mixer_orc_overlay_bgra -.flags 2d -.dest 4 d guint8 -.source 4 s guint8 -.param 2 alpha -.temp 4 t -.temp 4 t2 -.temp 2 tw -.temp 1 tb -.temp 8 alpha_s -.temp 8 alpha_s_inv -.temp 8 alpha_d -.temp 4 a -.temp 8 d_wide -.temp 8 s_wide -.const 4 xfs 0xffffffff -.const 4 a_alpha 0xff000000 -.const 4 a_alpha_inv 0x00ffffff - -# calc source alpha as alpha_s = alpha_s * alpha / 256 -loadl t, s -shrul t2, t, 24 -convlw tw, t2 -convwb tb, tw -splatbl a, tb -x4 convubw alpha_s, a -x4 mullw alpha_s, alpha_s, alpha -x4 shruw alpha_s, alpha_s, 8 -x4 convubw s_wide, t -x4 mullw s_wide, s_wide, alpha_s - -# calc destination alpha as alpha_d = (255-alpha_s) * alpha_d / 255 -loadpl a, xfs -x4 convubw alpha_s_inv, a -x4 subw alpha_s_inv, alpha_s_inv, alpha_s -loadl t, d -shrul t2, t, 24 -convlw tw, t2 -convwb tb, tw -splatbl a, tb -x4 convubw alpha_d, a -x4 mullw alpha_d, alpha_d, alpha_s_inv -x4 div255w alpha_d, alpha_d -x4 convubw d_wide, t -x4 mullw d_wide, d_wide, alpha_d - -# calc final pixel as pix_d = pix_s*alpha_s + pix_d*alpha_d*(255-alpha_s)/255 -x4 addw d_wide, d_wide, s_wide - -# calc the final destination alpha_d = alpha_s + alpha_d * (255-alpha_s)/255 -x4 addw alpha_d, alpha_d, alpha_s - -# now normalize the pix_d by the final alpha to make it associative -x4 divluw, d_wide, d_wide, alpha_d - -# pack the new alpha into the correct spot -x4 convwb t, d_wide -andl t, t, a_alpha_inv -x4 convwb a, alpha_d -andl a, a, a_alpha -orl t, t, a -storel d, t diff --git a/gst/videomixer/gstcms.c b/gst/videomixer/gstcms.c new file mode 100644 index 0000000000000000000000000000000000000000..96a9f70b02bb049c18df7536b447ec945c63e911 --- /dev/null +++ b/gst/videomixer/gstcms.c @@ -0,0 +1,573 @@ +/* GStreamer + * Copyright (C) 2008 David Schleef <ds@entropywave.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <gst/gst.h> +#include <gst/math-compat.h> +#include "gstcms.h" + +#include <stdio.h> +#include <string.h> +#include <math.h> + + +/* our simple CMS */ + +void +color_xyY_to_XYZ (Color * c) +{ + if (c->v[1] == 0) { + c->v[0] = 0; + c->v[1] = 0; + c->v[2] = 0; + } else { + double X, Y, Z; + X = c->v[0] * c->v[2] / c->v[1]; + Y = c->v[2]; + Z = (1.0 - c->v[0] - c->v[1]) * c->v[2] / c->v[1]; + c->v[0] = X; + c->v[1] = Y; + c->v[2] = Z; + } +} + +void +color_XYZ_to_xyY (Color * c) +{ + double d; + d = c->v[0] + c->v[1] + c->v[2]; + if (d == 0) { + c->v[0] = 0.3128; + c->v[1] = 0.3290; + c->v[2] = 0; + } else { + double x, y, Y; + x = c->v[0] / d; + y = c->v[1] / d; + Y = c->v[1]; + c->v[0] = x; + c->v[1] = y; + c->v[2] = Y; + } +} + +void +color_set (Color * c, double x, double y, double z) +{ + c->v[0] = x; + c->v[1] = y; + c->v[2] = z; +} + +void +color_matrix_set_identity (ColorMatrix * m) +{ + int i, j; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + m->m[i][j] = (i == j); + } + } +} + +/* Prettyprint a 4x4 matrix @m@ */ +void +color_matrix_dump (ColorMatrix * m) +{ + int i, j; + + printf ("[\n"); + for (i = 0; i < 4; i++) { + printf (" "); + for (j = 0; j < 4; j++) { + printf (" %8.5g", m->m[i][j]); + } + printf ("\n"); + } + printf ("]\n"); +} + +/* Perform 4x4 matrix multiplication: + * - @dst@ = @a@ * @b@ + * - @dst@ may be a pointer to @a@ andor @b@ + */ +void +color_matrix_multiply (ColorMatrix * dst, ColorMatrix * a, ColorMatrix * b) +{ + ColorMatrix tmp; + int i, j, k; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + double x = 0; + for (k = 0; k < 4; k++) { + x += a->m[i][k] * b->m[k][j]; + } + tmp.m[i][j] = x; + } + } + + memcpy (dst, &tmp, sizeof (ColorMatrix)); +} + +void +color_matrix_apply (ColorMatrix * m, Color * dest, Color * src) +{ + int i; + Color tmp; + + for (i = 0; i < 3; i++) { + double x = 0; + x += m->m[i][0] * src->v[0]; + x += m->m[i][1] * src->v[1]; + x += m->m[i][2] * src->v[2]; + x += m->m[i][3]; + tmp.v[i] = x; + } + memcpy (dest, &tmp, sizeof (tmp)); +} + +void +color_matrix_offset_components (ColorMatrix * m, double a1, double a2, + double a3) +{ + ColorMatrix a; + + color_matrix_set_identity (&a); + a.m[0][3] = a1; + a.m[1][3] = a2; + a.m[2][3] = a3; + color_matrix_multiply (m, &a, m); +} + +void +color_matrix_scale_components (ColorMatrix * m, double a1, double a2, double a3) +{ + ColorMatrix a; + + color_matrix_set_identity (&a); + a.m[0][0] = a1; + a.m[1][1] = a2; + a.m[2][2] = a3; + color_matrix_multiply (m, &a, m); +} + +void +color_matrix_YCbCr_to_RGB (ColorMatrix * m, double Kr, double Kb) +{ + double Kg = 1.0 - Kr - Kb; + ColorMatrix k = { + { + {1., 0., 2 * (1 - Kr), 0.}, + {1., -2 * Kb * (1 - Kb) / Kg, -2 * Kr * (1 - Kr) / Kg, 0.}, + {1., 2 * (1 - Kb), 0., 0.}, + {0., 0., 0., 1.}, + } + }; + + color_matrix_multiply (m, &k, m); +} + +void +color_matrix_RGB_to_YCbCr (ColorMatrix * m, double Kr, double Kb) +{ + double Kg = 1.0 - Kr - Kb; + ColorMatrix k; + double x; + + k.m[0][0] = Kr; + k.m[0][1] = Kg; + k.m[0][2] = Kb; + k.m[0][3] = 0; + + x = 1 / (2 * (1 - Kb)); + k.m[1][0] = -x * Kr; + k.m[1][1] = -x * Kg; + k.m[1][2] = x * (1 - Kb); + k.m[1][3] = 0; + + x = 1 / (2 * (1 - Kr)); + k.m[2][0] = x * (1 - Kr); + k.m[2][1] = -x * Kg; + k.m[2][2] = -x * Kb; + k.m[2][3] = 0; + + k.m[3][0] = 0; + k.m[3][1] = 0; + k.m[3][2] = 0; + k.m[3][3] = 1; + + color_matrix_multiply (m, &k, m); +} + +void +color_matrix_build_yuv_to_rgb_601 (ColorMatrix * dst) +{ + /* + * At this point, everything is in YCbCr + * All components are in the range [0,255] + */ + color_matrix_set_identity (dst); + + /* offset required to get input video black to (0.,0.,0.) */ + color_matrix_offset_components (dst, -16, -128, -128); + + /* scale required to get input video black to (0.,0.,0.) */ + color_matrix_scale_components (dst, (1 / 219.0), (1 / 224.0), (1 / 224.0)); + + /* colour matrix, YCbCr -> RGB */ + /* Requires Y in [0,1.0], Cb&Cr in [-0.5,0.5] */ + color_matrix_YCbCr_to_RGB (dst, 0.2990, 0.1140); /* SD */ + + /* + * We are now in RGB space + */ + +#if 0 + /* scale to output range. */ + color_matrix_scale_components (dst, 255.0, 255.0, 255.0); +#endif +} + +void +color_matrix_build_bt709_to_bt601 (ColorMatrix * dst) +{ + color_matrix_set_identity (dst); + + /* offset required to get input video black to (0.,0.,0.) */ + color_matrix_offset_components (dst, -16, -128, -128); + + /* scale required to get input video black to (0.,0.,0.) */ + color_matrix_scale_components (dst, (1 / 219.0), (1 / 224.0), (1 / 224.0)); + + /* colour matrix, YCbCr -> RGB */ + /* Requires Y in [0,1.0], Cb&Cr in [-0.5,0.5] */ + color_matrix_YCbCr_to_RGB (dst, 0.2126, 0.0722); /* HD */ + + color_matrix_RGB_to_YCbCr (dst, 0.2990, 0.1140); /* SD */ + + color_matrix_scale_components (dst, 219.0, 224.0, 224.0); + + color_matrix_offset_components (dst, 16, 128, 128); +} + +void +color_matrix_build_rgb_to_yuv_601 (ColorMatrix * dst) +{ + color_matrix_set_identity (dst); + + color_matrix_RGB_to_YCbCr (dst, 0.2990, 0.1140); /* SD */ + + color_matrix_scale_components (dst, 219.0, 224.0, 224.0); + + color_matrix_offset_components (dst, 16, 128, 128); + + { + Color c; + int i; + for (i = 7; i >= 0; i--) { + color_set (&c, (i & 2) ? 0.75 : 0.0, (i & 4) ? 0.75 : 0.0, + (i & 1) ? 0.75 : 0.0); + color_matrix_apply (dst, &c, &c); + g_print (" { %g, %g, %g },\n", rint (c.v[0]), rint (c.v[1]), + rint (c.v[2])); + } + color_set (&c, -0.075, -0.075, -0.075); + color_matrix_apply (dst, &c, &c); + g_print (" { %g, %g, %g },\n", rint (c.v[0]), rint (c.v[1]), + rint (c.v[2])); + color_set (&c, 0.075, 0.075, 0.075); + color_matrix_apply (dst, &c, &c); + g_print (" { %g, %g, %g },\n", rint (c.v[0]), rint (c.v[1]), + rint (c.v[2])); + } +} + +void +color_matrix_invert (ColorMatrix * m) +{ + ColorMatrix tmp; + int i, j; + double det; + + color_matrix_set_identity (&tmp); + for (j = 0; j < 3; j++) { + for (i = 0; i < 3; i++) { + tmp.m[j][i] = + m->m[(i + 1) % 3][(j + 1) % 3] * m->m[(i + 2) % 3][(j + 2) % 3] - + m->m[(i + 1) % 3][(j + 2) % 3] * m->m[(i + 2) % 3][(j + 1) % 3]; + } + } + det = + tmp.m[0][0] * m->m[0][0] + tmp.m[0][1] * m->m[1][0] + + tmp.m[0][2] * m->m[2][0]; + for (j = 0; j < 3; j++) { + for (i = 0; i < 3; i++) { + tmp.m[i][j] /= det; + } + } + memcpy (m, &tmp, sizeof (tmp)); +} + +void +color_matrix_copy (ColorMatrix * dest, ColorMatrix * src) +{ + memcpy (dest, src, sizeof (ColorMatrix)); +} + +void +color_matrix_transpose (ColorMatrix * m) +{ + int i, j; + ColorMatrix tmp; + + color_matrix_set_identity (&tmp); + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + tmp.m[i][j] = m->m[j][i]; + } + } + memcpy (m, &tmp, sizeof (ColorMatrix)); +} + +void +color_matrix_build_XYZ (ColorMatrix * dst, + double rx, double ry, + double gx, double gy, double bx, double by, double wx, double wy) +{ + Color r, g, b, w, scale; + ColorMatrix m; + + color_set (&r, rx, ry, 1.0); + color_xyY_to_XYZ (&r); + color_set (&g, gx, gy, 1.0); + color_xyY_to_XYZ (&g); + color_set (&b, bx, by, 1.0); + color_xyY_to_XYZ (&b); + color_set (&w, wx, wy, 1.0); + color_xyY_to_XYZ (&w); + + color_matrix_set_identity (dst); + + dst->m[0][0] = r.v[0]; + dst->m[0][1] = r.v[1]; + dst->m[0][2] = r.v[2]; + dst->m[1][0] = g.v[0]; + dst->m[1][1] = g.v[1]; + dst->m[1][2] = g.v[2]; + dst->m[2][0] = b.v[0]; + dst->m[2][1] = b.v[1]; + dst->m[2][2] = b.v[2]; + + color_matrix_dump (dst); + color_matrix_copy (&m, dst); + color_matrix_invert (&m); + color_matrix_dump (&m); + + color_matrix_transpose (&m); + color_matrix_apply (&m, &scale, &w); + g_print ("%g %g %g\n", scale.v[0], scale.v[1], scale.v[2]); + + dst->m[0][0] = r.v[0] * scale.v[0]; + dst->m[0][1] = r.v[1] * scale.v[0]; + dst->m[0][2] = r.v[2] * scale.v[0]; + dst->m[1][0] = g.v[0] * scale.v[1]; + dst->m[1][1] = g.v[1] * scale.v[1]; + dst->m[1][2] = g.v[2] * scale.v[1]; + dst->m[2][0] = b.v[0] * scale.v[2]; + dst->m[2][1] = b.v[1] * scale.v[2]; + dst->m[2][2] = b.v[2] * scale.v[2]; + + color_matrix_transpose (dst); + color_matrix_dump (dst); + + color_set (&scale, 1, 1, 1); + color_matrix_apply (dst, &scale, &scale); + color_XYZ_to_xyY (&scale); + g_print ("white %g %g %g\n", scale.v[0], scale.v[1], scale.v[2]); + +} + +void +color_matrix_build_rgb_to_XYZ_601 (ColorMatrix * dst) +{ + /* SMPTE C primaries, SMPTE 170M-2004 */ + color_matrix_build_XYZ (dst, + 0.630, 0.340, 0.310, 0.595, 0.155, 0.070, 0.3127, 0.3290); +#if 0 + /* NTSC 1953 primaries, SMPTE 170M-2004 */ + color_matrix_build_XYZ (dst, + 0.67, 0.33, 0.21, 0.71, 0.14, 0.08, 0.3127, 0.3290); +#endif +} + +void +color_matrix_build_XYZ_to_rgb_709 (ColorMatrix * dst) +{ + /* Rec. ITU-R BT.709-5 */ + color_matrix_build_XYZ (dst, + 0.640, 0.330, 0.300, 0.600, 0.150, 0.060, 0.3127, 0.3290); +} + +void +color_matrix_build_XYZ_to_rgb_dell (ColorMatrix * dst) +{ + /* Dell monitor */ +#if 1 + color_matrix_build_XYZ (dst, + 0.662, 0.329, 0.205, 0.683, 0.146, 0.077, 0.3135, 0.3290); +#endif +#if 0 + color_matrix_build_XYZ (dst, + 0.630, 0.340, 0.310, 0.595, 0.155, 0.070, 0.3127, 0.3290); +#endif + color_matrix_invert (dst); +} + +void +color_transfer_function_apply (Color * dest, Color * src) +{ + int i; + + for (i = 0; i < 3; i++) { + if (src->v[i] < 0.0812) { + dest->v[i] = src->v[i] / 4.500; + } else { + dest->v[i] = pow (src->v[i] + 0.099, 1 / 0.4500); + } + } +} + +void +color_transfer_function_unapply (Color * dest, Color * src) +{ + int i; + + for (i = 0; i < 3; i++) { + if (src->v[i] < 0.0812 / 4.500) { + dest->v[i] = src->v[i] * 4.500; + } else { + dest->v[i] = pow (src->v[i], 0.4500) - 0.099; + } + } +} + +void +color_gamut_clamp (Color * dest, Color * src) +{ + dest->v[0] = CLAMP (src->v[0], 0.0, 1.0); + dest->v[1] = CLAMP (src->v[1], 0.0, 1.0); + dest->v[2] = CLAMP (src->v[2], 0.0, 1.0); +} + +#if 0 +static guint8 * +get_color_transform_table (void) +{ + static guint8 *color_transform_table = NULL; + +#if 1 + if (!color_transform_table) { + ColorMatrix bt601_to_rgb; + ColorMatrix bt601_to_yuv; + ColorMatrix bt601_rgb_to_XYZ; + ColorMatrix dell_XYZ_to_rgb; + guint8 *table_y; + guint8 *table_u; + guint8 *table_v; + int y, u, v; + + color_matrix_build_yuv_to_rgb_601 (&bt601_to_rgb); + color_matrix_build_rgb_to_yuv_601 (&bt601_to_yuv); + color_matrix_build_rgb_to_XYZ_601 (&bt601_rgb_to_XYZ); + color_matrix_build_XYZ_to_rgb_dell (&dell_XYZ_to_rgb); + + color_transform_table = g_malloc (0x1000000 * 3); + + table_y = COG_OFFSET (color_transform_table, 0 * 0x1000000); + table_u = COG_OFFSET (color_transform_table, 1 * 0x1000000); + table_v = COG_OFFSET (color_transform_table, 2 * 0x1000000); + + for (y = 0; y < 256; y++) { + for (u = 0; u < 256; u++) { + for (v = 0; v < 256; v++) { + Color c; + + c.v[0] = y; + c.v[1] = u; + c.v[2] = v; + color_matrix_apply (&bt601_to_rgb, &c, &c); + color_gamut_clamp (&c, &c); + color_transfer_function_apply (&c, &c); + color_matrix_apply (&bt601_rgb_to_XYZ, &c, &c); + color_matrix_apply (&dell_XYZ_to_rgb, &c, &c); + color_transfer_function_unapply (&c, &c); + color_gamut_clamp (&c, &c); + color_matrix_apply (&bt601_to_yuv, &c, &c); + + table_y[(y << 16) | (u << 8) | (v)] = rint (c.v[0]); + table_u[(y << 16) | (u << 8) | (v)] = rint (c.v[1]); + table_v[(y << 16) | (u << 8) | (v)] = rint (c.v[2]); + } + } + } + } +#endif +#if 0 + if (!color_transform_table) { + ColorMatrix bt709_to_bt601; + guint8 *table_y; + guint8 *table_u; + guint8 *table_v; + int y, u, v; + + color_matrix_build_bt709_to_bt601 (&bt709_to_bt601); + + color_transform_table = g_malloc (0x1000000 * 3); + + table_y = COG_OFFSET (color_transform_table, 0 * 0x1000000); + table_u = COG_OFFSET (color_transform_table, 1 * 0x1000000); + table_v = COG_OFFSET (color_transform_table, 2 * 0x1000000); + + for (y = 0; y < 256; y++) { + for (u = 0; u < 256; u++) { + for (v = 0; v < 256; v++) { + Color c; + + c.v[0] = y; + c.v[1] = u; + c.v[2] = v; + color_matrix_apply (&bt709_to_bt601, &c, &c); + + table_y[(y << 16) | (u << 8) | (v)] = rint (c.v[0]); + table_u[(y << 16) | (u << 8) | (v)] = rint (c.v[1]); + table_v[(y << 16) | (u << 8) | (v)] = rint (c.v[2]); + } + } + } + } +#endif + + return color_transform_table; +} +#endif diff --git a/gst/videomixer/gstcms.h b/gst/videomixer/gstcms.h new file mode 100644 index 0000000000000000000000000000000000000000..f926a44af944913023a93e4ec6fa8da984cb38f6 --- /dev/null +++ b/gst/videomixer/gstcms.h @@ -0,0 +1,71 @@ +/* GStreamer + * Copyright (C) 2008 David Schleef <ds@entropywave.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef _GST_CMS_H_ +#define _GST_CMS_H_ + +#include <gst/gst.h> + +G_BEGIN_DECLS + +typedef struct _Color Color; +typedef struct _ColorMatrix ColorMatrix; + +struct _Color +{ + double v[3]; +}; + +struct _ColorMatrix +{ + double m[4][4]; +}; + +void color_xyY_to_XYZ (Color * c); +void color_XYZ_to_xyY (Color * c); +void color_set (Color * c, double x, double y, double z); +void color_matrix_set_identity (ColorMatrix * m); +void color_matrix_dump (ColorMatrix * m); +void color_matrix_multiply (ColorMatrix * dst, ColorMatrix * a, ColorMatrix * b); +void color_matrix_apply (ColorMatrix * m, Color * dest, Color * src); +void color_matrix_offset_components (ColorMatrix * m, double a1, double a2, + double a3); +void color_matrix_scale_components (ColorMatrix * m, double a1, double a2, double a3); +void color_matrix_YCbCr_to_RGB (ColorMatrix * m, double Kr, double Kb); +void color_matrix_RGB_to_YCbCr (ColorMatrix * m, double Kr, double Kb); +void color_matrix_build_yuv_to_rgb_601 (ColorMatrix * dst); +void color_matrix_build_bt709_to_bt601 (ColorMatrix * dst); +void color_matrix_build_rgb_to_yuv_601 (ColorMatrix * dst); +void color_matrix_invert (ColorMatrix * m); +void color_matrix_copy (ColorMatrix * dest, ColorMatrix * src); +void color_matrix_transpose (ColorMatrix * m); +void color_matrix_build_XYZ (ColorMatrix * dst, + double rx, double ry, + double gx, double gy, double bx, double by, double wx, double wy); +void color_matrix_build_rgb_to_XYZ_601 (ColorMatrix * dst); +void color_matrix_build_XYZ_to_rgb_709 (ColorMatrix * dst); +void color_matrix_build_XYZ_to_rgb_dell (ColorMatrix * dst); +void color_transfer_function_apply (Color * dest, Color * src); +void color_transfer_function_unapply (Color * dest, Color * src); +void color_gamut_clamp (Color * dest, Color * src); + +G_END_DECLS + +#endif + diff --git a/gst/videomixer/videoconvert.c b/gst/videomixer/videoconvert.c new file mode 100644 index 0000000000000000000000000000000000000000..ae95d59bc1c9cf4058a25e04390af37fa04c823f --- /dev/null +++ b/gst/videomixer/videoconvert.c @@ -0,0 +1,1420 @@ +/* GStreamer + * Copyright (C) 2010 David Schleef <ds@schleef.org> + * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "videoconvert.h" + +#include <glib.h> +#include <string.h> +#include <math.h> + +#include "videomixerorc.h" + + +static void videomixer_videoconvert_convert_generic (VideoConvert * convert, + GstVideoFrame * dest, const GstVideoFrame * src); +static void videomixer_videoconvert_convert_matrix8 (VideoConvert * convert, + gpointer pixels); +static void videomixer_videoconvert_convert_matrix16 (VideoConvert * convert, + gpointer pixels); +static gboolean videomixer_videoconvert_convert_lookup_fastpath (VideoConvert * + convert); +static gboolean videomixer_videoconvert_convert_compute_matrix (VideoConvert * + convert); +static gboolean videomixer_videoconvert_convert_compute_resample (VideoConvert * + convert); +static void videomixer_videoconvert_dither_verterr (VideoConvert * convert, + guint16 * pixels, int j); +static void videomixer_videoconvert_dither_halftone (VideoConvert * convert, + guint16 * pixels, int j); + + +VideoConvert * +videomixer_videoconvert_convert_new (GstVideoInfo * in_info, + GstVideoInfo * out_info) +{ + VideoConvert *convert; + gint width; + + convert = g_malloc0 (sizeof (VideoConvert)); + + convert->in_info = *in_info; + convert->out_info = *out_info; + convert->dither16 = NULL; + + convert->width = GST_VIDEO_INFO_WIDTH (in_info); + convert->height = GST_VIDEO_INFO_HEIGHT (in_info); + + if (!videomixer_videoconvert_convert_lookup_fastpath (convert)) { + convert->convert = videomixer_videoconvert_convert_generic; + if (!videomixer_videoconvert_convert_compute_matrix (convert)) + goto no_convert; + + if (!videomixer_videoconvert_convert_compute_resample (convert)) + goto no_convert; + } + + width = convert->width; + + convert->lines = out_info->finfo->pack_lines; + convert->errline = g_malloc0 (sizeof (guint16) * width * 4); + + return convert; + + /* ERRORS */ +no_convert: + { + videomixer_videoconvert_convert_free (convert); + return NULL; + } +} + +void +videomixer_videoconvert_convert_free (VideoConvert * convert) +{ + gint i; + + if (convert->upsample) + gst_video_chroma_resample_free (convert->upsample); + if (convert->downsample) + gst_video_chroma_resample_free (convert->downsample); + + for (i = 0; i < convert->n_tmplines; i++) + g_free (convert->tmplines[i]); + g_free (convert->tmplines); + g_free (convert->errline); + + g_free (convert); +} + +void +videomixer_videoconvert_convert_set_dither (VideoConvert * convert, int type) +{ + switch (type) { + case 0: + default: + convert->dither16 = NULL; + break; + case 1: + convert->dither16 = videomixer_videoconvert_dither_verterr; + break; + case 2: + convert->dither16 = videomixer_videoconvert_dither_halftone; + break; + } +} + +void +videomixer_videoconvert_convert_convert (VideoConvert * convert, + GstVideoFrame * dest, const GstVideoFrame * src) +{ + convert->convert (convert, dest, src); +} + +#define SCALE (8) +#define SCALE_F ((float) (1 << SCALE)) + +static void +videomixer_videoconvert_convert_matrix8 (VideoConvert * convert, + gpointer pixels) +{ + int i; + int r, g, b; + int y, u, v; + guint8 *p = pixels; + + for (i = 0; i < convert->width; i++) { + r = p[i * 4 + 1]; + g = p[i * 4 + 2]; + b = p[i * 4 + 3]; + + y = (convert->cmatrix[0][0] * r + convert->cmatrix[0][1] * g + + convert->cmatrix[0][2] * b + convert->cmatrix[0][3]) >> SCALE; + u = (convert->cmatrix[1][0] * r + convert->cmatrix[1][1] * g + + convert->cmatrix[1][2] * b + convert->cmatrix[1][3]) >> SCALE; + v = (convert->cmatrix[2][0] * r + convert->cmatrix[2][1] * g + + convert->cmatrix[2][2] * b + convert->cmatrix[2][3]) >> SCALE; + + p[i * 4 + 1] = CLAMP (y, 0, 255); + p[i * 4 + 2] = CLAMP (u, 0, 255); + p[i * 4 + 3] = CLAMP (v, 0, 255); + } +} + +static void +videomixer_videoconvert_convert_matrix16 (VideoConvert * convert, + gpointer pixels) +{ + int i; + int r, g, b; + int y, u, v; + guint16 *p = pixels; + + for (i = 0; i < convert->width; i++) { + r = p[i * 4 + 1]; + g = p[i * 4 + 2]; + b = p[i * 4 + 3]; + + y = (convert->cmatrix[0][0] * r + convert->cmatrix[0][1] * g + + convert->cmatrix[0][2] * b + convert->cmatrix[0][3]) >> SCALE; + u = (convert->cmatrix[1][0] * r + convert->cmatrix[1][1] * g + + convert->cmatrix[1][2] * b + convert->cmatrix[1][3]) >> SCALE; + v = (convert->cmatrix[2][0] * r + convert->cmatrix[2][1] * g + + convert->cmatrix[2][2] * b + convert->cmatrix[2][3]) >> SCALE; + + p[i * 4 + 1] = CLAMP (y, 0, 65535); + p[i * 4 + 2] = CLAMP (u, 0, 65535); + p[i * 4 + 3] = CLAMP (v, 0, 65535); + } +} + +static gboolean +get_Kr_Kb (GstVideoColorMatrix matrix, gdouble * Kr, gdouble * Kb) +{ + gboolean res = TRUE; + + switch (matrix) { + /* RGB */ + default: + case GST_VIDEO_COLOR_MATRIX_RGB: + res = FALSE; + break; + /* YUV */ + case GST_VIDEO_COLOR_MATRIX_FCC: + *Kr = 0.30; + *Kb = 0.11; + break; + case GST_VIDEO_COLOR_MATRIX_BT709: + *Kr = 0.2126; + *Kb = 0.0722; + break; + case GST_VIDEO_COLOR_MATRIX_BT601: + *Kr = 0.2990; + *Kb = 0.1140; + break; + case GST_VIDEO_COLOR_MATRIX_SMPTE240M: + *Kr = 0.212; + *Kb = 0.087; + break; + } + GST_DEBUG ("matrix: %d, Kr %f, Kb %f", matrix, *Kr, *Kb); + return res; +} + +static gboolean +videomixer_videoconvert_convert_compute_matrix (VideoConvert * convert) +{ + GstVideoInfo *in_info, *out_info; + ColorMatrix dst; + gint i, j; + const GstVideoFormatInfo *sfinfo, *dfinfo; + const GstVideoFormatInfo *suinfo, *duinfo; + gint offset[4], scale[4]; + gdouble Kr = 0, Kb = 0; + + in_info = &convert->in_info; + out_info = &convert->out_info; + + sfinfo = in_info->finfo; + dfinfo = out_info->finfo; + + if (sfinfo->unpack_func == NULL) + goto no_unpack_func; + + if (dfinfo->pack_func == NULL) + goto no_pack_func; + + suinfo = gst_video_format_get_info (sfinfo->unpack_format); + duinfo = gst_video_format_get_info (dfinfo->unpack_format); + + convert->in_bits = GST_VIDEO_FORMAT_INFO_DEPTH (suinfo, 0); + convert->out_bits = GST_VIDEO_FORMAT_INFO_DEPTH (duinfo, 0); + + GST_DEBUG ("in bits %d, out bits %d", convert->in_bits, convert->out_bits); + + if (in_info->colorimetry.range == out_info->colorimetry.range && + in_info->colorimetry.matrix == out_info->colorimetry.matrix) { + GST_DEBUG ("using identity color transform"); + convert->matrix = NULL; + return TRUE; + } + + /* calculate intermediate format for the matrix. When unpacking, we expand + * input to 16 when one of the inputs is 16 bits */ + if (convert->in_bits == 16 || convert->out_bits == 16) { + convert->matrix = videomixer_videoconvert_convert_matrix16; + + if (GST_VIDEO_FORMAT_INFO_IS_RGB (suinfo)) + suinfo = gst_video_format_get_info (GST_VIDEO_FORMAT_ARGB64); + else + suinfo = gst_video_format_get_info (GST_VIDEO_FORMAT_AYUV64); + + if (GST_VIDEO_FORMAT_INFO_IS_RGB (duinfo)) + duinfo = gst_video_format_get_info (GST_VIDEO_FORMAT_ARGB64); + else + duinfo = gst_video_format_get_info (GST_VIDEO_FORMAT_AYUV64); + } else { + convert->matrix = videomixer_videoconvert_convert_matrix8; + } + + color_matrix_set_identity (&dst); + + /* 1, bring color components to [0..1.0] range */ + gst_video_color_range_offsets (in_info->colorimetry.range, suinfo, offset, + scale); + color_matrix_offset_components (&dst, -offset[0], -offset[1], -offset[2]); + + color_matrix_scale_components (&dst, 1 / ((float) scale[0]), + 1 / ((float) scale[1]), 1 / ((float) scale[2])); + + /* 2. bring components to R'G'B' space */ + if (get_Kr_Kb (in_info->colorimetry.matrix, &Kr, &Kb)) + color_matrix_YCbCr_to_RGB (&dst, Kr, Kb); + + /* 3. inverse transfer function. R'G'B' to linear RGB */ + + /* 4. from RGB to XYZ using the primaries */ + + /* 5. from XYZ to RGB using the primaries */ + + /* 6. transfer function. linear RGB to R'G'B' */ + + /* 7. bring components to YCbCr space */ + if (get_Kr_Kb (out_info->colorimetry.matrix, &Kr, &Kb)) + color_matrix_RGB_to_YCbCr (&dst, Kr, Kb); + + /* 8, bring color components to nominal range */ + gst_video_color_range_offsets (out_info->colorimetry.range, duinfo, offset, + scale); + color_matrix_scale_components (&dst, (float) scale[0], (float) scale[1], + (float) scale[2]); + + color_matrix_offset_components (&dst, offset[0], offset[1], offset[2]); + + /* because we're doing fixed point matrix coefficients */ + color_matrix_scale_components (&dst, SCALE_F, SCALE_F, SCALE_F); + + for (i = 0; i < 4; i++) + for (j = 0; j < 4; j++) + convert->cmatrix[i][j] = rint (dst.m[i][j]); + + GST_DEBUG ("[%6d %6d %6d %6d]", convert->cmatrix[0][0], + convert->cmatrix[0][1], convert->cmatrix[0][2], convert->cmatrix[0][3]); + GST_DEBUG ("[%6d %6d %6d %6d]", convert->cmatrix[1][0], + convert->cmatrix[1][1], convert->cmatrix[1][2], convert->cmatrix[1][3]); + GST_DEBUG ("[%6d %6d %6d %6d]", convert->cmatrix[2][0], + convert->cmatrix[2][1], convert->cmatrix[2][2], convert->cmatrix[2][3]); + GST_DEBUG ("[%6d %6d %6d %6d]", convert->cmatrix[3][0], + convert->cmatrix[3][1], convert->cmatrix[3][2], convert->cmatrix[3][3]); + + return TRUE; + + /* ERRORS */ +no_unpack_func: + { + GST_ERROR ("no unpack_func for format %s", + gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (in_info))); + return FALSE; + } +no_pack_func: + { + GST_ERROR ("no pack_func for format %s", + gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (out_info))); + return FALSE; + } +} + +static void +videomixer_videoconvert_dither_verterr (VideoConvert * convert, + guint16 * pixels, int j) +{ + int i; + guint16 *errline = convert->errline; + unsigned int mask = 0xff; + + for (i = 0; i < 4 * convert->width; i++) { + int x = pixels[i] + errline[i]; + if (x > 65535) + x = 65535; + pixels[i] = x; + errline[i] = x & mask; + } +} + +static void +videomixer_videoconvert_dither_halftone (VideoConvert * convert, + guint16 * pixels, int j) +{ + int i; + static guint16 halftone[8][8] = { + {0, 128, 32, 160, 8, 136, 40, 168}, + {192, 64, 224, 96, 200, 72, 232, 104}, + {48, 176, 16, 144, 56, 184, 24, 152}, + {240, 112, 208, 80, 248, 120, 216, 88}, + {12, 240, 44, 172, 4, 132, 36, 164}, + {204, 76, 236, 108, 196, 68, 228, 100}, + {60, 188, 28, 156, 52, 180, 20, 148}, + {252, 142, 220, 92, 244, 116, 212, 84} + }; + + for (i = 0; i < convert->width * 4; i++) { + int x; + x = pixels[i] + halftone[(i >> 2) & 7][j & 7]; + if (x > 65535) + x = 65535; + pixels[i] = x; + } +} + +static gboolean +videomixer_videoconvert_convert_compute_resample (VideoConvert * convert) +{ + GstVideoInfo *in_info, *out_info; + const GstVideoFormatInfo *sfinfo, *dfinfo; + gint lines, i; + gint width; + + in_info = &convert->in_info; + out_info = &convert->out_info; + + sfinfo = in_info->finfo; + dfinfo = out_info->finfo; + + width = convert->width; + + convert->upsample = gst_video_chroma_resample_new (0, + in_info->chroma_site, 0, sfinfo->unpack_format, sfinfo->w_sub[2], + sfinfo->h_sub[2]); + if (convert->upsample) { + gst_video_chroma_resample_get_info (convert->upsample, + &convert->up_n_lines, &convert->up_offset); + } else { + convert->up_n_lines = 1; + convert->up_offset = 0; + } + GST_DEBUG ("upsample: %p, offset %d, n_lines %d", convert->upsample, + convert->up_offset, convert->up_n_lines); + + convert->downsample = gst_video_chroma_resample_new (0, + out_info->chroma_site, 0, dfinfo->unpack_format, -dfinfo->w_sub[2], + -dfinfo->h_sub[2]); + if (convert->downsample) { + gst_video_chroma_resample_get_info (convert->downsample, + &convert->down_n_lines, &convert->down_offset); + } else { + convert->down_n_lines = 1; + convert->down_offset = 0; + } + + GST_DEBUG ("downsample: %p, offset %d, n_lines %d", convert->downsample, + convert->down_offset, convert->down_n_lines); + + lines = MAX (convert->down_n_lines, convert->up_n_lines); + + convert->n_tmplines = lines; + convert->tmplines = g_malloc (lines * sizeof (gpointer)); + for (i = 0; i < lines; i++) + convert->tmplines[i] = g_malloc (sizeof (guint16) * (width + 8) * 4); + + return TRUE; +} + +#define TO_16(x) (((x)<<8) | (x)) + +static void +convert_to16 (gpointer line, gint width) +{ + guint8 *line8 = line; + guint16 *line16 = line; + gint i; + + for (i = (width - 1) * 4; i >= 0; i--) + line16[i] = TO_16 (line8[i]); +} + +static void +convert_to8 (gpointer line, gint width) +{ + guint8 *line8 = line; + guint16 *line16 = line; + gint i; + + for (i = 0; i < width * 4; i++) + line8[i] = line16[i] >> 8; +} + +#define UNPACK_FRAME(frame,dest,line,width) \ + frame->info.finfo->unpack_func (frame->info.finfo, \ + (GST_VIDEO_FRAME_IS_INTERLACED (frame) ? \ + GST_VIDEO_PACK_FLAG_INTERLACED : \ + GST_VIDEO_PACK_FLAG_NONE), \ + dest, frame->data, frame->info.stride, 0, \ + line, width) +#define PACK_FRAME(frame,dest,line,width) \ + frame->info.finfo->pack_func (frame->info.finfo, \ + (GST_VIDEO_FRAME_IS_INTERLACED (frame) ? \ + GST_VIDEO_PACK_FLAG_INTERLACED : \ + GST_VIDEO_PACK_FLAG_NONE), \ + dest, 0, frame->data, frame->info.stride, \ + frame->info.chroma_site, line, width); + +static void +videomixer_videoconvert_convert_generic (VideoConvert * convert, + GstVideoFrame * dest, const GstVideoFrame * src) +{ + int j, k; + gint width, height, lines, max_lines; + guint in_bits, out_bits; + gconstpointer pal; + gsize palsize; + guint up_n_lines, down_n_lines; + gint up_offset, down_offset; + gint in_lines, out_lines; + gint up_line, down_line; + gint start_offset, stop_offset; + gpointer in_tmplines[8]; + gpointer out_tmplines[8]; + + height = convert->height; + width = convert->width; + + in_bits = convert->in_bits; + out_bits = convert->out_bits; + + lines = convert->lines; + up_n_lines = convert->up_n_lines; + up_offset = convert->up_offset; + down_n_lines = convert->down_n_lines; + down_offset = convert->down_offset; + max_lines = MAX (down_n_lines, up_n_lines); + + in_lines = 0; + out_lines = 0; + + GST_DEBUG ("up_offset %d, up_n_lines %u", up_offset, up_n_lines); + + start_offset = MIN (up_offset, down_offset); + stop_offset = height + start_offset + MAX (up_n_lines, down_n_lines); + + for (; start_offset < stop_offset; start_offset++) { + guint idx, start; + + idx = CLAMP (start_offset, 0, height); + in_tmplines[in_lines] = convert->tmplines[idx % max_lines]; + out_tmplines[out_lines] = in_tmplines[in_lines]; + GST_DEBUG ("start_offset %d, %d, idx %u, in %d, out %d", start_offset, + up_offset, idx, in_lines, out_lines); + + up_line = up_offset + in_lines; + + /* extract the next line */ + if (up_line >= 0 && up_line < height) { + GST_DEBUG ("unpack line %d", up_line); + UNPACK_FRAME (src, in_tmplines[in_lines], up_line, width); + } + + if (start_offset >= up_offset) + in_lines++; + + if (start_offset >= down_offset) + out_lines++; + + if (in_lines < up_n_lines) + continue; + + in_lines = 0; + + /* we have enough lines to upsample */ + if (convert->upsample) { + GST_DEBUG ("doing upsample"); + gst_video_chroma_resample (convert->upsample, in_tmplines, width); + } + + /* convert upsampled lines */ + for (k = 0; k < up_n_lines; k++) { + down_line = up_offset + k; + + /* only takes lines with valid output */ + if (down_line < 0 || down_line >= height) + continue; + + GST_DEBUG ("handle line %d, %d/%d, down_line %d", k, out_lines, + down_n_lines, down_line); + + if (out_bits == 16 || in_bits == 16) { + /* FIXME, we can scale in the conversion matrix */ + if (in_bits == 8) + convert_to16 (in_tmplines[k], width); + + if (convert->matrix) + convert->matrix (convert, in_tmplines[k]); + if (convert->dither16) + convert->dither16 (convert, in_tmplines[k], down_line); + + if (out_bits == 8) + convert_to8 (in_tmplines[k], width); + } else { + if (convert->matrix) + convert->matrix (convert, in_tmplines[k]); + } + } + + start = 0; + while (out_lines >= down_n_lines) { + GST_DEBUG ("doing downsample %u", start); + if (convert->downsample) + gst_video_chroma_resample (convert->downsample, + &out_tmplines[start], width); + + for (j = 0; j < down_n_lines; j += lines) { + idx = down_offset + j; + + if (idx >= 0 && idx < height) { + GST_DEBUG ("packing line %d %d %d", j + start, down_offset, idx); + /* FIXME, not correct if lines > 1 */ + PACK_FRAME (dest, out_tmplines[j + start], idx, width); + } + } + down_offset += down_n_lines; + start += down_n_lines; + out_lines -= down_n_lines; + } + up_offset += up_n_lines; + } + if ((pal = + gst_video_format_get_palette (GST_VIDEO_FRAME_FORMAT (dest), + &palsize))) { + memcpy (GST_VIDEO_FRAME_PLANE_DATA (dest, 1), pal, palsize); + } +} + +#define FRAME_GET_PLANE_STRIDE(frame, plane) \ + GST_VIDEO_FRAME_PLANE_STRIDE (frame, plane) +#define FRAME_GET_PLANE_LINE(frame, plane, line) \ + (gpointer)(((guint8*)(GST_VIDEO_FRAME_PLANE_DATA (frame, plane))) + \ + FRAME_GET_PLANE_STRIDE (frame, plane) * (line)) + +#define FRAME_GET_COMP_STRIDE(frame, comp) \ + GST_VIDEO_FRAME_COMP_STRIDE (frame, comp) +#define FRAME_GET_COMP_LINE(frame, comp, line) \ + (gpointer)(((guint8*)(GST_VIDEO_FRAME_COMP_DATA (frame, comp))) + \ + FRAME_GET_COMP_STRIDE (frame, comp) * (line)) + +#define FRAME_GET_STRIDE(frame) FRAME_GET_PLANE_STRIDE (frame, 0) +#define FRAME_GET_LINE(frame,line) FRAME_GET_PLANE_LINE (frame, 0, line) + +#define FRAME_GET_Y_LINE(frame,line) FRAME_GET_COMP_LINE(frame, GST_VIDEO_COMP_Y, line) +#define FRAME_GET_U_LINE(frame,line) FRAME_GET_COMP_LINE(frame, GST_VIDEO_COMP_U, line) +#define FRAME_GET_V_LINE(frame,line) FRAME_GET_COMP_LINE(frame, GST_VIDEO_COMP_V, line) +#define FRAME_GET_A_LINE(frame,line) FRAME_GET_COMP_LINE(frame, GST_VIDEO_COMP_A, line) + +#define FRAME_GET_Y_STRIDE(frame) FRAME_GET_COMP_STRIDE(frame, GST_VIDEO_COMP_Y) +#define FRAME_GET_U_STRIDE(frame) FRAME_GET_COMP_STRIDE(frame, GST_VIDEO_COMP_U) +#define FRAME_GET_V_STRIDE(frame) FRAME_GET_COMP_STRIDE(frame, GST_VIDEO_COMP_V) +#define FRAME_GET_A_STRIDE(frame) FRAME_GET_COMP_STRIDE(frame, GST_VIDEO_COMP_A) + +/* Fast paths */ + +#define GET_LINE_OFFSETS(interlaced,line,l1,l2) \ + if (interlaced) { \ + l1 = (line & 2 ? line - 1 : line); \ + l2 = l1 + 2; \ + } else { \ + l1 = line; \ + l2 = l1 + 1; \ + } + + +static void +convert_I420_YUY2 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + int i; + gint width = convert->width; + gint height = convert->height; + gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src); + gint l1, l2; + + for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { + GET_LINE_OFFSETS (interlaced, i, l1, l2); + + videomixer_video_convert_orc_convert_I420_YUY2 (FRAME_GET_LINE (dest, l1), + FRAME_GET_LINE (dest, l2), + FRAME_GET_Y_LINE (src, l1), + FRAME_GET_Y_LINE (src, l2), + FRAME_GET_U_LINE (src, i >> 1), + FRAME_GET_V_LINE (src, i >> 1), (width + 1) / 2); + } + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_I420_UYVY (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + int i; + gint width = convert->width; + gint height = convert->height; + gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src); + gint l1, l2; + + for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { + GET_LINE_OFFSETS (interlaced, i, l1, l2); + + videomixer_video_convert_orc_convert_I420_UYVY (FRAME_GET_LINE (dest, l1), + FRAME_GET_LINE (dest, l2), + FRAME_GET_Y_LINE (src, l1), + FRAME_GET_Y_LINE (src, l2), + FRAME_GET_U_LINE (src, i >> 1), + FRAME_GET_V_LINE (src, i >> 1), (width + 1) / 2); + } + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_I420_AYUV (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + int i; + gint width = convert->width; + gint height = convert->height; + gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src); + gint l1, l2; + + for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { + GET_LINE_OFFSETS (interlaced, i, l1, l2); + + videomixer_video_convert_orc_convert_I420_AYUV (FRAME_GET_LINE (dest, l1), + FRAME_GET_LINE (dest, l2), + FRAME_GET_Y_LINE (src, l1), + FRAME_GET_Y_LINE (src, l2), + FRAME_GET_U_LINE (src, i >> 1), FRAME_GET_V_LINE (src, i >> 1), width); + } + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_I420_Y42B (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), width, height); + + videomixer_video_convert_orc_planar_chroma_420_422 (FRAME_GET_U_LINE (dest, + 0), 2 * FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (dest, 1), + 2 * FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), + FRAME_GET_U_STRIDE (src), (width + 1) / 2, height / 2); + + videomixer_video_convert_orc_planar_chroma_420_422 (FRAME_GET_V_LINE (dest, + 0), 2 * FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (dest, 1), + 2 * FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), + FRAME_GET_V_STRIDE (src), (width + 1) / 2, height / 2); +} + +static void +convert_I420_Y444 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), width, height); + + videomixer_video_convert_orc_planar_chroma_420_444 (FRAME_GET_U_LINE (dest, + 0), 2 * FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (dest, 1), + 2 * FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), + FRAME_GET_U_STRIDE (src), (width + 1) / 2, height / 2); + + videomixer_video_convert_orc_planar_chroma_420_444 (FRAME_GET_V_LINE (dest, + 0), 2 * FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (dest, 1), + 2 * FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), + FRAME_GET_V_STRIDE (src), (width + 1) / 2, height / 2); + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_YUY2_I420 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + int i, h; + gint width = convert->width; + gint height = convert->height; + gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src); + gint l1, l2; + + h = height; + if (width & 1) + h--; + + for (i = 0; i < h; i += 2) { + GET_LINE_OFFSETS (interlaced, i, l1, l2); + + videomixer_video_convert_orc_convert_YUY2_I420 (FRAME_GET_Y_LINE (dest, l1), + FRAME_GET_Y_LINE (dest, l2), + FRAME_GET_U_LINE (dest, i >> 1), + FRAME_GET_V_LINE (dest, i >> 1), + FRAME_GET_LINE (src, l1), FRAME_GET_LINE (src, l2), (width + 1) / 2); + } + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_YUY2_AYUV (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_YUY2_AYUV (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), (width + 1) / 2, + height & 1 ? height - 1 : height); + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_YUY2_Y42B (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_YUY2_Y42B (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), + FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), + FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), (width + 1) / 2, height); +} + +static void +convert_YUY2_Y444 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_YUY2_Y444 (FRAME_GET_COMP_LINE (dest, 0, + 0), FRAME_GET_COMP_STRIDE (dest, 0), FRAME_GET_COMP_LINE (dest, 1, 0), + FRAME_GET_COMP_STRIDE (dest, 1), FRAME_GET_COMP_LINE (dest, 2, 0), + FRAME_GET_COMP_STRIDE (dest, 2), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), (width + 1) / 2, height); +} + + +static void +convert_UYVY_I420 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + int i; + gint width = convert->width; + gint height = convert->height; + gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src); + gint l1, l2; + + for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { + GET_LINE_OFFSETS (interlaced, i, l1, l2); + + videomixer_video_convert_orc_convert_UYVY_I420 (FRAME_GET_COMP_LINE (dest, + 0, l1), FRAME_GET_COMP_LINE (dest, 0, l2), + FRAME_GET_COMP_LINE (dest, 1, i >> 1), FRAME_GET_COMP_LINE (dest, 2, + i >> 1), FRAME_GET_LINE (src, l1), FRAME_GET_LINE (src, l2), + (width + 1) / 2); + } + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_UYVY_AYUV (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_UYVY_AYUV (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), (width + 1) / 2, + height & 1 ? height - 1 : height); + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_UYVY_YUY2 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_UYVY_YUY2 (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), (width + 1) / 2, height); +} + +static void +convert_UYVY_Y42B (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_UYVY_Y42B (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), + FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), + FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), (width + 1) / 2, height); +} + +static void +convert_UYVY_Y444 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_UYVY_Y444 (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), + FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), + FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), (width + 1) / 2, height); +} + +static void +convert_AYUV_I420 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_AYUV_I420 (FRAME_GET_Y_LINE (dest, 0), + 2 * FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (dest, 1), + 2 * FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), + FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), + FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), + 2 * FRAME_GET_STRIDE (src), FRAME_GET_LINE (src, 1), + 2 * FRAME_GET_STRIDE (src), width / 2, height / 2); +} + +static void +convert_AYUV_YUY2 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_AYUV_YUY2 (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), width / 2, height); +} + +static void +convert_AYUV_UYVY (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_AYUV_UYVY (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), width / 2, height); +} + +static void +convert_AYUV_Y42B (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_AYUV_Y42B (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), + FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), + FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), (width + 1) / 2, + height & 1 ? height - 1 : height); + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_AYUV_Y444 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_AYUV_Y444 (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), + FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), + FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), width, height); +} + +static void +convert_Y42B_I420 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), width, height); + + videomixer_video_convert_orc_planar_chroma_422_420 (FRAME_GET_U_LINE (dest, + 0), FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), + 2 * FRAME_GET_U_STRIDE (src), FRAME_GET_U_LINE (src, 1), + 2 * FRAME_GET_U_STRIDE (src), (width + 1) / 2, height / 2); + + videomixer_video_convert_orc_planar_chroma_422_420 (FRAME_GET_V_LINE (dest, + 0), FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), + 2 * FRAME_GET_V_STRIDE (src), FRAME_GET_V_LINE (src, 1), + 2 * FRAME_GET_V_STRIDE (src), (width + 1) / 2, height / 2); + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_Y42B_Y444 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), width, height); + + videomixer_video_convert_orc_planar_chroma_422_444 (FRAME_GET_U_LINE (dest, + 0), FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), + FRAME_GET_U_STRIDE (src), (width + 1) / 2, height); + + videomixer_video_convert_orc_planar_chroma_422_444 (FRAME_GET_V_LINE (dest, + 0), FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), + FRAME_GET_V_STRIDE (src), (width + 1) / 2, height); +} + +static void +convert_Y42B_YUY2 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_Y42B_YUY2 (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), + FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), + FRAME_GET_V_STRIDE (src), (width + 1) / 2, height); +} + +static void +convert_Y42B_UYVY (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_Y42B_UYVY (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), + FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), + FRAME_GET_V_STRIDE (src), (width + 1) / 2, height); +} + +static void +convert_Y42B_AYUV (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_Y42B_AYUV (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), + FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), + FRAME_GET_V_STRIDE (src), (width) / 2, height); +} + +static void +convert_Y444_I420 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), width, height); + + videomixer_video_convert_orc_planar_chroma_444_420 (FRAME_GET_U_LINE (dest, + 0), FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), + 2 * FRAME_GET_U_STRIDE (src), FRAME_GET_U_LINE (src, 1), + 2 * FRAME_GET_U_STRIDE (src), (width + 1) / 2, height / 2); + + videomixer_video_convert_orc_planar_chroma_444_420 (FRAME_GET_V_LINE (dest, + 0), FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), + 2 * FRAME_GET_V_STRIDE (src), FRAME_GET_V_LINE (src, 1), + 2 * FRAME_GET_V_STRIDE (src), (width + 1) / 2, height / 2); + + /* now handle last line */ + if (height & 1) { + UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); + PACK_FRAME (dest, convert->tmplines[0], height - 1, width); + } +} + +static void +convert_Y444_Y42B (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), width, height); + + videomixer_video_convert_orc_planar_chroma_444_422 (FRAME_GET_U_LINE (dest, + 0), FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), + FRAME_GET_U_STRIDE (src), (width + 1) / 2, height); + + videomixer_video_convert_orc_planar_chroma_444_422 (FRAME_GET_V_LINE (dest, + 0), FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), + FRAME_GET_V_STRIDE (src), (width + 1) / 2, height); +} + +static void +convert_Y444_YUY2 (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_Y444_YUY2 (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), + FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), + FRAME_GET_V_STRIDE (src), (width + 1) / 2, height); +} + +static void +convert_Y444_UYVY (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_Y444_UYVY (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), + FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), + FRAME_GET_V_STRIDE (src), (width + 1) / 2, height); +} + +static void +convert_Y444_AYUV (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_Y444_AYUV (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), + FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), + FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), + FRAME_GET_V_STRIDE (src), width, height); +} + +#if G_BYTE_ORDER == G_LITTLE_ENDIAN +static void +convert_AYUV_ARGB (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_AYUV_ARGB (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), width, height); +} + +static void +convert_AYUV_BGRA (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_AYUV_BGRA (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), width, height); +} + +static void +convert_AYUV_ABGR (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_AYUV_ABGR (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), width, height); +} + +static void +convert_AYUV_RGBA (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + gint width = convert->width; + gint height = convert->height; + + videomixer_video_convert_orc_convert_AYUV_RGBA (FRAME_GET_LINE (dest, 0), + FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), + FRAME_GET_STRIDE (src), width, height); +} + +static void +convert_I420_BGRA (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src) +{ + int i; + int quality = 0; + gint width = convert->width; + gint height = convert->height; + + if (quality > 3) { + for (i = 0; i < height; i++) { + if (i & 1) { + videomixer_video_convert_orc_convert_I420_BGRA_avg (FRAME_GET_LINE + (dest, i), FRAME_GET_Y_LINE (src, i), FRAME_GET_U_LINE (src, + i >> 1), FRAME_GET_U_LINE (src, (i >> 1) + 1), + FRAME_GET_V_LINE (src, i >> 1), FRAME_GET_V_LINE (src, + (i >> 1) + 1), width); + } else { + videomixer_video_convert_orc_convert_I420_BGRA (FRAME_GET_LINE (dest, + i), FRAME_GET_Y_LINE (src, i), FRAME_GET_U_LINE (src, i >> 1), + FRAME_GET_V_LINE (src, i >> 1), width); + } + } + } else { + for (i = 0; i < height; i++) { + videomixer_video_convert_orc_convert_I420_BGRA (FRAME_GET_LINE (dest, i), + FRAME_GET_Y_LINE (src, i), + FRAME_GET_U_LINE (src, i >> 1), + FRAME_GET_V_LINE (src, i >> 1), width); + } + } +} +#endif + + + +/* Fast paths */ + +typedef struct +{ + GstVideoFormat in_format; + GstVideoColorMatrix in_matrix; + GstVideoFormat out_format; + GstVideoColorMatrix out_matrix; + gboolean keeps_color_matrix; + gboolean keeps_interlaced; + void (*convert) (VideoConvert * convert, GstVideoFrame * dest, + const GstVideoFrame * src); +} VideoTransform; + +static const VideoTransform transforms[] = { + {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_I420_YUY2}, + {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_I420_UYVY}, + {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_I420_AYUV}, + {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, convert_I420_Y42B}, + {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, convert_I420_Y444}, + + {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_YUY2_I420}, + {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_UYVY_YUY2}, /* alias */ + {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_YUY2_AYUV}, + {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_YUY2_Y42B}, + {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_YUY2_Y444}, + + {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_UYVY_I420}, + {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_UYVY_YUY2}, + {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_UYVY_AYUV}, + {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_UYVY_Y42B}, + {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_UYVY_Y444}, + + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, convert_AYUV_I420}, + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_AYUV_YUY2}, + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_AYUV_UYVY}, + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_AYUV_Y42B}, + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_AYUV_Y444}, + + {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, convert_Y42B_I420}, + {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_Y42B_YUY2}, + {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_Y42B_UYVY}, + {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_Y42B_AYUV}, + {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_Y42B_Y444}, + + {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, convert_Y444_I420}, + {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_Y444_YUY2}, + {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_Y444_UYVY}, + {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_Y444_AYUV}, + {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, + GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, convert_Y444_Y42B}, + +#if G_BYTE_ORDER == G_LITTLE_ENDIAN + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_ARGB, + GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, convert_AYUV_ARGB}, + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRA, + GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, convert_AYUV_BGRA}, + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_xRGB, + GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, convert_AYUV_ARGB}, /* alias */ + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRx, + GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, convert_AYUV_BGRA}, /* alias */ + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_ABGR, + GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, convert_AYUV_ABGR}, + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_RGBA, + GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, convert_AYUV_RGBA}, + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_xBGR, + GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, convert_AYUV_ABGR}, /* alias */ + {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_RGBx, + GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, convert_AYUV_RGBA}, /* alias */ + + {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRA, + GST_VIDEO_COLOR_MATRIX_RGB, FALSE, FALSE, convert_I420_BGRA}, +#endif +}; + +static gboolean +videomixer_videoconvert_convert_lookup_fastpath (VideoConvert * convert) +{ + int i; + GstVideoFormat in_format, out_format; + GstVideoColorMatrix in_matrix, out_matrix; + gboolean interlaced; + + in_format = GST_VIDEO_INFO_FORMAT (&convert->in_info); + out_format = GST_VIDEO_INFO_FORMAT (&convert->out_info); + + in_matrix = convert->in_info.colorimetry.matrix; + out_matrix = convert->out_info.colorimetry.matrix; + + interlaced = GST_VIDEO_INFO_IS_INTERLACED (&convert->in_info); + interlaced |= GST_VIDEO_INFO_IS_INTERLACED (&convert->out_info); + + for (i = 0; i < sizeof (transforms) / sizeof (transforms[0]); i++) { + if (transforms[i].in_format == in_format && + transforms[i].out_format == out_format && + (transforms[i].keeps_color_matrix || + (transforms[i].in_matrix == in_matrix && + transforms[i].out_matrix == out_matrix)) && + (transforms[i].keeps_interlaced || !interlaced)) { + GST_DEBUG ("using fastpath"); + convert->convert = transforms[i].convert; + return TRUE; + } + } + return FALSE; +} diff --git a/gst/videomixer/videoconvert.h b/gst/videomixer/videoconvert.h new file mode 100644 index 0000000000000000000000000000000000000000..b83b28ba14dc396c960faef84bbccf7fc8b90074 --- /dev/null +++ b/gst/videomixer/videoconvert.h @@ -0,0 +1,80 @@ +/* Video conversion functions + * Copyright (C) 2010 David Schleef <ds@schleef.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __COLORSPACE_H__ +#define __COLORSPACE_H__ + +#include <gst/video/video.h> +#include "gstcms.h" + +G_BEGIN_DECLS + +typedef struct _VideoConvert VideoConvert; + +typedef enum { + DITHER_NONE, + DITHER_VERTERR, + DITHER_HALFTONE +} ColorSpaceDitherMethod; + +struct _VideoConvert { + GstVideoInfo in_info; + GstVideoInfo out_info; + + gint width; + gint height; + + gint in_bits; + gint out_bits; + gint cmatrix[4][4]; + + ColorSpaceDitherMethod dither; + + guint lines; + + guint n_tmplines; + gpointer *tmplines; + guint16 *errline; + + GstVideoChromaResample *upsample; + guint up_n_lines; + gint up_offset; + GstVideoChromaResample *downsample; + guint down_n_lines; + gint down_offset; + + void (*convert) (VideoConvert *convert, GstVideoFrame *dest, const GstVideoFrame *src); + void (*matrix) (VideoConvert *convert, gpointer pixels); + void (*dither16) (VideoConvert *convert, guint16 * pixels, int j); + +}; + +VideoConvert * videomixer_videoconvert_convert_new (GstVideoInfo *in_info, + GstVideoInfo *out_info); +void videomixer_videoconvert_convert_free (VideoConvert * convert); + +void videomixer_videoconvert_convert_set_dither (VideoConvert * convert, int type); + +void videomixer_videoconvert_convert_convert (VideoConvert * convert, + GstVideoFrame *dest, const GstVideoFrame *src); + + +G_END_DECLS + +#endif /* __GST_COLORSPACE_H__ */ diff --git a/gst/videomixer/videomixer2.c b/gst/videomixer/videomixer2.c index aa11051d9d42a84840ca7bf2dfff79eb04c59fe2..c12f036813c82c6f02c5de18e2ec83181f462362 100644 --- a/gst/videomixer/videomixer2.c +++ b/gst/videomixer/videomixer2.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -26,9 +26,7 @@ * output parameters. Indeed output video frames will have the geometry of the * biggest incoming video stream and the framerate of the fastest incoming one. * - * All sink pads must be either AYUV, ARGB or BGRA, but a mixture of them is not - * supported. The src pad will have the same colorspace as the sinks. - * No colorspace conversion is done. + * Videomixer will do colorspace conversion. * * Individual parameters for each input stream can be configured on the * #GstVideoMixer2Pad. @@ -86,6 +84,7 @@ #include "videomixer2.h" #include "videomixer2pad.h" +#include "videoconvert.h" #ifdef DISABLE_ORC #define orc_memset memset @@ -289,9 +288,150 @@ gst_videomixer2_update_src_caps (GstVideoMixer2 * mix) done: GST_VIDEO_MIXER2_SETCAPS_UNLOCK (mix); + return ret; } +static gboolean +gst_videomixer2_update_converters (GstVideoMixer2 * mix) +{ + GSList *tmp; + GstVideoFormat best_format; + GstVideoInfo best_info; + GstVideoMixer2Pad *pad; + gboolean need_alpha = FALSE; + GstCaps *downstream_caps; + GstCaps *possible_caps; + gchar *best_colorimetry; + const gchar *best_chroma; + GHashTable *formats_table = g_hash_table_new (g_direct_hash, g_direct_equal); + gint best_format_number = 0; + + best_format = GST_VIDEO_FORMAT_UNKNOWN; + gst_video_info_init (&best_info); + + downstream_caps = gst_pad_get_allowed_caps (mix->srcpad); + + if (!downstream_caps || gst_caps_is_empty (downstream_caps)) + return FALSE; + + /* first find new preferred format */ + for (tmp = mix->sinkpads; tmp; tmp = tmp->next) { + GstStructure *s; + gint format_number; + + pad = tmp->data; + + if (!pad->info.finfo) + continue; + + /* If we want alpha, disregard all the other formats */ + if (need_alpha && !(pad->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_ALPHA)) + continue; + + /* This can happen if we release a pad and another pad hasn't been negotiated yet */ + if (GST_VIDEO_INFO_FORMAT (&pad->info) == GST_VIDEO_FORMAT_UNKNOWN) + continue; + + possible_caps = gst_video_info_to_caps (&pad->info); + + s = gst_caps_get_structure (possible_caps, 0); + gst_structure_remove_fields (s, "width", "height", "framerate", + "pixel-aspect-ratio", "interlace-mode", NULL); + + /* Can downstream accept this format ? */ + if (!gst_caps_can_intersect (downstream_caps, possible_caps)) { + gst_caps_unref (possible_caps); + continue; + } + + gst_caps_unref (possible_caps); + + format_number = + GPOINTER_TO_INT (g_hash_table_lookup (formats_table, + GINT_TO_POINTER (GST_VIDEO_INFO_FORMAT (&pad->info)))); + format_number += 1; + + g_hash_table_replace (formats_table, + GINT_TO_POINTER (GST_VIDEO_INFO_FORMAT (&pad->info)), + GINT_TO_POINTER (format_number)); + + /* If that pad is the first with alpha, set it as the new best format */ + if (!need_alpha && (pad->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_ALPHA)) { + need_alpha = TRUE; + best_format = GST_VIDEO_INFO_FORMAT (&pad->info); + best_info = pad->info; + best_format_number = format_number; + } else if (format_number > best_format_number) { + best_format = GST_VIDEO_INFO_FORMAT (&pad->info); + best_info = pad->info; + best_format_number = format_number; + } + } + + g_hash_table_unref (formats_table); + + if (best_format == GST_VIDEO_FORMAT_UNKNOWN) { + downstream_caps = gst_caps_fixate (downstream_caps); + gst_video_info_from_caps (&best_info, downstream_caps); + best_format = GST_VIDEO_INFO_FORMAT (&best_info); + } + + gst_caps_unref (downstream_caps); + + best_colorimetry = gst_video_colorimetry_to_string (&(best_info.colorimetry)); + best_chroma = gst_video_chroma_to_string (best_info.chroma_site); + mix->info = best_info; + + GST_DEBUG_OBJECT (mix, + "The output format will now be : %d with colorimetry : %s and chroma : %s", + best_format, best_colorimetry, best_chroma); + + /* Then browse the sinks once more, setting or unsetting conversion if needed */ + for (tmp = mix->sinkpads; tmp; tmp = tmp->next) { + gchar *colorimetry; + const gchar *chroma; + + pad = tmp->data; + + if (!pad->info.finfo) + continue; + + if (GST_VIDEO_INFO_FORMAT (&pad->info) == GST_VIDEO_FORMAT_UNKNOWN) + continue; + + if (pad->convert) + videomixer_videoconvert_convert_free (pad->convert); + + pad->convert = NULL; + + colorimetry = gst_video_colorimetry_to_string (&(pad->info.colorimetry)); + chroma = gst_video_chroma_to_string (pad->info.chroma_site); + + if (best_format != GST_VIDEO_INFO_FORMAT (&pad->info) || + g_strcmp0 (colorimetry, best_colorimetry) || + g_strcmp0 (chroma, best_chroma)) { + GST_DEBUG_OBJECT (pad, "This pad will be converted from %d to %d", + GST_VIDEO_INFO_FORMAT (&pad->info), + GST_VIDEO_INFO_FORMAT (&best_info)); + pad->convert = + videomixer_videoconvert_convert_new (&pad->info, &best_info); + pad->need_conversion_update = TRUE; + if (!pad->convert) { + g_free (colorimetry); + g_free (best_colorimetry); + GST_WARNING ("No path found for conversion"); + return FALSE; + } + } else { + GST_DEBUG_OBJECT (pad, "This pad will not need conversion"); + } + g_free (colorimetry); + } + + g_free (best_colorimetry); + return TRUE; +} static gboolean gst_videomixer2_pad_sink_setcaps (GstPad * pad, GstObject * parent, @@ -314,21 +454,28 @@ gst_videomixer2_pad_sink_setcaps (GstPad * pad, GstObject * parent, GST_VIDEO_MIXER2_LOCK (mix); if (GST_VIDEO_INFO_FORMAT (&mix->info) != GST_VIDEO_FORMAT_UNKNOWN) { - if (GST_VIDEO_INFO_FORMAT (&mix->info) != GST_VIDEO_INFO_FORMAT (&info) || - GST_VIDEO_INFO_PAR_N (&mix->info) != GST_VIDEO_INFO_PAR_N (&info) || - GST_VIDEO_INFO_PAR_D (&mix->info) != GST_VIDEO_INFO_PAR_D (&info)) { - GST_ERROR_OBJECT (pad, "Caps not compatible with other pads' caps"); + if (GST_VIDEO_INFO_PAR_N (&mix->info) != GST_VIDEO_INFO_PAR_N (&info) + || GST_VIDEO_INFO_PAR_D (&mix->info) != GST_VIDEO_INFO_PAR_D (&info) || + GST_VIDEO_INFO_INTERLACE_MODE (&mix->info) != + GST_VIDEO_INFO_INTERLACE_MODE (&info)) { + GST_DEBUG_OBJECT (pad, + "got input caps %" GST_PTR_FORMAT ", but " "current caps are %" + GST_PTR_FORMAT, caps, mix->current_caps); GST_VIDEO_MIXER2_UNLOCK (mix); - goto beach; + return FALSE; } } - mix->info = info; mixpad->info = info; - GST_VIDEO_MIXER2_UNLOCK (mix); + GST_COLLECT_PADS_STREAM_LOCK (mix->collect); - ret = gst_videomixer2_update_src_caps (mix); + ret = gst_videomixer2_update_converters (mix); + + GST_VIDEO_MIXER2_UNLOCK (mix); + if (ret) + ret = gst_videomixer2_update_src_caps (mix); + GST_COLLECT_PADS_STREAM_UNLOCK (mix->collect); beach: return ret; @@ -339,12 +486,20 @@ gst_videomixer2_pad_sink_getcaps (GstPad * pad, GstVideoMixer2 * mix, GstCaps * filter) { GstCaps *srccaps; + GstCaps *template_caps; + GstCaps *filtered_caps; + GstCaps *returned_caps; GstStructure *s; + gboolean had_current_caps = TRUE; gint i, n; + template_caps = gst_pad_get_pad_template_caps (GST_PAD (mix->srcpad)); + srccaps = gst_pad_get_current_caps (GST_PAD (mix->srcpad)); - if (srccaps == NULL) - srccaps = gst_pad_get_pad_template_caps (GST_PAD (mix->srcpad)); + if (srccaps == NULL) { + had_current_caps = FALSE; + srccaps = template_caps; + } srccaps = gst_caps_make_writable (srccaps); @@ -357,11 +512,23 @@ gst_videomixer2_pad_sink_getcaps (GstPad * pad, GstVideoMixer2 * mix, if (!gst_structure_has_field (s, "pixel-aspect-ratio")) gst_structure_set (s, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, NULL); + + gst_structure_remove_fields (s, "colorimetry", "chroma-site", "format", + NULL); } - GST_DEBUG_OBJECT (pad, "Returning %" GST_PTR_FORMAT, srccaps); + filtered_caps = srccaps; + if (filter) + filtered_caps = gst_caps_intersect (srccaps, filter); + returned_caps = gst_caps_intersect (filtered_caps, template_caps); + + gst_caps_unref (srccaps); + if (filter) + gst_caps_unref (filtered_caps); + if (had_current_caps) + gst_caps_unref (template_caps); - return srccaps; + return returned_caps; } static gboolean @@ -369,17 +536,26 @@ gst_videomixer2_pad_sink_acceptcaps (GstPad * pad, GstVideoMixer2 * mix, GstCaps * caps) { gboolean ret; + GstCaps *modified_caps; GstCaps *accepted_caps; + GstCaps *template_caps; + gboolean had_current_caps = TRUE; gint i, n; GstStructure *s; GST_DEBUG_OBJECT (pad, "%" GST_PTR_FORMAT, caps); accepted_caps = gst_pad_get_current_caps (GST_PAD (mix->srcpad)); - if (accepted_caps == NULL) - accepted_caps = gst_pad_get_pad_template_caps (GST_PAD (mix->srcpad)); + + template_caps = gst_pad_get_pad_template_caps (GST_PAD (mix->srcpad)); + + if (accepted_caps == NULL) { + accepted_caps = template_caps; + had_current_caps = FALSE; + } accepted_caps = gst_caps_make_writable (accepted_caps); + GST_LOG_OBJECT (pad, "src caps %" GST_PTR_FORMAT, accepted_caps); n = gst_caps_get_size (accepted_caps); @@ -391,14 +567,21 @@ gst_videomixer2_pad_sink_acceptcaps (GstPad * pad, GstVideoMixer2 * mix, if (!gst_structure_has_field (s, "pixel-aspect-ratio")) gst_structure_set (s, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, NULL); + + gst_structure_remove_fields (s, "colorimetry", "chroma-site", "format", + NULL); } + modified_caps = gst_caps_intersect (accepted_caps, template_caps); + ret = gst_caps_can_intersect (caps, accepted_caps); - GST_INFO_OBJECT (pad, "%saccepted caps %" GST_PTR_FORMAT, (ret ? "" : "not "), - caps); - GST_INFO_OBJECT (pad, "acceptable caps are %" GST_PTR_FORMAT, accepted_caps); + GST_DEBUG_OBJECT (pad, "%saccepted caps %" GST_PTR_FORMAT, + (ret ? "" : "not "), caps); + GST_DEBUG_OBJECT (pad, "acceptable caps are %" GST_PTR_FORMAT, accepted_caps); gst_caps_unref (accepted_caps); - + gst_caps_unref (modified_caps); + if (had_current_caps) + gst_caps_unref (template_caps); return ret; } @@ -536,6 +719,8 @@ gst_videomixer2_pad_init (GstVideoMixer2Pad * mixerpad) mixerpad->xpos = DEFAULT_PAD_XPOS; mixerpad->ypos = DEFAULT_PAD_YPOS; mixerpad->alpha = DEFAULT_PAD_ALPHA; + mixerpad->convert = NULL; + mixerpad->need_conversion_update = FALSE; } /* GstVideoMixer2 */ @@ -588,7 +773,7 @@ gst_videomixer2_update_qos (GstVideoMixer2 * mix, gdouble proportion, if (G_LIKELY (timestamp != GST_CLOCK_TIME_NONE)) { if (G_UNLIKELY (diff > 0)) mix->earliest_time = - timestamp + 2 * diff + gst_util_uint64_scale_int (GST_SECOND, + timestamp + 2 * diff + gst_util_uint64_scale_int_round (GST_SECOND, GST_VIDEO_INFO_FPS_D (&mix->info), GST_VIDEO_INFO_FPS_N (&mix->info)); else mix->earliest_time = timestamp + diff; @@ -641,7 +826,8 @@ gst_videomixer2_reset (GstVideoMixer2 * mix) } mix->newseg_pending = TRUE; - mix->flush_stop_pending = FALSE; + g_atomic_int_set (&mix->flush_stop_pending, FALSE); + g_atomic_int_set (&mix->waiting_flush_stop, FALSE); } /* 1 == OK @@ -707,21 +893,6 @@ gst_videomixer2_fill_queues (GstVideoMixer2 * mix, g_assert (start_time != -1 && end_time != -1); end_time += start_time; /* convert from duration to position */ - if (mixcol->end_time != -1 && mixcol->end_time > end_time) { - GST_WARNING_OBJECT (pad, "Buffer from the past, dropping"); - if (buf == mixcol->queued) { - gst_buffer_unref (buf); - gst_buffer_replace (&mixcol->queued, NULL); - } else { - gst_buffer_unref (buf); - buf = gst_collect_pads_pop (mix->collect, &mixcol->collect); - gst_buffer_unref (buf); - } - - need_more_data = TRUE; - continue; - } - /* Check if it's inside the segment */ if (start_time >= segment->stop || end_time < segment->start) { GST_DEBUG_OBJECT (pad, "Buffer outside the segment"); @@ -755,6 +926,21 @@ gst_videomixer2_fill_queues (GstVideoMixer2 * mix, end_time *= ABS (mix->segment.rate); } + if (mixcol->end_time != -1 && mixcol->end_time > end_time) { + GST_DEBUG_OBJECT (pad, "Buffer from the past, dropping"); + if (buf == mixcol->queued) { + gst_buffer_unref (buf); + gst_buffer_replace (&mixcol->queued, NULL); + } else { + gst_buffer_unref (buf); + buf = gst_collect_pads_pop (mix->collect, &mixcol->collect); + gst_buffer_unref (buf); + } + + need_more_data = TRUE; + continue; + } + if (end_time >= output_start_time && start_time < output_end_time) { GST_DEBUG_OBJECT (pad, "Taking new buffer with start time %" GST_TIME_FORMAT, @@ -799,7 +985,8 @@ gst_videomixer2_fill_queues (GstVideoMixer2 * mix, if (!GST_COLLECT_PADS_STATE_IS_SET (mixcol, GST_COLLECT_PADS_STATE_EOS)) need_more_data = TRUE; - } else { + } else if (!GST_COLLECT_PADS_STATE_IS_SET (mixcol, + GST_COLLECT_PADS_STATE_EOS)) { eos = FALSE; } } @@ -879,6 +1066,8 @@ gst_videomixer2_blend_buffers (GstVideoMixer2 * mix, GstClockTime timestamp; gint64 stream_time; GstSegment *seg; + GstVideoFrame converted_frame; + GstBuffer *converted_buf = NULL; GstVideoFrame frame; seg = &mixcol->collect.segment; @@ -894,9 +1083,37 @@ gst_videomixer2_blend_buffers (GstVideoMixer2 * mix, gst_video_frame_map (&frame, &pad->info, mixcol->buffer, GST_MAP_READ); - composite (&frame, pad->xpos, pad->ypos, pad->alpha, &outframe); + if (pad->convert) { + gint converted_size; + + /* We wait until here to set the conversion infos, in case mix->info changed */ + if (pad->need_conversion_update) { + pad->conversion_info = mix->info; + gst_video_info_set_format (&(pad->conversion_info), + GST_VIDEO_INFO_FORMAT (&mix->info), pad->info.width, + pad->info.height); + pad->need_conversion_update = FALSE; + } + + converted_size = pad->conversion_info.size; + converted_size = converted_size > outsize ? converted_size : outsize; + converted_buf = gst_buffer_new_allocate (NULL, converted_size, ¶ms); - gst_video_frame_unmap (&frame); + gst_video_frame_map (&converted_frame, &(pad->conversion_info), + converted_buf, GST_MAP_READWRITE); + videomixer_videoconvert_convert_convert (pad->convert, &converted_frame, + &frame); + gst_video_frame_unmap (&frame); + } else { + converted_frame = frame; + } + + composite (&converted_frame, pad->xpos, pad->ypos, pad->alpha, &outframe); + + if (pad->convert) + gst_buffer_unref (converted_buf); + + gst_video_frame_unmap (&converted_frame); } } gst_video_frame_unmap (&outframe); @@ -964,15 +1181,36 @@ gst_videomixer2_collected (GstCollectPads * pads, GstVideoMixer2 * mix) gst_pad_push_event (mix->srcpad, gst_event_new_flush_stop (TRUE)); } + if (mix->send_stream_start) { + gchar s_id[32]; + + /* stream-start (FIXME: create id based on input ids) */ + g_snprintf (s_id, sizeof (s_id), "mix-%08x", g_random_int ()); + if (!gst_pad_push_event (mix->srcpad, gst_event_new_stream_start (s_id))) { + GST_WARNING_OBJECT (mix->srcpad, "Sending stream start event failed"); + } + mix->send_stream_start = FALSE; + } + + if (mix->send_caps) { + if (!gst_pad_push_event (mix->srcpad, + gst_event_new_caps (mix->current_caps))) { + GST_WARNING_OBJECT (mix->srcpad, "Sending caps event failed"); + } + mix->send_caps = FALSE; + } + GST_VIDEO_MIXER2_LOCK (mix); if (mix->newseg_pending) { GST_DEBUG_OBJECT (mix, "Sending NEWSEGMENT event"); + GST_VIDEO_MIXER2_UNLOCK (mix); if (!gst_pad_push_event (mix->srcpad, gst_event_new_segment (&mix->segment))) { ret = GST_FLOW_ERROR; - goto done; + goto done_unlocked; } + GST_VIDEO_MIXER2_LOCK (mix); mix->newseg_pending = FALSE; } @@ -981,17 +1219,22 @@ gst_videomixer2_collected (GstCollectPads * pads, GstVideoMixer2 * mix) else output_start_time = mix->segment.position; - if (output_start_time >= mix->segment.stop) { + output_end_time = + mix->ts_offset + gst_util_uint64_scale_round (mix->nframes + 1, + GST_SECOND * GST_VIDEO_INFO_FPS_D (&mix->info), + GST_VIDEO_INFO_FPS_N (&mix->info)) + mix->segment.start; + + if (output_end_time >= mix->segment.stop) { GST_DEBUG_OBJECT (mix, "Segment done"); - gst_pad_push_event (mix->srcpad, gst_event_new_eos ()); - ret = GST_FLOW_EOS; - goto done; + GST_VIDEO_MIXER2_UNLOCK (mix); + if (!(mix->segment.flags & GST_SEGMENT_FLAG_SEGMENT)) { + gst_pad_push_event (mix->srcpad, gst_event_new_eos ()); + + ret = GST_FLOW_EOS; + goto done_unlocked; + } } - output_end_time = - mix->ts_offset + gst_util_uint64_scale (mix->nframes + 1, - GST_SECOND * GST_VIDEO_INFO_FPS_D (&mix->info), - GST_VIDEO_INFO_FPS_N (&mix->info)); if (mix->segment.stop != -1) output_end_time = MIN (output_end_time, mix->segment.stop); @@ -1002,10 +1245,11 @@ gst_videomixer2_collected (GstCollectPads * pads, GstVideoMixer2 * mix) ret = GST_FLOW_OK; goto done; } else if (res == -1) { + GST_VIDEO_MIXER2_UNLOCK (mix); GST_DEBUG_OBJECT (mix, "All sinkpads are EOS -- forwarding"); gst_pad_push_event (mix->srcpad, gst_event_new_eos ()); ret = GST_FLOW_EOS; - goto done; + goto done_unlocked; } else if (res == -2) { GST_ERROR_OBJECT (mix, "Error collecting buffers"); ret = GST_FLOW_ERROR; @@ -1049,48 +1293,31 @@ gst_videomixer2_collected (GstCollectPads * pads, GstVideoMixer2 * mix) GST_TIME_ARGS (GST_BUFFER_DURATION (outbuf))); ret = gst_pad_push (mix->srcpad, outbuf); } - GST_VIDEO_MIXER2_LOCK (mix); + goto done_unlocked; done: GST_VIDEO_MIXER2_UNLOCK (mix); +done_unlocked: return ret; } -static gboolean -gst_videomixer2_query_caps (GstPad * pad, GstObject * parent, GstQuery * query) -{ - GstCaps *filter, *caps; - GstVideoMixer2 *mix = GST_VIDEO_MIXER2 (parent); - GstStructure *s; - gint n; - - gst_query_parse_caps (query, &filter); - - if (GST_VIDEO_INFO_FORMAT (&mix->info) != GST_VIDEO_FORMAT_UNKNOWN) { - caps = gst_pad_get_current_caps (mix->srcpad); - } else { - caps = gst_pad_get_pad_template_caps (mix->srcpad); - } - - caps = gst_caps_make_writable (caps); - - n = gst_caps_get_size (caps) - 1; - for (; n >= 0; n--) { - s = gst_caps_get_structure (caps, n); - gst_structure_set (s, "width", GST_TYPE_INT_RANGE, 1, G_MAXINT, - "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL); - if (GST_VIDEO_INFO_FPS_D (&mix->info) != 0) { - gst_structure_set (s, - "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL); - } - } - gst_query_set_caps_result (query, caps); - gst_caps_unref (caps); - - return TRUE; -} - +/* FIXME, the duration query should reflect how long you will produce + * data, that is the amount of stream time until you will emit EOS. + * + * For synchronized mixing this is always the max of all the durations + * of upstream since we emit EOS when all of them finished. + * + * We don't do synchronized mixing so this really depends on where the + * streams where punched in and what their relative offsets are against + * eachother which we can get from the first timestamps we see. + * + * When we add a new stream (or remove a stream) the duration might + * also become invalid again and we need to post a new DURATION + * message to notify this fact to the parent. + * For now we take the max of all the upstream elements so the simple + * cases work at least somewhat. + */ static gboolean gst_videomixer2_query_duration (GstVideoMixer2 * mix, GstQuery * query) { @@ -1275,7 +1502,7 @@ gst_videomixer2_src_query (GstPad * pad, GstObject * parent, GstQuery * query) res = gst_videomixer2_query_latency (mix, query); break; case GST_QUERY_CAPS: - res = gst_videomixer2_query_caps (pad, parent, query); + res = gst_pad_query_default (pad, parent, query); break; default: /* FIXME, needs a custom query handler because we have multiple @@ -1386,7 +1613,8 @@ gst_videomixer2_src_event (GstPad * pad, GstObject * parent, GstEvent * event) * forwarding the seek upstream or from gst_videomixer_collected, * whichever happens first. */ - mix->flush_stop_pending = TRUE; + g_atomic_int_set (&mix->flush_stop_pending, TRUE); + g_atomic_int_set (&mix->waiting_flush_stop, FALSE); } GST_COLLECT_PADS_STREAM_UNLOCK (mix->collect); @@ -1394,13 +1622,6 @@ gst_videomixer2_src_event (GstPad * pad, GstObject * parent, GstEvent * event) gst_videomixer2_reset_qos (mix); result = gst_videomixer2_push_sink_event (mix, event); - - if (g_atomic_int_compare_and_exchange (&mix->flush_stop_pending, TRUE, - FALSE)) { - GST_DEBUG_OBJECT (mix, "pending flush stop"); - gst_pad_push_event (mix->srcpad, gst_event_new_flush_stop (TRUE)); - } - break; } case GST_EVENT_NAVIGATION: @@ -1599,9 +1820,13 @@ gst_videomixer2_src_setcaps (GstPad * pad, GstVideoMixer2 * mix, GstCaps * caps) } GST_VIDEO_MIXER2_UNLOCK (mix); - ret = gst_pad_set_caps (pad, caps); -done: + if (mix->current_caps == NULL || + gst_caps_is_equal (caps, mix->current_caps) == FALSE) { + gst_caps_replace (&mix->current_caps, caps); + mix->send_caps = TRUE; + } +done: return ret; } @@ -1624,7 +1849,7 @@ gst_videomixer2_sink_clip (GstCollectPads * pads, end_time = GST_BUFFER_DURATION (buf); if (end_time == -1 && GST_VIDEO_INFO_FPS_N (&pad->info) != 0) end_time = - gst_util_uint64_scale_int (GST_SECOND, + gst_util_uint64_scale_int_round (GST_SECOND, GST_VIDEO_INFO_FPS_D (&pad->info), GST_VIDEO_INFO_FPS_N (&pad->info)); if (end_time == -1) { *outbuf = buf; @@ -1664,7 +1889,7 @@ gst_videomixer2_sink_event (GstCollectPads * pads, GstCollectData * cdata, GstEvent * event, GstVideoMixer2 * mix) { GstVideoMixer2Pad *pad = GST_VIDEO_MIXER2_PAD (cdata->pad); - gboolean ret = TRUE; + gboolean ret = TRUE, discard = FALSE; GST_DEBUG_OBJECT (pad, "Got %s event on pad %s:%s", GST_EVENT_TYPE_NAME (event), GST_DEBUG_PAD_NAME (pad)); @@ -1689,15 +1914,30 @@ gst_videomixer2_sink_event (GstCollectPads * pads, GstCollectData * cdata, g_assert (seg.format == GST_FORMAT_TIME); break; } + case GST_EVENT_FLUSH_START: + g_atomic_int_set (&mix->waiting_flush_stop, TRUE); + g_atomic_int_set (&mix->flush_stop_pending, FALSE); + ret = gst_collect_pads_event_default (pads, cdata, event, discard); + event = NULL; + break; case GST_EVENT_FLUSH_STOP: mix->newseg_pending = TRUE; - mix->flush_stop_pending = FALSE; + if (g_atomic_int_compare_and_exchange (&mix->waiting_flush_stop, TRUE, + FALSE)) { + GST_DEBUG_OBJECT (pad, "forwarding flush stop"); + ret = gst_collect_pads_event_default (pads, cdata, event, discard); + event = NULL; + } else { + discard = TRUE; + GST_DEBUG_OBJECT (pad, "eating flush stop"); + } + + /* FIXME Should we reset in case we were not awaiting a flush stop? */ gst_videomixer2_reset_qos (mix); gst_buffer_replace (&pad->mixcol->buffer, NULL); pad->mixcol->start_time = -1; pad->mixcol->end_time = -1; - gst_segment_init (&mix->segment, GST_FORMAT_TIME); mix->segment.position = -1; mix->ts_offset = 0; mix->nframes = 0; @@ -1707,7 +1947,7 @@ gst_videomixer2_sink_event (GstCollectPads * pads, GstCollectData * cdata, } if (event != NULL) - return gst_collect_pads_event_default (pads, cdata, event, FALSE); + return gst_collect_pads_event_default (pads, cdata, event, discard); return ret; } @@ -1758,6 +1998,10 @@ gst_videomixer2_change_state (GstElement * element, GstStateChange transition) switch (transition) { case GST_STATE_CHANGE_READY_TO_PAUSED: + mix->send_stream_start = TRUE; + mix->send_caps = TRUE; + gst_segment_init (&mix->segment, GST_FORMAT_TIME); + gst_caps_replace (&mix->current_caps, NULL); GST_LOG_OBJECT (mix, "starting collectpads"); gst_collect_pads_start (mix->collect); break; @@ -1867,11 +2111,18 @@ gst_videomixer2_release_pad (GstElement * element, GstPad * pad) mixpad = GST_VIDEO_MIXER2_PAD (pad); + if (mixpad->convert) + videomixer_videoconvert_convert_free (mixpad->convert); + mix->sinkpads = g_slist_remove (mix->sinkpads, pad); gst_child_proxy_child_removed (GST_CHILD_PROXY (mix), G_OBJECT (mixpad), GST_OBJECT_NAME (mixpad)); mix->numpads--; + GST_COLLECT_PADS_STREAM_LOCK (mix->collect); + gst_videomixer2_update_converters (mix); + GST_COLLECT_PADS_STREAM_UNLOCK (mix->collect); + update_caps = GST_VIDEO_INFO_FORMAT (&mix->info) != GST_VIDEO_FORMAT_UNKNOWN; GST_VIDEO_MIXER2_UNLOCK (mix); @@ -1899,6 +2150,22 @@ gst_videomixer2_finalize (GObject * o) G_OBJECT_CLASS (parent_class)->finalize (o); } +static void +gst_videomixer2_dispose (GObject * o) +{ + GstVideoMixer2 *mix = GST_VIDEO_MIXER2 (o); + GSList *tmp; + + for (tmp = mix->sinkpads; tmp; tmp = tmp->next) { + GstVideoMixer2Pad *mixpad = tmp->data; + + if (mixpad->convert) + videomixer_videoconvert_convert_free (mixpad->convert); + } + + gst_caps_replace (&mix->current_caps, NULL); +} + static void gst_videomixer2_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) @@ -1977,6 +2244,7 @@ gst_videomixer2_class_init (GstVideoMixer2Class * klass) GstElementClass *gstelement_class = (GstElementClass *) klass; gobject_class->finalize = gst_videomixer2_finalize; + gobject_class->dispose = gst_videomixer2_dispose; gobject_class->get_property = gst_videomixer2_get_property; gobject_class->set_property = gst_videomixer2_set_property; @@ -2023,6 +2291,7 @@ gst_videomixer2_init (GstVideoMixer2 * mix) mix->collect = gst_collect_pads_new (); mix->background = DEFAULT_BACKGROUND; + mix->current_caps = NULL; gst_collect_pads_set_function (mix->collect, (GstCollectPadsFunction) GST_DEBUG_FUNCPTR (gst_videomixer2_collected), diff --git a/gst/videomixer/videomixer2.h b/gst/videomixer/videomixer2.h index 92eef5308885c74fb33ea1cb202beb7897be7885..4a0b744eb9a92afe4c65c989a6f52ff1137ce77a 100644 --- a/gst/videomixer/videomixer2.h +++ b/gst/videomixer/videomixer2.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_VIDEO_MIXER2_H__ @@ -92,8 +92,16 @@ struct _GstVideoMixer2 /* Output caps */ GstVideoInfo info; + /* current caps */ + GstCaps *current_caps; + gboolean send_caps; + gboolean newseg_pending; - gboolean flush_stop_pending; + gboolean flush_stop_pending; /* Used when we receive a flushing seek, + to send a flush_stop right before the + following buffer */ + gboolean waiting_flush_stop; /* Used when we receive a flush_start to make + sure to forward the flush_stop only once */ GstVideoMixer2Background background; @@ -110,6 +118,8 @@ struct _GstVideoMixer2 BlendFunction blend, overlay; FillCheckerFunction fill_checker; FillColorFunction fill_color; + + gboolean send_stream_start; }; struct _GstVideoMixer2Class diff --git a/gst/videomixer/videomixer2pad.h b/gst/videomixer/videomixer2pad.h index cd344200040fb549e928ed74481ef6e8efd6b97e..bce0aee5339c143fe81f09785ac26e5b3ee73747 100644 --- a/gst/videomixer/videomixer2pad.h +++ b/gst/videomixer/videomixer2pad.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_VIDEO_MIXER2_PAD_H__ @@ -26,6 +26,8 @@ #include <gst/base/gstcollectpads.h> +#include "videoconvert.h" + G_BEGIN_DECLS #define GST_TYPE_VIDEO_MIXER2_PAD (gst_videomixer2_pad_get_type()) @@ -62,6 +64,14 @@ struct _GstVideoMixer2Pad gdouble alpha; GstVideoMixer2Collect *mixcol; + + /* caps used for conversion if needed */ + GstVideoInfo conversion_info; + + /* Converter, if NULL no conversion is done */ + VideoConvert *convert; + + gboolean need_conversion_update; }; struct _GstVideoMixer2PadClass diff --git a/gst/videomixer/videomixerorc-dist.c b/gst/videomixer/videomixerorc-dist.c new file mode 100644 index 0000000000000000000000000000000000000000..9106640f52a35c843c4b84dd6b72efef5ded6c13 --- /dev/null +++ b/gst/videomixer/videomixerorc-dist.c @@ -0,0 +1,18969 @@ + +/* autogenerated from videomixerorc.orc */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <glib.h> + +#ifndef _ORC_INTEGER_TYPEDEFS_ +#define _ORC_INTEGER_TYPEDEFS_ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include <stdint.h> +typedef int8_t orc_int8; +typedef int16_t orc_int16; +typedef int32_t orc_int32; +typedef int64_t orc_int64; +typedef uint8_t orc_uint8; +typedef uint16_t orc_uint16; +typedef uint32_t orc_uint32; +typedef uint64_t orc_uint64; +#define ORC_UINT64_C(x) UINT64_C(x) +#elif defined(_MSC_VER) +typedef signed __int8 orc_int8; +typedef signed __int16 orc_int16; +typedef signed __int32 orc_int32; +typedef signed __int64 orc_int64; +typedef unsigned __int8 orc_uint8; +typedef unsigned __int16 orc_uint16; +typedef unsigned __int32 orc_uint32; +typedef unsigned __int64 orc_uint64; +#define ORC_UINT64_C(x) (x##Ui64) +#define inline __inline +#else +#include <limits.h> +typedef signed char orc_int8; +typedef short orc_int16; +typedef int orc_int32; +typedef unsigned char orc_uint8; +typedef unsigned short orc_uint16; +typedef unsigned int orc_uint32; +#if INT_MAX == LONG_MAX +typedef long long orc_int64; +typedef unsigned long long orc_uint64; +#define ORC_UINT64_C(x) (x##ULL) +#else +typedef long orc_int64; +typedef unsigned long orc_uint64; +#define ORC_UINT64_C(x) (x##UL) +#endif +#endif +typedef union +{ + orc_int16 i; + orc_int8 x2[2]; +} orc_union16; +typedef union +{ + orc_int32 i; + float f; + orc_int16 x2[2]; + orc_int8 x4[4]; +} orc_union32; +typedef union +{ + orc_int64 i; + double f; + orc_int32 x2[2]; + float x2f[2]; + orc_int16 x4[4]; +} orc_union64; +#endif +#ifndef ORC_RESTRICT +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#else +#define ORC_RESTRICT +#endif +#endif + +#ifndef ORC_INTERNAL +#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +#define ORC_INTERNAL __hidden +#elif defined (__GNUC__) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#else +#define ORC_INTERNAL +#endif +#endif + + +#ifndef DISABLE_ORC +#include <orc/orc.h> +#endif +void video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n); +void video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1, + const guint32 * ORC_RESTRICT s1, int n); +void video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); +void video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); +void video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); +void video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); +void video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); +void videomixer_video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, + const guint8 * ORC_RESTRICT s4, int n); +void videomixer_video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, + const guint8 * ORC_RESTRICT s4, int n); +void videomixer_video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, + const guint8 * ORC_RESTRICT s4, int n); +void videomixer_video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, int n); +void videomixer_video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_420_422 (guint8 * + ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_420_444 (guint8 * + ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_422_444 (guint8 * + ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_444_422 (guint8 * + ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_444_420 (guint8 * + ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_422_420 (guint8 * + ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); +void videomixer_video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, int n); +void videomixer_video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, guint8 * ORC_RESTRICT d4, + int d4_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n); +void videomixer_video_convert_orc_convert_I420_BGRA_avg (guint8 * + ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, + const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, int n); +void videomixer_video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n); +void videomixer_video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n); +void videomixer_video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n); +void videomixer_video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n); +void videomixer_video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n); +void videomixer_video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n); +void videomixer_video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n); +void videomixer_video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n); + + +/* begin Orc C target preamble */ +#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) +#define ORC_ABS(a) ((a)<0 ? -(a) : (a)) +#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) +#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b)) +#define ORC_SB_MAX 127 +#define ORC_SB_MIN (-1-ORC_SB_MAX) +#define ORC_UB_MAX 255 +#define ORC_UB_MIN 0 +#define ORC_SW_MAX 32767 +#define ORC_SW_MIN (-1-ORC_SW_MAX) +#define ORC_UW_MAX 65535 +#define ORC_UW_MIN 0 +#define ORC_SL_MAX 2147483647 +#define ORC_SL_MIN (-1-ORC_SL_MAX) +#define ORC_UL_MAX 4294967295U +#define ORC_UL_MIN 0 +#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX) +#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX) +#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX) +#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX) +#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX) +#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX) +#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8)) +#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) +#define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56)) +#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) +#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff)) +#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0)) +#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff))) +#define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0)) +#ifndef ORC_RESTRICT +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#else +#define ORC_RESTRICT +#endif +#endif +/* end Orc C target preamble */ + + + +/* video_mixer_orc_splat_u32 */ +#ifdef DISABLE_ORC +void +video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 var32; + orc_union32 var33; + + ptr0 = (orc_union32 *) d1; + + /* 0: loadpl */ + var32.i = p1; + + for (i = 0; i < n; i++) { + /* 1: copyl */ + var33.i = var32.i; + /* 2: storel */ + ptr0[i] = var33; + } + +} + +#else +static void +_backup_video_mixer_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 var32; + orc_union32 var33; + + ptr0 = (orc_union32 *) ex->arrays[0]; + + /* 0: loadpl */ + var32.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 1: copyl */ + var33.i = var32.i; + /* 2: storel */ + ptr0[i] = var33; + } + +} + +void +video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 25, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111, + 114, 99, 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, + 4, 112, 0, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_splat_u32); +#else + p = orc_program_new (); + orc_program_set_name (p, "video_mixer_orc_splat_u32"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_splat_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter (p, 4, "p1"); + + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_P1] = p1; + + func = c->exec; + func (ex); +} +#endif + + +/* video_mixer_orc_memcpy_u32 */ +#ifdef DISABLE_ORC +void +video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1, + const guint32 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: copyl */ + var33.i = var32.i; + /* 2: storel */ + ptr0[i] = var33; + } + +} + +#else +static void +_backup_video_mixer_orc_memcpy_u32 (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: copyl */ + var33.i = var32.i; + /* 2: storel */ + ptr0[i] = var33; + } + +} + +void +video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1, + const guint32 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111, + 114, 99, 95, 109, 101, 109, 99, 112, 121, 95, 117, 51, 50, 11, 4, 4, + 12, 4, 4, 112, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_memcpy_u32); +#else + p = orc_program_new (); + orc_program_set_name (p, "video_mixer_orc_memcpy_u32"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_memcpy_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* video_mixer_orc_blend_u8 */ +#ifdef DISABLE_ORC +void +video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) +{ + int i; + int j; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var34; + orc_int8 var35; + orc_union16 var36; + orc_int8 var37; + orc_union16 var38; + orc_union16 var39; + orc_union16 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 5: loadpw */ + var36.i = p1; + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var34 = ptr0[i]; + /* 1: convubw */ + var38.i = (orc_uint8) var34; + /* 2: loadb */ + var35 = ptr4[i]; + /* 3: convubw */ + var39.i = (orc_uint8) var35; + /* 4: subw */ + var40.i = var39.i - var38.i; + /* 6: mullw */ + var41.i = (var40.i * var36.i) & 0xffff; + /* 7: shlw */ + var42.i = var38.i << 8; + /* 8: addw */ + var43.i = var42.i + var41.i; + /* 9: shruw */ + var44.i = ((orc_uint16) var43.i) >> 8; + /* 10: convsuswb */ + var37 = ORC_CLAMP_UB (var44.i); + /* 11: storeb */ + ptr0[i] = var37; + } + } + +} + +#else +static void +_backup_video_mixer_orc_blend_u8 (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var34; + orc_int8 var35; + orc_union16 var36; + orc_int8 var37; + orc_union16 var38; + orc_union16 var39; + orc_union16 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 5: loadpw */ + var36.i = ex->params[24]; + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var34 = ptr0[i]; + /* 1: convubw */ + var38.i = (orc_uint8) var34; + /* 2: loadb */ + var35 = ptr4[i]; + /* 3: convubw */ + var39.i = (orc_uint8) var35; + /* 4: subw */ + var40.i = var39.i - var38.i; + /* 6: mullw */ + var41.i = (var40.i * var36.i) & 0xffff; + /* 7: shlw */ + var42.i = var38.i << 8; + /* 8: addw */ + var43.i = var42.i + var41.i; + /* 9: shruw */ + var44.i = ((orc_uint16) var43.i) >> 8; + /* 10: convsuswb */ + var37 = ORC_CLAMP_UB (var44.i); + /* 11: storeb */ + ptr0[i] = var37; + } + } + +} + +void +video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 7, 9, 24, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, + 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 56, 11, 1, 1, 12, + 1, 1, 14, 1, 8, 0, 0, 0, 16, 2, 20, 2, 20, 2, 150, 32, + 0, 150, 33, 4, 98, 33, 33, 32, 89, 33, 33, 24, 93, 32, 32, 16, + 70, 33, 32, 33, 95, 33, 33, 16, 160, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_u8); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_mixer_orc_blend_u8"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 1, 0x00000008, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->params[ORC_VAR_P1] = p1; + + func = c->exec; + func (ex); +} +#endif + + +/* video_mixer_orc_blend_argb */ +#ifdef DISABLE_ORC +void +video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union64 var39; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var40; +#else + orc_union32 var40; +#endif + orc_union32 var41; + orc_union16 var42; + orc_int8 var43; + orc_union32 var44; + orc_union64 var45; + orc_union64 var46; + orc_union64 var47; + orc_union64 var48; + orc_union32 var49; + orc_union64 var50; + orc_union64 var51; + orc_union64 var52; + orc_union64 var53; + orc_union64 var54; + orc_union32 var55; + orc_union32 var56; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 5: loadpw */ + var39.x4[0] = p1; + var39.x4[1] = p1; + var39.x4[2] = p1; + var39.x4[3] = p1; + /* 16: loadpl */ + var40.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var41 = ptr4[i]; + /* 1: convlw */ + var42.i = var41.i; + /* 2: convwb */ + var43 = var42.i; + /* 3: splatbl */ + var44.i = + ((var43 & 0xff) << 24) | ((var43 & 0xff) << 16) | ((var43 & 0xff) << + 8) | (var43 & 0xff); + /* 4: convubw */ + var45.x4[0] = (orc_uint8) var44.x4[0]; + var45.x4[1] = (orc_uint8) var44.x4[1]; + var45.x4[2] = (orc_uint8) var44.x4[2]; + var45.x4[3] = (orc_uint8) var44.x4[3]; + /* 6: mullw */ + var46.x4[0] = (var45.x4[0] * var39.x4[0]) & 0xffff; + var46.x4[1] = (var45.x4[1] * var39.x4[1]) & 0xffff; + var46.x4[2] = (var45.x4[2] * var39.x4[2]) & 0xffff; + var46.x4[3] = (var45.x4[3] * var39.x4[3]) & 0xffff; + /* 7: shruw */ + var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8; + var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8; + var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8; + var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8; + /* 8: convubw */ + var48.x4[0] = (orc_uint8) var41.x4[0]; + var48.x4[1] = (orc_uint8) var41.x4[1]; + var48.x4[2] = (orc_uint8) var41.x4[2]; + var48.x4[3] = (orc_uint8) var41.x4[3]; + /* 9: loadl */ + var49 = ptr0[i]; + /* 10: convubw */ + var50.x4[0] = (orc_uint8) var49.x4[0]; + var50.x4[1] = (orc_uint8) var49.x4[1]; + var50.x4[2] = (orc_uint8) var49.x4[2]; + var50.x4[3] = (orc_uint8) var49.x4[3]; + /* 11: subw */ + var51.x4[0] = var48.x4[0] - var50.x4[0]; + var51.x4[1] = var48.x4[1] - var50.x4[1]; + var51.x4[2] = var48.x4[2] - var50.x4[2]; + var51.x4[3] = var48.x4[3] - var50.x4[3]; + /* 12: mullw */ + var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff; + var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff; + var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff; + var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff; + /* 13: div255w */ + var53.x4[0] = + ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) + + (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8; + var53.x4[1] = + ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) + + (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8; + var53.x4[2] = + ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) + + (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8; + var53.x4[3] = + ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) + + (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8; + /* 14: addw */ + var54.x4[0] = var50.x4[0] + var53.x4[0]; + var54.x4[1] = var50.x4[1] + var53.x4[1]; + var54.x4[2] = var50.x4[2] + var53.x4[2]; + var54.x4[3] = var50.x4[3] + var53.x4[3]; + /* 15: convwb */ + var55.x4[0] = var54.x4[0]; + var55.x4[1] = var54.x4[1]; + var55.x4[2] = var54.x4[2]; + var55.x4[3] = var54.x4[3]; + /* 17: orl */ + var56.i = var55.i | var40.i; + /* 18: storel */ + ptr0[i] = var56; + } + } + +} + +#else +static void +_backup_video_mixer_orc_blend_argb (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union64 var39; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var40; +#else + orc_union32 var40; +#endif + orc_union32 var41; + orc_union16 var42; + orc_int8 var43; + orc_union32 var44; + orc_union64 var45; + orc_union64 var46; + orc_union64 var47; + orc_union64 var48; + orc_union32 var49; + orc_union64 var50; + orc_union64 var51; + orc_union64 var52; + orc_union64 var53; + orc_union64 var54; + orc_union32 var55; + orc_union32 var56; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 5: loadpw */ + var39.x4[0] = ex->params[24]; + var39.x4[1] = ex->params[24]; + var39.x4[2] = ex->params[24]; + var39.x4[3] = ex->params[24]; + /* 16: loadpl */ + var40.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var41 = ptr4[i]; + /* 1: convlw */ + var42.i = var41.i; + /* 2: convwb */ + var43 = var42.i; + /* 3: splatbl */ + var44.i = + ((var43 & 0xff) << 24) | ((var43 & 0xff) << 16) | ((var43 & 0xff) << + 8) | (var43 & 0xff); + /* 4: convubw */ + var45.x4[0] = (orc_uint8) var44.x4[0]; + var45.x4[1] = (orc_uint8) var44.x4[1]; + var45.x4[2] = (orc_uint8) var44.x4[2]; + var45.x4[3] = (orc_uint8) var44.x4[3]; + /* 6: mullw */ + var46.x4[0] = (var45.x4[0] * var39.x4[0]) & 0xffff; + var46.x4[1] = (var45.x4[1] * var39.x4[1]) & 0xffff; + var46.x4[2] = (var45.x4[2] * var39.x4[2]) & 0xffff; + var46.x4[3] = (var45.x4[3] * var39.x4[3]) & 0xffff; + /* 7: shruw */ + var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8; + var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8; + var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8; + var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8; + /* 8: convubw */ + var48.x4[0] = (orc_uint8) var41.x4[0]; + var48.x4[1] = (orc_uint8) var41.x4[1]; + var48.x4[2] = (orc_uint8) var41.x4[2]; + var48.x4[3] = (orc_uint8) var41.x4[3]; + /* 9: loadl */ + var49 = ptr0[i]; + /* 10: convubw */ + var50.x4[0] = (orc_uint8) var49.x4[0]; + var50.x4[1] = (orc_uint8) var49.x4[1]; + var50.x4[2] = (orc_uint8) var49.x4[2]; + var50.x4[3] = (orc_uint8) var49.x4[3]; + /* 11: subw */ + var51.x4[0] = var48.x4[0] - var50.x4[0]; + var51.x4[1] = var48.x4[1] - var50.x4[1]; + var51.x4[2] = var48.x4[2] - var50.x4[2]; + var51.x4[3] = var48.x4[3] - var50.x4[3]; + /* 12: mullw */ + var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff; + var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff; + var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff; + var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff; + /* 13: div255w */ + var53.x4[0] = + ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) + + (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8; + var53.x4[1] = + ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) + + (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8; + var53.x4[2] = + ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) + + (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8; + var53.x4[3] = + ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) + + (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8; + /* 14: addw */ + var54.x4[0] = var50.x4[0] + var53.x4[0]; + var54.x4[1] = var50.x4[1] + var53.x4[1]; + var54.x4[2] = var50.x4[2] + var53.x4[2]; + var54.x4[3] = var50.x4[3] + var53.x4[3]; + /* 15: convwb */ + var55.x4[0] = var54.x4[0]; + var55.x4[1] = var54.x4[1]; + var55.x4[2] = var54.x4[2]; + var55.x4[3] = var54.x4[3]; + /* 17: orl */ + var56.i = var55.i | var40.i; + /* 18: storel */ + ptr0[i] = var56; + } + } + +} + +void +video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 7, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, + 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 97, 114, 103, 98, 11, 4, + 4, 12, 4, 4, 14, 4, 255, 0, 0, 0, 14, 4, 8, 0, 0, 0, + 16, 2, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8, + 113, 32, 4, 163, 33, 32, 157, 34, 33, 152, 35, 34, 21, 2, 150, 38, + 35, 21, 2, 89, 38, 38, 24, 21, 2, 95, 38, 38, 17, 21, 2, 150, + 37, 32, 113, 32, 0, 21, 2, 150, 36, 32, 21, 2, 98, 37, 37, 36, + 21, 2, 89, 37, 37, 38, 21, 2, 80, 37, 37, 21, 2, 70, 36, 36, + 37, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_argb); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_mixer_orc_blend_argb"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_argb); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x000000ff, "c1"); + orc_program_add_constant (p, 4, 0x00000008, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); + + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->params[ORC_VAR_P1] = p1; + + func = c->exec; + func (ex); +} +#endif + + +/* video_mixer_orc_blend_bgra */ +#ifdef DISABLE_ORC +void +video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union64 var40; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var41; +#else + orc_union32 var41; +#endif + orc_union32 var42; + orc_union32 var43; + orc_union16 var44; + orc_int8 var45; + orc_union32 var46; + orc_union64 var47; + orc_union64 var48; + orc_union64 var49; + orc_union64 var50; + orc_union32 var51; + orc_union64 var52; + orc_union64 var53; + orc_union64 var54; + orc_union64 var55; + orc_union64 var56; + orc_union32 var57; + orc_union32 var58; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 6: loadpw */ + var40.x4[0] = p1; + var40.x4[1] = p1; + var40.x4[2] = p1; + var40.x4[3] = p1; + /* 17: loadpl */ + var41.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var42 = ptr4[i]; + /* 1: shrul */ + var43.i = ((orc_uint32) var42.i) >> 24; + /* 2: convlw */ + var44.i = var43.i; + /* 3: convwb */ + var45 = var44.i; + /* 4: splatbl */ + var46.i = + ((var45 & 0xff) << 24) | ((var45 & 0xff) << 16) | ((var45 & 0xff) << + 8) | (var45 & 0xff); + /* 5: convubw */ + var47.x4[0] = (orc_uint8) var46.x4[0]; + var47.x4[1] = (orc_uint8) var46.x4[1]; + var47.x4[2] = (orc_uint8) var46.x4[2]; + var47.x4[3] = (orc_uint8) var46.x4[3]; + /* 7: mullw */ + var48.x4[0] = (var47.x4[0] * var40.x4[0]) & 0xffff; + var48.x4[1] = (var47.x4[1] * var40.x4[1]) & 0xffff; + var48.x4[2] = (var47.x4[2] * var40.x4[2]) & 0xffff; + var48.x4[3] = (var47.x4[3] * var40.x4[3]) & 0xffff; + /* 8: shruw */ + var49.x4[0] = ((orc_uint16) var48.x4[0]) >> 8; + var49.x4[1] = ((orc_uint16) var48.x4[1]) >> 8; + var49.x4[2] = ((orc_uint16) var48.x4[2]) >> 8; + var49.x4[3] = ((orc_uint16) var48.x4[3]) >> 8; + /* 9: convubw */ + var50.x4[0] = (orc_uint8) var42.x4[0]; + var50.x4[1] = (orc_uint8) var42.x4[1]; + var50.x4[2] = (orc_uint8) var42.x4[2]; + var50.x4[3] = (orc_uint8) var42.x4[3]; + /* 10: loadl */ + var51 = ptr0[i]; + /* 11: convubw */ + var52.x4[0] = (orc_uint8) var51.x4[0]; + var52.x4[1] = (orc_uint8) var51.x4[1]; + var52.x4[2] = (orc_uint8) var51.x4[2]; + var52.x4[3] = (orc_uint8) var51.x4[3]; + /* 12: subw */ + var53.x4[0] = var50.x4[0] - var52.x4[0]; + var53.x4[1] = var50.x4[1] - var52.x4[1]; + var53.x4[2] = var50.x4[2] - var52.x4[2]; + var53.x4[3] = var50.x4[3] - var52.x4[3]; + /* 13: mullw */ + var54.x4[0] = (var53.x4[0] * var49.x4[0]) & 0xffff; + var54.x4[1] = (var53.x4[1] * var49.x4[1]) & 0xffff; + var54.x4[2] = (var53.x4[2] * var49.x4[2]) & 0xffff; + var54.x4[3] = (var53.x4[3] * var49.x4[3]) & 0xffff; + /* 14: div255w */ + var55.x4[0] = + ((orc_uint16) (((orc_uint16) (var54.x4[0] + 128)) + + (((orc_uint16) (var54.x4[0] + 128)) >> 8))) >> 8; + var55.x4[1] = + ((orc_uint16) (((orc_uint16) (var54.x4[1] + 128)) + + (((orc_uint16) (var54.x4[1] + 128)) >> 8))) >> 8; + var55.x4[2] = + ((orc_uint16) (((orc_uint16) (var54.x4[2] + 128)) + + (((orc_uint16) (var54.x4[2] + 128)) >> 8))) >> 8; + var55.x4[3] = + ((orc_uint16) (((orc_uint16) (var54.x4[3] + 128)) + + (((orc_uint16) (var54.x4[3] + 128)) >> 8))) >> 8; + /* 15: addw */ + var56.x4[0] = var52.x4[0] + var55.x4[0]; + var56.x4[1] = var52.x4[1] + var55.x4[1]; + var56.x4[2] = var52.x4[2] + var55.x4[2]; + var56.x4[3] = var52.x4[3] + var55.x4[3]; + /* 16: convwb */ + var57.x4[0] = var56.x4[0]; + var57.x4[1] = var56.x4[1]; + var57.x4[2] = var56.x4[2]; + var57.x4[3] = var56.x4[3]; + /* 18: orl */ + var58.i = var57.i | var41.i; + /* 19: storel */ + ptr0[i] = var58; + } + } + +} + +#else +static void +_backup_video_mixer_orc_blend_bgra (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union64 var40; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var41; +#else + orc_union32 var41; +#endif + orc_union32 var42; + orc_union32 var43; + orc_union16 var44; + orc_int8 var45; + orc_union32 var46; + orc_union64 var47; + orc_union64 var48; + orc_union64 var49; + orc_union64 var50; + orc_union32 var51; + orc_union64 var52; + orc_union64 var53; + orc_union64 var54; + orc_union64 var55; + orc_union64 var56; + orc_union32 var57; + orc_union32 var58; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 6: loadpw */ + var40.x4[0] = ex->params[24]; + var40.x4[1] = ex->params[24]; + var40.x4[2] = ex->params[24]; + var40.x4[3] = ex->params[24]; + /* 17: loadpl */ + var41.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var42 = ptr4[i]; + /* 1: shrul */ + var43.i = ((orc_uint32) var42.i) >> 24; + /* 2: convlw */ + var44.i = var43.i; + /* 3: convwb */ + var45 = var44.i; + /* 4: splatbl */ + var46.i = + ((var45 & 0xff) << 24) | ((var45 & 0xff) << 16) | ((var45 & 0xff) << + 8) | (var45 & 0xff); + /* 5: convubw */ + var47.x4[0] = (orc_uint8) var46.x4[0]; + var47.x4[1] = (orc_uint8) var46.x4[1]; + var47.x4[2] = (orc_uint8) var46.x4[2]; + var47.x4[3] = (orc_uint8) var46.x4[3]; + /* 7: mullw */ + var48.x4[0] = (var47.x4[0] * var40.x4[0]) & 0xffff; + var48.x4[1] = (var47.x4[1] * var40.x4[1]) & 0xffff; + var48.x4[2] = (var47.x4[2] * var40.x4[2]) & 0xffff; + var48.x4[3] = (var47.x4[3] * var40.x4[3]) & 0xffff; + /* 8: shruw */ + var49.x4[0] = ((orc_uint16) var48.x4[0]) >> 8; + var49.x4[1] = ((orc_uint16) var48.x4[1]) >> 8; + var49.x4[2] = ((orc_uint16) var48.x4[2]) >> 8; + var49.x4[3] = ((orc_uint16) var48.x4[3]) >> 8; + /* 9: convubw */ + var50.x4[0] = (orc_uint8) var42.x4[0]; + var50.x4[1] = (orc_uint8) var42.x4[1]; + var50.x4[2] = (orc_uint8) var42.x4[2]; + var50.x4[3] = (orc_uint8) var42.x4[3]; + /* 10: loadl */ + var51 = ptr0[i]; + /* 11: convubw */ + var52.x4[0] = (orc_uint8) var51.x4[0]; + var52.x4[1] = (orc_uint8) var51.x4[1]; + var52.x4[2] = (orc_uint8) var51.x4[2]; + var52.x4[3] = (orc_uint8) var51.x4[3]; + /* 12: subw */ + var53.x4[0] = var50.x4[0] - var52.x4[0]; + var53.x4[1] = var50.x4[1] - var52.x4[1]; + var53.x4[2] = var50.x4[2] - var52.x4[2]; + var53.x4[3] = var50.x4[3] - var52.x4[3]; + /* 13: mullw */ + var54.x4[0] = (var53.x4[0] * var49.x4[0]) & 0xffff; + var54.x4[1] = (var53.x4[1] * var49.x4[1]) & 0xffff; + var54.x4[2] = (var53.x4[2] * var49.x4[2]) & 0xffff; + var54.x4[3] = (var53.x4[3] * var49.x4[3]) & 0xffff; + /* 14: div255w */ + var55.x4[0] = + ((orc_uint16) (((orc_uint16) (var54.x4[0] + 128)) + + (((orc_uint16) (var54.x4[0] + 128)) >> 8))) >> 8; + var55.x4[1] = + ((orc_uint16) (((orc_uint16) (var54.x4[1] + 128)) + + (((orc_uint16) (var54.x4[1] + 128)) >> 8))) >> 8; + var55.x4[2] = + ((orc_uint16) (((orc_uint16) (var54.x4[2] + 128)) + + (((orc_uint16) (var54.x4[2] + 128)) >> 8))) >> 8; + var55.x4[3] = + ((orc_uint16) (((orc_uint16) (var54.x4[3] + 128)) + + (((orc_uint16) (var54.x4[3] + 128)) >> 8))) >> 8; + /* 15: addw */ + var56.x4[0] = var52.x4[0] + var55.x4[0]; + var56.x4[1] = var52.x4[1] + var55.x4[1]; + var56.x4[2] = var52.x4[2] + var55.x4[2]; + var56.x4[3] = var52.x4[3] + var55.x4[3]; + /* 16: convwb */ + var57.x4[0] = var56.x4[0]; + var57.x4[1] = var56.x4[1]; + var57.x4[2] = var56.x4[2]; + var57.x4[3] = var56.x4[3]; + /* 18: orl */ + var58.i = var57.i | var41.i; + /* 19: storel */ + ptr0[i] = var58; + } + } + +} + +void +video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 7, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, + 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 98, 103, 114, 97, 11, 4, + 4, 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 24, 0, 0, 0, + 14, 4, 8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, + 20, 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32, 17, 163, + 34, 33, 157, 35, 34, 152, 36, 35, 21, 2, 150, 39, 36, 21, 2, 89, + 39, 39, 24, 21, 2, 95, 39, 39, 18, 21, 2, 150, 38, 32, 113, 32, + 0, 21, 2, 150, 37, 32, 21, 2, 98, 38, 38, 37, 21, 2, 89, 38, + 38, 39, 21, 2, 80, 38, 38, 21, 2, 70, 37, 37, 38, 21, 2, 157, + 32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_bgra); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_mixer_orc_blend_bgra"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_bgra); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xff000000, "c1"); + orc_program_add_constant (p, 4, 0x00000018, "c2"); + orc_program_add_constant (p, 4, 0x00000008, "c3"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); + orc_program_add_temporary (p, 8, "t8"); + + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->params[ORC_VAR_P1] = p1; + + func = c->exec; + func (ex); +} +#endif + + +/* video_mixer_orc_overlay_argb */ +#ifdef DISABLE_ORC +void +video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union64 var41; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var42; +#else + orc_union32 var42; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var43; +#else + orc_union32 var43; +#endif + orc_union32 var44; + orc_union16 var45; + orc_int8 var46; + orc_union32 var47; + orc_union64 var48; + orc_union64 var49; + orc_union64 var50; + orc_union64 var51; + orc_union64 var52; + orc_union32 var53; + orc_union64 var54; + orc_union64 var55; + orc_union32 var56; + orc_union16 var57; + orc_int8 var58; + orc_union32 var59; + orc_union64 var60; + orc_union64 var61; + orc_union64 var62; + orc_union64 var63; + orc_union64 var64; + orc_union64 var65; + orc_union64 var66; + orc_union64 var67; + orc_union32 var68; + orc_union32 var69; + orc_union32 var70; + orc_union32 var71; + orc_union32 var72; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 5: loadpw */ + var41.x4[0] = p1; + var41.x4[1] = p1; + var41.x4[2] = p1; + var41.x4[3] = p1; + /* 10: loadpl */ + var53.i = (int) 0xffffffff; /* -1 or 2.122e-314f */ + /* 26: loadpl */ + var42.i = (int) 0xffffff00; /* -256 or 2.122e-314f */ + /* 29: loadpl */ + var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var44 = ptr4[i]; + /* 1: convlw */ + var45.i = var44.i; + /* 2: convwb */ + var46 = var45.i; + /* 3: splatbl */ + var47.i = + ((var46 & 0xff) << 24) | ((var46 & 0xff) << 16) | ((var46 & 0xff) << + 8) | (var46 & 0xff); + /* 4: convubw */ + var48.x4[0] = (orc_uint8) var47.x4[0]; + var48.x4[1] = (orc_uint8) var47.x4[1]; + var48.x4[2] = (orc_uint8) var47.x4[2]; + var48.x4[3] = (orc_uint8) var47.x4[3]; + /* 6: mullw */ + var49.x4[0] = (var48.x4[0] * var41.x4[0]) & 0xffff; + var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff; + var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff; + var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff; + /* 7: shruw */ + var50.x4[0] = ((orc_uint16) var49.x4[0]) >> 8; + var50.x4[1] = ((orc_uint16) var49.x4[1]) >> 8; + var50.x4[2] = ((orc_uint16) var49.x4[2]) >> 8; + var50.x4[3] = ((orc_uint16) var49.x4[3]) >> 8; + /* 8: convubw */ + var51.x4[0] = (orc_uint8) var44.x4[0]; + var51.x4[1] = (orc_uint8) var44.x4[1]; + var51.x4[2] = (orc_uint8) var44.x4[2]; + var51.x4[3] = (orc_uint8) var44.x4[3]; + /* 9: mullw */ + var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff; + var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff; + var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff; + var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff; + /* 11: convubw */ + var54.x4[0] = (orc_uint8) var53.x4[0]; + var54.x4[1] = (orc_uint8) var53.x4[1]; + var54.x4[2] = (orc_uint8) var53.x4[2]; + var54.x4[3] = (orc_uint8) var53.x4[3]; + /* 12: subw */ + var55.x4[0] = var54.x4[0] - var50.x4[0]; + var55.x4[1] = var54.x4[1] - var50.x4[1]; + var55.x4[2] = var54.x4[2] - var50.x4[2]; + var55.x4[3] = var54.x4[3] - var50.x4[3]; + /* 13: loadl */ + var56 = ptr0[i]; + /* 14: convlw */ + var57.i = var56.i; + /* 15: convwb */ + var58 = var57.i; + /* 16: splatbl */ + var59.i = + ((var58 & 0xff) << 24) | ((var58 & 0xff) << 16) | ((var58 & 0xff) << + 8) | (var58 & 0xff); + /* 17: convubw */ + var60.x4[0] = (orc_uint8) var59.x4[0]; + var60.x4[1] = (orc_uint8) var59.x4[1]; + var60.x4[2] = (orc_uint8) var59.x4[2]; + var60.x4[3] = (orc_uint8) var59.x4[3]; + /* 18: mullw */ + var61.x4[0] = (var60.x4[0] * var55.x4[0]) & 0xffff; + var61.x4[1] = (var60.x4[1] * var55.x4[1]) & 0xffff; + var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff; + var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff; + /* 19: div255w */ + var62.x4[0] = + ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) + + (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8; + var62.x4[1] = + ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) + + (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8; + var62.x4[2] = + ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) + + (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8; + var62.x4[3] = + ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) + + (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8; + /* 20: convubw */ + var63.x4[0] = (orc_uint8) var56.x4[0]; + var63.x4[1] = (orc_uint8) var56.x4[1]; + var63.x4[2] = (orc_uint8) var56.x4[2]; + var63.x4[3] = (orc_uint8) var56.x4[3]; + /* 21: mullw */ + var64.x4[0] = (var63.x4[0] * var62.x4[0]) & 0xffff; + var64.x4[1] = (var63.x4[1] * var62.x4[1]) & 0xffff; + var64.x4[2] = (var63.x4[2] * var62.x4[2]) & 0xffff; + var64.x4[3] = (var63.x4[3] * var62.x4[3]) & 0xffff; + /* 22: addw */ + var65.x4[0] = var64.x4[0] + var52.x4[0]; + var65.x4[1] = var64.x4[1] + var52.x4[1]; + var65.x4[2] = var64.x4[2] + var52.x4[2]; + var65.x4[3] = var64.x4[3] + var52.x4[3]; + /* 23: addw */ + var66.x4[0] = var62.x4[0] + var50.x4[0]; + var66.x4[1] = var62.x4[1] + var50.x4[1]; + var66.x4[2] = var62.x4[2] + var50.x4[2]; + var66.x4[3] = var62.x4[3] + var50.x4[3]; + /* 24: divluw */ + var67.x4[0] = + ((var66.x4[0] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[0]) / + ((orc_uint16) var66.x4[0] & 0xff)); + var67.x4[1] = + ((var66.x4[1] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[1]) / + ((orc_uint16) var66.x4[1] & 0xff)); + var67.x4[2] = + ((var66.x4[2] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[2]) / + ((orc_uint16) var66.x4[2] & 0xff)); + var67.x4[3] = + ((var66.x4[3] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[3]) / + ((orc_uint16) var66.x4[3] & 0xff)); + /* 25: convwb */ + var68.x4[0] = var67.x4[0]; + var68.x4[1] = var67.x4[1]; + var68.x4[2] = var67.x4[2]; + var68.x4[3] = var67.x4[3]; + /* 27: andl */ + var69.i = var68.i & var42.i; + /* 28: convwb */ + var70.x4[0] = var66.x4[0]; + var70.x4[1] = var66.x4[1]; + var70.x4[2] = var66.x4[2]; + var70.x4[3] = var66.x4[3]; + /* 30: andl */ + var71.i = var70.i & var43.i; + /* 31: orl */ + var72.i = var69.i | var71.i; + /* 32: storel */ + ptr0[i] = var72; + } + } + +} + +#else +static void +_backup_video_mixer_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union64 var41; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var42; +#else + orc_union32 var42; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var43; +#else + orc_union32 var43; +#endif + orc_union32 var44; + orc_union16 var45; + orc_int8 var46; + orc_union32 var47; + orc_union64 var48; + orc_union64 var49; + orc_union64 var50; + orc_union64 var51; + orc_union64 var52; + orc_union32 var53; + orc_union64 var54; + orc_union64 var55; + orc_union32 var56; + orc_union16 var57; + orc_int8 var58; + orc_union32 var59; + orc_union64 var60; + orc_union64 var61; + orc_union64 var62; + orc_union64 var63; + orc_union64 var64; + orc_union64 var65; + orc_union64 var66; + orc_union64 var67; + orc_union32 var68; + orc_union32 var69; + orc_union32 var70; + orc_union32 var71; + orc_union32 var72; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 5: loadpw */ + var41.x4[0] = ex->params[24]; + var41.x4[1] = ex->params[24]; + var41.x4[2] = ex->params[24]; + var41.x4[3] = ex->params[24]; + /* 10: loadpl */ + var53.i = (int) 0xffffffff; /* -1 or 2.122e-314f */ + /* 26: loadpl */ + var42.i = (int) 0xffffff00; /* -256 or 2.122e-314f */ + /* 29: loadpl */ + var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var44 = ptr4[i]; + /* 1: convlw */ + var45.i = var44.i; + /* 2: convwb */ + var46 = var45.i; + /* 3: splatbl */ + var47.i = + ((var46 & 0xff) << 24) | ((var46 & 0xff) << 16) | ((var46 & 0xff) << + 8) | (var46 & 0xff); + /* 4: convubw */ + var48.x4[0] = (orc_uint8) var47.x4[0]; + var48.x4[1] = (orc_uint8) var47.x4[1]; + var48.x4[2] = (orc_uint8) var47.x4[2]; + var48.x4[3] = (orc_uint8) var47.x4[3]; + /* 6: mullw */ + var49.x4[0] = (var48.x4[0] * var41.x4[0]) & 0xffff; + var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff; + var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff; + var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff; + /* 7: shruw */ + var50.x4[0] = ((orc_uint16) var49.x4[0]) >> 8; + var50.x4[1] = ((orc_uint16) var49.x4[1]) >> 8; + var50.x4[2] = ((orc_uint16) var49.x4[2]) >> 8; + var50.x4[3] = ((orc_uint16) var49.x4[3]) >> 8; + /* 8: convubw */ + var51.x4[0] = (orc_uint8) var44.x4[0]; + var51.x4[1] = (orc_uint8) var44.x4[1]; + var51.x4[2] = (orc_uint8) var44.x4[2]; + var51.x4[3] = (orc_uint8) var44.x4[3]; + /* 9: mullw */ + var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff; + var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff; + var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff; + var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff; + /* 11: convubw */ + var54.x4[0] = (orc_uint8) var53.x4[0]; + var54.x4[1] = (orc_uint8) var53.x4[1]; + var54.x4[2] = (orc_uint8) var53.x4[2]; + var54.x4[3] = (orc_uint8) var53.x4[3]; + /* 12: subw */ + var55.x4[0] = var54.x4[0] - var50.x4[0]; + var55.x4[1] = var54.x4[1] - var50.x4[1]; + var55.x4[2] = var54.x4[2] - var50.x4[2]; + var55.x4[3] = var54.x4[3] - var50.x4[3]; + /* 13: loadl */ + var56 = ptr0[i]; + /* 14: convlw */ + var57.i = var56.i; + /* 15: convwb */ + var58 = var57.i; + /* 16: splatbl */ + var59.i = + ((var58 & 0xff) << 24) | ((var58 & 0xff) << 16) | ((var58 & 0xff) << + 8) | (var58 & 0xff); + /* 17: convubw */ + var60.x4[0] = (orc_uint8) var59.x4[0]; + var60.x4[1] = (orc_uint8) var59.x4[1]; + var60.x4[2] = (orc_uint8) var59.x4[2]; + var60.x4[3] = (orc_uint8) var59.x4[3]; + /* 18: mullw */ + var61.x4[0] = (var60.x4[0] * var55.x4[0]) & 0xffff; + var61.x4[1] = (var60.x4[1] * var55.x4[1]) & 0xffff; + var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff; + var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff; + /* 19: div255w */ + var62.x4[0] = + ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) + + (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8; + var62.x4[1] = + ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) + + (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8; + var62.x4[2] = + ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) + + (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8; + var62.x4[3] = + ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) + + (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8; + /* 20: convubw */ + var63.x4[0] = (orc_uint8) var56.x4[0]; + var63.x4[1] = (orc_uint8) var56.x4[1]; + var63.x4[2] = (orc_uint8) var56.x4[2]; + var63.x4[3] = (orc_uint8) var56.x4[3]; + /* 21: mullw */ + var64.x4[0] = (var63.x4[0] * var62.x4[0]) & 0xffff; + var64.x4[1] = (var63.x4[1] * var62.x4[1]) & 0xffff; + var64.x4[2] = (var63.x4[2] * var62.x4[2]) & 0xffff; + var64.x4[3] = (var63.x4[3] * var62.x4[3]) & 0xffff; + /* 22: addw */ + var65.x4[0] = var64.x4[0] + var52.x4[0]; + var65.x4[1] = var64.x4[1] + var52.x4[1]; + var65.x4[2] = var64.x4[2] + var52.x4[2]; + var65.x4[3] = var64.x4[3] + var52.x4[3]; + /* 23: addw */ + var66.x4[0] = var62.x4[0] + var50.x4[0]; + var66.x4[1] = var62.x4[1] + var50.x4[1]; + var66.x4[2] = var62.x4[2] + var50.x4[2]; + var66.x4[3] = var62.x4[3] + var50.x4[3]; + /* 24: divluw */ + var67.x4[0] = + ((var66.x4[0] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[0]) / + ((orc_uint16) var66.x4[0] & 0xff)); + var67.x4[1] = + ((var66.x4[1] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[1]) / + ((orc_uint16) var66.x4[1] & 0xff)); + var67.x4[2] = + ((var66.x4[2] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[2]) / + ((orc_uint16) var66.x4[2] & 0xff)); + var67.x4[3] = + ((var66.x4[3] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[3]) / + ((orc_uint16) var66.x4[3] & 0xff)); + /* 25: convwb */ + var68.x4[0] = var67.x4[0]; + var68.x4[1] = var67.x4[1]; + var68.x4[2] = var67.x4[2]; + var68.x4[3] = var67.x4[3]; + /* 27: andl */ + var69.i = var68.i & var42.i; + /* 28: convwb */ + var70.x4[0] = var66.x4[0]; + var70.x4[1] = var66.x4[1]; + var70.x4[2] = var66.x4[2]; + var70.x4[3] = var66.x4[3]; + /* 30: andl */ + var71.i = var70.i & var43.i; + /* 31: orl */ + var72.i = var69.i | var71.i; + /* 32: storel */ + ptr0[i] = var72; + } + } + +} + +void +video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 20, 8, 113, 32, 4, 163, 33, 32, 157, 34, 33, 152, 38, 34, 21, 2, + 150, 35, 38, 21, 2, 89, 35, 35, 24, 21, 2, 95, 35, 35, 19, 21, + 2, 150, 40, 32, 21, 2, 89, 40, 40, 35, 115, 38, 16, 21, 2, 150, + 36, 38, 21, 2, 98, 36, 36, 35, 113, 32, 0, 163, 33, 32, 157, 34, + 33, 152, 38, 34, 21, 2, 150, 37, 38, 21, 2, 89, 37, 37, 36, 21, + 2, 80, 37, 37, 21, 2, 150, 39, 32, 21, 2, 89, 39, 39, 37, 21, + 2, 70, 39, 39, 40, 21, 2, 70, 37, 37, 35, 21, 2, 81, 39, 39, + 37, 21, 2, 157, 32, 39, 106, 32, 32, 18, 21, 2, 157, 38, 37, 106, + 38, 38, 17, 123, 32, 32, 38, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_argb); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_mixer_orc_overlay_argb"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_argb); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xffffffff, "c1"); + orc_program_add_constant (p, 4, 0x000000ff, "c2"); + orc_program_add_constant (p, 4, 0xffffff00, "c3"); + orc_program_add_constant (p, 4, 0x00000008, "c4"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 8, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 4, "t7"); + orc_program_add_temporary (p, 8, "t8"); + orc_program_add_temporary (p, 8, "t9"); + + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T7, ORC_VAR_C1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "divluw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->params[ORC_VAR_P1] = p1; + + func = c->exec; + func (ex); +} +#endif + + +/* video_mixer_orc_overlay_bgra */ +#ifdef DISABLE_ORC +void +video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union64 var42; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var43; +#else + orc_union32 var43; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var44; +#else + orc_union32 var44; +#endif + orc_union32 var45; + orc_union32 var46; + orc_union16 var47; + orc_int8 var48; + orc_union32 var49; + orc_union64 var50; + orc_union64 var51; + orc_union64 var52; + orc_union64 var53; + orc_union64 var54; + orc_union32 var55; + orc_union64 var56; + orc_union64 var57; + orc_union32 var58; + orc_union32 var59; + orc_union16 var60; + orc_int8 var61; + orc_union32 var62; + orc_union64 var63; + orc_union64 var64; + orc_union64 var65; + orc_union64 var66; + orc_union64 var67; + orc_union64 var68; + orc_union64 var69; + orc_union64 var70; + orc_union32 var71; + orc_union32 var72; + orc_union32 var73; + orc_union32 var74; + orc_union32 var75; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 6: loadpw */ + var42.x4[0] = p1; + var42.x4[1] = p1; + var42.x4[2] = p1; + var42.x4[3] = p1; + /* 11: loadpl */ + var55.i = (int) 0xffffffff; /* -1 or 2.122e-314f */ + /* 28: loadpl */ + var43.i = (int) 0x00ffffff; /* 16777215 or 8.28905e-317f */ + /* 31: loadpl */ + var44.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var45 = ptr4[i]; + /* 1: shrul */ + var46.i = ((orc_uint32) var45.i) >> 24; + /* 2: convlw */ + var47.i = var46.i; + /* 3: convwb */ + var48 = var47.i; + /* 4: splatbl */ + var49.i = + ((var48 & 0xff) << 24) | ((var48 & 0xff) << 16) | ((var48 & 0xff) << + 8) | (var48 & 0xff); + /* 5: convubw */ + var50.x4[0] = (orc_uint8) var49.x4[0]; + var50.x4[1] = (orc_uint8) var49.x4[1]; + var50.x4[2] = (orc_uint8) var49.x4[2]; + var50.x4[3] = (orc_uint8) var49.x4[3]; + /* 7: mullw */ + var51.x4[0] = (var50.x4[0] * var42.x4[0]) & 0xffff; + var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff; + var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff; + var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff; + /* 8: shruw */ + var52.x4[0] = ((orc_uint16) var51.x4[0]) >> 8; + var52.x4[1] = ((orc_uint16) var51.x4[1]) >> 8; + var52.x4[2] = ((orc_uint16) var51.x4[2]) >> 8; + var52.x4[3] = ((orc_uint16) var51.x4[3]) >> 8; + /* 9: convubw */ + var53.x4[0] = (orc_uint8) var45.x4[0]; + var53.x4[1] = (orc_uint8) var45.x4[1]; + var53.x4[2] = (orc_uint8) var45.x4[2]; + var53.x4[3] = (orc_uint8) var45.x4[3]; + /* 10: mullw */ + var54.x4[0] = (var53.x4[0] * var52.x4[0]) & 0xffff; + var54.x4[1] = (var53.x4[1] * var52.x4[1]) & 0xffff; + var54.x4[2] = (var53.x4[2] * var52.x4[2]) & 0xffff; + var54.x4[3] = (var53.x4[3] * var52.x4[3]) & 0xffff; + /* 12: convubw */ + var56.x4[0] = (orc_uint8) var55.x4[0]; + var56.x4[1] = (orc_uint8) var55.x4[1]; + var56.x4[2] = (orc_uint8) var55.x4[2]; + var56.x4[3] = (orc_uint8) var55.x4[3]; + /* 13: subw */ + var57.x4[0] = var56.x4[0] - var52.x4[0]; + var57.x4[1] = var56.x4[1] - var52.x4[1]; + var57.x4[2] = var56.x4[2] - var52.x4[2]; + var57.x4[3] = var56.x4[3] - var52.x4[3]; + /* 14: loadl */ + var58 = ptr0[i]; + /* 15: shrul */ + var59.i = ((orc_uint32) var58.i) >> 24; + /* 16: convlw */ + var60.i = var59.i; + /* 17: convwb */ + var61 = var60.i; + /* 18: splatbl */ + var62.i = + ((var61 & 0xff) << 24) | ((var61 & 0xff) << 16) | ((var61 & 0xff) << + 8) | (var61 & 0xff); + /* 19: convubw */ + var63.x4[0] = (orc_uint8) var62.x4[0]; + var63.x4[1] = (orc_uint8) var62.x4[1]; + var63.x4[2] = (orc_uint8) var62.x4[2]; + var63.x4[3] = (orc_uint8) var62.x4[3]; + /* 20: mullw */ + var64.x4[0] = (var63.x4[0] * var57.x4[0]) & 0xffff; + var64.x4[1] = (var63.x4[1] * var57.x4[1]) & 0xffff; + var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff; + var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff; + /* 21: div255w */ + var65.x4[0] = + ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) + + (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8; + var65.x4[1] = + ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) + + (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8; + var65.x4[2] = + ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) + + (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8; + var65.x4[3] = + ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) + + (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8; + /* 22: convubw */ + var66.x4[0] = (orc_uint8) var58.x4[0]; + var66.x4[1] = (orc_uint8) var58.x4[1]; + var66.x4[2] = (orc_uint8) var58.x4[2]; + var66.x4[3] = (orc_uint8) var58.x4[3]; + /* 23: mullw */ + var67.x4[0] = (var66.x4[0] * var65.x4[0]) & 0xffff; + var67.x4[1] = (var66.x4[1] * var65.x4[1]) & 0xffff; + var67.x4[2] = (var66.x4[2] * var65.x4[2]) & 0xffff; + var67.x4[3] = (var66.x4[3] * var65.x4[3]) & 0xffff; + /* 24: addw */ + var68.x4[0] = var67.x4[0] + var54.x4[0]; + var68.x4[1] = var67.x4[1] + var54.x4[1]; + var68.x4[2] = var67.x4[2] + var54.x4[2]; + var68.x4[3] = var67.x4[3] + var54.x4[3]; + /* 25: addw */ + var69.x4[0] = var65.x4[0] + var52.x4[0]; + var69.x4[1] = var65.x4[1] + var52.x4[1]; + var69.x4[2] = var65.x4[2] + var52.x4[2]; + var69.x4[3] = var65.x4[3] + var52.x4[3]; + /* 26: divluw */ + var70.x4[0] = + ((var69.x4[0] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[0]) / + ((orc_uint16) var69.x4[0] & 0xff)); + var70.x4[1] = + ((var69.x4[1] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[1]) / + ((orc_uint16) var69.x4[1] & 0xff)); + var70.x4[2] = + ((var69.x4[2] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[2]) / + ((orc_uint16) var69.x4[2] & 0xff)); + var70.x4[3] = + ((var69.x4[3] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[3]) / + ((orc_uint16) var69.x4[3] & 0xff)); + /* 27: convwb */ + var71.x4[0] = var70.x4[0]; + var71.x4[1] = var70.x4[1]; + var71.x4[2] = var70.x4[2]; + var71.x4[3] = var70.x4[3]; + /* 29: andl */ + var72.i = var71.i & var43.i; + /* 30: convwb */ + var73.x4[0] = var69.x4[0]; + var73.x4[1] = var69.x4[1]; + var73.x4[2] = var69.x4[2]; + var73.x4[3] = var69.x4[3]; + /* 32: andl */ + var74.i = var73.i & var44.i; + /* 33: orl */ + var75.i = var72.i | var74.i; + /* 34: storel */ + ptr0[i] = var75; + } + } + +} + +#else +static void +_backup_video_mixer_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union64 var42; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var43; +#else + orc_union32 var43; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var44; +#else + orc_union32 var44; +#endif + orc_union32 var45; + orc_union32 var46; + orc_union16 var47; + orc_int8 var48; + orc_union32 var49; + orc_union64 var50; + orc_union64 var51; + orc_union64 var52; + orc_union64 var53; + orc_union64 var54; + orc_union32 var55; + orc_union64 var56; + orc_union64 var57; + orc_union32 var58; + orc_union32 var59; + orc_union16 var60; + orc_int8 var61; + orc_union32 var62; + orc_union64 var63; + orc_union64 var64; + orc_union64 var65; + orc_union64 var66; + orc_union64 var67; + orc_union64 var68; + orc_union64 var69; + orc_union64 var70; + orc_union32 var71; + orc_union32 var72; + orc_union32 var73; + orc_union32 var74; + orc_union32 var75; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 6: loadpw */ + var42.x4[0] = ex->params[24]; + var42.x4[1] = ex->params[24]; + var42.x4[2] = ex->params[24]; + var42.x4[3] = ex->params[24]; + /* 11: loadpl */ + var55.i = (int) 0xffffffff; /* -1 or 2.122e-314f */ + /* 28: loadpl */ + var43.i = (int) 0x00ffffff; /* 16777215 or 8.28905e-317f */ + /* 31: loadpl */ + var44.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var45 = ptr4[i]; + /* 1: shrul */ + var46.i = ((orc_uint32) var45.i) >> 24; + /* 2: convlw */ + var47.i = var46.i; + /* 3: convwb */ + var48 = var47.i; + /* 4: splatbl */ + var49.i = + ((var48 & 0xff) << 24) | ((var48 & 0xff) << 16) | ((var48 & 0xff) << + 8) | (var48 & 0xff); + /* 5: convubw */ + var50.x4[0] = (orc_uint8) var49.x4[0]; + var50.x4[1] = (orc_uint8) var49.x4[1]; + var50.x4[2] = (orc_uint8) var49.x4[2]; + var50.x4[3] = (orc_uint8) var49.x4[3]; + /* 7: mullw */ + var51.x4[0] = (var50.x4[0] * var42.x4[0]) & 0xffff; + var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff; + var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff; + var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff; + /* 8: shruw */ + var52.x4[0] = ((orc_uint16) var51.x4[0]) >> 8; + var52.x4[1] = ((orc_uint16) var51.x4[1]) >> 8; + var52.x4[2] = ((orc_uint16) var51.x4[2]) >> 8; + var52.x4[3] = ((orc_uint16) var51.x4[3]) >> 8; + /* 9: convubw */ + var53.x4[0] = (orc_uint8) var45.x4[0]; + var53.x4[1] = (orc_uint8) var45.x4[1]; + var53.x4[2] = (orc_uint8) var45.x4[2]; + var53.x4[3] = (orc_uint8) var45.x4[3]; + /* 10: mullw */ + var54.x4[0] = (var53.x4[0] * var52.x4[0]) & 0xffff; + var54.x4[1] = (var53.x4[1] * var52.x4[1]) & 0xffff; + var54.x4[2] = (var53.x4[2] * var52.x4[2]) & 0xffff; + var54.x4[3] = (var53.x4[3] * var52.x4[3]) & 0xffff; + /* 12: convubw */ + var56.x4[0] = (orc_uint8) var55.x4[0]; + var56.x4[1] = (orc_uint8) var55.x4[1]; + var56.x4[2] = (orc_uint8) var55.x4[2]; + var56.x4[3] = (orc_uint8) var55.x4[3]; + /* 13: subw */ + var57.x4[0] = var56.x4[0] - var52.x4[0]; + var57.x4[1] = var56.x4[1] - var52.x4[1]; + var57.x4[2] = var56.x4[2] - var52.x4[2]; + var57.x4[3] = var56.x4[3] - var52.x4[3]; + /* 14: loadl */ + var58 = ptr0[i]; + /* 15: shrul */ + var59.i = ((orc_uint32) var58.i) >> 24; + /* 16: convlw */ + var60.i = var59.i; + /* 17: convwb */ + var61 = var60.i; + /* 18: splatbl */ + var62.i = + ((var61 & 0xff) << 24) | ((var61 & 0xff) << 16) | ((var61 & 0xff) << + 8) | (var61 & 0xff); + /* 19: convubw */ + var63.x4[0] = (orc_uint8) var62.x4[0]; + var63.x4[1] = (orc_uint8) var62.x4[1]; + var63.x4[2] = (orc_uint8) var62.x4[2]; + var63.x4[3] = (orc_uint8) var62.x4[3]; + /* 20: mullw */ + var64.x4[0] = (var63.x4[0] * var57.x4[0]) & 0xffff; + var64.x4[1] = (var63.x4[1] * var57.x4[1]) & 0xffff; + var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff; + var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff; + /* 21: div255w */ + var65.x4[0] = + ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) + + (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8; + var65.x4[1] = + ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) + + (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8; + var65.x4[2] = + ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) + + (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8; + var65.x4[3] = + ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) + + (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8; + /* 22: convubw */ + var66.x4[0] = (orc_uint8) var58.x4[0]; + var66.x4[1] = (orc_uint8) var58.x4[1]; + var66.x4[2] = (orc_uint8) var58.x4[2]; + var66.x4[3] = (orc_uint8) var58.x4[3]; + /* 23: mullw */ + var67.x4[0] = (var66.x4[0] * var65.x4[0]) & 0xffff; + var67.x4[1] = (var66.x4[1] * var65.x4[1]) & 0xffff; + var67.x4[2] = (var66.x4[2] * var65.x4[2]) & 0xffff; + var67.x4[3] = (var66.x4[3] * var65.x4[3]) & 0xffff; + /* 24: addw */ + var68.x4[0] = var67.x4[0] + var54.x4[0]; + var68.x4[1] = var67.x4[1] + var54.x4[1]; + var68.x4[2] = var67.x4[2] + var54.x4[2]; + var68.x4[3] = var67.x4[3] + var54.x4[3]; + /* 25: addw */ + var69.x4[0] = var65.x4[0] + var52.x4[0]; + var69.x4[1] = var65.x4[1] + var52.x4[1]; + var69.x4[2] = var65.x4[2] + var52.x4[2]; + var69.x4[3] = var65.x4[3] + var52.x4[3]; + /* 26: divluw */ + var70.x4[0] = + ((var69.x4[0] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[0]) / + ((orc_uint16) var69.x4[0] & 0xff)); + var70.x4[1] = + ((var69.x4[1] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[1]) / + ((orc_uint16) var69.x4[1] & 0xff)); + var70.x4[2] = + ((var69.x4[2] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[2]) / + ((orc_uint16) var69.x4[2] & 0xff)); + var70.x4[3] = + ((var69.x4[3] & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[3]) / + ((orc_uint16) var69.x4[3] & 0xff)); + /* 27: convwb */ + var71.x4[0] = var70.x4[0]; + var71.x4[1] = var70.x4[1]; + var71.x4[2] = var70.x4[2]; + var71.x4[3] = var70.x4[3]; + /* 29: andl */ + var72.i = var71.i & var43.i; + /* 30: convwb */ + var73.x4[0] = var69.x4[0]; + var73.x4[1] = var69.x4[1]; + var73.x4[2] = var69.x4[2]; + var73.x4[3] = var69.x4[3]; + /* 32: andl */ + var74.i = var73.i & var44.i; + /* 33: orl */ + var75.i = var72.i | var74.i; + /* 34: storel */ + ptr0[i] = var75; + } + } + +} + +void +video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 20, 8, 20, 8, 20, 4, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32, + 19, 163, 34, 33, 157, 35, 34, 152, 39, 35, 21, 2, 150, 36, 39, 21, + 2, 89, 36, 36, 24, 21, 2, 95, 36, 36, 20, 21, 2, 150, 41, 32, + 21, 2, 89, 41, 41, 36, 115, 39, 16, 21, 2, 150, 37, 39, 21, 2, + 98, 37, 37, 36, 113, 32, 0, 126, 33, 32, 19, 163, 34, 33, 157, 35, + 34, 152, 39, 35, 21, 2, 150, 38, 39, 21, 2, 89, 38, 38, 37, 21, + 2, 80, 38, 38, 21, 2, 150, 40, 32, 21, 2, 89, 40, 40, 38, 21, + 2, 70, 40, 40, 41, 21, 2, 70, 38, 38, 36, 21, 2, 81, 40, 40, + 38, 21, 2, 157, 32, 40, 106, 32, 32, 18, 21, 2, 157, 39, 38, 106, + 39, 39, 17, 123, 32, 32, 39, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_bgra); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_mixer_orc_overlay_bgra"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_bgra); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xffffffff, "c1"); + orc_program_add_constant (p, 4, 0xff000000, "c2"); + orc_program_add_constant (p, 4, 0x00ffffff, "c3"); + orc_program_add_constant (p, 4, 0x00000018, "c4"); + orc_program_add_constant (p, 4, 0x00000008, "c5"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); + orc_program_add_temporary (p, 4, "t8"); + orc_program_add_temporary (p, 8, "t9"); + orc_program_add_temporary (p, 8, "t10"); + + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->params[ORC_VAR_P1] = p1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_memcpy_2d */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var32; + orc_int8 var33; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var32 = ptr4[i]; + /* 1: copyb */ + var33 = var32; + /* 2: storeb */ + ptr0[i] = var33; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_memcpy_2d (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var32; + orc_int8 var33; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var32 = ptr4[i]; + /* 1: copyb */ + var33 = var32; + /* 2: storeb */ + ptr0[i] = var33; + } + } + +} + +void +videomixer_video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 95, 109, 101, 109, 99, 112, 121, 95, 50, 100, 11, 1, 1, 12, 1, 1, + 42, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_memcpy_2d); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "videomixer_video_convert_orc_memcpy_2d"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_memcpy_2d); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + + orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_I420_UYVY */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, + const guint8 * ORC_RESTRICT s4, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 *ORC_RESTRICT ptr1; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + const orc_int8 *ORC_RESTRICT ptr7; + orc_int8 var33; + orc_int8 var34; + orc_union16 var35; + orc_union32 var36; + orc_union16 var37; + orc_union32 var38; + orc_union16 var39; + + ptr0 = (orc_union32 *) d1; + ptr1 = (orc_union32 *) d2; + ptr4 = (orc_union16 *) s1; + ptr5 = (orc_union16 *) s2; + ptr6 = (orc_int8 *) s3; + ptr7 = (orc_int8 *) s4; + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr6[i]; + /* 1: loadb */ + var34 = ptr7[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var33; + _dest.x2[1] = var34; + var39.i = _dest.i; + } + /* 3: loadw */ + var35 = ptr4[i]; + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var39.x2[0]; + _dest.x2[1] = var35.x2[0]; + var36.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var39.x2[1]; + _dest.x2[1] = var35.x2[1]; + var36.x2[1] = _dest.i; + } + /* 5: storel */ + ptr0[i] = var36; + /* 6: loadw */ + var37 = ptr5[i]; + /* 7: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var39.x2[0]; + _dest.x2[1] = var37.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var39.x2[1]; + _dest.x2[1] = var37.x2[1]; + var38.x2[1] = _dest.i; + } + /* 8: storel */ + ptr1[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_I420_UYVY (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 *ORC_RESTRICT ptr1; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + const orc_int8 *ORC_RESTRICT ptr7; + orc_int8 var33; + orc_int8 var34; + orc_union16 var35; + orc_union32 var36; + orc_union16 var37; + orc_union32 var38; + orc_union16 var39; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr1 = (orc_union32 *) ex->arrays[1]; + ptr4 = (orc_union16 *) ex->arrays[4]; + ptr5 = (orc_union16 *) ex->arrays[5]; + ptr6 = (orc_int8 *) ex->arrays[6]; + ptr7 = (orc_int8 *) ex->arrays[7]; + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr6[i]; + /* 1: loadb */ + var34 = ptr7[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var33; + _dest.x2[1] = var34; + var39.i = _dest.i; + } + /* 3: loadw */ + var35 = ptr4[i]; + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var39.x2[0]; + _dest.x2[1] = var35.x2[0]; + var36.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var39.x2[1]; + _dest.x2[1] = var35.x2[1]; + var36.x2[1] = _dest.i; + } + /* 5: storel */ + ptr0[i] = var36; + /* 6: loadw */ + var37 = ptr5[i]; + /* 7: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var39.x2[0]; + _dest.x2[1] = var37.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var39.x2[1]; + _dest.x2[1] = var37.x2[1]; + var38.x2[1] = _dest.i; + } + /* 8: storel */ + ptr1[i] = var38; + } + +} + +void +videomixer_video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, + const guint8 * ORC_RESTRICT s4, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 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, + 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, + 1, 196, 1, 32, 5, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_I420_UYVY); +#else + p = orc_program_new (); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_I420_UYVY"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_I420_UYVY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_destination (p, 4, "d2"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->arrays[ORC_VAR_S4] = (void *) s4; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_I420_YUY2 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, + const guint8 * ORC_RESTRICT s4, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 *ORC_RESTRICT ptr1; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + const orc_int8 *ORC_RESTRICT ptr7; + orc_int8 var33; + orc_int8 var34; + orc_union16 var35; + orc_union32 var36; + orc_union16 var37; + orc_union32 var38; + orc_union16 var39; + + ptr0 = (orc_union32 *) d1; + ptr1 = (orc_union32 *) d2; + ptr4 = (orc_union16 *) s1; + ptr5 = (orc_union16 *) s2; + ptr6 = (orc_int8 *) s3; + ptr7 = (orc_int8 *) s4; + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr6[i]; + /* 1: loadb */ + var34 = ptr7[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var33; + _dest.x2[1] = var34; + var39.i = _dest.i; + } + /* 3: loadw */ + var35 = ptr4[i]; + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var35.x2[0]; + _dest.x2[1] = var39.x2[0]; + var36.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var35.x2[1]; + _dest.x2[1] = var39.x2[1]; + var36.x2[1] = _dest.i; + } + /* 5: storel */ + ptr0[i] = var36; + /* 6: loadw */ + var37 = ptr5[i]; + /* 7: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var39.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var39.x2[1]; + var38.x2[1] = _dest.i; + } + /* 8: storel */ + ptr1[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_I420_YUY2 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 *ORC_RESTRICT ptr1; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + const orc_int8 *ORC_RESTRICT ptr7; + orc_int8 var33; + orc_int8 var34; + orc_union16 var35; + orc_union32 var36; + orc_union16 var37; + orc_union32 var38; + orc_union16 var39; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr1 = (orc_union32 *) ex->arrays[1]; + ptr4 = (orc_union16 *) ex->arrays[4]; + ptr5 = (orc_union16 *) ex->arrays[5]; + ptr6 = (orc_int8 *) ex->arrays[6]; + ptr7 = (orc_int8 *) ex->arrays[7]; + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr6[i]; + /* 1: loadb */ + var34 = ptr7[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var33; + _dest.x2[1] = var34; + var39.i = _dest.i; + } + /* 3: loadw */ + var35 = ptr4[i]; + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var35.x2[0]; + _dest.x2[1] = var39.x2[0]; + var36.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var35.x2[1]; + _dest.x2[1] = var39.x2[1]; + var36.x2[1] = _dest.i; + } + /* 5: storel */ + ptr0[i] = var36; + /* 6: loadw */ + var37 = ptr5[i]; + /* 7: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var39.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var39.x2[1]; + var38.x2[1] = _dest.i; + } + /* 8: storel */ + ptr1[i] = var38; + } + +} + +void +videomixer_video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, + const guint8 * ORC_RESTRICT s4, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 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, + 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, + 1, 196, 1, 5, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_I420_YUY2); +#else + p = orc_program_new (); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_I420_YUY2"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_I420_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_destination (p, 4, "d2"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_S2, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->arrays[ORC_VAR_S4] = (void *) s4; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_I420_AYUV */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, + const guint8 * ORC_RESTRICT s4, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 *ORC_RESTRICT ptr1; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + const orc_int8 *ORC_RESTRICT ptr7; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var36; +#else + orc_int8 var36; +#endif + orc_int8 var37; + orc_union32 var38; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var39; +#else + orc_int8 var39; +#endif + orc_int8 var40; + orc_union32 var41; + orc_int8 var42; + orc_int8 var43; + orc_union16 var44; + orc_union16 var45; + orc_union16 var46; + + ptr0 = (orc_union32 *) d1; + ptr1 = (orc_union32 *) d2; + ptr4 = (orc_int8 *) s1; + ptr5 = (orc_int8 *) s2; + ptr6 = (orc_int8 *) s3; + ptr7 = (orc_int8 *) s4; + + /* 3: loadpb */ + var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + /* 8: loadpb */ + var39 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadupdb */ + var42 = ptr6[i >> 1]; + /* 1: loadupdb */ + var43 = ptr7[i >> 1]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var42; + _dest.x2[1] = var43; + var44.i = _dest.i; + } + /* 4: loadb */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var45.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var45.i; + _dest.x2[1] = var44.i; + var38.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + /* 9: loadb */ + var40 = ptr5[i]; + /* 10: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var39; + _dest.x2[1] = var40; + var46.i = _dest.i; + } + /* 11: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var46.i; + _dest.x2[1] = var44.i; + var41.i = _dest.i; + } + /* 12: storel */ + ptr1[i] = var41; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_I420_AYUV (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 *ORC_RESTRICT ptr1; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + const orc_int8 *ORC_RESTRICT ptr7; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var36; +#else + orc_int8 var36; +#endif + orc_int8 var37; + orc_union32 var38; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var39; +#else + orc_int8 var39; +#endif + orc_int8 var40; + orc_union32 var41; + orc_int8 var42; + orc_int8 var43; + orc_union16 var44; + orc_union16 var45; + orc_union16 var46; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr1 = (orc_union32 *) ex->arrays[1]; + ptr4 = (orc_int8 *) ex->arrays[4]; + ptr5 = (orc_int8 *) ex->arrays[5]; + ptr6 = (orc_int8 *) ex->arrays[6]; + ptr7 = (orc_int8 *) ex->arrays[7]; + + /* 3: loadpb */ + var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + /* 8: loadpb */ + var39 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadupdb */ + var42 = ptr6[i >> 1]; + /* 1: loadupdb */ + var43 = ptr7[i >> 1]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var42; + _dest.x2[1] = var43; + var44.i = _dest.i; + } + /* 4: loadb */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var45.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var45.i; + _dest.x2[1] = var44.i; + var38.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + /* 9: loadb */ + var40 = ptr5[i]; + /* 10: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var39; + _dest.x2[1] = var40; + var46.i = _dest.i; + } + /* 11: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var46.i; + _dest.x2[1] = var44.i; + var41.i = _dest.i; + } + /* 12: storel */ + ptr1[i] = var41; + } + +} + +void +videomixer_video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, + const guint8 * ORC_RESTRICT s4, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 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, + 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, + 1, 45, 34, 6, 45, 35, 7, 196, 32, 34, 35, 196, 33, 16, 4, 195, + 0, 33, 32, 196, 33, 16, 5, 195, 1, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_I420_AYUV); +#else + p = orc_program_new (); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_I420_AYUV"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_I420_AYUV); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_destination (p, 4, "d2"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S3, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S4, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->arrays[ORC_VAR_S4] = (void *) s4; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_YUY2_I420 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, int n) +{ + int i; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + orc_int8 *ORC_RESTRICT ptr3; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; + orc_union32 var35; + orc_union32 var36; + orc_int8 var37; + orc_int8 var38; + orc_union16 var39; + orc_union16 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + + ptr0 = (orc_union16 *) d1; + ptr1 = (orc_union16 *) d2; + ptr2 = (orc_int8 *) d3; + ptr3 = (orc_int8 *) d4; + ptr4 = (orc_union32 *) s1; + ptr5 = (orc_union32 *) s2; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var35.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var35.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var40; + /* 3: loadl */ + var36 = ptr5[i]; + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var41.x2[0] = _src.x2[1]; + var42.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var41.x2[1] = _src.x2[1]; + var42.x2[1] = _src.x2[0]; + } + /* 5: storew */ + ptr1[i] = var42; + /* 6: avgub */ + var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1; + var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1; + /* 7: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var37 = _src.x2[1]; + var38 = _src.x2[0]; + } + /* 8: storeb */ + ptr3[i] = var37; + /* 9: storeb */ + ptr2[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_YUY2_I420 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + orc_int8 *ORC_RESTRICT ptr3; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; + orc_union32 var35; + orc_union32 var36; + orc_int8 var37; + orc_int8 var38; + orc_union16 var39; + orc_union16 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr1 = (orc_union16 *) ex->arrays[1]; + ptr2 = (orc_int8 *) ex->arrays[2]; + ptr3 = (orc_int8 *) ex->arrays[3]; + ptr4 = (orc_union32 *) ex->arrays[4]; + ptr5 = (orc_union32 *) ex->arrays[5]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var35.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var35.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var40; + /* 3: loadl */ + var36 = ptr5[i]; + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var41.x2[0] = _src.x2[1]; + var42.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var41.x2[1] = _src.x2[1]; + var42.x2[1] = _src.x2[0]; + } + /* 5: storew */ + ptr1[i] = var42; + /* 6: avgub */ + var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1; + var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1; + /* 7: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var37 = _src.x2[1]; + var38 = _src.x2[0]; + } + /* 8: storeb */ + ptr3[i] = var37; + /* 9: storeb */ + ptr2[i] = var38; + } + +} + +void +videomixer_video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 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, + 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, + 0, 34, 21, 1, 199, 33, 34, 5, 97, 1, 34, 21, 1, 39, 32, 32, + 33, 199, 3, 2, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_YUY2_I420); +#else + p = orc_program_new (); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_YUY2_I420"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_YUY2_I420); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_destination (p, 1, "d4"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_D3] = d3; + ex->arrays[ORC_VAR_D4] = d4; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_UYVY_YUY2 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: swapw */ + var33.x2[0] = ORC_SWAP_W (var32.x2[0]); + var33.x2[1] = ORC_SWAP_W (var32.x2[1]); + /* 2: storel */ + ptr0[i] = var33; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_UYVY_YUY2 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: swapw */ + var33.x2[0] = ORC_SWAP_W (var32.x2[0]); + var33.x2[1] = ORC_SWAP_W (var32.x2[1]); + /* 2: storel */ + ptr0[i] = var33; + } + } + +} + +void +videomixer_video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_UYVY_YUY2); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_UYVY_YUY2"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_UYVY_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + + orc_program_append_2 (p, "swapw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_planar_chroma_420_422 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_int8 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var32; + orc_int8 var33; + orc_int8 var34; + orc_int8 var35; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var32 = ptr4[i]; + /* 1: copyb */ + var33 = var32; + /* 2: storeb */ + ptr0[i] = var33; + /* 3: loadb */ + var34 = ptr4[i]; + /* 4: copyb */ + var35 = var34; + /* 5: storeb */ + ptr1[i] = var35; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_planar_chroma_420_422 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_int8 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var32; + orc_int8 var33; + orc_int8 var34; + orc_int8 var35; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var32 = ptr4[i]; + /* 1: copyb */ + var33 = var32; + /* 2: storeb */ + ptr0[i] = var33; + /* 3: loadb */ + var34 = ptr4[i]; + /* 4: copyb */ + var35 = var34; + /* 5: storeb */ + ptr1[i] = var35; + } + } + +} + +void +videomixer_video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_420_422); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_planar_chroma_420_422"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_420_422); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_source (p, 1, "s1"); + + orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "copyb", 0, ORC_VAR_D2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_D2] = d2; + ex->params[ORC_VAR_D2] = d2_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_planar_chroma_420_444 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var33; + orc_union16 var34; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr4[i]; + /* 1: splatbw */ + var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff); + /* 2: storew */ + ptr0[i] = var34; + /* 3: storew */ + ptr1[i] = var34; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_planar_chroma_420_444 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var33; + orc_union16 var34; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr4[i]; + /* 1: splatbw */ + var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff); + /* 2: storew */ + ptr0[i] = var34; + /* 3: storew */ + ptr1[i] = var34; + } + } + +} + +void +videomixer_video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_420_444); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_planar_chroma_420_444"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_420_444); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_D2] = d2; + ex->params[ORC_VAR_D2] = d2_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_planar_chroma_422_444 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union16 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var33; + orc_union16 var34; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr4[i]; + /* 1: splatbw */ + var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff); + /* 2: storew */ + ptr0[i] = var34; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_planar_chroma_422_444 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union16 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var33; + orc_union16 var34; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr4[i]; + /* 1: splatbw */ + var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff); + /* 2: storew */ + ptr0[i] = var34; + } + } + +} + +void +videomixer_video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_422_444); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_planar_chroma_422_444"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_422_444); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_planar_chroma_444_422 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var34; + orc_int8 var35; + orc_int8 var36; + orc_int8 var37; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var34 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var34.i; + var36 = _src.x2[1]; + var37 = _src.x2[0]; + } + /* 2: avgub */ + var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1; + /* 3: storeb */ + ptr0[i] = var35; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_planar_chroma_444_422 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var34; + orc_int8 var35; + orc_int8 var36; + orc_int8 var37; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var34 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var34.i; + var36 = _src.x2[1]; + var37 = _src.x2[0]; + } + /* 2: avgub */ + var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1; + /* 3: storeb */ + ptr0[i] = var35; + } + } + +} + +void +videomixer_video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_444_422); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_planar_chroma_444_422"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_444_422); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); + + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_planar_chroma_444_420 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) +{ + int i; + int j; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + orc_union16 var35; + orc_union16 var36; + orc_int8 var37; + orc_union16 var38; + orc_int8 var39; + orc_int8 var40; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var35 = ptr4[i]; + /* 1: loadw */ + var36 = ptr5[i]; + /* 2: avgub */ + var38.x2[0] = + ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1; + var38.x2[1] = + ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1; + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var38.i; + var39 = _src.x2[1]; + var40 = _src.x2[0]; + } + /* 4: avgub */ + var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1; + /* 5: storeb */ + ptr0[i] = var37; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_planar_chroma_444_420 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + orc_union16 var35; + orc_union16 var36; + orc_int8 var37; + orc_union16 var38; + orc_int8 var39; + orc_int8 var40; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var35 = ptr4[i]; + /* 1: loadw */ + var36 = ptr5[i]; + /* 2: avgub */ + var38.x2[0] = + ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1; + var38.x2[1] = + ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1; + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var38.i; + var39 = _src.x2[1]; + var40 = _src.x2[0]; + } + /* 4: avgub */ + var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1; + /* 5: storeb */ + ptr0[i] = var37; + } + } + +} + +void +videomixer_video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 0, 33, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_444_420); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_planar_chroma_444_420"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_444_420); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->params[ORC_VAR_S2] = s2_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_planar_chroma_422_420 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) +{ + int i; + int j; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + orc_int8 var32; + orc_int8 var33; + orc_int8 var34; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var32 = ptr4[i]; + /* 1: loadb */ + var33 = ptr5[i]; + /* 2: avgub */ + var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1; + /* 3: storeb */ + ptr0[i] = var34; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_planar_chroma_422_420 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + orc_int8 var32; + orc_int8 var33; + orc_int8 var34; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var32 = ptr4[i]; + /* 1: loadb */ + var33 = ptr5[i]; + /* 2: avgub */ + var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1; + /* 3: storeb */ + ptr0[i] = var34; + } + } + +} + +void +videomixer_video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_422_420); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_planar_chroma_422_420"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_planar_chroma_422_420); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->params[ORC_VAR_S2] = s2_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_YUY2_AYUV */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_union32 var41; + orc_union32 var42; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 2: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 3: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var40.x2[0]; + var41.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var40.x2[1]; + var41.x2[1] = _dest.i; + } + /* 4: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var39.i; + _dest.x2[1] = var39.i; + var42.i = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[0]; + _dest.x2[1] = var42.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[1]; + _dest.x2[1] = var42.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var38; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_YUY2_AYUV (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_union32 var41; + orc_union32 var42; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 2: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 3: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var40.x2[0]; + var41.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var40.x2[1]; + var41.x2[1] = _dest.i; + } + /* 4: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var39.i; + _dest.x2[1] = var39.i; + var42.i = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[0]; + _dest.x2[1] = var42.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[1]; + _dest.x2[1] = var42.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var38; + } + } + +} + +void +videomixer_video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_YUY2_AYUV); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_YUY2_AYUV"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_YUY2_AYUV); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_UYVY_AYUV */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_union32 var41; + orc_union32 var42; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 2: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 3: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var39.x2[0]; + var41.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var39.x2[1]; + var41.x2[1] = _dest.i; + } + /* 4: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var40.i; + var42.i = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[0]; + _dest.x2[1] = var42.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[1]; + _dest.x2[1] = var42.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var38; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_UYVY_AYUV (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_union32 var41; + orc_union32 var42; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 2: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 3: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var39.x2[0]; + var41.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var39.x2[1]; + var41.x2[1] = _dest.i; + } + /* 4: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var40.i; + var42.i = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[0]; + _dest.x2[1] = var42.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[1]; + _dest.x2[1] = var42.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var38; + } + } + +} + +void +videomixer_video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_UYVY_AYUV); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_UYVY_AYUV"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_UYVY_AYUV); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_YUY2_Y42B */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + int i; + int j; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var33; + orc_union16 var34; + orc_int8 var35; + orc_int8 var36; + orc_union16 var37; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); + ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var33 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var33.x2[0]; + var37.x2[0] = _src.x2[1]; + var34.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var33.x2[1]; + var37.x2[1] = _src.x2[1]; + var34.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var34; + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var37.i; + var35 = _src.x2[1]; + var36 = _src.x2[0]; + } + /* 4: storeb */ + ptr2[i] = var35; + /* 5: storeb */ + ptr1[i] = var36; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_YUY2_Y42B (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var33; + orc_union16 var34; + orc_int8 var35; + orc_int8 var36; + orc_union16 var37; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); + ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var33 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var33.x2[0]; + var37.x2[0] = _src.x2[1]; + var34.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var33.x2[1]; + var37.x2[1] = _src.x2[1]; + var34.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var34; + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var37.i; + var35 = _src.x2[1]; + var36 = _src.x2[0]; + } + /* 4: storeb */ + ptr2[i] = var35; + /* 5: storeb */ + ptr1[i] = var36; + } + } + +} + +void +videomixer_video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_YUY2_Y42B); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_YUY2_Y42B"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_YUY2_Y42B); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_D2] = d2; + ex->params[ORC_VAR_D2] = d2_stride; + ex->arrays[ORC_VAR_D3] = d3; + ex->params[ORC_VAR_D3] = d3_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_UYVY_Y42B */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + int i; + int j; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var33; + orc_union16 var34; + orc_int8 var35; + orc_int8 var36; + orc_union16 var37; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); + ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var33 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var33.x2[0]; + var34.x2[0] = _src.x2[1]; + var37.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var33.x2[1]; + var34.x2[1] = _src.x2[1]; + var37.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var34; + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var37.i; + var35 = _src.x2[1]; + var36 = _src.x2[0]; + } + /* 4: storeb */ + ptr2[i] = var35; + /* 5: storeb */ + ptr1[i] = var36; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_UYVY_Y42B (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var33; + orc_union16 var34; + orc_int8 var35; + orc_int8 var36; + orc_union16 var37; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); + ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var33 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var33.x2[0]; + var34.x2[0] = _src.x2[1]; + var37.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var33.x2[1]; + var34.x2[1] = _src.x2[1]; + var37.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var34; + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var37.i; + var35 = _src.x2[1]; + var36 = _src.x2[0]; + } + /* 4: storeb */ + ptr2[i] = var35; + /* 5: storeb */ + ptr1[i] = var36; + } + } + +} + +void +videomixer_video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_UYVY_Y42B); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_UYVY_Y42B"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_UYVY_Y42B); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_D2] = d2; + ex->params[ORC_VAR_D2] = d2_stride; + ex->arrays[ORC_VAR_D3] = d3; + ex->params[ORC_VAR_D3] = d3_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_YUY2_Y444 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + int i; + int j; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + orc_union16 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var35; + orc_union16 var36; + orc_union16 var37; + orc_union16 var38; + orc_union16 var39; + orc_int8 var40; + orc_int8 var41; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); + ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var35.x2[0]; + var39.x2[0] = _src.x2[1]; + var36.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var35.x2[1]; + var39.x2[1] = _src.x2[1]; + var36.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var36; + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var39.i; + var40 = _src.x2[1]; + var41 = _src.x2[0]; + } + /* 4: splatbw */ + var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff); + /* 5: storew */ + ptr1[i] = var37; + /* 6: splatbw */ + var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff); + /* 7: storew */ + ptr2[i] = var38; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_YUY2_Y444 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + orc_union16 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var35; + orc_union16 var36; + orc_union16 var37; + orc_union16 var38; + orc_union16 var39; + orc_int8 var40; + orc_int8 var41; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); + ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var35.x2[0]; + var39.x2[0] = _src.x2[1]; + var36.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var35.x2[1]; + var39.x2[1] = _src.x2[1]; + var36.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var36; + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var39.i; + var40 = _src.x2[1]; + var41 = _src.x2[0]; + } + /* 4: splatbw */ + var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff); + /* 5: storew */ + ptr1[i] = var37; + /* 6: splatbw */ + var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff); + /* 7: storew */ + ptr2[i] = var38; + } + } + +} + +void +videomixer_video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 33, 151, 2, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_YUY2_Y444); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_YUY2_Y444"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_YUY2_Y444); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 2, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_D2] = d2; + ex->params[ORC_VAR_D2] = d2_stride; + ex->arrays[ORC_VAR_D3] = d3; + ex->params[ORC_VAR_D3] = d3_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_UYVY_Y444 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + int i; + int j; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + orc_union16 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var35; + orc_union16 var36; + orc_union16 var37; + orc_union16 var38; + orc_union16 var39; + orc_int8 var40; + orc_int8 var41; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); + ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var35.x2[0]; + var36.x2[0] = _src.x2[1]; + var39.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var35.x2[1]; + var36.x2[1] = _src.x2[1]; + var39.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var36; + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var39.i; + var40 = _src.x2[1]; + var41 = _src.x2[0]; + } + /* 4: splatbw */ + var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff); + /* 5: storew */ + ptr1[i] = var37; + /* 6: splatbw */ + var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff); + /* 7: storew */ + ptr2[i] = var38; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_UYVY_Y444 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + orc_union16 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var35; + orc_union16 var36; + orc_union16 var37; + orc_union16 var38; + orc_union16 var39; + orc_int8 var40; + orc_int8 var41; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); + ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var35.x2[0]; + var36.x2[0] = _src.x2[1]; + var39.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var35.x2[1]; + var36.x2[1] = _src.x2[1]; + var39.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var36; + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var39.i; + var40 = _src.x2[1]; + var41 = _src.x2[0]; + } + /* 4: splatbw */ + var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff); + /* 5: storew */ + ptr1[i] = var37; + /* 6: splatbw */ + var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff); + /* 7: storew */ + ptr2[i] = var38; + } + } + +} + +void +videomixer_video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 33, 151, 2, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_UYVY_Y444); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_UYVY_Y444"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_UYVY_Y444); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 2, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_D2] = d2; + ex->params[ORC_VAR_D2] = d2_stride; + ex->arrays[ORC_VAR_D3] = d3; + ex->params[ORC_VAR_D3] = d3_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_UYVY_I420 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, int n) +{ + int i; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + orc_int8 *ORC_RESTRICT ptr3; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; + orc_union32 var35; + orc_union32 var36; + orc_int8 var37; + orc_int8 var38; + orc_union16 var39; + orc_union16 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + + ptr0 = (orc_union16 *) d1; + ptr1 = (orc_union16 *) d2; + ptr2 = (orc_int8 *) d3; + ptr3 = (orc_int8 *) d4; + ptr4 = (orc_union32 *) s1; + ptr5 = (orc_union32 *) s2; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var35.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var35.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var39; + /* 3: loadl */ + var36 = ptr5[i]; + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var41.x2[0] = _src.x2[1]; + var42.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var41.x2[1] = _src.x2[1]; + var42.x2[1] = _src.x2[0]; + } + /* 5: storew */ + ptr1[i] = var41; + /* 6: avgub */ + var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 7: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var37 = _src.x2[1]; + var38 = _src.x2[0]; + } + /* 8: storeb */ + ptr3[i] = var37; + /* 9: storeb */ + ptr2[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_UYVY_I420 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + orc_int8 *ORC_RESTRICT ptr3; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; + orc_union32 var35; + orc_union32 var36; + orc_int8 var37; + orc_int8 var38; + orc_union16 var39; + orc_union16 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr1 = (orc_union16 *) ex->arrays[1]; + ptr2 = (orc_int8 *) ex->arrays[2]; + ptr3 = (orc_int8 *) ex->arrays[3]; + ptr4 = (orc_union32 *) ex->arrays[4]; + ptr5 = (orc_union32 *) ex->arrays[5]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var35 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var35.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var35.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: storew */ + ptr0[i] = var39; + /* 3: loadl */ + var36 = ptr5[i]; + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var41.x2[0] = _src.x2[1]; + var42.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var41.x2[1] = _src.x2[1]; + var42.x2[1] = _src.x2[0]; + } + /* 5: storew */ + ptr1[i] = var41; + /* 6: avgub */ + var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 7: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var37 = _src.x2[1]; + var38 = _src.x2[0]; + } + /* 8: storeb */ + ptr3[i] = var37; + /* 9: storeb */ + ptr2[i] = var38; + } + +} + +void +videomixer_video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, + const guint8 * ORC_RESTRICT s2, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 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, + 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, + 0, 34, 21, 1, 199, 34, 33, 5, 97, 1, 34, 21, 1, 39, 32, 32, + 33, 199, 3, 2, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_UYVY_I420); +#else + p = orc_program_new (); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_UYVY_I420"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_UYVY_I420); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_destination (p, 1, "d4"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_D3] = d3; + ex->arrays[ORC_VAR_D4] = d4; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_AYUV_I420 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, guint8 * ORC_RESTRICT d4, + int d4_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) +{ + int i; + int j; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + orc_int8 *ORC_RESTRICT ptr3; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; + orc_union64 var40; + orc_union16 var41; + orc_union64 var42; + orc_union16 var43; + orc_int8 var44; + orc_int8 var45; + orc_union32 var46; + orc_union32 var47; + orc_union32 var48; + orc_union32 var49; + orc_union32 var50; + orc_union16 var51; + orc_union16 var52; + orc_int8 var53; + orc_int8 var54; + orc_int8 var55; + orc_int8 var56; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); + ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); + ptr3 = ORC_PTR_OFFSET (d4, d4_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var40 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var40.x2[0]; + var46.x2[0] = _src.x2[1]; + var47.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var40.x2[1]; + var46.x2[1] = _src.x2[1]; + var47.x2[1] = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var47.x2[0]; + var41.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var47.x2[1]; + var41.x2[1] = _src.x2[1]; + } + /* 3: storew */ + ptr0[i] = var41; + /* 4: loadq */ + var42 = ptr5[i]; + /* 5: splitlw */ + { + orc_union32 _src; + _src.i = var42.x2[0]; + var48.x2[0] = _src.x2[1]; + var49.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var42.x2[1]; + var48.x2[1] = _src.x2[1]; + var49.x2[1] = _src.x2[0]; + } + /* 6: select1wb */ + { + orc_union16 _src; + _src.i = var49.x2[0]; + var43.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var49.x2[1]; + var43.x2[1] = _src.x2[1]; + } + /* 7: storew */ + ptr1[i] = var43; + /* 8: avgub */ + var50.x4[0] = + ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1; + var50.x4[1] = + ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1; + var50.x4[2] = + ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1; + var50.x4[3] = + ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1; + /* 9: splitwb */ + { + orc_union16 _src; + _src.i = var50.x2[0]; + var51.x2[0] = _src.x2[1]; + var52.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var50.x2[1]; + var51.x2[1] = _src.x2[1]; + var52.x2[1] = _src.x2[0]; + } + /* 10: splitwb */ + { + orc_union16 _src; + _src.i = var52.i; + var53 = _src.x2[1]; + var54 = _src.x2[0]; + } + /* 11: avgub */ + var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1; + /* 12: storeb */ + ptr2[i] = var44; + /* 13: splitwb */ + { + orc_union16 _src; + _src.i = var51.i; + var55 = _src.x2[1]; + var56 = _src.x2[0]; + } + /* 14: avgub */ + var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1; + /* 15: storeb */ + ptr3[i] = var45; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_AYUV_I420 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + orc_int8 *ORC_RESTRICT ptr3; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; + orc_union64 var40; + orc_union16 var41; + orc_union64 var42; + orc_union16 var43; + orc_int8 var44; + orc_int8 var45; + orc_union32 var46; + orc_union32 var47; + orc_union32 var48; + orc_union32 var49; + orc_union32 var50; + orc_union16 var51; + orc_union16 var52; + orc_int8 var53; + orc_int8 var54; + orc_int8 var55; + orc_int8 var56; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); + ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); + ptr3 = ORC_PTR_OFFSET (ex->arrays[3], ex->params[3] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var40 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var40.x2[0]; + var46.x2[0] = _src.x2[1]; + var47.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var40.x2[1]; + var46.x2[1] = _src.x2[1]; + var47.x2[1] = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var47.x2[0]; + var41.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var47.x2[1]; + var41.x2[1] = _src.x2[1]; + } + /* 3: storew */ + ptr0[i] = var41; + /* 4: loadq */ + var42 = ptr5[i]; + /* 5: splitlw */ + { + orc_union32 _src; + _src.i = var42.x2[0]; + var48.x2[0] = _src.x2[1]; + var49.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var42.x2[1]; + var48.x2[1] = _src.x2[1]; + var49.x2[1] = _src.x2[0]; + } + /* 6: select1wb */ + { + orc_union16 _src; + _src.i = var49.x2[0]; + var43.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var49.x2[1]; + var43.x2[1] = _src.x2[1]; + } + /* 7: storew */ + ptr1[i] = var43; + /* 8: avgub */ + var50.x4[0] = + ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1; + var50.x4[1] = + ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1; + var50.x4[2] = + ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1; + var50.x4[3] = + ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1; + /* 9: splitwb */ + { + orc_union16 _src; + _src.i = var50.x2[0]; + var51.x2[0] = _src.x2[1]; + var52.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var50.x2[1]; + var51.x2[1] = _src.x2[1]; + var52.x2[1] = _src.x2[0]; + } + /* 10: splitwb */ + { + orc_union16 _src; + _src.i = var52.i; + var53 = _src.x2[1]; + var54 = _src.x2[0]; + } + /* 11: avgub */ + var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1; + /* 12: storeb */ + ptr2[i] = var44; + /* 13: splitwb */ + { + orc_union16 _src; + _src.i = var51.i; + var55 = _src.x2[1]; + var56 = _src.x2[0]; + } + /* 14: avgub */ + var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1; + /* 15: storeb */ + ptr3[i] = var45; + } + } + +} + +void +videomixer_video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, guint8 * ORC_RESTRICT d4, + int d4_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 20, 1, 20, 1, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 21, + 1, 198, 34, 32, 5, 21, 1, 189, 1, 32, 21, 2, 39, 35, 33, 34, + 21, 1, 199, 37, 36, 35, 199, 38, 39, 36, 39, 2, 38, 39, 199, 38, + 39, 37, 39, 3, 38, 39, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_I420); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_AYUV_I420"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_I420); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_destination (p, 1, "d4"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_source (p, 8, "s2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 1, "t7"); + orc_program_add_temporary (p, 1, "t8"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D2, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 2, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D4, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_D2] = d2; + ex->params[ORC_VAR_D2] = d2_stride; + ex->arrays[ORC_VAR_D3] = d3; + ex->params[ORC_VAR_D3] = d3_stride; + ex->arrays[ORC_VAR_D4] = d4; + ex->params[ORC_VAR_D4] = d4_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->params[ORC_VAR_S2] = s2_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_AYUV_YUY2 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 3: avgub */ + var43.x2[0] = + ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = + ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 4: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var44.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var44.x2[1] = _src.x2[1]; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[0]; + _dest.x2[1] = var43.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[1]; + _dest.x2[1] = var43.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storel */ + ptr0[i] = var38; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_AYUV_YUY2 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 3: avgub */ + var43.x2[0] = + ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = + ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 4: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var44.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var44.x2[1] = _src.x2[1]; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[0]; + _dest.x2[1] = var43.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[1]; + _dest.x2[1] = var43.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storel */ + ptr0[i] = var38; + } + } + +} + +void +videomixer_video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 33, 34, 21, 1, 189, 32, 35, 21, 1, 196, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_YUY2); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_AYUV_YUY2"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_AYUV_UYVY */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 3: avgub */ + var43.x2[0] = + ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = + ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 4: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var44.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var44.x2[1] = _src.x2[1]; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[0]; + _dest.x2[1] = var44.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[1]; + _dest.x2[1] = var44.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storel */ + ptr0[i] = var38; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_AYUV_UYVY (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 3: avgub */ + var43.x2[0] = + ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = + ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 4: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var44.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var44.x2[1] = _src.x2[1]; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[0]; + _dest.x2[1] = var44.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[1]; + _dest.x2[1] = var44.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storel */ + ptr0[i] = var38; + } + } + +} + +void +videomixer_video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 33, 34, 21, 1, 189, 32, 35, 21, 1, 196, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_UYVY); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_AYUV_UYVY"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_UYVY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_AYUV_Y42B */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + int i; + int j; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var36; + orc_int8 var37; + orc_int8 var38; + orc_union16 var39; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); + ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var36 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var36.x2[0]; + var40.x2[0] = _src.x2[1]; + var41.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var36.x2[1]; + var40.x2[1] = _src.x2[1]; + var41.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 3: avgub */ + var44.x2[0] = + ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1; + var44.x2[1] = + ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1; + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var44.i; + var37 = _src.x2[1]; + var38 = _src.x2[0]; + } + /* 5: storeb */ + ptr2[i] = var37; + /* 6: storeb */ + ptr1[i] = var38; + /* 7: select1wb */ + { + orc_union16 _src; + _src.i = var41.x2[0]; + var39.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var41.x2[1]; + var39.x2[1] = _src.x2[1]; + } + /* 8: storew */ + ptr0[i] = var39; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_AYUV_Y42B (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var36; + orc_int8 var37; + orc_int8 var38; + orc_union16 var39; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); + ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var36 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var36.x2[0]; + var40.x2[0] = _src.x2[1]; + var41.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var36.x2[1]; + var40.x2[1] = _src.x2[1]; + var41.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 3: avgub */ + var44.x2[0] = + ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1; + var44.x2[1] = + ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1; + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var44.i; + var37 = _src.x2[1]; + var38 = _src.x2[0]; + } + /* 5: storeb */ + ptr2[i] = var37; + /* 6: storeb */ + ptr1[i] = var38; + /* 7: select1wb */ + { + orc_union16 _src; + _src.i = var41.x2[0]; + var39.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var41.x2[1]; + var39.x2[1] = _src.x2[1]; + } + /* 8: storew */ + ptr0[i] = var39; + } + } + +} + +void +videomixer_video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 21, 1, 39, 34, 34, 35, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_Y42B); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_AYUV_Y42B"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_Y42B); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_D2] = d2; + ex->params[ORC_VAR_D2] = d2_stride; + ex->arrays[ORC_VAR_D3] = d3; + ex->params[ORC_VAR_D3] = d3_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_AYUV_Y444 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + int i; + int j; + orc_int8 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_int8 var35; + orc_int8 var36; + orc_int8 var37; + orc_union16 var38; + orc_union16 var39; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); + ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var34.i; + var38.i = _src.x2[1]; + var39.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var38.i; + var35 = _src.x2[1]; + var36 = _src.x2[0]; + } + /* 3: storeb */ + ptr2[i] = var35; + /* 4: storeb */ + ptr1[i] = var36; + /* 5: select1wb */ + { + orc_union16 _src; + _src.i = var39.i; + var37 = _src.x2[1]; + } + /* 6: storeb */ + ptr0[i] = var37; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_AYUV_Y444 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_int8 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_int8 var35; + orc_int8 var36; + orc_int8 var37; + orc_union16 var38; + orc_union16 var39; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); + ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var34.i; + var38.i = _src.x2[1]; + var39.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var38.i; + var35 = _src.x2[1]; + var36 = _src.x2[0]; + } + /* 3: storeb */ + ptr2[i] = var35; + /* 4: storeb */ + ptr1[i] = var36; + /* 5: select1wb */ + { + orc_union16 _src; + _src.i = var39.i; + var37 = _src.x2[1]; + } + /* 6: storeb */ + ptr0[i] = var37; + } + } + +} + +void +videomixer_video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, + int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, + guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, + int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_Y444); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_AYUV_Y444"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_Y444); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_D2] = d2; + ex->params[ORC_VAR_D2] = d2_stride; + ex->arrays[ORC_VAR_D3] = d3; + ex->params[ORC_VAR_D3] = d3_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_Y42B_YUY2 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var33; + orc_int8 var34; + orc_union16 var35; + orc_union32 var36; + orc_union16 var37; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); + ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr5[i]; + /* 1: loadb */ + var34 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var33; + _dest.x2[1] = var34; + var37.i = _dest.i; + } + /* 3: loadw */ + var35 = ptr4[i]; + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var35.x2[0]; + _dest.x2[1] = var37.x2[0]; + var36.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var35.x2[1]; + _dest.x2[1] = var37.x2[1]; + var36.x2[1] = _dest.i; + } + /* 5: storel */ + ptr0[i] = var36; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_Y42B_YUY2 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var33; + orc_int8 var34; + orc_union16 var35; + orc_union32 var36; + orc_union16 var37; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); + ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr5[i]; + /* 1: loadb */ + var34 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var33; + _dest.x2[1] = var34; + var37.i = _dest.i; + } + /* 3: loadw */ + var35 = ptr4[i]; + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var35.x2[0]; + _dest.x2[1] = var37.x2[0]; + var36.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var35.x2[1]; + _dest.x2[1] = var37.x2[1]; + var36.x2[1] = _dest.i; + } + /* 5: storel */ + ptr0[i] = var36; + } + } + +} + +void +videomixer_video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y42B_YUY2); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_Y42B_YUY2"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y42B_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->params[ORC_VAR_S2] = s2_stride; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->params[ORC_VAR_S3] = s3_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_Y42B_UYVY */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var33; + orc_int8 var34; + orc_union16 var35; + orc_union32 var36; + orc_union16 var37; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); + ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr5[i]; + /* 1: loadb */ + var34 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var33; + _dest.x2[1] = var34; + var37.i = _dest.i; + } + /* 3: loadw */ + var35 = ptr4[i]; + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var35.x2[0]; + var36.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var35.x2[1]; + var36.x2[1] = _dest.i; + } + /* 5: storel */ + ptr0[i] = var36; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_Y42B_UYVY (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var33; + orc_int8 var34; + orc_union16 var35; + orc_union32 var36; + orc_union16 var37; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); + ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr5[i]; + /* 1: loadb */ + var34 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var33; + _dest.x2[1] = var34; + var37.i = _dest.i; + } + /* 3: loadw */ + var35 = ptr4[i]; + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var35.x2[0]; + var36.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var35.x2[1]; + var36.x2[1] = _dest.i; + } + /* 5: storel */ + ptr0[i] = var36; + } + } + +} + +void +videomixer_video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y42B_UYVY); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_Y42B_UYVY"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y42B_UYVY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->params[ORC_VAR_S2] = s2_stride; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->params[ORC_VAR_S3] = s3_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_Y42B_AYUV */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + int i; + int j; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var36; + orc_int8 var37; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var38; +#else + orc_union16 var38; +#endif + orc_union16 var39; + orc_union64 var40; + orc_union16 var41; + orc_union32 var42; + orc_union32 var43; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); + ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); + + /* 3: loadpb */ + var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var36 = ptr5[i]; + /* 1: loadb */ + var37 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var41.i = _dest.i; + } + /* 4: loadw */ + var39 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[0]; + _dest.x2[1] = var39.x2[0]; + var42.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[1]; + _dest.x2[1] = var39.x2[1]; + var42.x2[1] = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.i; + _dest.x2[1] = var41.i; + var43.i = _dest.i; + } + /* 7: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[0]; + _dest.x2[1] = var43.x2[0]; + var40.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[1]; + _dest.x2[1] = var43.x2[1]; + var40.x2[1] = _dest.i; + } + /* 8: storeq */ + ptr0[i] = var40; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_Y42B_AYUV (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var36; + orc_int8 var37; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var38; +#else + orc_union16 var38; +#endif + orc_union16 var39; + orc_union64 var40; + orc_union16 var41; + orc_union32 var42; + orc_union32 var43; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); + ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); + + /* 3: loadpb */ + var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var36 = ptr5[i]; + /* 1: loadb */ + var37 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var41.i = _dest.i; + } + /* 4: loadw */ + var39 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[0]; + _dest.x2[1] = var39.x2[0]; + var42.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[1]; + _dest.x2[1] = var39.x2[1]; + var42.x2[1] = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.i; + _dest.x2[1] = var41.i; + var43.i = _dest.i; + } + /* 7: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[0]; + _dest.x2[1] = var43.x2[0]; + var40.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[1]; + _dest.x2[1] = var43.x2[1]; + var40.x2[1] = _dest.i; + } + /* 8: storeq */ + ptr0[i] = var40; + } + } + +} + +void +videomixer_video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 21, 1, 196, 35, 16, 4, 195, 34, 32, 32, 21, 1, 195, 0, 35, 34, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y42B_AYUV); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_Y42B_AYUV"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y42B_AYUV); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->params[ORC_VAR_S2] = s2_stride; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->params[ORC_VAR_S3] = s3_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_Y444_YUY2 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + const orc_union16 *ORC_RESTRICT ptr6; + orc_union16 var36; + orc_union16 var37; + orc_union16 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); + ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var36 = ptr5[i]; + /* 1: loadw */ + var37 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[0]; + _dest.x2[1] = var37.x2[0]; + var40.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[1]; + _dest.x2[1] = var37.x2[1]; + var40.x2[1] = _dest.i; + } + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 4: avgub */ + var43.x2[0] = + ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = + ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 5: loadw */ + var38 = ptr4[i]; + /* 6: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[0]; + _dest.x2[1] = var43.x2[0]; + var39.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[1]; + _dest.x2[1] = var43.x2[1]; + var39.x2[1] = _dest.i; + } + /* 7: storel */ + ptr0[i] = var39; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_Y444_YUY2 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + const orc_union16 *ORC_RESTRICT ptr6; + orc_union16 var36; + orc_union16 var37; + orc_union16 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); + ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var36 = ptr5[i]; + /* 1: loadw */ + var37 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[0]; + _dest.x2[1] = var37.x2[0]; + var40.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[1]; + _dest.x2[1] = var37.x2[1]; + var40.x2[1] = _dest.i; + } + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 4: avgub */ + var43.x2[0] = + ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = + ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 5: loadw */ + var38 = ptr4[i]; + /* 6: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[0]; + _dest.x2[1] = var43.x2[0]; + var39.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[1]; + _dest.x2[1] = var43.x2[1]; + var39.x2[1] = _dest.i; + } + /* 7: storel */ + ptr0[i] = var39; + } + } + +} + +void +videomixer_video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 21, 1, 39, 32, 34, 35, 21, 1, 196, 0, 4, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y444_YUY2); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_Y444_YUY2"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y444_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->params[ORC_VAR_S2] = s2_stride; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->params[ORC_VAR_S3] = s3_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_Y444_UYVY */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + const orc_union16 *ORC_RESTRICT ptr6; + orc_union16 var36; + orc_union16 var37; + orc_union16 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); + ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var36 = ptr5[i]; + /* 1: loadw */ + var37 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[0]; + _dest.x2[1] = var37.x2[0]; + var40.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[1]; + _dest.x2[1] = var37.x2[1]; + var40.x2[1] = _dest.i; + } + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 4: avgub */ + var43.x2[0] = + ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = + ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 5: loadw */ + var38 = ptr4[i]; + /* 6: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[0]; + _dest.x2[1] = var38.x2[0]; + var39.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[1]; + _dest.x2[1] = var38.x2[1]; + var39.x2[1] = _dest.i; + } + /* 7: storel */ + ptr0[i] = var39; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_Y444_UYVY (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + const orc_union16 *ORC_RESTRICT ptr6; + orc_union16 var36; + orc_union16 var37; + orc_union16 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); + ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var36 = ptr5[i]; + /* 1: loadw */ + var37 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[0]; + _dest.x2[1] = var37.x2[0]; + var40.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[1]; + _dest.x2[1] = var37.x2[1]; + var40.x2[1] = _dest.i; + } + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 4: avgub */ + var43.x2[0] = + ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = + ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 5: loadw */ + var38 = ptr4[i]; + /* 6: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[0]; + _dest.x2[1] = var38.x2[0]; + var39.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[1]; + _dest.x2[1] = var38.x2[1]; + var39.x2[1] = _dest.i; + } + /* 7: storel */ + ptr0[i] = var39; + } + } + +} + +void +videomixer_video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 21, 1, 39, 32, 34, 35, 21, 1, 196, 0, 32, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y444_UYVY); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_Y444_UYVY"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y444_UYVY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->params[ORC_VAR_S2] = s2_stride; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->params[ORC_VAR_S3] = s3_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_Y444_AYUV */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var34; + orc_int8 var35; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var36; +#else + orc_int8 var36; +#endif + orc_int8 var37; + orc_union32 var38; + orc_union16 var39; + orc_union16 var40; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); + ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); + + /* 3: loadpb */ + var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var34 = ptr5[i]; + /* 1: loadb */ + var35 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var34; + _dest.x2[1] = var35; + var39.i = _dest.i; + } + /* 4: loadb */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var40.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var39.i; + var38.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_Y444_AYUV (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var34; + orc_int8 var35; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var36; +#else + orc_int8 var36; +#endif + orc_int8 var37; + orc_union32 var38; + orc_union16 var39; + orc_union16 var40; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); + ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); + + /* 3: loadpb */ + var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var34 = ptr5[i]; + /* 1: loadb */ + var35 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var34; + _dest.x2[1] = var35; + var39.i = _dest.i; + } + /* 4: loadb */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var40.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var39.i; + var38.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + } + } + +} + +void +videomixer_video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, + const guint8 * ORC_RESTRICT s2, int s2_stride, + const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 195, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y444_AYUV); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_Y444_AYUV"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_Y444_AYUV); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->params[ORC_VAR_S2] = s2_stride; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->params[ORC_VAR_S3] = s3_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_AYUV_ARGB */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var48; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var49; +#else + orc_union32 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var54; +#else + orc_union16 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var55; +#else + orc_union32 var55; +#endif + orc_union32 var56; + orc_union32 var57; + orc_union16 var58; + orc_union16 var59; + orc_int8 var60; + orc_int8 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_union16 var65; + orc_union16 var66; + orc_union16 var67; + orc_union16 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_union16 var85; + orc_union16 var86; + orc_int8 var87; + orc_int8 var88; + orc_int8 var89; + orc_union16 var90; + orc_union16 var91; + orc_union32 var92; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 1: loadpb */ + var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 9: loadpw */ + var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 14: loadpw */ + var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 21: loadpw */ + var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 25: loadpw */ + var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 29: loadpw */ + var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 40: loadpb */ + var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var48 = ptr4[i]; + /* 2: subb */ + var57.x4[0] = var48.x4[0] - var49.x4[0]; + var57.x4[1] = var48.x4[1] - var49.x4[1]; + var57.x4[2] = var48.x4[2] - var49.x4[2]; + var57.x4[3] = var48.x4[3] - var49.x4[3]; + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var57.i; + var58.i = _src.x2[1]; + var59.i = _src.x2[0]; + } + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var59.i; + var60 = _src.x2[1]; + var61 = _src.x2[0]; + } + /* 5: splitwb */ + { + orc_union16 _src; + _src.i = var58.i; + var62 = _src.x2[1]; + var63 = _src.x2[0]; + } + /* 6: convsbw */ + var64.i = var60; + /* 7: convsbw */ + var65.i = var63; + /* 8: convsbw */ + var66.i = var62; + /* 10: mullw */ + var67.i = (var64.i * var50.i) & 0xffff; + /* 11: shrsw */ + var68.i = var67.i >> 8; + /* 12: addssw */ + var69.i = ORC_CLAMP_SW (var64.i + var68.i); + /* 13: addssw */ + var70.i = ORC_CLAMP_SW (var69.i + var66.i); + /* 15: mullw */ + var71.i = (var66.i * var51.i) & 0xffff; + /* 16: shrsw */ + var72.i = var71.i >> 8; + /* 17: subssw */ + var73.i = ORC_CLAMP_SW (var70.i - var72.i); + /* 18: addssw */ + var74.i = ORC_CLAMP_SW (var73.i + var66.i); + /* 19: addssw */ + var75.i = ORC_CLAMP_SW (var69.i + var65.i); + /* 20: addssw */ + var76.i = ORC_CLAMP_SW (var75.i + var65.i); + /* 22: mullw */ + var77.i = (var65.i * var52.i) & 0xffff; + /* 23: shrsw */ + var78.i = var77.i >> 8; + /* 24: addssw */ + var79.i = ORC_CLAMP_SW (var76.i + var78.i); + /* 26: mullw */ + var80.i = (var65.i * var53.i) & 0xffff; + /* 27: shrsw */ + var81.i = var80.i >> 8; + /* 28: subssw */ + var82.i = ORC_CLAMP_SW (var69.i - var81.i); + /* 30: mullw */ + var83.i = (var66.i * var54.i) & 0xffff; + /* 31: shrsw */ + var84.i = var83.i >> 8; + /* 32: subssw */ + var85.i = ORC_CLAMP_SW (var82.i - var84.i); + /* 33: subssw */ + var86.i = ORC_CLAMP_SW (var85.i - var84.i); + /* 34: convssswb */ + var87 = ORC_CLAMP_SB (var74.i); + /* 35: convssswb */ + var88 = ORC_CLAMP_SB (var86.i); + /* 36: convssswb */ + var89 = ORC_CLAMP_SB (var79.i); + /* 37: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var61; + _dest.x2[1] = var87; + var90.i = _dest.i; + } + /* 38: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var88; + _dest.x2[1] = var89; + var91.i = _dest.i; + } + /* 39: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var90.i; + _dest.x2[1] = var91.i; + var92.i = _dest.i; + } + /* 41: addb */ + var56.x4[0] = var92.x4[0] + var55.x4[0]; + var56.x4[1] = var92.x4[1] + var55.x4[1]; + var56.x4[2] = var92.x4[2] + var55.x4[2]; + var56.x4[3] = var92.x4[3] + var55.x4[3]; + /* 42: storel */ + ptr0[i] = var56; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_AYUV_ARGB (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var48; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var49; +#else + orc_union32 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var54; +#else + orc_union16 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var55; +#else + orc_union32 var55; +#endif + orc_union32 var56; + orc_union32 var57; + orc_union16 var58; + orc_union16 var59; + orc_int8 var60; + orc_int8 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_union16 var65; + orc_union16 var66; + orc_union16 var67; + orc_union16 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_union16 var85; + orc_union16 var86; + orc_int8 var87; + orc_int8 var88; + orc_int8 var89; + orc_union16 var90; + orc_union16 var91; + orc_union32 var92; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 1: loadpb */ + var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 9: loadpw */ + var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 14: loadpw */ + var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 21: loadpw */ + var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 25: loadpw */ + var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 29: loadpw */ + var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 40: loadpb */ + var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var48 = ptr4[i]; + /* 2: subb */ + var57.x4[0] = var48.x4[0] - var49.x4[0]; + var57.x4[1] = var48.x4[1] - var49.x4[1]; + var57.x4[2] = var48.x4[2] - var49.x4[2]; + var57.x4[3] = var48.x4[3] - var49.x4[3]; + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var57.i; + var58.i = _src.x2[1]; + var59.i = _src.x2[0]; + } + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var59.i; + var60 = _src.x2[1]; + var61 = _src.x2[0]; + } + /* 5: splitwb */ + { + orc_union16 _src; + _src.i = var58.i; + var62 = _src.x2[1]; + var63 = _src.x2[0]; + } + /* 6: convsbw */ + var64.i = var60; + /* 7: convsbw */ + var65.i = var63; + /* 8: convsbw */ + var66.i = var62; + /* 10: mullw */ + var67.i = (var64.i * var50.i) & 0xffff; + /* 11: shrsw */ + var68.i = var67.i >> 8; + /* 12: addssw */ + var69.i = ORC_CLAMP_SW (var64.i + var68.i); + /* 13: addssw */ + var70.i = ORC_CLAMP_SW (var69.i + var66.i); + /* 15: mullw */ + var71.i = (var66.i * var51.i) & 0xffff; + /* 16: shrsw */ + var72.i = var71.i >> 8; + /* 17: subssw */ + var73.i = ORC_CLAMP_SW (var70.i - var72.i); + /* 18: addssw */ + var74.i = ORC_CLAMP_SW (var73.i + var66.i); + /* 19: addssw */ + var75.i = ORC_CLAMP_SW (var69.i + var65.i); + /* 20: addssw */ + var76.i = ORC_CLAMP_SW (var75.i + var65.i); + /* 22: mullw */ + var77.i = (var65.i * var52.i) & 0xffff; + /* 23: shrsw */ + var78.i = var77.i >> 8; + /* 24: addssw */ + var79.i = ORC_CLAMP_SW (var76.i + var78.i); + /* 26: mullw */ + var80.i = (var65.i * var53.i) & 0xffff; + /* 27: shrsw */ + var81.i = var80.i >> 8; + /* 28: subssw */ + var82.i = ORC_CLAMP_SW (var69.i - var81.i); + /* 30: mullw */ + var83.i = (var66.i * var54.i) & 0xffff; + /* 31: shrsw */ + var84.i = var83.i >> 8; + /* 32: subssw */ + var85.i = ORC_CLAMP_SW (var82.i - var84.i); + /* 33: subssw */ + var86.i = ORC_CLAMP_SW (var85.i - var84.i); + /* 34: convssswb */ + var87 = ORC_CLAMP_SB (var74.i); + /* 35: convssswb */ + var88 = ORC_CLAMP_SB (var86.i); + /* 36: convssswb */ + var89 = ORC_CLAMP_SB (var79.i); + /* 37: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var61; + _dest.x2[1] = var87; + var90.i = _dest.i; + } + /* 38: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var88; + _dest.x2[1] = var89; + var91.i = _dest.i; + } + /* 39: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var90.i; + _dest.x2[1] = var91.i; + var92.i = _dest.i; + } + /* 41: addb */ + var56.x4[0] = var92.x4[0] + var55.x4[0]; + var56.x4[1] = var92.x4[1] + var55.x4[1]; + var56.x4[2] = var92.x4[2] + var55.x4[2]; + var56.x4[3] = var92.x4[3] + var55.x4[3]; + /* 42: storel */ + ptr0[i] = var56; + } + } + +} + +void +videomixer_video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0, 0, 14, 4, 104, 0, + 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, + 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, + 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33, 47, 199, 35, 34, 33, + 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149, 40, 37, 89, 32, 38, + 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41, 38, 40, 89, 32, 40, + 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41, 41, 40, 71, 43, 38, + 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32, 32, 16, 71, 43, 43, + 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42, 38, 32, 89, 32, 40, + 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42, 42, 32, 159, 44, 41, + 159, 45, 42, 159, 46, 43, 196, 32, 34, 44, 196, 33, 45, 46, 195, 47, + 32, 33, 21, 2, 33, 0, 47, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_ARGB); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_AYUV_ARGB"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_ARGB); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 1, 0x00000008, "c1"); + orc_program_add_constant (p, 4, 0x00000080, "c2"); + orc_program_add_constant (p, 4, 0x0000002a, "c3"); + orc_program_add_constant (p, 4, 0x00000067, "c4"); + orc_program_add_constant (p, 4, 0x00000004, "c5"); + orc_program_add_constant (p, 4, 0x00000064, "c6"); + orc_program_add_constant (p, 4, 0x00000068, "c7"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 1, "t5"); + orc_program_add_temporary (p, 1, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + orc_program_add_temporary (p, 2, "t9"); + orc_program_add_temporary (p, 2, "t10"); + orc_program_add_temporary (p, 2, "t11"); + orc_program_add_temporary (p, 2, "t12"); + orc_program_add_temporary (p, 1, "t13"); + orc_program_add_temporary (p, 1, "t14"); + orc_program_add_temporary (p, 1, "t15"); + orc_program_add_temporary (p, 4, "t16"); + + orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10, + ORC_VAR_T9, ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12, + ORC_VAR_T8, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, + ORC_VAR_T13, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T14, + ORC_VAR_T15, ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_AYUV_BGRA */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var48; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var49; +#else + orc_union32 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var54; +#else + orc_union16 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var55; +#else + orc_union32 var55; +#endif + orc_union32 var56; + orc_union32 var57; + orc_union16 var58; + orc_union16 var59; + orc_int8 var60; + orc_int8 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_union16 var65; + orc_union16 var66; + orc_union16 var67; + orc_union16 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_union16 var85; + orc_union16 var86; + orc_int8 var87; + orc_int8 var88; + orc_int8 var89; + orc_union16 var90; + orc_union16 var91; + orc_union32 var92; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 1: loadpb */ + var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 9: loadpw */ + var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 14: loadpw */ + var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 21: loadpw */ + var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 25: loadpw */ + var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 29: loadpw */ + var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 40: loadpb */ + var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var48 = ptr4[i]; + /* 2: subb */ + var57.x4[0] = var48.x4[0] - var49.x4[0]; + var57.x4[1] = var48.x4[1] - var49.x4[1]; + var57.x4[2] = var48.x4[2] - var49.x4[2]; + var57.x4[3] = var48.x4[3] - var49.x4[3]; + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var57.i; + var58.i = _src.x2[1]; + var59.i = _src.x2[0]; + } + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var59.i; + var60 = _src.x2[1]; + var61 = _src.x2[0]; + } + /* 5: splitwb */ + { + orc_union16 _src; + _src.i = var58.i; + var62 = _src.x2[1]; + var63 = _src.x2[0]; + } + /* 6: convsbw */ + var64.i = var60; + /* 7: convsbw */ + var65.i = var63; + /* 8: convsbw */ + var66.i = var62; + /* 10: mullw */ + var67.i = (var64.i * var50.i) & 0xffff; + /* 11: shrsw */ + var68.i = var67.i >> 8; + /* 12: addssw */ + var69.i = ORC_CLAMP_SW (var64.i + var68.i); + /* 13: addssw */ + var70.i = ORC_CLAMP_SW (var69.i + var66.i); + /* 15: mullw */ + var71.i = (var66.i * var51.i) & 0xffff; + /* 16: shrsw */ + var72.i = var71.i >> 8; + /* 17: subssw */ + var73.i = ORC_CLAMP_SW (var70.i - var72.i); + /* 18: addssw */ + var74.i = ORC_CLAMP_SW (var73.i + var66.i); + /* 19: addssw */ + var75.i = ORC_CLAMP_SW (var69.i + var65.i); + /* 20: addssw */ + var76.i = ORC_CLAMP_SW (var75.i + var65.i); + /* 22: mullw */ + var77.i = (var65.i * var52.i) & 0xffff; + /* 23: shrsw */ + var78.i = var77.i >> 8; + /* 24: addssw */ + var79.i = ORC_CLAMP_SW (var76.i + var78.i); + /* 26: mullw */ + var80.i = (var65.i * var53.i) & 0xffff; + /* 27: shrsw */ + var81.i = var80.i >> 8; + /* 28: subssw */ + var82.i = ORC_CLAMP_SW (var69.i - var81.i); + /* 30: mullw */ + var83.i = (var66.i * var54.i) & 0xffff; + /* 31: shrsw */ + var84.i = var83.i >> 8; + /* 32: subssw */ + var85.i = ORC_CLAMP_SW (var82.i - var84.i); + /* 33: subssw */ + var86.i = ORC_CLAMP_SW (var85.i - var84.i); + /* 34: convssswb */ + var87 = ORC_CLAMP_SB (var74.i); + /* 35: convssswb */ + var88 = ORC_CLAMP_SB (var86.i); + /* 36: convssswb */ + var89 = ORC_CLAMP_SB (var79.i); + /* 37: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var89; + _dest.x2[1] = var88; + var90.i = _dest.i; + } + /* 38: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var87; + _dest.x2[1] = var61; + var91.i = _dest.i; + } + /* 39: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var90.i; + _dest.x2[1] = var91.i; + var92.i = _dest.i; + } + /* 41: addb */ + var56.x4[0] = var92.x4[0] + var55.x4[0]; + var56.x4[1] = var92.x4[1] + var55.x4[1]; + var56.x4[2] = var92.x4[2] + var55.x4[2]; + var56.x4[3] = var92.x4[3] + var55.x4[3]; + /* 42: storel */ + ptr0[i] = var56; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_AYUV_BGRA (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var48; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var49; +#else + orc_union32 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var54; +#else + orc_union16 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var55; +#else + orc_union32 var55; +#endif + orc_union32 var56; + orc_union32 var57; + orc_union16 var58; + orc_union16 var59; + orc_int8 var60; + orc_int8 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_union16 var65; + orc_union16 var66; + orc_union16 var67; + orc_union16 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_union16 var85; + orc_union16 var86; + orc_int8 var87; + orc_int8 var88; + orc_int8 var89; + orc_union16 var90; + orc_union16 var91; + orc_union32 var92; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 1: loadpb */ + var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 9: loadpw */ + var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 14: loadpw */ + var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 21: loadpw */ + var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 25: loadpw */ + var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 29: loadpw */ + var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 40: loadpb */ + var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var48 = ptr4[i]; + /* 2: subb */ + var57.x4[0] = var48.x4[0] - var49.x4[0]; + var57.x4[1] = var48.x4[1] - var49.x4[1]; + var57.x4[2] = var48.x4[2] - var49.x4[2]; + var57.x4[3] = var48.x4[3] - var49.x4[3]; + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var57.i; + var58.i = _src.x2[1]; + var59.i = _src.x2[0]; + } + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var59.i; + var60 = _src.x2[1]; + var61 = _src.x2[0]; + } + /* 5: splitwb */ + { + orc_union16 _src; + _src.i = var58.i; + var62 = _src.x2[1]; + var63 = _src.x2[0]; + } + /* 6: convsbw */ + var64.i = var60; + /* 7: convsbw */ + var65.i = var63; + /* 8: convsbw */ + var66.i = var62; + /* 10: mullw */ + var67.i = (var64.i * var50.i) & 0xffff; + /* 11: shrsw */ + var68.i = var67.i >> 8; + /* 12: addssw */ + var69.i = ORC_CLAMP_SW (var64.i + var68.i); + /* 13: addssw */ + var70.i = ORC_CLAMP_SW (var69.i + var66.i); + /* 15: mullw */ + var71.i = (var66.i * var51.i) & 0xffff; + /* 16: shrsw */ + var72.i = var71.i >> 8; + /* 17: subssw */ + var73.i = ORC_CLAMP_SW (var70.i - var72.i); + /* 18: addssw */ + var74.i = ORC_CLAMP_SW (var73.i + var66.i); + /* 19: addssw */ + var75.i = ORC_CLAMP_SW (var69.i + var65.i); + /* 20: addssw */ + var76.i = ORC_CLAMP_SW (var75.i + var65.i); + /* 22: mullw */ + var77.i = (var65.i * var52.i) & 0xffff; + /* 23: shrsw */ + var78.i = var77.i >> 8; + /* 24: addssw */ + var79.i = ORC_CLAMP_SW (var76.i + var78.i); + /* 26: mullw */ + var80.i = (var65.i * var53.i) & 0xffff; + /* 27: shrsw */ + var81.i = var80.i >> 8; + /* 28: subssw */ + var82.i = ORC_CLAMP_SW (var69.i - var81.i); + /* 30: mullw */ + var83.i = (var66.i * var54.i) & 0xffff; + /* 31: shrsw */ + var84.i = var83.i >> 8; + /* 32: subssw */ + var85.i = ORC_CLAMP_SW (var82.i - var84.i); + /* 33: subssw */ + var86.i = ORC_CLAMP_SW (var85.i - var84.i); + /* 34: convssswb */ + var87 = ORC_CLAMP_SB (var74.i); + /* 35: convssswb */ + var88 = ORC_CLAMP_SB (var86.i); + /* 36: convssswb */ + var89 = ORC_CLAMP_SB (var79.i); + /* 37: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var89; + _dest.x2[1] = var88; + var90.i = _dest.i; + } + /* 38: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var87; + _dest.x2[1] = var61; + var91.i = _dest.i; + } + /* 39: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var90.i; + _dest.x2[1] = var91.i; + var92.i = _dest.i; + } + /* 41: addb */ + var56.x4[0] = var92.x4[0] + var55.x4[0]; + var56.x4[1] = var92.x4[1] + var55.x4[1]; + var56.x4[2] = var92.x4[2] + var55.x4[2]; + var56.x4[3] = var92.x4[3] + var55.x4[3]; + /* 42: storel */ + ptr0[i] = var56; + } + } + +} + +void +videomixer_video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0, 0, 14, 4, 104, 0, + 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, + 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, + 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33, 47, 199, 35, 34, 33, + 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149, 40, 37, 89, 32, 38, + 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41, 38, 40, 89, 32, 40, + 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41, 41, 40, 71, 43, 38, + 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32, 32, 16, 71, 43, 43, + 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42, 38, 32, 89, 32, 40, + 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42, 42, 32, 159, 44, 41, + 159, 45, 42, 159, 46, 43, 196, 32, 46, 45, 196, 33, 44, 34, 195, 47, + 32, 33, 21, 2, 33, 0, 47, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_BGRA); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_AYUV_BGRA"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_BGRA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 1, 0x00000008, "c1"); + orc_program_add_constant (p, 4, 0x00000080, "c2"); + orc_program_add_constant (p, 4, 0x0000002a, "c3"); + orc_program_add_constant (p, 4, 0x00000067, "c4"); + orc_program_add_constant (p, 4, 0x00000004, "c5"); + orc_program_add_constant (p, 4, 0x00000064, "c6"); + orc_program_add_constant (p, 4, 0x00000068, "c7"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 1, "t5"); + orc_program_add_temporary (p, 1, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + orc_program_add_temporary (p, 2, "t9"); + orc_program_add_temporary (p, 2, "t10"); + orc_program_add_temporary (p, 2, "t11"); + orc_program_add_temporary (p, 2, "t12"); + orc_program_add_temporary (p, 1, "t13"); + orc_program_add_temporary (p, 1, "t14"); + orc_program_add_temporary (p, 1, "t15"); + orc_program_add_temporary (p, 4, "t16"); + + orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10, + ORC_VAR_T9, ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12, + ORC_VAR_T8, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T15, + ORC_VAR_T14, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T13, + ORC_VAR_T3, ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_AYUV_ABGR */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var48; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var49; +#else + orc_union32 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var54; +#else + orc_union16 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var55; +#else + orc_union32 var55; +#endif + orc_union32 var56; + orc_union32 var57; + orc_union16 var58; + orc_union16 var59; + orc_int8 var60; + orc_int8 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_union16 var65; + orc_union16 var66; + orc_union16 var67; + orc_union16 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_union16 var85; + orc_union16 var86; + orc_int8 var87; + orc_int8 var88; + orc_int8 var89; + orc_union16 var90; + orc_union16 var91; + orc_union32 var92; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 1: loadpb */ + var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 9: loadpw */ + var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 14: loadpw */ + var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 21: loadpw */ + var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 25: loadpw */ + var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 29: loadpw */ + var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 40: loadpb */ + var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var48 = ptr4[i]; + /* 2: subb */ + var57.x4[0] = var48.x4[0] - var49.x4[0]; + var57.x4[1] = var48.x4[1] - var49.x4[1]; + var57.x4[2] = var48.x4[2] - var49.x4[2]; + var57.x4[3] = var48.x4[3] - var49.x4[3]; + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var57.i; + var58.i = _src.x2[1]; + var59.i = _src.x2[0]; + } + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var59.i; + var60 = _src.x2[1]; + var61 = _src.x2[0]; + } + /* 5: splitwb */ + { + orc_union16 _src; + _src.i = var58.i; + var62 = _src.x2[1]; + var63 = _src.x2[0]; + } + /* 6: convsbw */ + var64.i = var60; + /* 7: convsbw */ + var65.i = var63; + /* 8: convsbw */ + var66.i = var62; + /* 10: mullw */ + var67.i = (var64.i * var50.i) & 0xffff; + /* 11: shrsw */ + var68.i = var67.i >> 8; + /* 12: addssw */ + var69.i = ORC_CLAMP_SW (var64.i + var68.i); + /* 13: addssw */ + var70.i = ORC_CLAMP_SW (var69.i + var66.i); + /* 15: mullw */ + var71.i = (var66.i * var51.i) & 0xffff; + /* 16: shrsw */ + var72.i = var71.i >> 8; + /* 17: subssw */ + var73.i = ORC_CLAMP_SW (var70.i - var72.i); + /* 18: addssw */ + var74.i = ORC_CLAMP_SW (var73.i + var66.i); + /* 19: addssw */ + var75.i = ORC_CLAMP_SW (var69.i + var65.i); + /* 20: addssw */ + var76.i = ORC_CLAMP_SW (var75.i + var65.i); + /* 22: mullw */ + var77.i = (var65.i * var52.i) & 0xffff; + /* 23: shrsw */ + var78.i = var77.i >> 8; + /* 24: addssw */ + var79.i = ORC_CLAMP_SW (var76.i + var78.i); + /* 26: mullw */ + var80.i = (var65.i * var53.i) & 0xffff; + /* 27: shrsw */ + var81.i = var80.i >> 8; + /* 28: subssw */ + var82.i = ORC_CLAMP_SW (var69.i - var81.i); + /* 30: mullw */ + var83.i = (var66.i * var54.i) & 0xffff; + /* 31: shrsw */ + var84.i = var83.i >> 8; + /* 32: subssw */ + var85.i = ORC_CLAMP_SW (var82.i - var84.i); + /* 33: subssw */ + var86.i = ORC_CLAMP_SW (var85.i - var84.i); + /* 34: convssswb */ + var87 = ORC_CLAMP_SB (var74.i); + /* 35: convssswb */ + var88 = ORC_CLAMP_SB (var86.i); + /* 36: convssswb */ + var89 = ORC_CLAMP_SB (var79.i); + /* 37: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var61; + _dest.x2[1] = var89; + var90.i = _dest.i; + } + /* 38: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var88; + _dest.x2[1] = var87; + var91.i = _dest.i; + } + /* 39: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var90.i; + _dest.x2[1] = var91.i; + var92.i = _dest.i; + } + /* 41: addb */ + var56.x4[0] = var92.x4[0] + var55.x4[0]; + var56.x4[1] = var92.x4[1] + var55.x4[1]; + var56.x4[2] = var92.x4[2] + var55.x4[2]; + var56.x4[3] = var92.x4[3] + var55.x4[3]; + /* 42: storel */ + ptr0[i] = var56; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_AYUV_ABGR (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var48; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var49; +#else + orc_union32 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var54; +#else + orc_union16 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var55; +#else + orc_union32 var55; +#endif + orc_union32 var56; + orc_union32 var57; + orc_union16 var58; + orc_union16 var59; + orc_int8 var60; + orc_int8 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_union16 var65; + orc_union16 var66; + orc_union16 var67; + orc_union16 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_union16 var85; + orc_union16 var86; + orc_int8 var87; + orc_int8 var88; + orc_int8 var89; + orc_union16 var90; + orc_union16 var91; + orc_union32 var92; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 1: loadpb */ + var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 9: loadpw */ + var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 14: loadpw */ + var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 21: loadpw */ + var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 25: loadpw */ + var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 29: loadpw */ + var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 40: loadpb */ + var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var48 = ptr4[i]; + /* 2: subb */ + var57.x4[0] = var48.x4[0] - var49.x4[0]; + var57.x4[1] = var48.x4[1] - var49.x4[1]; + var57.x4[2] = var48.x4[2] - var49.x4[2]; + var57.x4[3] = var48.x4[3] - var49.x4[3]; + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var57.i; + var58.i = _src.x2[1]; + var59.i = _src.x2[0]; + } + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var59.i; + var60 = _src.x2[1]; + var61 = _src.x2[0]; + } + /* 5: splitwb */ + { + orc_union16 _src; + _src.i = var58.i; + var62 = _src.x2[1]; + var63 = _src.x2[0]; + } + /* 6: convsbw */ + var64.i = var60; + /* 7: convsbw */ + var65.i = var63; + /* 8: convsbw */ + var66.i = var62; + /* 10: mullw */ + var67.i = (var64.i * var50.i) & 0xffff; + /* 11: shrsw */ + var68.i = var67.i >> 8; + /* 12: addssw */ + var69.i = ORC_CLAMP_SW (var64.i + var68.i); + /* 13: addssw */ + var70.i = ORC_CLAMP_SW (var69.i + var66.i); + /* 15: mullw */ + var71.i = (var66.i * var51.i) & 0xffff; + /* 16: shrsw */ + var72.i = var71.i >> 8; + /* 17: subssw */ + var73.i = ORC_CLAMP_SW (var70.i - var72.i); + /* 18: addssw */ + var74.i = ORC_CLAMP_SW (var73.i + var66.i); + /* 19: addssw */ + var75.i = ORC_CLAMP_SW (var69.i + var65.i); + /* 20: addssw */ + var76.i = ORC_CLAMP_SW (var75.i + var65.i); + /* 22: mullw */ + var77.i = (var65.i * var52.i) & 0xffff; + /* 23: shrsw */ + var78.i = var77.i >> 8; + /* 24: addssw */ + var79.i = ORC_CLAMP_SW (var76.i + var78.i); + /* 26: mullw */ + var80.i = (var65.i * var53.i) & 0xffff; + /* 27: shrsw */ + var81.i = var80.i >> 8; + /* 28: subssw */ + var82.i = ORC_CLAMP_SW (var69.i - var81.i); + /* 30: mullw */ + var83.i = (var66.i * var54.i) & 0xffff; + /* 31: shrsw */ + var84.i = var83.i >> 8; + /* 32: subssw */ + var85.i = ORC_CLAMP_SW (var82.i - var84.i); + /* 33: subssw */ + var86.i = ORC_CLAMP_SW (var85.i - var84.i); + /* 34: convssswb */ + var87 = ORC_CLAMP_SB (var74.i); + /* 35: convssswb */ + var88 = ORC_CLAMP_SB (var86.i); + /* 36: convssswb */ + var89 = ORC_CLAMP_SB (var79.i); + /* 37: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var61; + _dest.x2[1] = var89; + var90.i = _dest.i; + } + /* 38: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var88; + _dest.x2[1] = var87; + var91.i = _dest.i; + } + /* 39: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var90.i; + _dest.x2[1] = var91.i; + var92.i = _dest.i; + } + /* 41: addb */ + var56.x4[0] = var92.x4[0] + var55.x4[0]; + var56.x4[1] = var92.x4[1] + var55.x4[1]; + var56.x4[2] = var92.x4[2] + var55.x4[2]; + var56.x4[3] = var92.x4[3] + var55.x4[3]; + /* 42: storel */ + ptr0[i] = var56; + } + } + +} + +void +videomixer_video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0, 0, 14, 4, 104, 0, + 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, + 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, + 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33, 47, 199, 35, 34, 33, + 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149, 40, 37, 89, 32, 38, + 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41, 38, 40, 89, 32, 40, + 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41, 41, 40, 71, 43, 38, + 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32, 32, 16, 71, 43, 43, + 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42, 38, 32, 89, 32, 40, + 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42, 42, 32, 159, 44, 41, + 159, 45, 42, 159, 46, 43, 196, 32, 34, 46, 196, 33, 45, 44, 195, 47, + 32, 33, 21, 2, 33, 0, 47, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_ABGR); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_AYUV_ABGR"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_ABGR); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 1, 0x00000008, "c1"); + orc_program_add_constant (p, 4, 0x00000080, "c2"); + orc_program_add_constant (p, 4, 0x0000002a, "c3"); + orc_program_add_constant (p, 4, 0x00000067, "c4"); + orc_program_add_constant (p, 4, 0x00000004, "c5"); + orc_program_add_constant (p, 4, 0x00000064, "c6"); + orc_program_add_constant (p, 4, 0x00000068, "c7"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 1, "t5"); + orc_program_add_temporary (p, 1, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + orc_program_add_temporary (p, 2, "t9"); + orc_program_add_temporary (p, 2, "t10"); + orc_program_add_temporary (p, 2, "t11"); + orc_program_add_temporary (p, 2, "t12"); + orc_program_add_temporary (p, 1, "t13"); + orc_program_add_temporary (p, 1, "t14"); + orc_program_add_temporary (p, 1, "t15"); + orc_program_add_temporary (p, 4, "t16"); + + orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10, + ORC_VAR_T9, ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12, + ORC_VAR_T8, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, + ORC_VAR_T15, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T14, + ORC_VAR_T13, ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_AYUV_RGBA */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + int i; + int j; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var48; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var49; +#else + orc_union32 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var54; +#else + orc_union16 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var55; +#else + orc_union32 var55; +#endif + orc_union32 var56; + orc_union32 var57; + orc_union16 var58; + orc_union16 var59; + orc_int8 var60; + orc_int8 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_union16 var65; + orc_union16 var66; + orc_union16 var67; + orc_union16 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_union16 var85; + orc_union16 var86; + orc_int8 var87; + orc_int8 var88; + orc_int8 var89; + orc_union16 var90; + orc_union16 var91; + orc_union32 var92; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); + ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); + + /* 1: loadpb */ + var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 9: loadpw */ + var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 14: loadpw */ + var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 21: loadpw */ + var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 25: loadpw */ + var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 29: loadpw */ + var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 40: loadpb */ + var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var48 = ptr4[i]; + /* 2: subb */ + var57.x4[0] = var48.x4[0] - var49.x4[0]; + var57.x4[1] = var48.x4[1] - var49.x4[1]; + var57.x4[2] = var48.x4[2] - var49.x4[2]; + var57.x4[3] = var48.x4[3] - var49.x4[3]; + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var57.i; + var58.i = _src.x2[1]; + var59.i = _src.x2[0]; + } + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var59.i; + var60 = _src.x2[1]; + var61 = _src.x2[0]; + } + /* 5: splitwb */ + { + orc_union16 _src; + _src.i = var58.i; + var62 = _src.x2[1]; + var63 = _src.x2[0]; + } + /* 6: convsbw */ + var64.i = var60; + /* 7: convsbw */ + var65.i = var63; + /* 8: convsbw */ + var66.i = var62; + /* 10: mullw */ + var67.i = (var64.i * var50.i) & 0xffff; + /* 11: shrsw */ + var68.i = var67.i >> 8; + /* 12: addssw */ + var69.i = ORC_CLAMP_SW (var64.i + var68.i); + /* 13: addssw */ + var70.i = ORC_CLAMP_SW (var69.i + var66.i); + /* 15: mullw */ + var71.i = (var66.i * var51.i) & 0xffff; + /* 16: shrsw */ + var72.i = var71.i >> 8; + /* 17: subssw */ + var73.i = ORC_CLAMP_SW (var70.i - var72.i); + /* 18: addssw */ + var74.i = ORC_CLAMP_SW (var73.i + var66.i); + /* 19: addssw */ + var75.i = ORC_CLAMP_SW (var69.i + var65.i); + /* 20: addssw */ + var76.i = ORC_CLAMP_SW (var75.i + var65.i); + /* 22: mullw */ + var77.i = (var65.i * var52.i) & 0xffff; + /* 23: shrsw */ + var78.i = var77.i >> 8; + /* 24: addssw */ + var79.i = ORC_CLAMP_SW (var76.i + var78.i); + /* 26: mullw */ + var80.i = (var65.i * var53.i) & 0xffff; + /* 27: shrsw */ + var81.i = var80.i >> 8; + /* 28: subssw */ + var82.i = ORC_CLAMP_SW (var69.i - var81.i); + /* 30: mullw */ + var83.i = (var66.i * var54.i) & 0xffff; + /* 31: shrsw */ + var84.i = var83.i >> 8; + /* 32: subssw */ + var85.i = ORC_CLAMP_SW (var82.i - var84.i); + /* 33: subssw */ + var86.i = ORC_CLAMP_SW (var85.i - var84.i); + /* 34: convssswb */ + var87 = ORC_CLAMP_SB (var74.i); + /* 35: convssswb */ + var88 = ORC_CLAMP_SB (var86.i); + /* 36: convssswb */ + var89 = ORC_CLAMP_SB (var79.i); + /* 37: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var87; + _dest.x2[1] = var88; + var90.i = _dest.i; + } + /* 38: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var89; + _dest.x2[1] = var61; + var91.i = _dest.i; + } + /* 39: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var90.i; + _dest.x2[1] = var91.i; + var92.i = _dest.i; + } + /* 41: addb */ + var56.x4[0] = var92.x4[0] + var55.x4[0]; + var56.x4[1] = var92.x4[1] + var55.x4[1]; + var56.x4[2] = var92.x4[2] + var55.x4[2]; + var56.x4[3] = var92.x4[3] + var55.x4[3]; + /* 42: storel */ + ptr0[i] = var56; + } + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_AYUV_RGBA (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int j; + int n = ex->n; + int m = ex->params[ORC_VAR_A1]; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var48; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var49; +#else + orc_union32 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var54; +#else + orc_union16 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var55; +#else + orc_union32 var55; +#endif + orc_union32 var56; + orc_union32 var57; + orc_union16 var58; + orc_union16 var59; + orc_int8 var60; + orc_int8 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_union16 var65; + orc_union16 var66; + orc_union16 var67; + orc_union16 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_union16 var85; + orc_union16 var86; + orc_int8 var87; + orc_int8 var88; + orc_int8 var89; + orc_union16 var90; + orc_union16 var91; + orc_union32 var92; + + for (j = 0; j < m; j++) { + ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); + ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); + + /* 1: loadpb */ + var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 9: loadpw */ + var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 14: loadpw */ + var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 21: loadpw */ + var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 25: loadpw */ + var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 29: loadpw */ + var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 40: loadpb */ + var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var48 = ptr4[i]; + /* 2: subb */ + var57.x4[0] = var48.x4[0] - var49.x4[0]; + var57.x4[1] = var48.x4[1] - var49.x4[1]; + var57.x4[2] = var48.x4[2] - var49.x4[2]; + var57.x4[3] = var48.x4[3] - var49.x4[3]; + /* 3: splitlw */ + { + orc_union32 _src; + _src.i = var57.i; + var58.i = _src.x2[1]; + var59.i = _src.x2[0]; + } + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var59.i; + var60 = _src.x2[1]; + var61 = _src.x2[0]; + } + /* 5: splitwb */ + { + orc_union16 _src; + _src.i = var58.i; + var62 = _src.x2[1]; + var63 = _src.x2[0]; + } + /* 6: convsbw */ + var64.i = var60; + /* 7: convsbw */ + var65.i = var63; + /* 8: convsbw */ + var66.i = var62; + /* 10: mullw */ + var67.i = (var64.i * var50.i) & 0xffff; + /* 11: shrsw */ + var68.i = var67.i >> 8; + /* 12: addssw */ + var69.i = ORC_CLAMP_SW (var64.i + var68.i); + /* 13: addssw */ + var70.i = ORC_CLAMP_SW (var69.i + var66.i); + /* 15: mullw */ + var71.i = (var66.i * var51.i) & 0xffff; + /* 16: shrsw */ + var72.i = var71.i >> 8; + /* 17: subssw */ + var73.i = ORC_CLAMP_SW (var70.i - var72.i); + /* 18: addssw */ + var74.i = ORC_CLAMP_SW (var73.i + var66.i); + /* 19: addssw */ + var75.i = ORC_CLAMP_SW (var69.i + var65.i); + /* 20: addssw */ + var76.i = ORC_CLAMP_SW (var75.i + var65.i); + /* 22: mullw */ + var77.i = (var65.i * var52.i) & 0xffff; + /* 23: shrsw */ + var78.i = var77.i >> 8; + /* 24: addssw */ + var79.i = ORC_CLAMP_SW (var76.i + var78.i); + /* 26: mullw */ + var80.i = (var65.i * var53.i) & 0xffff; + /* 27: shrsw */ + var81.i = var80.i >> 8; + /* 28: subssw */ + var82.i = ORC_CLAMP_SW (var69.i - var81.i); + /* 30: mullw */ + var83.i = (var66.i * var54.i) & 0xffff; + /* 31: shrsw */ + var84.i = var83.i >> 8; + /* 32: subssw */ + var85.i = ORC_CLAMP_SW (var82.i - var84.i); + /* 33: subssw */ + var86.i = ORC_CLAMP_SW (var85.i - var84.i); + /* 34: convssswb */ + var87 = ORC_CLAMP_SB (var74.i); + /* 35: convssswb */ + var88 = ORC_CLAMP_SB (var86.i); + /* 36: convssswb */ + var89 = ORC_CLAMP_SB (var79.i); + /* 37: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var87; + _dest.x2[1] = var88; + var90.i = _dest.i; + } + /* 38: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var89; + _dest.x2[1] = var61; + var91.i = _dest.i; + } + /* 39: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var90.i; + _dest.x2[1] = var91.i; + var92.i = _dest.i; + } + /* 41: addb */ + var56.x4[0] = var92.x4[0] + var55.x4[0]; + var56.x4[1] = var92.x4[1] + var55.x4[1]; + var56.x4[2] = var92.x4[2] + var55.x4[2]; + var56.x4[3] = var92.x4[3] + var55.x4[3]; + /* 42: storel */ + ptr0[i] = var56; + } + } + +} + +void +videomixer_video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, + int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + 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, + 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, + 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0, 0, 14, 4, 104, 0, + 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, + 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, + 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33, 47, 199, 35, 34, 33, + 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149, 40, 37, 89, 32, 38, + 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41, 38, 40, 89, 32, 40, + 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41, 41, 40, 71, 43, 38, + 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32, 32, 16, 71, 43, 43, + 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42, 38, 32, 89, 32, 40, + 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42, 42, 32, 159, 44, 41, + 159, 45, 42, 159, 46, 43, 196, 32, 44, 45, 196, 33, 46, 34, 195, 47, + 32, 33, 21, 2, 33, 0, 47, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_RGBA); +#else + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_AYUV_RGBA"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_AYUV_RGBA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 1, 0x00000008, "c1"); + orc_program_add_constant (p, 4, 0x00000080, "c2"); + orc_program_add_constant (p, 4, 0x0000002a, "c3"); + orc_program_add_constant (p, 4, 0x00000067, "c4"); + orc_program_add_constant (p, 4, 0x00000004, "c5"); + orc_program_add_constant (p, 4, 0x00000064, "c6"); + orc_program_add_constant (p, 4, 0x00000068, "c7"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 1, "t5"); + orc_program_add_temporary (p, 1, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + orc_program_add_temporary (p, 2, "t9"); + orc_program_add_temporary (p, 2, "t10"); + orc_program_add_temporary (p, 2, "t11"); + orc_program_add_temporary (p, 2, "t12"); + orc_program_add_temporary (p, 1, "t13"); + orc_program_add_temporary (p, 1, "t14"); + orc_program_add_temporary (p, 1, "t15"); + orc_program_add_temporary (p, 4, "t16"); + + orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10, + ORC_VAR_T9, ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12, + ORC_VAR_T8, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T13, + ORC_VAR_T14, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T15, + ORC_VAR_T3, ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ORC_EXECUTOR_M (ex) = m; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_D1] = d1_stride; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->params[ORC_VAR_S1] = s1_stride; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_I420_BGRA */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var45; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var46; +#else + orc_int8 var46; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var47; +#else + orc_int8 var47; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var48; +#else + orc_int8 var48; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var49; +#else + orc_union16 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var54; +#else + orc_int8 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var55; +#else + orc_union32 var55; +#endif + orc_union32 var56; + orc_int8 var57; + orc_union16 var58; + orc_int8 var59; + orc_int8 var60; + orc_union16 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_union16 var65; + orc_union16 var66; + orc_union16 var67; + orc_union16 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_int8 var85; + orc_int8 var86; + orc_int8 var87; + orc_union16 var88; + orc_union16 var89; + orc_union32 var90; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_int8 *) s1; + ptr5 = (orc_int8 *) s2; + ptr6 = (orc_int8 *) s3; + + /* 1: loadpb */ + var46 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 5: loadpb */ + var47 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 9: loadpb */ + var48 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 12: loadpw */ + var49.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 17: loadpw */ + var50.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 24: loadpw */ + var51.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 28: loadpw */ + var52.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 32: loadpw */ + var53.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 41: loadpb */ + var54 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + /* 44: loadpb */ + var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var45 = ptr4[i]; + /* 2: subb */ + var57 = var45 - var46; + /* 3: convsbw */ + var58.i = var57; + /* 4: loadupib */ + var59 = + (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] + + 1) >> 1 : ptr5[i >> 1]; + /* 6: subb */ + var60 = var59 - var47; + /* 7: convsbw */ + var61.i = var60; + /* 8: loadupib */ + var62 = + (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] + + 1) >> 1 : ptr6[i >> 1]; + /* 10: subb */ + var63 = var62 - var48; + /* 11: convsbw */ + var64.i = var63; + /* 13: mullw */ + var65.i = (var58.i * var49.i) & 0xffff; + /* 14: shrsw */ + var66.i = var65.i >> 8; + /* 15: addssw */ + var67.i = ORC_CLAMP_SW (var58.i + var66.i); + /* 16: addssw */ + var68.i = ORC_CLAMP_SW (var67.i + var64.i); + /* 18: mullw */ + var69.i = (var64.i * var50.i) & 0xffff; + /* 19: shrsw */ + var70.i = var69.i >> 8; + /* 20: subssw */ + var71.i = ORC_CLAMP_SW (var68.i - var70.i); + /* 21: addssw */ + var72.i = ORC_CLAMP_SW (var71.i + var64.i); + /* 22: addssw */ + var73.i = ORC_CLAMP_SW (var67.i + var61.i); + /* 23: addssw */ + var74.i = ORC_CLAMP_SW (var73.i + var61.i); + /* 25: mullw */ + var75.i = (var61.i * var51.i) & 0xffff; + /* 26: shrsw */ + var76.i = var75.i >> 8; + /* 27: addssw */ + var77.i = ORC_CLAMP_SW (var74.i + var76.i); + /* 29: mullw */ + var78.i = (var61.i * var52.i) & 0xffff; + /* 30: shrsw */ + var79.i = var78.i >> 8; + /* 31: subssw */ + var80.i = ORC_CLAMP_SW (var67.i - var79.i); + /* 33: mullw */ + var81.i = (var64.i * var53.i) & 0xffff; + /* 34: shrsw */ + var82.i = var81.i >> 8; + /* 35: subssw */ + var83.i = ORC_CLAMP_SW (var80.i - var82.i); + /* 36: subssw */ + var84.i = ORC_CLAMP_SW (var83.i - var82.i); + /* 37: convssswb */ + var85 = ORC_CLAMP_SB (var72.i); + /* 38: convssswb */ + var86 = ORC_CLAMP_SB (var84.i); + /* 39: convssswb */ + var87 = ORC_CLAMP_SB (var77.i); + /* 40: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var87; + _dest.x2[1] = var86; + var88.i = _dest.i; + } + /* 42: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var85; + _dest.x2[1] = var54; + var89.i = _dest.i; + } + /* 43: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var88.i; + _dest.x2[1] = var89.i; + var90.i = _dest.i; + } + /* 45: addb */ + var56.x4[0] = var90.x4[0] + var55.x4[0]; + var56.x4[1] = var90.x4[1] + var55.x4[1]; + var56.x4[2] = var90.x4[2] + var55.x4[2]; + var56.x4[3] = var90.x4[3] + var55.x4[3]; + /* 46: storel */ + ptr0[i] = var56; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_I420_BGRA (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var45; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var46; +#else + orc_int8 var46; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var47; +#else + orc_int8 var47; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var48; +#else + orc_int8 var48; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var49; +#else + orc_union16 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var54; +#else + orc_int8 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var55; +#else + orc_union32 var55; +#endif + orc_union32 var56; + orc_int8 var57; + orc_union16 var58; + orc_int8 var59; + orc_int8 var60; + orc_union16 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_union16 var65; + orc_union16 var66; + orc_union16 var67; + orc_union16 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_int8 var85; + orc_int8 var86; + orc_int8 var87; + orc_union16 var88; + orc_union16 var89; + orc_union32 var90; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_int8 *) ex->arrays[4]; + ptr5 = (orc_int8 *) ex->arrays[5]; + ptr6 = (orc_int8 *) ex->arrays[6]; + + /* 1: loadpb */ + var46 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 5: loadpb */ + var47 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 9: loadpb */ + var48 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 12: loadpw */ + var49.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 17: loadpw */ + var50.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 24: loadpw */ + var51.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 28: loadpw */ + var52.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 32: loadpw */ + var53.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 41: loadpb */ + var54 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + /* 44: loadpb */ + var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var45 = ptr4[i]; + /* 2: subb */ + var57 = var45 - var46; + /* 3: convsbw */ + var58.i = var57; + /* 4: loadupib */ + var59 = + (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] + + 1) >> 1 : ptr5[i >> 1]; + /* 6: subb */ + var60 = var59 - var47; + /* 7: convsbw */ + var61.i = var60; + /* 8: loadupib */ + var62 = + (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] + + 1) >> 1 : ptr6[i >> 1]; + /* 10: subb */ + var63 = var62 - var48; + /* 11: convsbw */ + var64.i = var63; + /* 13: mullw */ + var65.i = (var58.i * var49.i) & 0xffff; + /* 14: shrsw */ + var66.i = var65.i >> 8; + /* 15: addssw */ + var67.i = ORC_CLAMP_SW (var58.i + var66.i); + /* 16: addssw */ + var68.i = ORC_CLAMP_SW (var67.i + var64.i); + /* 18: mullw */ + var69.i = (var64.i * var50.i) & 0xffff; + /* 19: shrsw */ + var70.i = var69.i >> 8; + /* 20: subssw */ + var71.i = ORC_CLAMP_SW (var68.i - var70.i); + /* 21: addssw */ + var72.i = ORC_CLAMP_SW (var71.i + var64.i); + /* 22: addssw */ + var73.i = ORC_CLAMP_SW (var67.i + var61.i); + /* 23: addssw */ + var74.i = ORC_CLAMP_SW (var73.i + var61.i); + /* 25: mullw */ + var75.i = (var61.i * var51.i) & 0xffff; + /* 26: shrsw */ + var76.i = var75.i >> 8; + /* 27: addssw */ + var77.i = ORC_CLAMP_SW (var74.i + var76.i); + /* 29: mullw */ + var78.i = (var61.i * var52.i) & 0xffff; + /* 30: shrsw */ + var79.i = var78.i >> 8; + /* 31: subssw */ + var80.i = ORC_CLAMP_SW (var67.i - var79.i); + /* 33: mullw */ + var81.i = (var64.i * var53.i) & 0xffff; + /* 34: shrsw */ + var82.i = var81.i >> 8; + /* 35: subssw */ + var83.i = ORC_CLAMP_SW (var80.i - var82.i); + /* 36: subssw */ + var84.i = ORC_CLAMP_SW (var83.i - var82.i); + /* 37: convssswb */ + var85 = ORC_CLAMP_SB (var72.i); + /* 38: convssswb */ + var86 = ORC_CLAMP_SB (var84.i); + /* 39: convssswb */ + var87 = ORC_CLAMP_SB (var77.i); + /* 40: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var87; + _dest.x2[1] = var86; + var88.i = _dest.i; + } + /* 42: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var85; + _dest.x2[1] = var54; + var89.i = _dest.i; + } + /* 43: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var88.i; + _dest.x2[1] = var89.i; + var90.i = _dest.i; + } + /* 45: addb */ + var56.x4[0] = var90.x4[0] + var55.x4[0]; + var56.x4[1] = var90.x4[1] + var55.x4[1]; + var56.x4[2] = var90.x4[2] + var55.x4[2]; + var56.x4[3] = var90.x4[3] + var55.x4[3]; + /* 46: storel */ + ptr0[i] = var56; + } + +} + +void +videomixer_video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 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, + 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, + 4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0, + 0, 14, 4, 104, 0, 0, 0, 14, 4, 255, 0, 0, 0, 20, 2, 20, + 2, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, + 1, 20, 1, 20, 1, 20, 4, 65, 34, 4, 17, 149, 35, 34, 46, 34, + 5, 65, 34, 34, 17, 149, 36, 34, 46, 34, 6, 65, 34, 34, 17, 149, + 37, 34, 89, 32, 35, 18, 94, 32, 32, 16, 71, 35, 35, 32, 71, 38, + 35, 37, 89, 32, 37, 19, 94, 32, 32, 16, 99, 38, 38, 32, 71, 38, + 38, 37, 71, 40, 35, 36, 71, 40, 40, 36, 89, 32, 36, 20, 94, 32, + 32, 16, 71, 40, 40, 32, 89, 32, 36, 21, 94, 32, 32, 16, 99, 39, + 35, 32, 89, 32, 37, 22, 94, 32, 32, 16, 99, 39, 39, 32, 99, 39, + 39, 32, 159, 41, 38, 159, 42, 39, 159, 43, 40, 196, 32, 43, 42, 196, + 33, 41, 23, 195, 44, 32, 33, 21, 2, 33, 0, 44, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_I420_BGRA); +#else + p = orc_program_new (); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_I420_BGRA"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_I420_BGRA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x00000008, "c1"); + orc_program_add_constant (p, 1, 0x00000080, "c2"); + orc_program_add_constant (p, 4, 0x0000002a, "c3"); + orc_program_add_constant (p, 4, 0x00000067, "c4"); + orc_program_add_constant (p, 4, 0x00000004, "c5"); + orc_program_add_constant (p, 4, 0x00000064, "c6"); + orc_program_add_constant (p, 4, 0x00000068, "c7"); + orc_program_add_constant (p, 4, 0x000000ff, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + orc_program_add_temporary (p, 2, "t9"); + orc_program_add_temporary (p, 1, "t10"); + orc_program_add_temporary (p, 1, "t11"); + orc_program_add_temporary (p, 1, "t12"); + orc_program_add_temporary (p, 4, "t13"); + + orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S2, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S3, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T10, ORC_VAR_T7, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T12, + ORC_VAR_T11, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T10, + ORC_VAR_C8, ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T13, ORC_VAR_T1, + ORC_VAR_T2, ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T13, ORC_VAR_C2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->arrays[ORC_VAR_S3] = (void *) s3; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_convert_I420_BGRA_avg */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, + const guint8 * ORC_RESTRICT s5, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + const orc_int8 *ORC_RESTRICT ptr7; + const orc_int8 *ORC_RESTRICT ptr8; + orc_int8 var46; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var47; +#else + orc_int8 var47; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var48; +#else + orc_int8 var48; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var49; +#else + orc_int8 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var54; +#else + orc_union16 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var55; +#else + orc_int8 var55; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var56; +#else + orc_union32 var56; +#endif + orc_union32 var57; + orc_int8 var58; + orc_union16 var59; + orc_int8 var60; + orc_int8 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_int8 var65; + orc_int8 var66; + orc_int8 var67; + orc_int8 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_union16 var85; + orc_union16 var86; + orc_union16 var87; + orc_union16 var88; + orc_union16 var89; + orc_int8 var90; + orc_int8 var91; + orc_int8 var92; + orc_union16 var93; + orc_union16 var94; + orc_union32 var95; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_int8 *) s1; + ptr5 = (orc_int8 *) s2; + ptr6 = (orc_int8 *) s3; + ptr7 = (orc_int8 *) s4; + ptr8 = (orc_int8 *) s5; + + /* 1: loadpb */ + var47 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 7: loadpb */ + var48 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 13: loadpb */ + var49 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 16: loadpw */ + var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 21: loadpw */ + var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 28: loadpw */ + var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 32: loadpw */ + var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 36: loadpw */ + var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 45: loadpb */ + var55 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + /* 48: loadpb */ + var56.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var56.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var56.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var56.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var46 = ptr4[i]; + /* 2: subb */ + var58 = var46 - var47; + /* 3: convsbw */ + var59.i = var58; + /* 4: loadupib */ + var60 = + (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] + + 1) >> 1 : ptr5[i >> 1]; + /* 5: loadupib */ + var61 = + (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] + + 1) >> 1 : ptr6[i >> 1]; + /* 6: avgub */ + var62 = ((orc_uint8) var60 + (orc_uint8) var61 + 1) >> 1; + /* 8: subb */ + var63 = var62 - var48; + /* 9: convsbw */ + var64.i = var63; + /* 10: loadupib */ + var65 = + (i & 1) ? ((orc_uint8) ptr7[i >> 1] + (orc_uint8) ptr7[(i >> 1) + 1] + + 1) >> 1 : ptr7[i >> 1]; + /* 11: loadupib */ + var66 = + (i & 1) ? ((orc_uint8) ptr8[i >> 1] + (orc_uint8) ptr8[(i >> 1) + 1] + + 1) >> 1 : ptr8[i >> 1]; + /* 12: avgub */ + var67 = ((orc_uint8) var65 + (orc_uint8) var66 + 1) >> 1; + /* 14: subb */ + var68 = var67 - var49; + /* 15: convsbw */ + var69.i = var68; + /* 17: mullw */ + var70.i = (var59.i * var50.i) & 0xffff; + /* 18: shrsw */ + var71.i = var70.i >> 8; + /* 19: addssw */ + var72.i = ORC_CLAMP_SW (var59.i + var71.i); + /* 20: addssw */ + var73.i = ORC_CLAMP_SW (var72.i + var69.i); + /* 22: mullw */ + var74.i = (var69.i * var51.i) & 0xffff; + /* 23: shrsw */ + var75.i = var74.i >> 8; + /* 24: subssw */ + var76.i = ORC_CLAMP_SW (var73.i - var75.i); + /* 25: addssw */ + var77.i = ORC_CLAMP_SW (var76.i + var69.i); + /* 26: addssw */ + var78.i = ORC_CLAMP_SW (var72.i + var64.i); + /* 27: addssw */ + var79.i = ORC_CLAMP_SW (var78.i + var64.i); + /* 29: mullw */ + var80.i = (var64.i * var52.i) & 0xffff; + /* 30: shrsw */ + var81.i = var80.i >> 8; + /* 31: addssw */ + var82.i = ORC_CLAMP_SW (var79.i + var81.i); + /* 33: mullw */ + var83.i = (var64.i * var53.i) & 0xffff; + /* 34: shrsw */ + var84.i = var83.i >> 8; + /* 35: subssw */ + var85.i = ORC_CLAMP_SW (var72.i - var84.i); + /* 37: mullw */ + var86.i = (var69.i * var54.i) & 0xffff; + /* 38: shrsw */ + var87.i = var86.i >> 8; + /* 39: subssw */ + var88.i = ORC_CLAMP_SW (var85.i - var87.i); + /* 40: subssw */ + var89.i = ORC_CLAMP_SW (var88.i - var87.i); + /* 41: convssswb */ + var90 = ORC_CLAMP_SB (var77.i); + /* 42: convssswb */ + var91 = ORC_CLAMP_SB (var89.i); + /* 43: convssswb */ + var92 = ORC_CLAMP_SB (var82.i); + /* 44: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var92; + _dest.x2[1] = var91; + var93.i = _dest.i; + } + /* 46: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var90; + _dest.x2[1] = var55; + var94.i = _dest.i; + } + /* 47: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var93.i; + _dest.x2[1] = var94.i; + var95.i = _dest.i; + } + /* 49: addb */ + var57.x4[0] = var95.x4[0] + var56.x4[0]; + var57.x4[1] = var95.x4[1] + var56.x4[1]; + var57.x4[2] = var95.x4[2] + var56.x4[2]; + var57.x4[3] = var95.x4[3] + var56.x4[3]; + /* 50: storel */ + ptr0[i] = var57; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_convert_I420_BGRA_avg (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + const orc_int8 *ORC_RESTRICT ptr7; + const orc_int8 *ORC_RESTRICT ptr8; + orc_int8 var46; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var47; +#else + orc_int8 var47; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var48; +#else + orc_int8 var48; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var49; +#else + orc_int8 var49; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var50; +#else + orc_union16 var50; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var51; +#else + orc_union16 var51; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var52; +#else + orc_union16 var52; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var53; +#else + orc_union16 var53; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var54; +#else + orc_union16 var54; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var55; +#else + orc_int8 var55; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var56; +#else + orc_union32 var56; +#endif + orc_union32 var57; + orc_int8 var58; + orc_union16 var59; + orc_int8 var60; + orc_int8 var61; + orc_int8 var62; + orc_int8 var63; + orc_union16 var64; + orc_int8 var65; + orc_int8 var66; + orc_int8 var67; + orc_int8 var68; + orc_union16 var69; + orc_union16 var70; + orc_union16 var71; + orc_union16 var72; + orc_union16 var73; + orc_union16 var74; + orc_union16 var75; + orc_union16 var76; + orc_union16 var77; + orc_union16 var78; + orc_union16 var79; + orc_union16 var80; + orc_union16 var81; + orc_union16 var82; + orc_union16 var83; + orc_union16 var84; + orc_union16 var85; + orc_union16 var86; + orc_union16 var87; + orc_union16 var88; + orc_union16 var89; + orc_int8 var90; + orc_int8 var91; + orc_int8 var92; + orc_union16 var93; + orc_union16 var94; + orc_union32 var95; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_int8 *) ex->arrays[4]; + ptr5 = (orc_int8 *) ex->arrays[5]; + ptr6 = (orc_int8 *) ex->arrays[6]; + ptr7 = (orc_int8 *) ex->arrays[7]; + ptr8 = (orc_int8 *) ex->arrays[8]; + + /* 1: loadpb */ + var47 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 7: loadpb */ + var48 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 13: loadpb */ + var49 = (int) 0x00000080; /* 128 or 6.32404e-322f */ + /* 16: loadpw */ + var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */ + /* 21: loadpw */ + var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */ + /* 28: loadpw */ + var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */ + /* 32: loadpw */ + var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */ + /* 36: loadpw */ + var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */ + /* 45: loadpb */ + var55 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + /* 48: loadpb */ + var56.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var56.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var56.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + var56.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var46 = ptr4[i]; + /* 2: subb */ + var58 = var46 - var47; + /* 3: convsbw */ + var59.i = var58; + /* 4: loadupib */ + var60 = + (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] + + 1) >> 1 : ptr5[i >> 1]; + /* 5: loadupib */ + var61 = + (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] + + 1) >> 1 : ptr6[i >> 1]; + /* 6: avgub */ + var62 = ((orc_uint8) var60 + (orc_uint8) var61 + 1) >> 1; + /* 8: subb */ + var63 = var62 - var48; + /* 9: convsbw */ + var64.i = var63; + /* 10: loadupib */ + var65 = + (i & 1) ? ((orc_uint8) ptr7[i >> 1] + (orc_uint8) ptr7[(i >> 1) + 1] + + 1) >> 1 : ptr7[i >> 1]; + /* 11: loadupib */ + var66 = + (i & 1) ? ((orc_uint8) ptr8[i >> 1] + (orc_uint8) ptr8[(i >> 1) + 1] + + 1) >> 1 : ptr8[i >> 1]; + /* 12: avgub */ + var67 = ((orc_uint8) var65 + (orc_uint8) var66 + 1) >> 1; + /* 14: subb */ + var68 = var67 - var49; + /* 15: convsbw */ + var69.i = var68; + /* 17: mullw */ + var70.i = (var59.i * var50.i) & 0xffff; + /* 18: shrsw */ + var71.i = var70.i >> 8; + /* 19: addssw */ + var72.i = ORC_CLAMP_SW (var59.i + var71.i); + /* 20: addssw */ + var73.i = ORC_CLAMP_SW (var72.i + var69.i); + /* 22: mullw */ + var74.i = (var69.i * var51.i) & 0xffff; + /* 23: shrsw */ + var75.i = var74.i >> 8; + /* 24: subssw */ + var76.i = ORC_CLAMP_SW (var73.i - var75.i); + /* 25: addssw */ + var77.i = ORC_CLAMP_SW (var76.i + var69.i); + /* 26: addssw */ + var78.i = ORC_CLAMP_SW (var72.i + var64.i); + /* 27: addssw */ + var79.i = ORC_CLAMP_SW (var78.i + var64.i); + /* 29: mullw */ + var80.i = (var64.i * var52.i) & 0xffff; + /* 30: shrsw */ + var81.i = var80.i >> 8; + /* 31: addssw */ + var82.i = ORC_CLAMP_SW (var79.i + var81.i); + /* 33: mullw */ + var83.i = (var64.i * var53.i) & 0xffff; + /* 34: shrsw */ + var84.i = var83.i >> 8; + /* 35: subssw */ + var85.i = ORC_CLAMP_SW (var72.i - var84.i); + /* 37: mullw */ + var86.i = (var69.i * var54.i) & 0xffff; + /* 38: shrsw */ + var87.i = var86.i >> 8; + /* 39: subssw */ + var88.i = ORC_CLAMP_SW (var85.i - var87.i); + /* 40: subssw */ + var89.i = ORC_CLAMP_SW (var88.i - var87.i); + /* 41: convssswb */ + var90 = ORC_CLAMP_SB (var77.i); + /* 42: convssswb */ + var91 = ORC_CLAMP_SB (var89.i); + /* 43: convssswb */ + var92 = ORC_CLAMP_SB (var82.i); + /* 44: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var92; + _dest.x2[1] = var91; + var93.i = _dest.i; + } + /* 46: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var90; + _dest.x2[1] = var55; + var94.i = _dest.i; + } + /* 47: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var93.i; + _dest.x2[1] = var94.i; + var95.i = _dest.i; + } + /* 49: addb */ + var57.x4[0] = var95.x4[0] + var56.x4[0]; + var57.x4[1] = var95.x4[1] + var56.x4[1]; + var57.x4[2] = var95.x4[2] + var56.x4[2]; + var57.x4[3] = var95.x4[3] + var56.x4[3]; + /* 50: storel */ + ptr0[i] = var57; + } + +} + +void +videomixer_video_convert_orc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, + const guint8 * ORC_RESTRICT s5, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 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, + 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, + 0, 0, 0, 14, 4, 42, 0, 0, 0, 14, 4, 103, 0, 0, 0, 14, + 4, 4, 0, 0, 0, 14, 4, 100, 0, 0, 0, 14, 4, 104, 0, 0, + 0, 14, 4, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20, + 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, + 1, 20, 4, 65, 34, 4, 17, 149, 36, 34, 46, 34, 5, 46, 35, 6, + 39, 34, 34, 35, 65, 34, 34, 17, 149, 37, 34, 46, 34, 7, 46, 35, + 8, 39, 34, 34, 35, 65, 34, 34, 17, 149, 38, 34, 89, 32, 36, 18, + 94, 32, 32, 16, 71, 36, 36, 32, 71, 39, 36, 38, 89, 32, 38, 19, + 94, 32, 32, 16, 99, 39, 39, 32, 71, 39, 39, 38, 71, 41, 36, 37, + 71, 41, 41, 37, 89, 32, 37, 20, 94, 32, 32, 16, 71, 41, 41, 32, + 89, 32, 37, 21, 94, 32, 32, 16, 99, 40, 36, 32, 89, 32, 38, 22, + 94, 32, 32, 16, 99, 40, 40, 32, 99, 40, 40, 32, 159, 42, 39, 159, + 43, 40, 159, 44, 41, 196, 32, 44, 43, 196, 33, 42, 23, 195, 45, 32, + 33, 21, 2, 33, 0, 45, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_I420_BGRA_avg); +#else + p = orc_program_new (); + orc_program_set_name (p, + "videomixer_video_convert_orc_convert_I420_BGRA_avg"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_convert_I420_BGRA_avg); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_source (p, 1, "s5"); + orc_program_add_constant (p, 1, 0x00000008, "c1"); + orc_program_add_constant (p, 1, 0x00000080, "c2"); + orc_program_add_constant (p, 4, 0x0000002a, "c3"); + orc_program_add_constant (p, 4, 0x00000067, "c4"); + orc_program_add_constant (p, 4, 0x00000004, "c5"); + orc_program_add_constant (p, 4, 0x00000064, "c6"); + orc_program_add_constant (p, 4, 0x00000068, "c7"); + orc_program_add_constant (p, 4, 0x000000ff, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + orc_program_add_temporary (p, 2, "t9"); + orc_program_add_temporary (p, 2, "t10"); + orc_program_add_temporary (p, 1, "t11"); + orc_program_add_temporary (p, 1, "t12"); + orc_program_add_temporary (p, 1, "t13"); + orc_program_add_temporary (p, 4, "t14"); + + orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S2, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T4, ORC_VAR_S3, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S4, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T4, ORC_VAR_S5, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10, + ORC_VAR_T6, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10, + ORC_VAR_T1, ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T13, + ORC_VAR_T12, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T11, + ORC_VAR_C8, ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T1, + ORC_VAR_T2, ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->arrays[ORC_VAR_S4] = (void *) s4; + ex->arrays[ORC_VAR_S5] = (void *) s5; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_I420 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var36; +#else + orc_int8 var36; +#endif + orc_int8 var37; + orc_union32 var38; + orc_int8 var39; + orc_int8 var40; + orc_union16 var41; + orc_union16 var42; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_int8 *) s1; + ptr5 = (orc_int8 *) s2; + ptr6 = (orc_int8 *) s3; + + /* 3: loadpb */ + var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadupdb */ + var39 = ptr5[i >> 1]; + /* 1: loadupdb */ + var40 = ptr6[i >> 1]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var39; + _dest.x2[1] = var40; + var41.i = _dest.i; + } + /* 4: loadb */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var42.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.i; + _dest.x2[1] = var41.i; + var38.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_I420 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var36; +#else + orc_int8 var36; +#endif + orc_int8 var37; + orc_union32 var38; + orc_int8 var39; + orc_int8 var40; + orc_union16 var41; + orc_union16 var42; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_int8 *) ex->arrays[4]; + ptr5 = (orc_int8 *) ex->arrays[5]; + ptr6 = (orc_int8 *) ex->arrays[6]; + + /* 3: loadpb */ + var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadupdb */ + var39 = ptr5[i >> 1]; + /* 1: loadupdb */ + var40 = ptr6[i >> 1]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var39; + _dest.x2[1] = var40; + var41.i = _dest.i; + } + /* 4: loadb */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var42.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.i; + _dest.x2[1] = var41.i; + var38.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 196, 33, 16, 4, 195, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_I420); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_I420"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_I420); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->arrays[ORC_VAR_S3] = (void *) s3; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_YUV9 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union16 var38; + orc_union64 var39; + orc_int8 var40; + orc_int8 var41; + orc_union16 var42; + orc_union32 var43; + orc_union32 var44; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union16 *) s1; + ptr5 = (orc_int8 *) s2; + ptr6 = (orc_int8 *) s3; + + /* 4: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadupdb */ + var40 = ptr5[i >> 1]; + /* 1: loadupdb */ + var41 = ptr6[i >> 1]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var40; + _dest.x2[1] = var41; + var42.i = _dest.i; + } + /* 3: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.i; + _dest.x2[1] = var42.i; + var43.i = _dest.i; + } + /* 5: loadw */ + var38 = ptr4[i]; + /* 6: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var38.x2[0]; + var44.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var38.x2[1]; + var44.x2[1] = _dest.i; + } + /* 7: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var44.x2[0]; + _dest.x2[1] = var43.x2[0]; + var39.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var44.x2[1]; + _dest.x2[1] = var43.x2[1]; + var39.x2[1] = _dest.i; + } + /* 8: storeq */ + ptr0[i] = var39; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_YUV9 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union16 var38; + orc_union64 var39; + orc_int8 var40; + orc_int8 var41; + orc_union16 var42; + orc_union32 var43; + orc_union32 var44; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + ptr5 = (orc_int8 *) ex->arrays[5]; + ptr6 = (orc_int8 *) ex->arrays[6]; + + /* 4: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadupdb */ + var40 = ptr5[i >> 1]; + /* 1: loadupdb */ + var41 = ptr6[i >> 1]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var40; + _dest.x2[1] = var41; + var42.i = _dest.i; + } + /* 3: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.i; + _dest.x2[1] = var42.i; + var43.i = _dest.i; + } + /* 5: loadw */ + var38 = ptr4[i]; + /* 6: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var38.x2[0]; + var44.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var38.x2[1]; + var44.x2[1] = _dest.i; + } + /* 7: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var44.x2[0]; + _dest.x2[1] = var43.x2[0]; + var39.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var44.x2[1]; + _dest.x2[1] = var43.x2[1]; + var39.x2[1] = _dest.i; + } + /* 8: storeq */ + ptr0[i] = var39; + } + +} + +void +videomixer_video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 35, 36, 195, 34, 32, 32, 21, 1, 196, 33, 16, 4, 21, 1, 195, 0, + 33, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_YUV9); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_YUV9"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_YUV9); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 1, "t5"); + + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S2, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T5, ORC_VAR_S3, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->arrays[ORC_VAR_S3] = (void *) s3; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_YUY2 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_union32 var41; + orc_union32 var42; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union32 *) s1; + + /* 2: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 3: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var40.x2[0]; + var41.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var40.x2[1]; + var41.x2[1] = _dest.i; + } + /* 4: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var39.i; + _dest.x2[1] = var39.i; + var42.i = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[0]; + _dest.x2[1] = var42.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[1]; + _dest.x2[1] = var42.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_YUY2 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_union32 var41; + orc_union32 var42; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + /* 2: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 3: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var40.x2[0]; + var41.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var40.x2[1]; + var41.x2[1] = _dest.i; + } + /* 4: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var39.i; + _dest.x2[1] = var39.i; + var42.i = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[0]; + _dest.x2[1] = var42.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[1]; + _dest.x2[1] = var42.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 21, 1, 195, 0, 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_YUY2); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_YUY2"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_YUY2); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_UYVY */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_union32 var41; + orc_union32 var42; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union32 *) s1; + + /* 2: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 3: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var39.x2[0]; + var41.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var39.x2[1]; + var41.x2[1] = _dest.i; + } + /* 4: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var40.i; + var42.i = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[0]; + _dest.x2[1] = var42.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[1]; + _dest.x2[1] = var42.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_UYVY (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_union32 var41; + orc_union32 var42; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + /* 2: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 3: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var39.x2[0]; + var41.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var39.x2[1]; + var41.x2[1] = _dest.i; + } + /* 4: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var40.i; + var42.i = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[0]; + _dest.x2[1] = var42.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[1]; + _dest.x2[1] = var42.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storeq */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 21, 1, 195, 0, 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_UYVY); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_UYVY"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_UYVY); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_YVYU */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_union16 var41; + orc_union32 var42; + orc_union32 var43; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union32 *) s1; + + /* 3: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: swapw */ + var41.i = ORC_SWAP_W (var39.i); + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var40.x2[0]; + var42.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var40.x2[1]; + var42.x2[1] = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.i; + _dest.x2[1] = var41.i; + var43.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[0]; + _dest.x2[1] = var43.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[1]; + _dest.x2[1] = var43.x2[1]; + var38.x2[1] = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_YVYU (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var36; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var37; +#else + orc_union16 var37; +#endif + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_union16 var41; + orc_union32 var42; + orc_union32 var43; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + /* 3: loadpb */ + var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var36 = ptr4[i]; + /* 1: splitwb */ + { + orc_union16 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: swapw */ + var41.i = ORC_SWAP_W (var39.i); + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[0]; + _dest.x2[1] = var40.x2[0]; + var42.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var37.x2[1]; + _dest.x2[1] = var40.x2[1]; + var42.x2[1] = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.i; + _dest.x2[1] = var41.i; + var43.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[0]; + _dest.x2[1] = var43.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[1]; + _dest.x2[1] = var43.x2[1]; + var38.x2[1] = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_YVYU); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_YVYU"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_YVYU); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_Y42B */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var36; + orc_int8 var37; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var38; +#else + orc_union16 var38; +#endif + orc_union16 var39; + orc_union64 var40; + orc_union16 var41; + orc_union32 var42; + orc_union32 var43; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union16 *) s1; + ptr5 = (orc_int8 *) s2; + ptr6 = (orc_int8 *) s3; + + /* 3: loadpb */ + var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var36 = ptr5[i]; + /* 1: loadb */ + var37 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var41.i = _dest.i; + } + /* 4: loadw */ + var39 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[0]; + _dest.x2[1] = var39.x2[0]; + var42.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[1]; + _dest.x2[1] = var39.x2[1]; + var42.x2[1] = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.i; + _dest.x2[1] = var41.i; + var43.i = _dest.i; + } + /* 7: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[0]; + _dest.x2[1] = var43.x2[0]; + var40.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[1]; + _dest.x2[1] = var43.x2[1]; + var40.x2[1] = _dest.i; + } + /* 8: storeq */ + ptr0[i] = var40; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_Y42B (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var36; + orc_int8 var37; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var38; +#else + orc_union16 var38; +#endif + orc_union16 var39; + orc_union64 var40; + orc_union16 var41; + orc_union32 var42; + orc_union32 var43; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + ptr5 = (orc_int8 *) ex->arrays[5]; + ptr6 = (orc_int8 *) ex->arrays[6]; + + /* 3: loadpb */ + var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var36 = ptr5[i]; + /* 1: loadb */ + var37 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var41.i = _dest.i; + } + /* 4: loadw */ + var39 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[0]; + _dest.x2[1] = var39.x2[0]; + var42.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var38.x2[1]; + _dest.x2[1] = var39.x2[1]; + var42.x2[1] = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.i; + _dest.x2[1] = var41.i; + var43.i = _dest.i; + } + /* 7: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[0]; + _dest.x2[1] = var43.x2[0]; + var40.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var42.x2[1]; + _dest.x2[1] = var43.x2[1]; + var40.x2[1] = _dest.i; + } + /* 8: storeq */ + ptr0[i] = var40; + } + +} + +void +videomixer_video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 195, 34, 32, 32, 21, 1, 195, 0, 35, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_Y42B); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_Y42B"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_Y42B); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->arrays[ORC_VAR_S3] = (void *) s3; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_Y444 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var34; + orc_int8 var35; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var36; +#else + orc_int8 var36; +#endif + orc_int8 var37; + orc_union32 var38; + orc_union16 var39; + orc_union16 var40; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_int8 *) s1; + ptr5 = (orc_int8 *) s2; + ptr6 = (orc_int8 *) s3; + + /* 3: loadpb */ + var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var34 = ptr5[i]; + /* 1: loadb */ + var35 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var34; + _dest.x2[1] = var35; + var39.i = _dest.i; + } + /* 4: loadb */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var40.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var39.i; + var38.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_Y444 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + orc_int8 var34; + orc_int8 var35; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var36; +#else + orc_int8 var36; +#endif + orc_int8 var37; + orc_union32 var38; + orc_union16 var39; + orc_union16 var40; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_int8 *) ex->arrays[4]; + ptr5 = (orc_int8 *) ex->arrays[5]; + ptr6 = (orc_int8 *) ex->arrays[6]; + + /* 3: loadpb */ + var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var34 = ptr5[i]; + /* 1: loadb */ + var35 = ptr6[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var34; + _dest.x2[1] = var35; + var39.i = _dest.i; + } + /* 4: loadb */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var40.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var40.i; + _dest.x2[1] = var39.i; + var38.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_Y444); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_Y444"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_Y444); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->arrays[ORC_VAR_S3] = (void *) s3; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_Y800 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var33; +#else + orc_int8 var33; +#endif + orc_int8 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var35; +#else + orc_union16 var35; +#endif + orc_union32 var36; + orc_union16 var37; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_int8 *) s1; + + /* 0: loadpb */ + var33 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + /* 3: loadpw */ + var35.i = (int) 0x00008080; /* 32896 or 1.62528e-319f */ + + for (i = 0; i < n; i++) { + /* 1: loadb */ + var34 = ptr4[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var33; + _dest.x2[1] = var34; + var37.i = _dest.i; + } + /* 4: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var37.i; + _dest.x2[1] = var35.i; + var36.i = _dest.i; + } + /* 5: storel */ + ptr0[i] = var36; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_Y800 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var33; +#else + orc_int8 var33; +#endif + orc_int8 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var35; +#else + orc_union16 var35; +#endif + orc_union32 var36; + orc_union16 var37; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_int8 *) ex->arrays[4]; + + /* 0: loadpb */ + var33 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + /* 3: loadpw */ + var35.i = (int) 0x00008080; /* 32896 or 1.62528e-319f */ + + for (i = 0; i < n; i++) { + /* 1: loadb */ + var34 = ptr4[i]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var33; + _dest.x2[1] = var34; + var37.i = _dest.i; + } + /* 4: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var37.i; + _dest.x2[1] = var35.i; + var36.i = _dest.i; + } + /* 5: storel */ + ptr0[i] = var36; + } + +} + +void +videomixer_video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_Y800); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_Y800"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_Y800); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_constant (p, 2, 0x00008080, "c2"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_Y16 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var35; +#else + orc_int8 var35; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var36; +#else + orc_union16 var36; +#endif + orc_union32 var37; + orc_int8 var38; + orc_union16 var39; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union16 *) s1; + + /* 2: loadpb */ + var35 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + /* 4: loadpw */ + var36.i = (int) 0x00008080; /* 32896 or 1.62528e-319f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var34 = ptr4[i]; + /* 1: convhwb */ + var38 = ((orc_uint16) var34.i) >> 8; + /* 3: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var35; + _dest.x2[1] = var38; + var39.i = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var39.i; + _dest.x2[1] = var36.i; + var37.i = _dest.i; + } + /* 6: storel */ + ptr0[i] = var37; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_Y16 (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_int8 var35; +#else + orc_int8 var35; +#endif +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var36; +#else + orc_union16 var36; +#endif + orc_union32 var37; + orc_int8 var38; + orc_union16 var39; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + + /* 2: loadpb */ + var35 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + /* 4: loadpw */ + var36.i = (int) 0x00008080; /* 32896 or 1.62528e-319f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var34 = ptr4[i]; + /* 1: convhwb */ + var38 = ((orc_uint16) var34.i) >> 8; + /* 3: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var35; + _dest.x2[1] = var38; + var39.i = _dest.i; + } + /* 5: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var39.i; + _dest.x2[1] = var36.i; + var37.i = _dest.i; + } + /* 6: storel */ + ptr0[i] = var37; + } + +} + +void +videomixer_video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 40, 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_Y16); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_Y16"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_Y16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_constant (p, 2, 0x00008080, "c2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); + + orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_BGRA */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: swapl */ + var33.i = ORC_SWAP_L (var32.i); + /* 2: storel */ + ptr0[i] = var33; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_BGRA (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: swapl */ + var33.i = ORC_SWAP_L (var32.i); + /* 2: storel */ + ptr0[i] = var33; + } + +} + +void +videomixer_video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 95, + 103, 101, 116, 108, 105, 110, 101, 95, 66, 71, 82, 65, 11, 4, 4, 12, + 4, 4, 184, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_BGRA); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_BGRA"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_BGRA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_ABGR */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_int8 var44; + orc_int8 var45; + orc_int8 var46; + orc_int8 var47; + orc_union16 var48; + orc_union16 var49; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var40 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var42.i; + var44 = _src.x2[1]; + var45 = _src.x2[0]; + } + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var46 = _src.x2[1]; + var47 = _src.x2[0]; + } + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var47; + _dest.x2[1] = var44; + var48.i = _dest.i; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var45; + _dest.x2[1] = var46; + var49.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var48.i; + _dest.x2[1] = var49.i; + var41.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var41; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_ABGR (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_int8 var44; + orc_int8 var45; + orc_int8 var46; + orc_int8 var47; + orc_union16 var48; + orc_union16 var49; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var40 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var42.i; + var44 = _src.x2[1]; + var45 = _src.x2[0]; + } + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var46 = _src.x2[1]; + var47 = _src.x2[0]; + } + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var47; + _dest.x2[1] = var44; + var48.i = _dest.i; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var45; + _dest.x2[1] = var46; + var49.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var48.i; + _dest.x2[1] = var49.i; + var41.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var41; + } + +} + +void +videomixer_video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 32, 33, 196, 39, 34, 35, 195, 0, 38, 39, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_ABGR); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_ABGR"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_ABGR); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_RGBA */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_int8 var44; + orc_int8 var45; + orc_int8 var46; + orc_int8 var47; + orc_union16 var48; + orc_union16 var49; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var40 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var44 = _src.x2[1]; + var45 = _src.x2[0]; + } + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var42.i; + var46 = _src.x2[1]; + var47 = _src.x2[0]; + } + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var46; + _dest.x2[1] = var45; + var48.i = _dest.i; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var44; + _dest.x2[1] = var47; + var49.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var48.i; + _dest.x2[1] = var49.i; + var41.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var41; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_RGBA (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_int8 var44; + orc_int8 var45; + orc_int8 var46; + orc_int8 var47; + orc_union16 var48; + orc_union16 var49; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var40 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var44 = _src.x2[1]; + var45 = _src.x2[0]; + } + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var42.i; + var46 = _src.x2[1]; + var47 = _src.x2[0]; + } + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var46; + _dest.x2[1] = var45; + var48.i = _dest.i; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var44; + _dest.x2[1] = var47; + var49.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var48.i; + _dest.x2[1] = var49.i; + var41.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var41; + } + +} + +void +videomixer_video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 32, 33, 196, 39, 34, 35, 195, 0, 38, 39, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_RGBA); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_RGBA"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_RGBA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_NV12 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + orc_union16 var34; + orc_union16 var35; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var36; +#else + orc_union16 var36; +#endif + orc_union16 var37; + orc_union64 var38; + orc_union32 var39; + orc_union32 var40; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union16 *) s1; + ptr5 = (orc_union16 *) s2; + + /* 3: loadpb */ + var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var34 = ptr5[i]; + /* 1: loadw */ + var35 = ptr5[i]; + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var34.i; + _dest.x2[1] = var35.i; + var39.i = _dest.i; + } + /* 4: loadw */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[0]; + _dest.x2[1] = var37.x2[0]; + var40.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[1]; + _dest.x2[1] = var37.x2[1]; + var40.x2[1] = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var40.x2[0]; + _dest.x2[1] = var39.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var40.x2[1]; + _dest.x2[1] = var39.x2[1]; + var38.x2[1] = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_NV12 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + orc_union16 var34; + orc_union16 var35; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var36; +#else + orc_union16 var36; +#endif + orc_union16 var37; + orc_union64 var38; + orc_union32 var39; + orc_union32 var40; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + ptr5 = (orc_union16 *) ex->arrays[5]; + + /* 3: loadpb */ + var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var34 = ptr5[i]; + /* 1: loadw */ + var35 = ptr5[i]; + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var34.i; + _dest.x2[1] = var35.i; + var39.i = _dest.i; + } + /* 4: loadw */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[0]; + _dest.x2[1] = var37.x2[0]; + var40.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[1]; + _dest.x2[1] = var37.x2[1]; + var40.x2[1] = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var40.x2[0]; + _dest.x2[1] = var39.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var40.x2[1]; + _dest.x2[1] = var39.x2[1]; + var38.x2[1] = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_NV12); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_NV12"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_NV12); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_NV21 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) +{ + int i; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + orc_union16 var35; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var36; +#else + orc_union16 var36; +#endif + orc_union16 var37; + orc_union64 var38; + orc_union16 var39; + orc_union32 var40; + orc_union32 var41; + + ptr0 = (orc_union64 *) d1; + ptr4 = (orc_union16 *) s1; + ptr5 = (orc_union16 *) s2; + + /* 3: loadpb */ + var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var35 = ptr5[i]; + /* 1: swapw */ + var39.i = ORC_SWAP_W (var35.i); + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var39.i; + _dest.x2[1] = var39.i; + var40.i = _dest.i; + } + /* 4: loadw */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[0]; + _dest.x2[1] = var37.x2[0]; + var41.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[1]; + _dest.x2[1] = var37.x2[1]; + var41.x2[1] = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[0]; + _dest.x2[1] = var40.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[1]; + _dest.x2[1] = var40.x2[1]; + var38.x2[1] = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_NV21 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + orc_union16 var35; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union16 var36; +#else + orc_union16 var36; +#endif + orc_union16 var37; + orc_union64 var38; + orc_union16 var39; + orc_union32 var40; + orc_union32 var41; + + ptr0 = (orc_union64 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + ptr5 = (orc_union16 *) ex->arrays[5]; + + /* 3: loadpb */ + var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var35 = ptr5[i]; + /* 1: swapw */ + var39.i = ORC_SWAP_W (var35.i); + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var39.i; + _dest.x2[1] = var39.i; + var40.i = _dest.i; + } + /* 4: loadw */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[0]; + _dest.x2[1] = var37.x2[0]; + var41.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var36.x2[1]; + _dest.x2[1] = var37.x2[1]; + var41.x2[1] = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[0]; + _dest.x2[1] = var40.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union32 _dest; + _dest.x2[0] = var41.x2[1]; + _dest.x2[1] = var40.x2[1]; + var38.x2[1] = _dest.i; + } + /* 7: storeq */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 195, 0, 33, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_NV21); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_NV21"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_NV21); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_getline_A420 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + const orc_int8 *ORC_RESTRICT ptr7; + orc_int8 var36; + orc_int8 var37; + orc_union32 var38; + orc_int8 var39; + orc_int8 var40; + orc_union16 var41; + orc_union16 var42; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_int8 *) s1; + ptr5 = (orc_int8 *) s2; + ptr6 = (orc_int8 *) s3; + ptr7 = (orc_int8 *) s4; + + + for (i = 0; i < n; i++) { + /* 0: loadupdb */ + var39 = ptr5[i >> 1]; + /* 1: loadupdb */ + var40 = ptr6[i >> 1]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var39; + _dest.x2[1] = var40; + var41.i = _dest.i; + } + /* 3: loadb */ + var36 = ptr7[i]; + /* 4: loadb */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var42.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.i; + _dest.x2[1] = var41.i; + var38.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_getline_A420 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + const orc_int8 *ORC_RESTRICT ptr6; + const orc_int8 *ORC_RESTRICT ptr7; + orc_int8 var36; + orc_int8 var37; + orc_union32 var38; + orc_int8 var39; + orc_int8 var40; + orc_union16 var41; + orc_union16 var42; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_int8 *) ex->arrays[4]; + ptr5 = (orc_int8 *) ex->arrays[5]; + ptr6 = (orc_int8 *) ex->arrays[6]; + ptr7 = (orc_int8 *) ex->arrays[7]; + + + for (i = 0; i < n; i++) { + /* 0: loadupdb */ + var39 = ptr5[i >> 1]; + /* 1: loadupdb */ + var40 = ptr6[i >> 1]; + /* 2: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var39; + _dest.x2[1] = var40; + var41.i = _dest.i; + } + /* 3: loadb */ + var36 = ptr7[i]; + /* 4: loadb */ + var37 = ptr4[i]; + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var36; + _dest.x2[1] = var37; + var42.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var42.i; + _dest.x2[1] = var41.i; + var38.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, + const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 4, 195, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_A420); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_getline_A420"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_getline_A420); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + ex->arrays[ORC_VAR_S2] = (void *) s2; + ex->arrays[ORC_VAR_S3] = (void *) s3; + ex->arrays[ORC_VAR_S4] = (void *) s4; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_I420 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var38; + orc_union16 var39; + orc_int8 var40; + orc_int8 var41; + orc_union32 var42; + orc_union32 var43; + orc_union16 var44; + orc_union16 var45; + orc_int8 var46; + orc_int8 var47; + orc_int8 var48; + orc_int8 var49; + + ptr0 = (orc_union16 *) d1; + ptr1 = (orc_int8 *) d2; + ptr2 = (orc_int8 *) d3; + ptr4 = (orc_union64 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var38 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var38.x2[0]; + var42.x2[0] = _src.x2[1]; + var43.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var38.x2[1]; + var42.x2[1] = _src.x2[1]; + var43.x2[1] = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var43.x2[0]; + var39.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var43.x2[1]; + var39.x2[1] = _src.x2[1]; + } + /* 3: storew */ + ptr0[i] = var39; + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var42.x2[0]; + var44.x2[0] = _src.x2[1]; + var45.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var42.x2[1]; + var44.x2[1] = _src.x2[1]; + var45.x2[1] = _src.x2[0]; + } + /* 5: splitwb */ + { + orc_union16 _src; + _src.i = var45.i; + var46 = _src.x2[1]; + var47 = _src.x2[0]; + } + /* 6: avgub */ + var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1; + /* 7: storeb */ + ptr1[i] = var40; + /* 8: splitwb */ + { + orc_union16 _src; + _src.i = var44.i; + var48 = _src.x2[1]; + var49 = _src.x2[0]; + } + /* 9: avgub */ + var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1; + /* 10: storeb */ + ptr2[i] = var41; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_I420 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var38; + orc_union16 var39; + orc_int8 var40; + orc_int8 var41; + orc_union32 var42; + orc_union32 var43; + orc_union16 var44; + orc_union16 var45; + orc_int8 var46; + orc_int8 var47; + orc_int8 var48; + orc_int8 var49; + + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr1 = (orc_int8 *) ex->arrays[1]; + ptr2 = (orc_int8 *) ex->arrays[2]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var38 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var38.x2[0]; + var42.x2[0] = _src.x2[1]; + var43.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var38.x2[1]; + var42.x2[1] = _src.x2[1]; + var43.x2[1] = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var43.x2[0]; + var39.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var43.x2[1]; + var39.x2[1] = _src.x2[1]; + } + /* 3: storew */ + ptr0[i] = var39; + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var42.x2[0]; + var44.x2[0] = _src.x2[1]; + var45.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var42.x2[1]; + var44.x2[1] = _src.x2[1]; + var45.x2[1] = _src.x2[0]; + } + /* 5: splitwb */ + { + orc_union16 _src; + _src.i = var45.i; + var46 = _src.x2[1]; + var47 = _src.x2[0]; + } + /* 6: avgub */ + var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1; + /* 7: storeb */ + ptr1[i] = var40; + /* 8: splitwb */ + { + orc_union16 _src; + _src.i = var44.i; + var48 = _src.x2[1]; + var49 = _src.x2[0]; + } + /* 9: avgub */ + var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1; + /* 10: storeb */ + ptr2[i] = var41; + } + +} + +void +videomixer_video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 1, 199, 35, 34, 33, 199, 36, 37, 34, 39, 1, 36, 37, 199, 36, 37, + 35, 39, 2, 36, 37, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_I420); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_I420"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_I420); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 1, "t5"); + orc_program_add_temporary (p, 1, "t6"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_D3] = d3; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_YUY2 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union64 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 3: avgub */ + var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 4: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var44.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var44.x2[1] = _src.x2[1]; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[0]; + _dest.x2[1] = var43.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[1]; + _dest.x2[1] = var43.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storel */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_YUY2 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 3: avgub */ + var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 4: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var44.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var44.x2[1] = _src.x2[1]; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[0]; + _dest.x2[1] = var43.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[1]; + _dest.x2[1] = var43.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storel */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 35, 21, 1, 196, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_YUY2); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_YUY2"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_YVYU */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + orc_union16 var45; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union64 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 3: avgub */ + var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 4: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var44.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var44.x2[1] = _src.x2[1]; + } + /* 5: swapw */ + var45.i = ORC_SWAP_W (var43.i); + /* 6: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[0]; + _dest.x2[1] = var45.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[1]; + _dest.x2[1] = var45.x2[1]; + var38.x2[1] = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_YVYU (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + orc_union16 var45; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 3: avgub */ + var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 4: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var44.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var44.x2[1] = _src.x2[1]; + } + /* 5: swapw */ + var45.i = ORC_SWAP_W (var43.i); + /* 6: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[0]; + _dest.x2[1] = var45.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var44.x2[1]; + _dest.x2[1] = var45.x2[1]; + var38.x2[1] = _dest.i; + } + /* 7: storel */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 35, 183, 33, 33, 21, 1, 196, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_YVYU); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_YVYU"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_YVYU); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_UYVY */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union64 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 3: avgub */ + var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 4: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var44.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var44.x2[1] = _src.x2[1]; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[0]; + _dest.x2[1] = var44.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[1]; + _dest.x2[1] = var44.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storel */ + ptr0[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_UYVY (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union32 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 3: avgub */ + var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 4: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var44.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var44.x2[1] = _src.x2[1]; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[0]; + _dest.x2[1] = var44.x2[0]; + var38.x2[0] = _dest.i; + } + { + orc_union16 _dest; + _dest.x2[0] = var43.x2[1]; + _dest.x2[1] = var44.x2[1]; + var38.x2[1] = _dest.i; + } + /* 6: storel */ + ptr0[i] = var38; + } + +} + +void +videomixer_video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 35, 21, 1, 196, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_UYVY); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_UYVY"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_UYVY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_Y42B */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var36; + orc_int8 var37; + orc_int8 var38; + orc_union16 var39; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + ptr0 = (orc_union16 *) d1; + ptr1 = (orc_int8 *) d2; + ptr2 = (orc_int8 *) d3; + ptr4 = (orc_union64 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var36 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var36.x2[0]; + var40.x2[0] = _src.x2[1]; + var41.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var36.x2[1]; + var40.x2[1] = _src.x2[1]; + var41.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 3: avgub */ + var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1; + var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1; + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var44.i; + var37 = _src.x2[1]; + var38 = _src.x2[0]; + } + /* 5: storeb */ + ptr2[i] = var37; + /* 6: storeb */ + ptr1[i] = var38; + /* 7: select1wb */ + { + orc_union16 _src; + _src.i = var41.x2[0]; + var39.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var41.x2[1]; + var39.x2[1] = _src.x2[1]; + } + /* 8: storew */ + ptr0[i] = var39; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_Y42B (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var36; + orc_int8 var37; + orc_int8 var38; + orc_union16 var39; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr1 = (orc_int8 *) ex->arrays[1]; + ptr2 = (orc_int8 *) ex->arrays[2]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var36 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var36.x2[0]; + var40.x2[0] = _src.x2[1]; + var41.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var36.x2[1]; + var40.x2[1] = _src.x2[1]; + var41.x2[1] = _src.x2[0]; + } + /* 2: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 3: avgub */ + var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1; + var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1; + /* 4: splitwb */ + { + orc_union16 _src; + _src.i = var44.i; + var37 = _src.x2[1]; + var38 = _src.x2[0]; + } + /* 5: storeb */ + ptr2[i] = var37; + /* 6: storeb */ + ptr1[i] = var38; + /* 7: select1wb */ + { + orc_union16 _src; + _src.i = var41.x2[0]; + var39.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var41.x2[1]; + var39.x2[1] = _src.x2[1]; + } + /* 8: storew */ + ptr0[i] = var39; + } + +} + +void +videomixer_video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_Y42B); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_Y42B"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_Y42B); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_D3] = d3; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_Y444 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_int8 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_int8 var35; + orc_int8 var36; + orc_int8 var37; + orc_union16 var38; + orc_union16 var39; + + ptr0 = (orc_int8 *) d1; + ptr1 = (orc_int8 *) d2; + ptr2 = (orc_int8 *) d3; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var34.i; + var38.i = _src.x2[1]; + var39.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var38.i; + var35 = _src.x2[1]; + var36 = _src.x2[0]; + } + /* 3: storeb */ + ptr2[i] = var35; + /* 4: storeb */ + ptr1[i] = var36; + /* 5: select1wb */ + { + orc_union16 _src; + _src.i = var39.i; + var37 = _src.x2[1]; + } + /* 6: storeb */ + ptr0[i] = var37; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_Y444 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_int8 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_int8 var35; + orc_int8 var36; + orc_int8 var37; + orc_union16 var38; + orc_union16 var39; + + ptr0 = (orc_int8 *) ex->arrays[0]; + ptr1 = (orc_int8 *) ex->arrays[1]; + ptr2 = (orc_int8 *) ex->arrays[2]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var34.i; + var38.i = _src.x2[1]; + var39.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var38.i; + var35 = _src.x2[1]; + var36 = _src.x2[0]; + } + /* 3: storeb */ + ptr2[i] = var35; + /* 4: storeb */ + ptr1[i] = var36; + /* 5: select1wb */ + { + orc_union16 _src; + _src.i = var39.i; + var37 = _src.x2[1]; + } + /* 6: storeb */ + ptr0[i] = var37; + } + +} + +void +videomixer_video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_Y444); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_Y444"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_Y444); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_D3] = d3; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_Y800 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var33; + orc_int8 var34; + orc_union16 var35; + + ptr0 = (orc_int8 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var33 = ptr4[i]; + /* 1: select0lw */ + { + orc_union32 _src; + _src.i = var33.i; + var35.i = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var35.i; + var34 = _src.x2[1]; + } + /* 3: storeb */ + ptr0[i] = var34; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_Y800 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var33; + orc_int8 var34; + orc_union16 var35; + + ptr0 = (orc_int8 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var33 = ptr4[i]; + /* 1: select0lw */ + { + orc_union32 _src; + _src.i = var33.i; + var35.i = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var35.i; + var34 = _src.x2[1]; + } + /* 3: storeb */ + ptr0[i] = var34; + } + +} + +void +videomixer_video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_Y800); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_Y800"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_Y800); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_Y16 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_union16 var35; + orc_union16 var36; + orc_int8 var37; + orc_union16 var38; + + ptr0 = (orc_union16 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 1: select0lw */ + { + orc_union32 _src; + _src.i = var34.i; + var36.i = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var36.i; + var37 = _src.x2[1]; + } + /* 3: convubw */ + var38.i = (orc_uint8) var37; + /* 4: shlw */ + var35.i = var38.i << 8; + /* 5: storew */ + ptr0[i] = var35; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_Y16 (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var34; + orc_union16 var35; + orc_union16 var36; + orc_int8 var37; + orc_union16 var38; + + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var34 = ptr4[i]; + /* 1: select0lw */ + { + orc_union32 _src; + _src.i = var34.i; + var36.i = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var36.i; + var37 = _src.x2[1]; + } + /* 3: convubw */ + var38.i = (orc_uint8) var37; + /* 4: shlw */ + var35.i = var38.i << 8; + /* 5: storew */ + ptr0[i] = var35; + } + +} + +void +videomixer_video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 40, 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, + 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, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_Y16); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_Y16"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_Y16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); + + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_BGRA */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: swapl */ + var33.i = ORC_SWAP_L (var32.i); + /* 2: storel */ + ptr0[i] = var33; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_BGRA (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var32 = ptr4[i]; + /* 1: swapl */ + var33.i = ORC_SWAP_L (var32.i); + /* 2: storel */ + ptr0[i] = var33; + } + +} + +void +videomixer_video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 95, + 112, 117, 116, 108, 105, 110, 101, 95, 66, 71, 82, 65, 11, 4, 4, 12, + 4, 4, 184, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_BGRA); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_BGRA"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_BGRA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_ABGR */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_int8 var44; + orc_int8 var45; + orc_int8 var46; + orc_int8 var47; + orc_union16 var48; + orc_union16 var49; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var40 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var42.i; + var44 = _src.x2[1]; + var45 = _src.x2[0]; + } + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var46 = _src.x2[1]; + var47 = _src.x2[0]; + } + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var47; + _dest.x2[1] = var44; + var48.i = _dest.i; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var45; + _dest.x2[1] = var46; + var49.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var48.i; + _dest.x2[1] = var49.i; + var41.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var41; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_ABGR (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_int8 var44; + orc_int8 var45; + orc_int8 var46; + orc_int8 var47; + orc_union16 var48; + orc_union16 var49; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var40 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var42.i; + var44 = _src.x2[1]; + var45 = _src.x2[0]; + } + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var46 = _src.x2[1]; + var47 = _src.x2[0]; + } + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var47; + _dest.x2[1] = var44; + var48.i = _dest.i; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var45; + _dest.x2[1] = var46; + var49.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var48.i; + _dest.x2[1] = var49.i; + var41.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var41; + } + +} + +void +videomixer_video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 32, 35, 196, 36, 34, 33, 195, 0, 37, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_ABGR); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_ABGR"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_ABGR); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_RGBA */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_int8 var44; + orc_int8 var45; + orc_int8 var46; + orc_int8 var47; + orc_union16 var48; + orc_union16 var49; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union32 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var40 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var42.i; + var44 = _src.x2[1]; + var45 = _src.x2[0]; + } + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var46 = _src.x2[1]; + var47 = _src.x2[0]; + } + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var44; + _dest.x2[1] = var47; + var48.i = _dest.i; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var46; + _dest.x2[1] = var45; + var49.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var49.i; + _dest.x2[1] = var48.i; + var41.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var41; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_RGBA (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_int8 var44; + orc_int8 var45; + orc_int8 var46; + orc_int8 var47; + orc_union16 var48; + orc_union16 var49; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union32 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadl */ + var40 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 2: splitwb */ + { + orc_union16 _src; + _src.i = var42.i; + var44 = _src.x2[1]; + var45 = _src.x2[0]; + } + /* 3: splitwb */ + { + orc_union16 _src; + _src.i = var43.i; + var46 = _src.x2[1]; + var47 = _src.x2[0]; + } + /* 4: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var44; + _dest.x2[1] = var47; + var48.i = _dest.i; + } + /* 5: mergebw */ + { + orc_union16 _dest; + _dest.x2[0] = var46; + _dest.x2[1] = var45; + var49.i = _dest.i; + } + /* 6: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var49.i; + _dest.x2[1] = var48.i; + var41.i = _dest.i; + } + /* 7: storel */ + ptr0[i] = var41; + } + +} + +void +videomixer_video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 35, 32, 196, 36, 33, 34, 195, 0, 36, 37, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_RGBA); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_RGBA"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_RGBA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_NV12 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var36; + orc_union16 var37; + orc_union16 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + + ptr0 = (orc_union16 *) d1; + ptr1 = (orc_union16 *) d2; + ptr4 = (orc_union64 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var36 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var37.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var37.x2[1] = _src.x2[1]; + } + /* 3: storew */ + ptr0[i] = var37; + /* 4: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 5: avgub */ + var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 6: storew */ + ptr1[i] = var38; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_NV12 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var36; + orc_union16 var37; + orc_union16 var38; + orc_union32 var39; + orc_union32 var40; + orc_union16 var41; + orc_union16 var42; + + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr1 = (orc_union16 *) ex->arrays[1]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var36 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var36.x2[0]; + var39.x2[0] = _src.x2[1]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var36.x2[1]; + var39.x2[1] = _src.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var40.x2[0]; + var37.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var40.x2[1]; + var37.x2[1] = _src.x2[1]; + } + /* 3: storew */ + ptr0[i] = var37; + /* 4: splitlw */ + { + orc_union32 _src; + _src.i = var39.i; + var41.i = _src.x2[1]; + var42.i = _src.x2[0]; + } + /* 5: avgub */ + var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; + var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; + /* 6: storew */ + ptr1[i] = var38; + } + +} + +void +videomixer_video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_NV12); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_NV12"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_NV12); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_NV21 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union16 var38; + orc_union16 var39; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + ptr0 = (orc_union16 *) d1; + ptr1 = (orc_union16 *) d2; + ptr4 = (orc_union64 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var40.x2[0] = _src.x2[1]; + var41.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var40.x2[1] = _src.x2[1]; + var41.x2[1] = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var41.x2[0]; + var38.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var41.x2[1]; + var38.x2[1] = _src.x2[1]; + } + /* 3: storew */ + ptr0[i] = var38; + /* 4: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 5: avgub */ + var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1; + var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1; + /* 6: swapw */ + var39.i = ORC_SWAP_W (var44.i); + /* 7: storew */ + ptr1[i] = var39; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_NV21 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var37; + orc_union16 var38; + orc_union16 var39; + orc_union32 var40; + orc_union32 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; + + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr1 = (orc_union16 *) ex->arrays[1]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var37 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var37.x2[0]; + var40.x2[0] = _src.x2[1]; + var41.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var37.x2[1]; + var40.x2[1] = _src.x2[1]; + var41.x2[1] = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var41.x2[0]; + var38.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var41.x2[1]; + var38.x2[1] = _src.x2[1]; + } + /* 3: storew */ + ptr0[i] = var38; + /* 4: splitlw */ + { + orc_union32 _src; + _src.i = var40.i; + var42.i = _src.x2[1]; + var43.i = _src.x2[0]; + } + /* 5: avgub */ + var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1; + var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1; + /* 6: swapw */ + var39.i = ORC_SWAP_W (var44.i); + /* 7: storew */ + ptr1[i] = var39; + } + +} + +void +videomixer_video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 39, 36, 34, 35, 183, 1, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_NV21); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_NV21"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_NV21); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* videomixer_video_convert_orc_putline_A420 */ +#ifdef DISABLE_ORC +void +videomixer_video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + orc_union16 *ORC_RESTRICT ptr3; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_int8 var41; + orc_int8 var42; + orc_union32 var43; + orc_union32 var44; + orc_union16 var45; + orc_union16 var46; + orc_int8 var47; + orc_int8 var48; + orc_int8 var49; + orc_int8 var50; + + ptr0 = (orc_union16 *) d1; + ptr1 = (orc_int8 *) d2; + ptr2 = (orc_int8 *) d3; + ptr3 = (orc_union16 *) d4; + ptr4 = (orc_union64 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var38 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var38.x2[0]; + var43.x2[0] = _src.x2[1]; + var44.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var38.x2[1]; + var43.x2[1] = _src.x2[1]; + var44.x2[1] = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var44.x2[0]; + var39.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var44.x2[1]; + var39.x2[1] = _src.x2[1]; + } + /* 3: storew */ + ptr0[i] = var39; + /* 4: select0wb */ + { + orc_union16 _src; + _src.i = var44.x2[0]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var44.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 5: storew */ + ptr3[i] = var40; + /* 6: splitwb */ + { + orc_union16 _src; + _src.i = var43.x2[0]; + var45.x2[0] = _src.x2[1]; + var46.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var43.x2[1]; + var45.x2[1] = _src.x2[1]; + var46.x2[1] = _src.x2[0]; + } + /* 7: splitwb */ + { + orc_union16 _src; + _src.i = var46.i; + var47 = _src.x2[1]; + var48 = _src.x2[0]; + } + /* 8: avgub */ + var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1; + /* 9: storeb */ + ptr1[i] = var41; + /* 10: splitwb */ + { + orc_union16 _src; + _src.i = var45.i; + var49 = _src.x2[1]; + var50 = _src.x2[0]; + } + /* 11: avgub */ + var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1; + /* 12: storeb */ + ptr2[i] = var42; + } + +} + +#else +static void +_backup_videomixer_video_convert_orc_putline_A420 (OrcExecutor * + ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union16 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + orc_int8 *ORC_RESTRICT ptr2; + orc_union16 *ORC_RESTRICT ptr3; + const orc_union64 *ORC_RESTRICT ptr4; + orc_union64 var38; + orc_union16 var39; + orc_union16 var40; + orc_int8 var41; + orc_int8 var42; + orc_union32 var43; + orc_union32 var44; + orc_union16 var45; + orc_union16 var46; + orc_int8 var47; + orc_int8 var48; + orc_int8 var49; + orc_int8 var50; + + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr1 = (orc_int8 *) ex->arrays[1]; + ptr2 = (orc_int8 *) ex->arrays[2]; + ptr3 = (orc_union16 *) ex->arrays[3]; + ptr4 = (orc_union64 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadq */ + var38 = ptr4[i]; + /* 1: splitlw */ + { + orc_union32 _src; + _src.i = var38.x2[0]; + var43.x2[0] = _src.x2[1]; + var44.x2[0] = _src.x2[0]; + } + { + orc_union32 _src; + _src.i = var38.x2[1]; + var43.x2[1] = _src.x2[1]; + var44.x2[1] = _src.x2[0]; + } + /* 2: select1wb */ + { + orc_union16 _src; + _src.i = var44.x2[0]; + var39.x2[0] = _src.x2[1]; + } + { + orc_union16 _src; + _src.i = var44.x2[1]; + var39.x2[1] = _src.x2[1]; + } + /* 3: storew */ + ptr0[i] = var39; + /* 4: select0wb */ + { + orc_union16 _src; + _src.i = var44.x2[0]; + var40.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var44.x2[1]; + var40.x2[1] = _src.x2[0]; + } + /* 5: storew */ + ptr3[i] = var40; + /* 6: splitwb */ + { + orc_union16 _src; + _src.i = var43.x2[0]; + var45.x2[0] = _src.x2[1]; + var46.x2[0] = _src.x2[0]; + } + { + orc_union16 _src; + _src.i = var43.x2[1]; + var45.x2[1] = _src.x2[1]; + var46.x2[1] = _src.x2[0]; + } + /* 7: splitwb */ + { + orc_union16 _src; + _src.i = var46.i; + var47 = _src.x2[1]; + var48 = _src.x2[0]; + } + /* 8: avgub */ + var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1; + /* 9: storeb */ + ptr1[i] = var41; + /* 10: splitwb */ + { + orc_union16 _src; + _src.i = var45.i; + var49 = _src.x2[1]; + var50 = _src.x2[0]; + } + /* 11: avgub */ + var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1; + /* 12: storeb */ + ptr2[i] = var42; + } + +} + +void +videomixer_video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1, + guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, + guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 41, 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, + 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, + 0, 32, 21, 1, 188, 3, 32, 21, 1, 199, 35, 34, 33, 199, 36, 37, + 34, 39, 1, 36, 37, 199, 36, 37, 35, 39, 2, 36, 37, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_A420); +#else + p = orc_program_new (); + orc_program_set_name (p, "videomixer_video_convert_orc_putline_A420"); + orc_program_set_backup_function (p, + _backup_videomixer_video_convert_orc_putline_A420); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_destination (p, 2, "d4"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 1, "t5"); + orc_program_add_temporary (p, 1, "t6"); + + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D4, ORC_VAR_T1, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_D2] = d2; + ex->arrays[ORC_VAR_D3] = d3; + ex->arrays[ORC_VAR_D4] = d4; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif diff --git a/gst/videomixer/videomixerorc-dist.h b/gst/videomixer/videomixerorc-dist.h new file mode 100644 index 0000000000000000000000000000000000000000..e0b935f62a7c7042193b6204fac3b65d36a9d4d5 --- /dev/null +++ b/gst/videomixer/videomixerorc-dist.h @@ -0,0 +1,161 @@ + +/* autogenerated from videomixerorc.orc */ + +#ifndef _VIDEOMIXERORC_H_ +#define _VIDEOMIXERORC_H_ + +#include <glib.h> + +#ifdef __cplusplus +extern "C" { +#endif + + + +#ifndef _ORC_INTEGER_TYPEDEFS_ +#define _ORC_INTEGER_TYPEDEFS_ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include <stdint.h> +typedef int8_t orc_int8; +typedef int16_t orc_int16; +typedef int32_t orc_int32; +typedef int64_t orc_int64; +typedef uint8_t orc_uint8; +typedef uint16_t orc_uint16; +typedef uint32_t orc_uint32; +typedef uint64_t orc_uint64; +#define ORC_UINT64_C(x) UINT64_C(x) +#elif defined(_MSC_VER) +typedef signed __int8 orc_int8; +typedef signed __int16 orc_int16; +typedef signed __int32 orc_int32; +typedef signed __int64 orc_int64; +typedef unsigned __int8 orc_uint8; +typedef unsigned __int16 orc_uint16; +typedef unsigned __int32 orc_uint32; +typedef unsigned __int64 orc_uint64; +#define ORC_UINT64_C(x) (x##Ui64) +#define inline __inline +#else +#include <limits.h> +typedef signed char orc_int8; +typedef short orc_int16; +typedef int orc_int32; +typedef unsigned char orc_uint8; +typedef unsigned short orc_uint16; +typedef unsigned int orc_uint32; +#if INT_MAX == LONG_MAX +typedef long long orc_int64; +typedef unsigned long long orc_uint64; +#define ORC_UINT64_C(x) (x##ULL) +#else +typedef long orc_int64; +typedef unsigned long orc_uint64; +#define ORC_UINT64_C(x) (x##UL) +#endif +#endif +typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; +typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +#endif +#ifndef ORC_RESTRICT +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#else +#define ORC_RESTRICT +#endif +#endif + +#ifndef ORC_INTERNAL +#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +#define ORC_INTERNAL __hidden +#elif defined (__GNUC__) +#define ORC_INTERNAL __attribute__((visibility("hidden"))) +#else +#define ORC_INTERNAL +#endif +#endif + +void video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n); +void video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n); +void video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); +void video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); +void video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); +void video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); +void video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m); +void videomixer_video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n); +void videomixer_video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n); +void videomixer_video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n); +void videomixer_video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n); +void videomixer_video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); +void videomixer_video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); +void videomixer_video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n); +void videomixer_video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); +void videomixer_video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n); +void videomixer_video_convert_orc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, int n); +void videomixer_video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n); +void videomixer_video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n); +void videomixer_video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n); +void videomixer_video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n); +void videomixer_video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n); +void videomixer_video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n); +void videomixer_video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n); +void videomixer_video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n); +void videomixer_video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/gst/videomixer/videomixerorc.orc b/gst/videomixer/videomixerorc.orc new file mode 100644 index 0000000000000000000000000000000000000000..7ee7fef4a212fd6db129e026ab64a4bc1606fe35 --- /dev/null +++ b/gst/videomixer/videomixerorc.orc @@ -0,0 +1,1516 @@ +.function video_mixer_orc_splat_u32 +.dest 4 d1 guint32 +.param 4 p1 guint32 + +copyl d1, p1 + +.function video_mixer_orc_memcpy_u32 +.dest 4 d1 guint32 +.source 4 s1 guint32 + +copyl d1, s1 + +.function video_mixer_orc_blend_u8 +.flags 2d +.dest 1 d1 guint8 +.source 1 s1 guint8 +.param 2 p1 +.temp 2 t1 +.temp 2 t2 +.const 1 c1 8 + +convubw t1, d1 +convubw t2, s1 +subw t2, t2, t1 +mullw t2, t2, p1 +shlw t1, t1, c1 +addw t2, t1, t2 +shruw t2, t2, c1 +convsuswb d1, t2 + + +.function video_mixer_orc_blend_argb +.flags 2d +.dest 4 d guint8 +.source 4 s guint8 +.param 2 alpha +.temp 4 t +.temp 2 tw +.temp 1 tb +.temp 4 a +.temp 8 d_wide +.temp 8 s_wide +.temp 8 a_wide +.const 4 a_alpha 0x000000ff + +loadl t, s +convlw tw, t +convwb tb, tw +splatbl a, tb +x4 convubw a_wide, a +x4 mullw a_wide, a_wide, alpha +x4 shruw a_wide, a_wide, 8 +x4 convubw s_wide, t +loadl t, d +x4 convubw d_wide, t +x4 subw s_wide, s_wide, d_wide +x4 mullw s_wide, s_wide, a_wide +x4 div255w s_wide, s_wide +x4 addw d_wide, d_wide, s_wide +x4 convwb t, d_wide +orl t, t, a_alpha +storel d, t + +.function video_mixer_orc_blend_bgra +.flags 2d +.dest 4 d guint8 +.source 4 s guint8 +.param 2 alpha +.temp 4 t +.temp 4 t2 +.temp 2 tw +.temp 1 tb +.temp 4 a +.temp 8 d_wide +.temp 8 s_wide +.temp 8 a_wide +.const 4 a_alpha 0xff000000 + +loadl t, s +shrul t2, t, 24 +convlw tw, t2 +convwb tb, tw +splatbl a, tb +x4 convubw a_wide, a +x4 mullw a_wide, a_wide, alpha +x4 shruw a_wide, a_wide, 8 +x4 convubw s_wide, t +loadl t, d +x4 convubw d_wide, t +x4 subw s_wide, s_wide, d_wide +x4 mullw s_wide, s_wide, a_wide +x4 div255w s_wide, s_wide +x4 addw d_wide, d_wide, s_wide +x4 convwb t, d_wide +orl t, t, a_alpha +storel d, t + + +.function video_mixer_orc_overlay_argb +.flags 2d +.dest 4 d guint8 +.source 4 s guint8 +.param 2 alpha +.temp 4 t +.temp 2 tw +.temp 1 tb +.temp 8 alpha_s +.temp 8 alpha_s_inv +.temp 8 alpha_d +.temp 4 a +.temp 8 d_wide +.temp 8 s_wide +.const 4 xfs 0xffffffff +.const 4 a_alpha 0x000000ff +.const 4 a_alpha_inv 0xffffff00 + +# calc source alpha as alpha_s = alpha_s * alpha / 256 +loadl t, s +convlw tw, t +convwb tb, tw +splatbl a, tb +x4 convubw alpha_s, a +x4 mullw alpha_s, alpha_s, alpha +x4 shruw alpha_s, alpha_s, 8 +x4 convubw s_wide, t +x4 mullw s_wide, s_wide, alpha_s + +# calc destination alpha as alpha_d = (255-alpha_s) * alpha_d / 255 +loadpl a, xfs +x4 convubw alpha_s_inv, a +x4 subw alpha_s_inv, alpha_s_inv, alpha_s +loadl t, d +convlw tw, t +convwb tb, tw +splatbl a, tb +x4 convubw alpha_d, a +x4 mullw alpha_d, alpha_d, alpha_s_inv +x4 div255w alpha_d, alpha_d +x4 convubw d_wide, t +x4 mullw d_wide, d_wide, alpha_d + +# calc final pixel as pix_d = pix_s*alpha_s + pix_d*alpha_d*(255-alpha_s)/255 +x4 addw d_wide, d_wide, s_wide + +# calc the final destination alpha_d = alpha_s + alpha_d * (255-alpha_s)/255 +x4 addw alpha_d, alpha_d, alpha_s + +# now normalize the pix_d by the final alpha to make it associative +x4 divluw, d_wide, d_wide, alpha_d + +# pack the new alpha into the correct spot +x4 convwb t, d_wide +andl t, t, a_alpha_inv +x4 convwb a, alpha_d +andl a, a, a_alpha +orl t, t, a +storel d, t + +.function video_mixer_orc_overlay_bgra +.flags 2d +.dest 4 d guint8 +.source 4 s guint8 +.param 2 alpha +.temp 4 t +.temp 4 t2 +.temp 2 tw +.temp 1 tb +.temp 8 alpha_s +.temp 8 alpha_s_inv +.temp 8 alpha_d +.temp 4 a +.temp 8 d_wide +.temp 8 s_wide +.const 4 xfs 0xffffffff +.const 4 a_alpha 0xff000000 +.const 4 a_alpha_inv 0x00ffffff + +# calc source alpha as alpha_s = alpha_s * alpha / 256 +loadl t, s +shrul t2, t, 24 +convlw tw, t2 +convwb tb, tw +splatbl a, tb +x4 convubw alpha_s, a +x4 mullw alpha_s, alpha_s, alpha +x4 shruw alpha_s, alpha_s, 8 +x4 convubw s_wide, t +x4 mullw s_wide, s_wide, alpha_s + +# calc destination alpha as alpha_d = (255-alpha_s) * alpha_d / 255 +loadpl a, xfs +x4 convubw alpha_s_inv, a +x4 subw alpha_s_inv, alpha_s_inv, alpha_s +loadl t, d +shrul t2, t, 24 +convlw tw, t2 +convwb tb, tw +splatbl a, tb +x4 convubw alpha_d, a +x4 mullw alpha_d, alpha_d, alpha_s_inv +x4 div255w alpha_d, alpha_d +x4 convubw d_wide, t +x4 mullw d_wide, d_wide, alpha_d + +# calc final pixel as pix_d = pix_s*alpha_s + pix_d*alpha_d*(255-alpha_s)/255 +x4 addw d_wide, d_wide, s_wide + +# calc the final destination alpha_d = alpha_s + alpha_d * (255-alpha_s)/255 +x4 addw alpha_d, alpha_d, alpha_s + +# now normalize the pix_d by the final alpha to make it associative +x4 divluw, d_wide, d_wide, alpha_d + +# pack the new alpha into the correct spot +x4 convwb t, d_wide +andl t, t, a_alpha_inv +x4 convwb a, alpha_d +andl a, a, a_alpha +orl t, t, a +storel d, t + +# Videoconvert logic, copy from videomixer_videoconvert. +# Remove that when videomixer_videoconvert lands in libgstvideo. + +.function videomixer_video_convert_orc_memcpy_2d +.flags 2d +.dest 1 d1 guint8 +.source 1 s1 guint8 + +copyb d1, s1 + +.function videomixer_video_convert_orc_convert_I420_UYVY +.dest 4 d1 guint8 +.dest 4 d2 guint8 +.source 2 y1 guint8 +.source 2 y2 guint8 +.source 1 u guint8 +.source 1 v guint8 +.temp 2 uv + +mergebw uv, u, v +x2 mergebw d1, uv, y1 +x2 mergebw d2, uv, y2 + + +.function videomixer_video_convert_orc_convert_I420_YUY2 +.dest 4 d1 guint8 +.dest 4 d2 guint8 +.source 2 y1 guint8 +.source 2 y2 guint8 +.source 1 u guint8 +.source 1 v guint8 +.temp 2 uv + +mergebw uv, u, v +x2 mergebw d1, y1, uv +x2 mergebw d2, y2, uv + + + +.function videomixer_video_convert_orc_convert_I420_AYUV +.dest 4 d1 guint8 +.dest 4 d2 guint8 +.source 1 y1 guint8 +.source 1 y2 guint8 +.source 1 u guint8 +.source 1 v guint8 +.const 1 c255 255 +.temp 2 uv +.temp 2 ay +.temp 1 tu +.temp 1 tv + +loadupdb tu, u +loadupdb tv, v +mergebw uv, tu, tv +mergebw ay, c255, y1 +mergewl d1, ay, uv +mergebw ay, c255, y2 +mergewl d2, ay, uv + + +.function videomixer_video_convert_orc_convert_YUY2_I420 +.dest 2 y1 guint8 +.dest 2 y2 guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.source 4 yuv1 guint8 +.source 4 yuv2 guint8 +.temp 2 t1 +.temp 2 t2 +.temp 2 ty + +x2 splitwb t1, ty, yuv1 +storew y1, ty +x2 splitwb t2, ty, yuv2 +storew y2, ty +x2 avgub t1, t1, t2 +splitwb v, u, t1 + + +.function videomixer_video_convert_orc_convert_UYVY_YUY2 +.flags 2d +.dest 4 yuy2 guint8 +.source 4 uyvy guint8 + +x2 swapw yuy2, uyvy + + +.function videomixer_video_convert_orc_planar_chroma_420_422 +.flags 2d +.dest 1 d1 guint8 +.dest 1 d2 guint8 +.source 1 s guint8 + +copyb d1, s +copyb d2, s + + +.function videomixer_video_convert_orc_planar_chroma_420_444 +.flags 2d +.dest 2 d1 guint8 +.dest 2 d2 guint8 +.source 1 s guint8 +.temp 2 t + +splatbw t, s +storew d1, t +storew d2, t + + +.function videomixer_video_convert_orc_planar_chroma_422_444 +.flags 2d +.dest 2 d1 guint8 +.source 1 s guint8 +.temp 2 t + +splatbw t, s +storew d1, t + + +.function videomixer_video_convert_orc_planar_chroma_444_422 +.flags 2d +.dest 1 d guint8 +.source 2 s guint8 +.temp 1 t1 +.temp 1 t2 + +splitwb t1, t2, s +avgub d, t1, t2 + + +.function videomixer_video_convert_orc_planar_chroma_444_420 +.flags 2d +.dest 1 d guint8 +.source 2 s1 guint8 +.source 2 s2 guint8 +.temp 2 t +.temp 1 t1 +.temp 1 t2 + +x2 avgub t, s1, s2 +splitwb t1, t2, t +avgub d, t1, t2 + + +.function videomixer_video_convert_orc_planar_chroma_422_420 +.flags 2d +.dest 1 d guint8 +.source 1 s1 guint8 +.source 1 s2 guint8 + +avgub d, s1, s2 + + +.function videomixer_video_convert_orc_convert_YUY2_AYUV +.flags 2d +.dest 8 ayuv guint8 +.source 4 yuy2 guint8 +.const 2 c255 0xff +.temp 2 yy +.temp 2 uv +.temp 4 ayay +.temp 4 uvuv + +x2 splitwb uv, yy, yuy2 +x2 mergebw ayay, c255, yy +mergewl uvuv, uv, uv +x2 mergewl ayuv, ayay, uvuv + + +.function videomixer_video_convert_orc_convert_UYVY_AYUV +.flags 2d +.dest 8 ayuv guint8 +.source 4 uyvy guint8 +.const 2 c255 0xff +.temp 2 yy +.temp 2 uv +.temp 4 ayay +.temp 4 uvuv + +x2 splitwb yy, uv, uyvy +x2 mergebw ayay, c255, yy +mergewl uvuv, uv, uv +x2 mergewl ayuv, ayay, uvuv + + +.function videomixer_video_convert_orc_convert_YUY2_Y42B +.flags 2d +.dest 2 y guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.source 4 yuy2 guint8 +.temp 2 uv + +x2 splitwb uv, y, yuy2 +splitwb v, u, uv + + +.function videomixer_video_convert_orc_convert_UYVY_Y42B +.flags 2d +.dest 2 y guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.source 4 uyvy guint8 +.temp 2 uv + +x2 splitwb y, uv, uyvy +splitwb v, u, uv + + +.function videomixer_video_convert_orc_convert_YUY2_Y444 +.flags 2d +.dest 2 y guint8 +.dest 2 uu guint8 +.dest 2 vv guint8 +.source 4 yuy2 guint8 +.temp 2 uv +.temp 1 u +.temp 1 v + +x2 splitwb uv, y, yuy2 +splitwb v, u, uv +splatbw uu, u +splatbw vv, v + + +.function videomixer_video_convert_orc_convert_UYVY_Y444 +.flags 2d +.dest 2 y guint8 +.dest 2 uu guint8 +.dest 2 vv guint8 +.source 4 uyvy guint8 +.temp 2 uv +.temp 1 u +.temp 1 v + +x2 splitwb y, uv, uyvy +splitwb v, u, uv +splatbw uu, u +splatbw vv, v + + +.function videomixer_video_convert_orc_convert_UYVY_I420 +.dest 2 y1 guint8 +.dest 2 y2 guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.source 4 yuv1 guint8 +.source 4 yuv2 guint8 +.temp 2 t1 +.temp 2 t2 +.temp 2 ty + +x2 splitwb ty, t1, yuv1 +storew y1, ty +x2 splitwb ty, t2, yuv2 +storew y2, ty +x2 avgub t1, t1, t2 +splitwb v, u, t1 + + + +.function videomixer_video_convert_orc_convert_AYUV_I420 +.flags 2d +.dest 2 y1 guint8 +.dest 2 y2 guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.source 8 ayuv1 guint8 +.source 8 ayuv2 guint8 +.temp 4 ay +.temp 4 uv1 +.temp 4 uv2 +.temp 4 uv +.temp 2 uu +.temp 2 vv +.temp 1 t1 +.temp 1 t2 + +x2 splitlw uv1, ay, ayuv1 +x2 select1wb y1, ay +x2 splitlw uv2, ay, ayuv2 +x2 select1wb y2, ay +x4 avgub uv, uv1, uv2 +x2 splitwb vv, uu, uv +splitwb t1, t2, uu +avgub u, t1, t2 +splitwb t1, t2, vv +avgub v, t1, t2 + + + +.function videomixer_video_convert_orc_convert_AYUV_YUY2 +.flags 2d +.dest 4 yuy2 guint8 +.source 8 ayuv guint8 +.temp 2 yy +.temp 2 uv1 +.temp 2 uv2 +.temp 4 ayay +.temp 4 uvuv + +x2 splitlw uvuv, ayay, ayuv +splitlw uv1, uv2, uvuv +x2 avgub uv1, uv1, uv2 +x2 select1wb yy, ayay +x2 mergebw yuy2, yy, uv1 + + +.function videomixer_video_convert_orc_convert_AYUV_UYVY +.flags 2d +.dest 4 yuy2 guint8 +.source 8 ayuv guint8 +.temp 2 yy +.temp 2 uv1 +.temp 2 uv2 +.temp 4 ayay +.temp 4 uvuv + +x2 splitlw uvuv, ayay, ayuv +splitlw uv1, uv2, uvuv +x2 avgub uv1, uv1, uv2 +x2 select1wb yy, ayay +x2 mergebw yuy2, uv1, yy + + + +.function videomixer_video_convert_orc_convert_AYUV_Y42B +.flags 2d +.dest 2 y guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.source 8 ayuv guint8 +.temp 4 ayay +.temp 4 uvuv +.temp 2 uv1 +.temp 2 uv2 + +x2 splitlw uvuv, ayay, ayuv +splitlw uv1, uv2, uvuv +x2 avgub uv1, uv1, uv2 +splitwb v, u, uv1 +x2 select1wb y, ayay + + +.function videomixer_video_convert_orc_convert_AYUV_Y444 +.flags 2d +.dest 1 y guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.source 4 ayuv guint8 +.temp 2 ay +.temp 2 uv + +splitlw uv, ay, ayuv +splitwb v, u, uv +select1wb y, ay + + +.function videomixer_video_convert_orc_convert_Y42B_YUY2 +.flags 2d +.dest 4 yuy2 guint8 +.source 2 y guint8 +.source 1 u guint8 +.source 1 v guint8 +.temp 2 uv + +mergebw uv, u, v +x2 mergebw yuy2, y, uv + + +.function videomixer_video_convert_orc_convert_Y42B_UYVY +.flags 2d +.dest 4 uyvy guint8 +.source 2 y guint8 +.source 1 u guint8 +.source 1 v guint8 +.temp 2 uv + +mergebw uv, u, v +x2 mergebw uyvy, uv, y + + +.function videomixer_video_convert_orc_convert_Y42B_AYUV +.flags 2d +.dest 8 ayuv guint8 +.source 2 yy guint8 +.source 1 u guint8 +.source 1 v guint8 +.const 1 c255 255 +.temp 2 uv +.temp 2 ay +.temp 4 uvuv +.temp 4 ayay + +mergebw uv, u, v +x2 mergebw ayay, c255, yy +mergewl uvuv, uv, uv +x2 mergewl ayuv, ayay, uvuv + + +.function videomixer_video_convert_orc_convert_Y444_YUY2 +.flags 2d +.dest 4 yuy2 guint8 +.source 2 y guint8 +.source 2 u guint8 +.source 2 v guint8 +.temp 2 uv +.temp 4 uvuv +.temp 2 uv1 +.temp 2 uv2 + +x2 mergebw uvuv, u, v +splitlw uv1, uv2, uvuv +x2 avgub uv, uv1, uv2 +x2 mergebw yuy2, y, uv + + +.function videomixer_video_convert_orc_convert_Y444_UYVY +.flags 2d +.dest 4 uyvy guint8 +.source 2 y guint8 +.source 2 u guint8 +.source 2 v guint8 +.temp 2 uv +.temp 4 uvuv +.temp 2 uv1 +.temp 2 uv2 + +x2 mergebw uvuv, u, v +splitlw uv1, uv2, uvuv +x2 avgub uv, uv1, uv2 +x2 mergebw uyvy, uv, y + + +.function videomixer_video_convert_orc_convert_Y444_AYUV +.flags 2d +.dest 4 ayuv guint8 +.source 1 yy guint8 +.source 1 u guint8 +.source 1 v guint8 +.const 1 c255 255 +.temp 2 uv +.temp 2 ay + +mergebw uv, u, v +mergebw ay, c255, yy +mergewl ayuv, ay, uv + + + +.function videomixer_video_convert_orc_convert_AYUV_ARGB +.flags 2d +.dest 4 argb guint8 +.source 4 ayuv guint8 +.temp 2 t1 +.temp 2 t2 +.temp 1 a +.temp 1 y +.temp 1 u +.temp 1 v +.temp 2 wy +.temp 2 wu +.temp 2 wv +.temp 2 wr +.temp 2 wg +.temp 2 wb +.temp 1 r +.temp 1 g +.temp 1 b +.temp 4 x +.const 1 c8 8 + +x4 subb x, ayuv, 128 +splitlw t1, t2, x +splitwb y, a, t2 +splitwb v, u, t1 +convsbw wy, y +convsbw wu, u +convsbw wv, v + +mullw t1, wy, 42 +shrsw t1, t1, c8 +addssw wy, wy, t1 + +addssw wr, wy, wv +mullw t1, wv, 103 +shrsw t1, t1, c8 +subssw wr, wr, t1 +addssw wr, wr, wv + +addssw wb, wy, wu +addssw wb, wb, wu +mullw t1, wu, 4 +shrsw t1, t1, c8 +addssw wb, wb, t1 + +mullw t1, wu, 100 +shrsw t1, t1, c8 +subssw wg, wy, t1 +mullw t1, wv, 104 +shrsw t1, t1, c8 +subssw wg, wg, t1 +subssw wg, wg, t1 + +convssswb r, wr +convssswb g, wg +convssswb b, wb + +mergebw t1, a, r +mergebw t2, g, b +mergewl x, t1, t2 +x4 addb argb, x, 128 + + + +.function videomixer_video_convert_orc_convert_AYUV_BGRA +.flags 2d +.dest 4 argb guint8 +.source 4 ayuv guint8 +.temp 2 t1 +.temp 2 t2 +.temp 1 a +.temp 1 y +.temp 1 u +.temp 1 v +.temp 2 wy +.temp 2 wu +.temp 2 wv +.temp 2 wr +.temp 2 wg +.temp 2 wb +.temp 1 r +.temp 1 g +.temp 1 b +.temp 4 x +.const 1 c8 8 + +x4 subb x, ayuv, 128 +splitlw t1, t2, x +splitwb y, a, t2 +splitwb v, u, t1 +convsbw wy, y +convsbw wu, u +convsbw wv, v + +mullw t1, wy, 42 +shrsw t1, t1, c8 +addssw wy, wy, t1 + +addssw wr, wy, wv +mullw t1, wv, 103 +shrsw t1, t1, c8 +subssw wr, wr, t1 +addssw wr, wr, wv + +addssw wb, wy, wu +addssw wb, wb, wu +mullw t1, wu, 4 +shrsw t1, t1, c8 +addssw wb, wb, t1 + +mullw t1, wu, 100 +shrsw t1, t1, c8 +subssw wg, wy, t1 +mullw t1, wv, 104 +shrsw t1, t1, c8 +subssw wg, wg, t1 +subssw wg, wg, t1 + +convssswb r, wr +convssswb g, wg +convssswb b, wb + +mergebw t1, b, g +mergebw t2, r, a +mergewl x, t1, t2 +x4 addb argb, x, 128 + + + + +.function videomixer_video_convert_orc_convert_AYUV_ABGR +.flags 2d +.dest 4 argb guint8 +.source 4 ayuv guint8 +.temp 2 t1 +.temp 2 t2 +.temp 1 a +.temp 1 y +.temp 1 u +.temp 1 v +.temp 2 wy +.temp 2 wu +.temp 2 wv +.temp 2 wr +.temp 2 wg +.temp 2 wb +.temp 1 r +.temp 1 g +.temp 1 b +.temp 4 x +.const 1 c8 8 + +x4 subb x, ayuv, 128 +splitlw t1, t2, x +splitwb y, a, t2 +splitwb v, u, t1 +convsbw wy, y +convsbw wu, u +convsbw wv, v + +mullw t1, wy, 42 +shrsw t1, t1, c8 +addssw wy, wy, t1 + +addssw wr, wy, wv +mullw t1, wv, 103 +shrsw t1, t1, c8 +subssw wr, wr, t1 +addssw wr, wr, wv + +addssw wb, wy, wu +addssw wb, wb, wu +mullw t1, wu, 4 +shrsw t1, t1, c8 +addssw wb, wb, t1 + +mullw t1, wu, 100 +shrsw t1, t1, c8 +subssw wg, wy, t1 +mullw t1, wv, 104 +shrsw t1, t1, c8 +subssw wg, wg, t1 +subssw wg, wg, t1 + +convssswb r, wr +convssswb g, wg +convssswb b, wb + +mergebw t1, a, b +mergebw t2, g, r +mergewl x, t1, t2 +x4 addb argb, x, 128 + + + +.function videomixer_video_convert_orc_convert_AYUV_RGBA +.flags 2d +.dest 4 argb guint8 +.source 4 ayuv guint8 +.temp 2 t1 +.temp 2 t2 +.temp 1 a +.temp 1 y +.temp 1 u +.temp 1 v +.temp 2 wy +.temp 2 wu +.temp 2 wv +.temp 2 wr +.temp 2 wg +.temp 2 wb +.temp 1 r +.temp 1 g +.temp 1 b +.temp 4 x +.const 1 c8 8 + +x4 subb x, ayuv, 128 +splitlw t1, t2, x +splitwb y, a, t2 +splitwb v, u, t1 +convsbw wy, y +convsbw wu, u +convsbw wv, v + +mullw t1, wy, 42 +shrsw t1, t1, c8 +addssw wy, wy, t1 + +addssw wr, wy, wv +mullw t1, wv, 103 +shrsw t1, t1, c8 +subssw wr, wr, t1 +addssw wr, wr, wv + +addssw wb, wy, wu +addssw wb, wb, wu +mullw t1, wu, 4 +shrsw t1, t1, c8 +addssw wb, wb, t1 + +mullw t1, wu, 100 +shrsw t1, t1, c8 +subssw wg, wy, t1 +mullw t1, wv, 104 +shrsw t1, t1, c8 +subssw wg, wg, t1 +subssw wg, wg, t1 + +convssswb r, wr +convssswb g, wg +convssswb b, wb + +mergebw t1, r, g +mergebw t2, b, a +mergewl x, t1, t2 +x4 addb argb, x, 128 + + + +.function videomixer_video_convert_orc_convert_I420_BGRA +.dest 4 argb guint8 +.source 1 y guint8 +.source 1 u guint8 +.source 1 v guint8 +.temp 2 t1 +.temp 2 t2 +.temp 1 t3 +.temp 2 wy +.temp 2 wu +.temp 2 wv +.temp 2 wr +.temp 2 wg +.temp 2 wb +.temp 1 r +.temp 1 g +.temp 1 b +.temp 4 x +.const 1 c8 8 +.const 1 c128 128 + +subb t3, y, c128 +convsbw wy, t3 +loadupib t3, u +subb t3, t3, c128 +convsbw wu, t3 +loadupib t3, v +subb t3, t3, c128 +convsbw wv, t3 + +mullw t1, wy, 42 +shrsw t1, t1, c8 +addssw wy, wy, t1 + +addssw wr, wy, wv +mullw t1, wv, 103 +shrsw t1, t1, c8 +subssw wr, wr, t1 +addssw wr, wr, wv + +addssw wb, wy, wu +addssw wb, wb, wu +mullw t1, wu, 4 +shrsw t1, t1, c8 +addssw wb, wb, t1 + +mullw t1, wu, 100 +shrsw t1, t1, c8 +subssw wg, wy, t1 +mullw t1, wv, 104 +shrsw t1, t1, c8 +subssw wg, wg, t1 +subssw wg, wg, t1 + +convssswb r, wr +convssswb g, wg +convssswb b, wb + +mergebw t1, b, g +mergebw t2, r, 255 +mergewl x, t1, t2 +x4 addb argb, x, c128 + + + +.function videomixer_video_convert_orc_convert_I420_BGRA_avg +.dest 4 argb guint8 +.source 1 y guint8 +.source 1 u1 guint8 +.source 1 u2 guint8 +.source 1 v1 guint8 +.source 1 v2 guint8 +.temp 2 t1 +.temp 2 t2 +.temp 1 t3 +.temp 1 t4 +.temp 2 wy +.temp 2 wu +.temp 2 wv +.temp 2 wr +.temp 2 wg +.temp 2 wb +.temp 1 r +.temp 1 g +.temp 1 b +.temp 4 x +.const 1 c8 8 +.const 1 c128 128 + +subb t3, y, c128 +convsbw wy, t3 +loadupib t3, u1 +loadupib t4, u2 +avgub t3, t3, t4 +subb t3, t3, c128 +convsbw wu, t3 +loadupib t3, v1 +loadupib t4, v2 +avgub t3, t3, t4 +subb t3, t3, c128 +convsbw wv, t3 + +mullw t1, wy, 42 +shrsw t1, t1, c8 +addssw wy, wy, t1 + +addssw wr, wy, wv +mullw t1, wv, 103 +shrsw t1, t1, c8 +subssw wr, wr, t1 +addssw wr, wr, wv + +addssw wb, wy, wu +addssw wb, wb, wu +mullw t1, wu, 4 +shrsw t1, t1, c8 +addssw wb, wb, t1 + +mullw t1, wu, 100 +shrsw t1, t1, c8 +subssw wg, wy, t1 +mullw t1, wv, 104 +shrsw t1, t1, c8 +subssw wg, wg, t1 +subssw wg, wg, t1 + +convssswb r, wr +convssswb g, wg +convssswb b, wb + +mergebw t1, b, g +mergebw t2, r, 255 +mergewl x, t1, t2 +x4 addb argb, x, c128 + + + +.function videomixer_video_convert_orc_getline_I420 +.dest 4 d guint8 +.source 1 y guint8 +.source 1 u guint8 +.source 1 v guint8 +.const 1 c255 255 +.temp 2 uv +.temp 2 ay +.temp 1 tu +.temp 1 tv + +loadupdb tu, u +loadupdb tv, v +mergebw uv, tu, tv +mergebw ay, c255, y +mergewl d, ay, uv + +.function videomixer_video_convert_orc_getline_YUV9 +.dest 8 d guint8 +.source 2 y guint8 +.source 1 u guint8 +.source 1 v guint8 +.const 1 c255 255 +.temp 2 tuv +.temp 4 ay +.temp 4 uv +.temp 1 tu +.temp 1 tv + +loadupdb tu, u +loadupdb tv, v +mergebw tuv, tu, tv +mergewl uv, tuv, tuv +x2 mergebw ay, c255, y +x2 mergewl d, ay, uv + +.function videomixer_video_convert_orc_getline_YUY2 +.dest 8 ayuv guint8 +.source 4 yuy2 guint8 +.const 2 c255 0xff +.temp 2 yy +.temp 2 uv +.temp 4 ayay +.temp 4 uvuv + +x2 splitwb uv, yy, yuy2 +x2 mergebw ayay, c255, yy +mergewl uvuv, uv, uv +x2 mergewl ayuv, ayay, uvuv + + +.function videomixer_video_convert_orc_getline_UYVY +.dest 8 ayuv guint8 +.source 4 uyvy guint8 +.const 2 c255 0xff +.temp 2 yy +.temp 2 uv +.temp 4 ayay +.temp 4 uvuv + +x2 splitwb yy, uv, uyvy +x2 mergebw ayay, c255, yy +mergewl uvuv, uv, uv +x2 mergewl ayuv, ayay, uvuv + + +.function videomixer_video_convert_orc_getline_YVYU +.dest 8 ayuv guint8 +.source 4 uyvy guint8 +.const 2 c255 0xff +.temp 2 yy +.temp 2 uv +.temp 4 ayay +.temp 4 uvuv + +x2 splitwb uv, yy, uyvy +swapw uv, uv +x2 mergebw ayay, c255, yy +mergewl uvuv, uv, uv +x2 mergewl ayuv, ayay, uvuv + + +.function videomixer_video_convert_orc_getline_Y42B +.dest 8 ayuv guint8 +.source 2 yy guint8 +.source 1 u guint8 +.source 1 v guint8 +.const 1 c255 255 +.temp 2 uv +.temp 2 ay +.temp 4 uvuv +.temp 4 ayay + +mergebw uv, u, v +x2 mergebw ayay, c255, yy +mergewl uvuv, uv, uv +x2 mergewl ayuv, ayay, uvuv + + +.function videomixer_video_convert_orc_getline_Y444 +.dest 4 ayuv guint8 +.source 1 y guint8 +.source 1 u guint8 +.source 1 v guint8 +.const 1 c255 255 +.temp 2 uv +.temp 2 ay + +mergebw uv, u, v +mergebw ay, c255, y +mergewl ayuv, ay, uv + + +.function videomixer_video_convert_orc_getline_Y800 +.dest 4 ayuv guint8 +.source 1 y guint8 +.const 1 c255 255 +.const 2 c0x8080 0x8080 +.temp 2 ay + +mergebw ay, c255, y +mergewl ayuv, ay, c0x8080 + +.function videomixer_video_convert_orc_getline_Y16 +.dest 4 ayuv guint8 +.source 2 y guint8 +.const 1 c255 255 +.const 2 c0x8080 0x8080 +.temp 2 ay +.temp 1 yb + +convhwb yb, y +mergebw ay, c255, yb +mergewl ayuv, ay, c0x8080 + +.function videomixer_video_convert_orc_getline_BGRA +.dest 4 argb guint8 +.source 4 bgra guint8 + +swapl argb, bgra + + +.function videomixer_video_convert_orc_getline_ABGR +.dest 4 argb guint8 +.source 4 abgr guint8 +.temp 1 a +.temp 1 r +.temp 1 g +.temp 1 b +.temp 2 gr +.temp 2 ab +.temp 2 ar +.temp 2 gb + +splitlw gr, ab, abgr +splitwb r, g, gr +splitwb b, a, ab +mergebw ar, a, r +mergebw gb, g, b +mergewl argb, ar, gb + + +.function videomixer_video_convert_orc_getline_RGBA +.dest 4 argb guint8 +.source 4 rgba guint8 +.temp 1 a +.temp 1 r +.temp 1 g +.temp 1 b +.temp 2 rg +.temp 2 ba +.temp 2 ar +.temp 2 gb + +splitlw ba, rg, rgba +splitwb g, r, rg +splitwb a, b, ba +mergebw ar, a, r +mergebw gb, g, b +mergewl argb, ar, gb + + +.function videomixer_video_convert_orc_getline_NV12 +.dest 8 d guint8 +.source 2 y guint8 +.source 2 uv guint8 +.const 1 c255 255 +.temp 4 ay +.temp 4 uvuv + +mergewl uvuv, uv, uv +x2 mergebw ay, c255, y +x2 mergewl d, ay, uvuv + + +.function videomixer_video_convert_orc_getline_NV21 +.dest 8 d guint8 +.source 2 y guint8 +.source 2 vu guint8 +.const 1 c255 255 +.temp 2 uv +.temp 4 ay +.temp 4 uvuv + +swapw uv, vu +mergewl uvuv, uv, uv +x2 mergebw ay, c255, y +x2 mergewl d, ay, uvuv + +.function videomixer_video_convert_orc_getline_A420 +.dest 4 d guint8 +.source 1 y guint8 +.source 1 u guint8 +.source 1 v guint8 +.source 1 a guint8 +.temp 2 uv +.temp 2 ay +.temp 1 tu +.temp 1 tv + +loadupdb tu, u +loadupdb tv, v +mergebw uv, tu, tv +mergebw ay, a, y +mergewl d, ay, uv + +.function videomixer_video_convert_orc_putline_I420 +.dest 2 y guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.source 8 ayuv guint8 +.temp 4 ay +.temp 4 uv +.temp 2 uu +.temp 2 vv +.temp 1 t1 +.temp 1 t2 + +x2 splitlw uv, ay, ayuv +x2 select1wb y, ay +x2 splitwb vv, uu, uv +splitwb t1, t2, uu +avgub u, t1, t2 +splitwb t1, t2, vv +avgub v, t1, t2 + + + +.function videomixer_video_convert_orc_putline_YUY2 +.dest 4 yuy2 guint8 +.source 8 ayuv guint8 +.temp 2 yy +.temp 2 uv1 +.temp 2 uv2 +.temp 4 ayay +.temp 4 uvuv + +x2 splitlw uvuv, ayay, ayuv +splitlw uv1, uv2, uvuv +x2 avgub uv1, uv1, uv2 +x2 select1wb yy, ayay +x2 mergebw yuy2, yy, uv1 + + +.function videomixer_video_convert_orc_putline_YVYU +.dest 4 yuy2 guint8 +.source 8 ayuv guint8 +.temp 2 yy +.temp 2 uv1 +.temp 2 uv2 +.temp 4 ayay +.temp 4 uvuv + +x2 splitlw uvuv, ayay, ayuv +splitlw uv1, uv2, uvuv +x2 avgub uv1, uv1, uv2 +x2 select1wb yy, ayay +swapw uv1, uv1 +x2 mergebw yuy2, yy, uv1 + + +.function videomixer_video_convert_orc_putline_UYVY +.dest 4 yuy2 guint8 +.source 8 ayuv guint8 +.temp 2 yy +.temp 2 uv1 +.temp 2 uv2 +.temp 4 ayay +.temp 4 uvuv + +x2 splitlw uvuv, ayay, ayuv +splitlw uv1, uv2, uvuv +x2 avgub uv1, uv1, uv2 +x2 select1wb yy, ayay +x2 mergebw yuy2, uv1, yy + + + +.function videomixer_video_convert_orc_putline_Y42B +.dest 2 y guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.source 8 ayuv guint8 +.temp 4 ayay +.temp 4 uvuv +.temp 2 uv1 +.temp 2 uv2 + +x2 splitlw uvuv, ayay, ayuv +splitlw uv1, uv2, uvuv +x2 avgub uv1, uv1, uv2 +splitwb v, u, uv1 +x2 select1wb y, ayay + + +.function videomixer_video_convert_orc_putline_Y444 +.dest 1 y guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.source 4 ayuv guint8 +.temp 2 ay +.temp 2 uv + +splitlw uv, ay, ayuv +splitwb v, u, uv +select1wb y, ay + + +.function videomixer_video_convert_orc_putline_Y800 +.dest 1 y guint8 +.source 4 ayuv guint8 +.temp 2 ay + +select0lw ay, ayuv +select1wb y, ay + +.function videomixer_video_convert_orc_putline_Y16 +.dest 2 y guint8 +.source 4 ayuv guint8 +.temp 2 ay +.temp 1 yb + +select0lw ay, ayuv +select1wb yb, ay +convubw ay, yb +shlw y, ay, 8 + +.function videomixer_video_convert_orc_putline_BGRA +.dest 4 bgra guint8 +.source 4 argb guint8 + +swapl bgra, argb + + +.function videomixer_video_convert_orc_putline_ABGR +.dest 4 abgr guint8 +.source 4 argb guint8 +.temp 1 a +.temp 1 r +.temp 1 g +.temp 1 b +.temp 2 gr +.temp 2 ab +.temp 2 ar +.temp 2 gb + +splitlw gb, ar, argb +splitwb b, g, gb +splitwb r, a, ar +mergebw ab, a, b +mergebw gr, g, r +mergewl abgr, ab, gr + + +.function videomixer_video_convert_orc_putline_RGBA +.dest 4 rgba guint8 +.source 4 argb guint8 +.temp 1 a +.temp 1 r +.temp 1 g +.temp 1 b +.temp 2 rg +.temp 2 ba +.temp 2 ar +.temp 2 gb + +splitlw gb, ar, argb +splitwb b, g, gb +splitwb r, a, ar +mergebw ba, b, a +mergebw rg, r, g +mergewl rgba, rg, ba + + +.function videomixer_video_convert_orc_putline_NV12 +.dest 2 y guint8 +.dest 2 uv guint8 +.source 8 ayuv guint8 +.temp 4 ay +.temp 4 uvuv +.temp 2 uv1 +.temp 2 uv2 + +x2 splitlw uvuv, ay, ayuv +x2 select1wb y, ay +splitlw uv1, uv2, uvuv +x2 avgub uv, uv1, uv2 + + +.function videomixer_video_convert_orc_putline_NV21 +.dest 2 y guint8 +.dest 2 vu guint8 +.source 8 ayuv guint8 +.temp 4 ay +.temp 4 uvuv +.temp 2 uv1 +.temp 2 uv2 +.temp 2 uv + +x2 splitlw uvuv, ay, ayuv +x2 select1wb y, ay +splitlw uv1, uv2, uvuv +x2 avgub uv, uv1, uv2 +swapw vu, uv + +.function videomixer_video_convert_orc_putline_A420 +.dest 2 y guint8 +.dest 1 u guint8 +.dest 1 v guint8 +.dest 2 a guint8 +.source 8 ayuv guint8 +.temp 4 ay +.temp 4 uv +.temp 2 uu +.temp 2 vv +.temp 1 t1 +.temp 1 t2 + +x2 splitlw uv, ay, ayuv +x2 select1wb y, ay +x2 select0wb a, ay +x2 splitwb vv, uu, uv +splitwb t1, t2, uu +avgub u, t1, t2 +splitwb t1, t2, vv +avgub v, t1, t2 diff --git a/gst/wavenc/Makefile.am b/gst/wavenc/Makefile.am index 4bfdf504f54b8d668348ec558e4d135534c42c63..98d6f663e9d133429991548c339f173721d3730a 100644 --- a/gst/wavenc/Makefile.am +++ b/gst/wavenc/Makefile.am @@ -3,11 +3,13 @@ plugin_LTLIBRARIES = libgstwavenc.la libgstwavenc_la_SOURCES = gstwavenc.c libgstwavenc_la_CFLAGS = \ $(GST_PLUGINS_BASE_CFLAGS) \ + $(GST_BASE_CFLAGS) \ $(GST_CFLAGS) libgstwavenc_la_LIBADD = \ $(GST_PLUGINS_BASE_LIBS) \ -lgstaudio-@GST_API_VERSION@ \ -lgstriff-@GST_API_VERSION@ \ + $(GST_BASE_LIBS) \ $(GST_LIBS) libgstwavenc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstwavenc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) diff --git a/gst/wavenc/Makefile.in b/gst/wavenc/Makefile.in index c3fa4434e2c35b38327a4f0afe11fcc22e1e7b34..2446444928f5a7197345f0a0ad821ec3ad16aa4c 100644 --- a/gst/wavenc/Makefile.in +++ b/gst/wavenc/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/wavenc -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -129,16 +155,29 @@ am__installdirs = "$(DESTDIR)$(plugindir)" LTLIBRARIES = $(plugin_LTLIBRARIES) am__DEPENDENCIES_1 = libgstwavenc_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_libgstwavenc_la_OBJECTS = libgstwavenc_la-gstwavenc.lo libgstwavenc_la_OBJECTS = $(am_libgstwavenc_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstwavenc_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstwavenc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstwavenc_la_CFLAGS) $(CFLAGS) \ $(libgstwavenc_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -151,20 +190,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstwavenc_la_SOURCES) DIST_SOURCES = $(libgstwavenc_la_SOURCES) am__can_run_installinfo = \ @@ -173,6 +208,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -340,6 +392,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -504,12 +557,14 @@ plugin_LTLIBRARIES = libgstwavenc.la libgstwavenc_la_SOURCES = gstwavenc.c libgstwavenc_la_CFLAGS = \ $(GST_PLUGINS_BASE_CFLAGS) \ + $(GST_BASE_CFLAGS) \ $(GST_CFLAGS) libgstwavenc_la_LIBADD = \ $(GST_PLUGINS_BASE_LIBS) \ -lgstaudio-@GST_API_VERSION@ \ -lgstriff-@GST_API_VERSION@ \ + $(GST_BASE_LIBS) \ $(GST_LIBS) libgstwavenc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) @@ -549,6 +604,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -575,12 +631,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstwavenc.la: $(libgstwavenc_la_OBJECTS) $(libgstwavenc_la_DEPENDENCIES) $(EXTRA_libgstwavenc_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstwavenc_la_LINK) -rpath $(plugindir) $(libgstwavenc_la_OBJECTS) $(libgstwavenc_la_LIBADD) $(LIBS) @@ -593,22 +652,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwavenc_la-gstwavenc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -626,26 +688,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -657,15 +708,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -674,6 +721,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -818,19 +880,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/wavenc/gstwavenc.c b/gst/wavenc/gstwavenc.c index eb80e89cc19b048c281105d7ed7714962569ee5e..6d64f1e44289267707ea14eca6a482ba107ca689 100644 --- a/gst/wavenc/gstwavenc.c +++ b/gst/wavenc/gstwavenc.c @@ -15,14 +15,24 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ /** * SECTION:element-wavenc * - * Format a audio stream into the wav format. + * Format an audio stream into the wav format. + * + * <refsect2> + * <title>Example launch line</title> + * |[ + * gst-launch-1.0 cdparanoiasrc mode=continuous ! queue ! audioconvert ! wavenc ! filesink location=cd.wav + * ]| Rip a whole audio CD into a single wav file, with the track table written into a CUE sheet inside the file + * |[ + * gst-launch-1.0 cdparanoiasrc track=5 ! queue ! audioconvert ! wavenc ! filesink location=track5.wav + * ]| Rip track 5 of an audio CD into a single wav file containing unencoded raw audio samples. + * </refsect2> * */ #ifdef HAVE_CONFIG_H @@ -34,6 +44,7 @@ #include <gst/audio/audio.h> #include <gst/riff/riff-media.h> +#include <gst/base/gstbytewriter.h> GST_DEBUG_CATEGORY_STATIC (wavenc_debug); #define GST_CAT_DEFAULT wavenc_debug @@ -69,6 +80,38 @@ struct wave_header struct chunk_struct data; }; +typedef struct +{ + /* Offset Size Description Value + * 0x00 4 ID unique identification value + * 0x04 4 Position play order position + * 0x08 4 Data Chunk ID RIFF ID of corresponding data chunk + * 0x0c 4 Chunk Start Byte Offset of Data Chunk * + * 0x10 4 Block Start Byte Offset to sample of First Channel + * 0x14 4 Sample Offset Byte Offset to sample byte of First Channel + */ + guint32 id; + guint32 position; + guint8 data_chunk_id[4]; + guint32 chunk_start; + guint32 block_start; + guint32 sample_offset; +} GstWavEncCue; + +typedef struct +{ + /* Offset Size Description Value + * 0x00 4 Chunk ID "labl" (0x6C61626C) or "note" (0x6E6F7465) + * 0x04 4 Chunk Data Size depends on contained text + * 0x08 4 Cue Point ID 0 - 0xFFFFFFFF + * 0x0c Text + */ + guint8 chunk_id[4]; + guint32 chunk_data_size; + guint32 cue_point_id; + gchar *text; +} GstWavEncLabl, GstWavEncNote; + /* FIXME: mono doesn't produce correct files it seems, at least mplayer xruns */ /* Max. of two channels, more channels need WAVFORMATEX with * channel layout, which we do not support yet */ @@ -113,7 +156,10 @@ static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", ); #define gst_wavenc_parent_class parent_class -G_DEFINE_TYPE (GstWavEnc, gst_wavenc, GST_TYPE_ELEMENT); +G_DEFINE_TYPE_WITH_CODE (GstWavEnc, gst_wavenc, GST_TYPE_ELEMENT, + G_IMPLEMENT_INTERFACE (GST_TYPE_TAG_SETTER, NULL) + G_IMPLEMENT_INTERFACE (GST_TYPE_TOC_SETTER, NULL) + ); static GstFlowReturn gst_wavenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf); @@ -165,7 +211,7 @@ gst_wavenc_init (GstWavEnc * wavenc) #define WAV_HEADER_LEN 44 static GstBuffer * -gst_wavenc_create_header_buf (GstWavEnc * wavenc, guint audio_data_size) +gst_wavenc_create_header_buf (GstWavEnc * wavenc) { struct wave_header wave; GstBuffer *buf; @@ -177,25 +223,24 @@ gst_wavenc_create_header_buf (GstWavEnc * wavenc, guint audio_data_size) header = map.data; memset (header, 0, WAV_HEADER_LEN); - wave.common.wChannels = wavenc->channels; - wave.common.wBitsPerSample = wavenc->width; - wave.common.dwSamplesPerSec = wavenc->rate; - - /* Fill out our wav-header with some information */ memcpy (wave.riff.id, "RIFF", 4); - wave.riff.len = audio_data_size + WAV_HEADER_LEN - 8; + wave.riff.len = + wavenc->meta_length + wavenc->audio_length + WAV_HEADER_LEN - 8; memcpy (wave.riff.wav_id, "WAVE", 4); memcpy (wave.format.id, "fmt ", 4); wave.format.len = 16; + wave.common.wChannels = wavenc->channels; + wave.common.wBitsPerSample = wavenc->width; + wave.common.dwSamplesPerSec = wavenc->rate; wave.common.wFormatTag = wavenc->format; wave.common.wBlockAlign = (wavenc->width / 8) * wave.common.wChannels; wave.common.dwAvgBytesPerSec = wave.common.wBlockAlign * wave.common.dwSamplesPerSec; memcpy (wave.data.id, "data", 4); - wave.data.len = audio_data_size; + wave.data.len = wavenc->audio_length; memcpy (header, (char *) wave.riff.id, 4); GST_WRITE_UINT32_LE (header + 4, wave.riff.len); @@ -217,7 +262,7 @@ gst_wavenc_create_header_buf (GstWavEnc * wavenc, guint audio_data_size) } static GstFlowReturn -gst_wavenc_push_header (GstWavEnc * wavenc, guint audio_data_size) +gst_wavenc_push_header (GstWavEnc * wavenc) { GstFlowReturn ret; GstBuffer *outbuf; @@ -227,9 +272,10 @@ gst_wavenc_push_header (GstWavEnc * wavenc, guint audio_data_size) gst_segment_init (&segment, GST_FORMAT_BYTES); gst_pad_push_event (wavenc->srcpad, gst_event_new_segment (&segment)); - GST_DEBUG_OBJECT (wavenc, "writing header with datasize=%u", audio_data_size); + GST_DEBUG_OBJECT (wavenc, "writing header, meta_size=%u, audio_size=%u", + wavenc->meta_length, wavenc->audio_length); - outbuf = gst_wavenc_create_header_buf (wavenc, audio_data_size); + outbuf = gst_wavenc_create_header_buf (wavenc); GST_BUFFER_OFFSET (outbuf) = 0; ret = gst_pad_push (wavenc->srcpad, outbuf); @@ -313,291 +359,417 @@ fail: return FALSE; } -#if 0 -static struct _maps +static void +gst_wavparse_tags_foreach (const GstTagList * tags, const gchar * tag, + gpointer data) { - const guint32 id; - const gchar *name; -} maps[] = { + const struct { - GST_RIFF_INFO_IARL, "Location"}, { - GST_RIFF_INFO_IART, "Artist"}, { - GST_RIFF_INFO_ICMS, "Commissioner"}, { - GST_RIFF_INFO_ICMT, "Comment"}, { - GST_RIFF_INFO_ICOP, "Copyright"}, { - GST_RIFF_INFO_ICRD, "Creation Date"}, { - GST_RIFF_INFO_IENG, "Engineer"}, { - GST_RIFF_INFO_IGNR, "Genre"}, { - GST_RIFF_INFO_IKEY, "Keywords"}, { - GST_RIFF_INFO_INAM, "Title"}, { - GST_RIFF_INFO_IPRD, "Product"}, { - GST_RIFF_INFO_ISBJ, "Subject"}, { - GST_RIFF_INFO_ISFT, "Software"}, { - GST_RIFF_INFO_ITCH, "Technician"} -}; - -static guint32 -get_id_from_name (const char *name) -{ - int i; - - for (i = 0; i < G_N_ELEMENTS (maps); i++) { - if (strcasecmp (maps[i].name, name) == 0) { - return maps[i].id; + guint32 fcc; + const gchar *tag; + } rifftags[] = { + { + GST_RIFF_INFO_IARL, GST_TAG_LOCATION}, { + GST_RIFF_INFO_IART, GST_TAG_ARTIST}, { + GST_RIFF_INFO_ICMT, GST_TAG_COMMENT}, { + GST_RIFF_INFO_ICOP, GST_TAG_COPYRIGHT}, { + GST_RIFF_INFO_ICRD, GST_TAG_DATE}, { + GST_RIFF_INFO_IGNR, GST_TAG_GENRE}, { + GST_RIFF_INFO_IKEY, GST_TAG_KEYWORDS}, { + GST_RIFF_INFO_INAM, GST_TAG_TITLE}, { + GST_RIFF_INFO_IPRD, GST_TAG_ALBUM}, { + GST_RIFF_INFO_ISBJ, GST_TAG_ALBUM_ARTIST}, { + GST_RIFF_INFO_ISFT, GST_TAG_ENCODER}, { + GST_RIFF_INFO_ISRC, GST_TAG_ISRC}, { + 0, NULL} + }; + gint n; + gchar *str = NULL; + GstByteWriter *bw = data; + for (n = 0; rifftags[n].fcc != 0; n++) { + if (!strcmp (rifftags[n].tag, tag)) { + if (rifftags[n].fcc == GST_RIFF_INFO_ICRD) { + GDate *date; + /* special case for the date tag */ + if (gst_tag_list_get_date (tags, tag, &date)) { + str = + g_strdup_printf ("%04d:%02d:%02d", g_date_get_year (date), + g_date_get_month (date), g_date_get_day (date)); + g_date_free (date); + } + } else { + gst_tag_list_get_string (tags, tag, &str); + } + if (str) { + gst_byte_writer_put_uint32_le (bw, rifftags[n].fcc); + gst_byte_writer_put_uint32_le (bw, GST_ROUND_UP_2 (strlen (str))); + gst_byte_writer_put_string (bw, str); + g_free (str); + str = NULL; + break; + } } } - return 0; } -static void -write_metadata (GstWavEnc * wavenc) +static GstFlowReturn +gst_wavenc_write_tags (GstWavEnc * wavenc) { - GString *info_str; - GList *props; - int total = 4; - gboolean need_to_write = FALSE; - - info_str = g_string_new ("LIST INFO"); - - for (props = wavenc->metadata->properties->properties; props; - props = props->next) { - GstPropsEntry *entry = props->data; - const char *name; - guint32 id; - - name = gst_props_entry_get_name (entry); - id = get_id_from_name (name); - if (id != 0) { - const char *text; - char *tmp; - int len, req, i; - - need_to_write = TRUE; /* We've got at least one entry */ - - gst_props_entry_get_string (entry, &text); - len = strlen (text) + 1; /* The length in the file includes the \0 */ - - tmp = g_strdup_printf ("%" GST_FOURCC_FORMAT "%d%s", GST_FOURCC_ARGS (id), - GUINT32_TO_LE (len), text); - g_string_append (info_str, tmp); - g_free (tmp); - - /* Check that we end on an even boundary */ - req = ((len + 8) + 1) & ~1; - for (i = 0; i < req - len; i++) { - g_string_append_printf (info_str, "%c", 0); - } + const GstTagList *user_tags; + GstTagList *tags; + guint size; + GstBuffer *buf; + GstByteWriter bw; - total += req; - } + g_return_val_if_fail (wavenc != NULL, GST_FLOW_OK); + + user_tags = gst_tag_setter_get_tag_list (GST_TAG_SETTER (wavenc)); + if ((!wavenc->tags) && (!user_tags)) { + GST_DEBUG_OBJECT (wavenc, "have no tags"); + return GST_FLOW_OK; } + tags = + gst_tag_list_merge (user_tags, wavenc->tags, + gst_tag_setter_get_tag_merge_mode (GST_TAG_SETTER (wavenc))); - if (need_to_write) { - GstBuffer *buf; + GST_DEBUG_OBJECT (wavenc, "writing tags"); - /* Now we've got all the strings together, we can write our length in */ - info_str->str[4] = GUINT32_TO_LE (total); + gst_byte_writer_init_with_size (&bw, 1024, FALSE); - buf = gst_buffer_new (); - gst_buffer_set_data (buf, info_str->str, info_str->len); + /* add LIST INFO chunk */ + gst_byte_writer_put_data (&bw, (const guint8 *) "LIST", 4); + gst_byte_writer_put_uint32_le (&bw, 0); + gst_byte_writer_put_data (&bw, (const guint8 *) "INFO", 4); - gst_pad_push (wavenc->srcpad, GST_DATA (buf)); - g_string_free (info_str, FALSE); - } + /* add tags */ + gst_tag_list_foreach (tags, gst_wavparse_tags_foreach, &bw); + + /* sets real size of LIST INFO chunk */ + size = gst_byte_writer_get_pos (&bw); + gst_byte_writer_set_pos (&bw, 4); + gst_byte_writer_put_uint32_le (&bw, size - 8); + + gst_tag_list_unref (tags); + + buf = gst_byte_writer_reset_and_get_buffer (&bw); + wavenc->meta_length += gst_buffer_get_size (buf); + return gst_pad_push (wavenc->srcpad, buf); } -static void -write_cues (GstWavEnc * wavenc) +static gboolean +gst_wavenc_is_cue_id_unique (guint32 id, GList * list) { - GString *cue_string, *point_string; - GstBuffer *buf; - GList *cue_list, *c; - int num_cues, total = 4; + GstWavEncCue *cue; - if (gst_props_get (wavenc->metadata->properties, - "cues", &cue_list, NULL) == FALSE) { - /* No cues, move along please, nothing to see here */ - return; + while (list) { + cue = list->data; + if (cue->id == id) + return FALSE; + list = g_list_next (list); } - /* Space for 'cue ', chunk size and number of cuepoints */ - cue_string = g_string_new ("cue "); -#define CUEPOINT_SIZE 24 - point_string = g_string_sized_new (CUEPOINT_SIZE); - - for (c = cue_list, num_cues = 0; c; c = c->next, num_cues++) { - GstCaps *cue_caps = c->data; - guint32 pos; - - gst_props_get (cue_caps->properties, "position", &pos, NULL); - - point_string->str[0] = GUINT32_TO_LE (num_cues + 1); - point_string->str[4] = GUINT32_TO_LE (0); - /* Fixme: There is probably a macro for this */ - point_string->str[8] = 'd'; - point_string->str[9] = 'a'; - point_string->str[10] = 't'; - point_string->str[11] = 'a'; - point_string->str[12] = GUINT32_TO_LE (0); - point_string->str[16] = GUINT32_TO_LE (0); - point_string->str[20] = GUINT32_TO_LE (pos); - - total += CUEPOINT_SIZE; - } + return TRUE; +} - /* Set the length and chunk size */ - cue_string->str[4] = GUINT32_TO_LE (total); - cue_string->str[8] = GUINT32_TO_LE (num_cues); - /* Stick the cue points on the end */ - g_string_append (cue_string, point_string->str); - g_string_free (point_string, TRUE); +static gboolean +gst_wavenc_parse_cue (GstWavEnc * wavenc, guint32 id, GstTocEntry * entry) +{ + gint64 start; + GstWavEncCue *cue; + + g_return_val_if_fail (entry != NULL, FALSE); - buf = gst_buffer_new (); - gst_buffer_set_data (buf, cue_string->str, cue_string->len); + gst_toc_entry_get_start_stop_times (entry, &start, NULL); - gst_pad_push (wavenc->srcpad, GST_DATA (buf)); - g_string_free (cue_string, FALSE); + cue = g_new (GstWavEncCue, 1); + cue->id = id; + cue->position = gst_util_uint64_scale_round (start, wavenc->rate, GST_SECOND); + memcpy (cue->data_chunk_id, "data", 4); + cue->chunk_start = 0; + cue->block_start = 0; + cue->sample_offset = cue->position; + wavenc->cues = g_list_append (wavenc->cues, cue); + + return TRUE; } -static void -write_labels (GstWavEnc * wavenc) +static gboolean +gst_wavenc_parse_labl (GstWavEnc * wavenc, guint32 id, GstTocEntry * entry) { - GstBuffer *buf; - GString *info_str; - int total = 4; - GList *caps; - - info_str = g_string_new ("LIST adtl"); - if (gst_props_get (wavenc->metadata->properties, "ltxts", &caps, NULL)) { - GList *p; - int i; - - for (p = caps, i = 1; p; p = p->next, i++) { - GstCaps *ltxt_caps = p->data; - GString *ltxt; - char *label = NULL; - int len, req, j; - - gst_props_get (ltxt_caps->properties, "name", &label, NULL); - len = strlen (label); - -#define LTXT_SIZE 28 - ltxt = g_string_new ("ltxt "); - ltxt->str[8] = GUINT32_TO_LE (i); /* Identifier */ - ltxt->str[12] = GUINT32_TO_LE (0); /* Sample Length */ - ltxt->str[16] = GUINT32_TO_LE (0); /* FIXME: Don't save the purpose yet */ - ltxt->str[20] = GUINT16_TO_LE (0); /* Country */ - ltxt->str[22] = GUINT16_TO_LE (0); /* Language */ - ltxt->str[24] = GUINT16_TO_LE (0); /* Dialect */ - ltxt->str[26] = GUINT16_TO_LE (0); /* Code Page */ - g_string_append (ltxt, label); - g_free (label); - - len += LTXT_SIZE; - - ltxt->str[4] = GUINT32_TO_LE (len); - - /* Check that we end on an even boundary */ - req = ((len + 8) + 1) & ~1; - for (j = 0; j < req - len; j++) { - g_string_append_printf (ltxt, "%c", 0); - } + gchar *tag; + GstTagList *tags; + GstWavEncLabl *labl; - total += req; + g_return_val_if_fail (entry != NULL, FALSE); - g_string_append (info_str, ltxt->str); - g_string_free (ltxt, TRUE); - } + tags = gst_toc_entry_get_tags (entry); + if (!tags) { + GST_INFO_OBJECT (wavenc, "no tags for entry: %d", id); + return FALSE; + } + if (!gst_tag_list_get_string (tags, GST_TAG_TITLE, &tag)) { + GST_INFO_OBJECT (wavenc, "no title tag for entry: %d", id); + return FALSE; } - if (gst_props_get (wavenc->metadata->properties, "labels", &caps, NULL)) { - GList *p; - int i; + labl = g_new (GstWavEncLabl, 1); + memcpy (labl->chunk_id, "labl", 4); + labl->chunk_data_size = 4 + strlen (tag) + 1; + labl->cue_point_id = id; + labl->text = tag; - for (p = caps, i = 1; p; p = p->next, i++) { - GstCaps *labl_caps = p->data; - GString *labl; - char *label = NULL; - int len, req, j; + GST_DEBUG_OBJECT (wavenc, "got labl: '%s'", tag); - gst_props_get (labl_caps->properties, "name", &label, NULL); - len = strlen (label); + wavenc->labls = g_list_append (wavenc->labls, labl); -#define LABL_SIZE 4 - labl = g_string_new ("labl "); - labl->str[8] = GUINT32_TO_LE (i); - g_string_append (labl, label); - g_free (label); + return TRUE; +} - len += LABL_SIZE; +static gboolean +gst_wavenc_parse_note (GstWavEnc * wavenc, guint32 id, GstTocEntry * entry) +{ + gchar *tag; + GstTagList *tags; + GstWavEncNote *note; + + g_return_val_if_fail (entry != NULL, FALSE); + tags = gst_toc_entry_get_tags (entry); + if (!tags) { + GST_INFO_OBJECT (wavenc, "no tags for entry: %d", id); + return FALSE; + } + if (!gst_tag_list_get_string (tags, GST_TAG_COMMENT, &tag)) { + GST_INFO_OBJECT (wavenc, "no comment tag for entry: %d", id); + return FALSE; + } - labl->str[4] = GUINT32_TO_LE (len); + note = g_new (GstWavEncNote, 1); + memcpy (note->chunk_id, "note", 4); + note->chunk_data_size = 4 + strlen (tag) + 1; + note->cue_point_id = id; + note->text = tag; - /* Check our size */ - req = ((len + 8) + 1) & ~1; - for (j = 0; j < req - len; j++) { - g_string_append_printf (labl, "%c", 0); - } + GST_DEBUG_OBJECT (wavenc, "got note: '%s'", tag); - total += req; + wavenc->notes = g_list_append (wavenc->notes, note); - g_string_append (info_str, labl->str); - g_string_free (labl, TRUE); - } + return TRUE; +} + +static gboolean +gst_wavenc_write_cues (guint8 ** data, GList * list) +{ + GstWavEncCue *cue; + + while (list) { + cue = list->data; + GST_WRITE_UINT32_LE (*data, cue->id); + GST_WRITE_UINT32_LE (*data + 4, cue->position); + memcpy (*data + 8, (gchar *) cue->data_chunk_id, 4); + GST_WRITE_UINT32_LE (*data + 12, cue->chunk_start); + GST_WRITE_UINT32_LE (*data + 16, cue->block_start); + GST_WRITE_UINT32_LE (*data + 20, cue->sample_offset); + *data += 24; + list = g_list_next (list); } - if (gst_props_get (wavenc->metadata->properties, "notes", &caps, NULL)) { - GList *p; - int i; + return TRUE; +} - for (p = caps, i = 1; p; p = p->next, i++) { - GstCaps *note_caps = p->data; - GString *note; - char *label = NULL; - int len, req, j; +static gboolean +gst_wavenc_write_labls (guint8 ** data, GList * list) +{ + GstWavEncLabl *labl; + + while (list) { + labl = list->data; + memcpy (*data, (gchar *) labl->chunk_id, 4); + GST_WRITE_UINT32_LE (*data + 4, labl->chunk_data_size); + GST_WRITE_UINT32_LE (*data + 8, labl->cue_point_id); + memcpy (*data + 12, (gchar *) labl->text, strlen (labl->text)); + *data += 8 + GST_ROUND_UP_2 (labl->chunk_data_size); + list = g_list_next (list); + } - gst_props_get (note_caps->properties, "name", &label, NULL); - len = strlen (label); + return TRUE; +} -#define NOTE_SIZE 4 - note = g_string_new ("note "); - note->str[8] = GUINT32_TO_LE (i); - g_string_append (note, label); - g_free (label); +static gboolean +gst_wavenc_write_notes (guint8 ** data, GList * list) +{ + GstWavEncNote *note; + + while (list) { + note = list->data; + memcpy (*data, (gchar *) note->chunk_id, 4); + GST_WRITE_UINT32_LE (*data + 4, note->chunk_data_size); + GST_WRITE_UINT32_LE (*data + 8, note->cue_point_id); + memcpy (*data + 12, (gchar *) note->text, strlen (note->text)); + *data += 8 + GST_ROUND_UP_2 (note->chunk_data_size); + list = g_list_next (list); + } - len += NOTE_SIZE; + return TRUE; +} - note->str[4] = GUINT32_TO_LE (len); +static GstFlowReturn +gst_wavenc_write_toc (GstWavEnc * wavenc) +{ + GList *list; + GstToc *toc; + GstTocEntry *entry, *subentry; + GstBuffer *buf; + GstMapInfo map; + guint8 *data; + guint32 ncues, size, cues_size, labls_size, notes_size; - /* Size check */ - req = ((len + 8) + 1) & ~1; - for (j = 0; j < req - len; j++) { - g_string_append_printf (note, "%c", 0); - } + if (!wavenc->toc) { + GST_DEBUG_OBJECT (wavenc, "have no toc, checking toc_setter"); + wavenc->toc = gst_toc_setter_get_toc (GST_TOC_SETTER (wavenc)); + } + if (!wavenc->toc) { + GST_WARNING_OBJECT (wavenc, "have no toc"); + return GST_FLOW_OK; + } - total += req; + toc = gst_toc_ref (wavenc->toc); + size = 0; + cues_size = 0; + labls_size = 0; + notes_size = 0; + + /* check if the TOC entries is valid */ + list = gst_toc_get_entries (toc); + entry = list->data; + if (gst_toc_entry_is_alternative (entry)) { + list = gst_toc_entry_get_sub_entries (entry); + while (list) { + subentry = list->data; + if (!gst_toc_entry_is_sequence (subentry)) + return FALSE; + list = g_list_next (list); + } + list = gst_toc_entry_get_sub_entries (entry); + } + if (gst_toc_entry_is_sequence (entry)) { + while (list) { + entry = list->data; + if (!gst_toc_entry_is_sequence (entry)) + return FALSE; + list = g_list_next (list); + } + list = gst_toc_get_entries (toc); + } - g_string_append (info_str, note->str); - g_string_free (note, TRUE); + ncues = g_list_length (list); + GST_DEBUG_OBJECT (wavenc, "number of cue entries: %d", ncues); + + while (list) { + guint32 id = 0; + gint64 id64; + const gchar *uid; + + entry = list->data; + uid = gst_toc_entry_get_uid (entry); + id64 = g_ascii_strtoll (uid, NULL, 0); + /* check if id unique compatible with guint32 else generate random */ + if (id64 >= 0 && gst_wavenc_is_cue_id_unique (id64, wavenc->cues)) { + id = (guint32) id64; + } else { + do { + id = g_random_int (); + } while (!gst_wavenc_is_cue_id_unique (id, wavenc->cues)); } + gst_wavenc_parse_cue (wavenc, id, entry); + gst_wavenc_parse_labl (wavenc, id, entry); + gst_wavenc_parse_note (wavenc, id, entry); + list = g_list_next (list); } - info_str->str[4] = GUINT32_TO_LE (total); + /* count cues size */ + if (wavenc->cues) { + cues_size = 24 * g_list_length (wavenc->cues); + size += 12 + cues_size; + } else { + GST_WARNING_OBJECT (wavenc, "cue's not found"); + return FALSE; + } + /* count labls size */ + if (wavenc->labls) { + list = wavenc->labls; + while (list) { + GstWavEncLabl *labl; + labl = list->data; + labls_size += 8 + GST_ROUND_UP_2 (labl->chunk_data_size); + list = g_list_next (list); + } + size += labls_size; + } + /* count notes size */ + if (wavenc->notes) { + list = wavenc->notes; + while (list) { + GstWavEncNote *note; + note = list->data; + notes_size += 8 + GST_ROUND_UP_2 (note->chunk_data_size); + list = g_list_next (list); + } + size += notes_size; + } + if (wavenc->labls || wavenc->notes) { + size += 12; + } + + buf = gst_buffer_new_and_alloc (size); + gst_buffer_map (buf, &map, GST_MAP_WRITE); + data = map.data; + memset (data, 0, size); + + /* write Cue Chunk */ + if (wavenc->cues) { + memcpy (data, (gchar *) "cue ", 4); + GST_WRITE_UINT32_LE (data + 4, 4 + cues_size); + GST_WRITE_UINT32_LE (data + 8, ncues); + data += 12; + gst_wavenc_write_cues (&data, wavenc->cues); + + /* write Associated Data List Chunk */ + if (wavenc->labls || wavenc->notes) { + memcpy (data, (gchar *) "LIST", 4); + GST_WRITE_UINT32_LE (data + 4, 4 + labls_size + notes_size); + memcpy (data + 8, (gchar *) "adtl", 4); + data += 12; + if (wavenc->labls) + gst_wavenc_write_labls (&data, wavenc->labls); + if (wavenc->notes) + gst_wavenc_write_notes (&data, wavenc->notes); + } + } + + /* free resources */ + if (toc) + gst_toc_unref (toc); + if (wavenc->cues) + g_list_free_full (wavenc->cues, g_free); + if (wavenc->labls) + g_list_free_full (wavenc->labls, g_free); + if (wavenc->notes) + g_list_free_full (wavenc->notes, g_free); - buf = gst_buffer_new (); - gst_buffer_set_data (buf, info_str->str, info_str->len); + gst_buffer_unmap (buf, &map); + wavenc->meta_length += gst_buffer_get_size (buf); - gst_pad_push (wavenc->srcpad, GST_DATA (buf)); - g_string_free (info_str, FALSE); + return gst_pad_push (wavenc->srcpad, buf); } -#endif static gboolean gst_wavenc_event (GstPad * pad, GstObject * parent, GstEvent * event) { gboolean res = TRUE; GstWavEnc *wavenc; + GstTagList *tags; + GstToc *toc; wavenc = GST_WAVENC (parent); @@ -613,18 +785,24 @@ gst_wavenc_event (GstPad * pad, GstObject * parent, GstEvent * event) gst_event_unref (event); break; } - case GST_EVENT_EOS:{ + case GST_EVENT_EOS: + { + GstFlowReturn flow; GST_DEBUG_OBJECT (wavenc, "got EOS"); -#if 0 - /* Write our metadata if we have any */ - if (wavenc->metadata) { - write_metadata (wavenc); - write_cues (wavenc); - write_labels (wavenc); + + flow = gst_wavenc_write_toc (wavenc); + if (flow != GST_FLOW_OK) { + GST_WARNING_OBJECT (wavenc, "error pushing toc: %s", + gst_flow_get_name (flow)); } -#endif + flow = gst_wavenc_write_tags (wavenc); + if (flow != GST_FLOW_OK) { + GST_WARNING_OBJECT (wavenc, "error pushing tags: %s", + gst_flow_get_name (flow)); + } + /* write header with correct length values */ - gst_wavenc_push_header (wavenc, wavenc->length); + gst_wavenc_push_header (wavenc); /* we're done with this file */ wavenc->finished_properly = TRUE; @@ -638,6 +816,30 @@ gst_wavenc_event (GstPad * pad, GstObject * parent, GstEvent * event) * anyway. We'll send our own newsegment event */ gst_event_unref (event); break; + case GST_EVENT_TOC: + gst_event_parse_toc (event, &toc, NULL); + if (toc) { + if (wavenc->toc != toc) { + if (wavenc->toc) + gst_toc_unref (wavenc->toc); + wavenc->toc = toc; + } else { + gst_toc_unref (toc); + } + } + res = gst_pad_event_default (pad, parent, event); + break; + case GST_EVENT_TAG: + gst_event_parse_tag (event, &tags); + if (tags) { + if (wavenc->tags != tags) { + if (wavenc->tags) + gst_tag_list_unref (wavenc->tags); + wavenc->tags = gst_tag_list_ref (tags); + } + } + res = gst_pad_event_default (pad, parent, event); + break; default: res = gst_pad_event_default (pad, parent, event); break; @@ -654,17 +856,18 @@ gst_wavenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) g_return_val_if_fail (wavenc->channels > 0, GST_FLOW_FLUSHING); - if (!wavenc->sent_header) { - /* use bogus size initially, we'll write the real - * header when we get EOS and know the exact length */ - flow = gst_wavenc_push_header (wavenc, 0x7FFF0000); - + if (G_UNLIKELY (!wavenc->sent_header)) { /* starting a file, means we have to finish it properly */ wavenc->finished_properly = FALSE; - if (flow != GST_FLOW_OK) + /* use bogus size initially, we'll write the real + * header when we get EOS and know the exact length */ + flow = gst_wavenc_push_header (wavenc); + if (flow != GST_FLOW_OK) { + GST_WARNING_OBJECT (wavenc, "error pushing header: %s", + gst_flow_get_name (flow)); return flow; - + } GST_DEBUG_OBJECT (wavenc, "wrote dummy header"); wavenc->sent_header = TRUE; } @@ -675,10 +878,10 @@ gst_wavenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) buf = gst_buffer_make_writable (buf); - GST_BUFFER_OFFSET (buf) = WAV_HEADER_LEN + wavenc->length; + GST_BUFFER_OFFSET (buf) = WAV_HEADER_LEN + wavenc->audio_length; GST_BUFFER_OFFSET_END (buf) = GST_BUFFER_OFFSET_NONE; - wavenc->length += gst_buffer_get_size (buf); + wavenc->audio_length += gst_buffer_get_size (buf); flow = gst_pad_push (wavenc->srcpad, buf); @@ -697,7 +900,8 @@ gst_wavenc_change_state (GstElement * element, GstStateChange transition) wavenc->channels = 0; wavenc->width = 0; wavenc->rate = 0; - wavenc->length = 0; + wavenc->audio_length = 0; + wavenc->meta_length = 0; wavenc->sent_header = FALSE; /* its true because we haven't writen anything */ wavenc->finished_properly = TRUE; @@ -719,6 +923,20 @@ gst_wavenc_change_state (GstElement * element, GstStateChange transition) "before shutdown")); } break; + case GST_STATE_CHANGE_READY_TO_NULL: + GST_DEBUG_OBJECT (wavenc, "tags: %p", wavenc->tags); + if (wavenc->tags) { + gst_tag_list_unref (wavenc->tags); + wavenc->tags = NULL; + } + GST_DEBUG_OBJECT (wavenc, "toc: %p", wavenc->toc); + if (wavenc->toc) { + gst_toc_unref (wavenc->toc); + wavenc->toc = NULL; + } + gst_tag_setter_reset_tags (GST_TAG_SETTER (wavenc)); + gst_toc_setter_reset (GST_TOC_SETTER (wavenc)); + break; default: break; } diff --git a/gst/wavenc/gstwavenc.h b/gst/wavenc/gstwavenc.h index 3fe167ec674517f61473d60b333e5e7567fb4234..b6f8df4c163534aeef2636143deda618daa39798 100644 --- a/gst/wavenc/gstwavenc.h +++ b/gst/wavenc/gstwavenc.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ @@ -46,12 +46,21 @@ struct _GstWavEnc { GstPad *sinkpad; GstPad *srcpad; + GstTagList *tags; + GstToc *toc; + GList *cues; + GList *labls; + GList *notes; + /* useful audio data */ guint16 format; guint width; guint rate; guint channels; - guint32 length; + + /* data sizes */ + guint32 audio_length; + guint32 meta_length; gboolean sent_header; gboolean finished_properly; diff --git a/gst/wavparse/Makefile.in b/gst/wavparse/Makefile.in index 9d8eaac2e6364bc1d4299d2c3526065ded4b0ad4..0f256bb55908da23acbb2aa6b4e6ebd55a87d4e3 100644 --- a/gst/wavparse/Makefile.in +++ b/gst/wavparse/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/wavparse -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -136,10 +162,23 @@ libgstwavparse_la_OBJECTS = $(am_libgstwavparse_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstwavparse_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstwavparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstwavparse_la_CFLAGS) $(CFLAGS) \ $(libgstwavparse_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -152,20 +191,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstwavparse_la_SOURCES) DIST_SOURCES = $(libgstwavparse_la_SOURCES) am__can_run_installinfo = \ @@ -174,6 +209,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -341,6 +393,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -554,6 +607,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -580,12 +634,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstwavparse.la: $(libgstwavparse_la_OBJECTS) $(libgstwavparse_la_DEPENDENCIES) $(EXTRA_libgstwavparse_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstwavparse_la_LINK) -rpath $(plugindir) $(libgstwavparse_la_OBJECTS) $(libgstwavparse_la_LIBADD) $(LIBS) @@ -598,22 +655,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwavparse_la-gstwavparse.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -631,26 +691,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -662,15 +711,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -679,6 +724,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -823,19 +883,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c index 1aee9c4b5000b756c304b067cc983ab6cb5f365a..cc9d35eb86d3c7aac29a67d25e13d457e7e6230b 100644 --- a/gst/wavparse/gstwavparse.c +++ b/gst/wavparse/gstwavparse.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -54,7 +54,6 @@ #include <math.h> #include "gstwavparse.h" -#include "gst/riff/riff-ids.h" #include "gst/riff/riff-media.h" #include <gst/base/gsttypefindhelper.h> #include <gst/gst-i18n-plugin.h> @@ -139,7 +138,7 @@ typedef struct */ guint32 cue_point_id; gchar *text; -} GstWavParseLabl; +} GstWavParseLabl, GstWavParseNote; static void gst_wavparse_class_init (GstWavParseClass * klass) @@ -1219,14 +1218,43 @@ gst_wavparse_labl_chunk (GstWavParse * wav, const guint8 * data, guint32 size) /* parse data */ data += 8; labl->cue_point_id = GST_READ_UINT32_LE (data); - labl->text = (gchar *) g_new0 (gchar *, size - 4 + 1); - memcpy (labl->text, data + 4, size - 4); + labl->text = g_memdup (data + 4, size - 4); wav->labls = g_list_append (wav->labls, labl); return TRUE; } +/* + * gst_wavparse_note_chunk: + * @wav GstWavParse object + * @data holder for data + * @size holder for data size + * + * Parse note from @data to wav->notes. + * + * Returns: %TRUE when note chunk is available + */ +static gboolean +gst_wavparse_note_chunk (GstWavParse * wav, const guint8 * data, guint32 size) +{ + GstWavParseNote *note; + + if (size < 5) + return FALSE; + + note = g_new0 (GstWavParseNote, 1); + + /* parse data */ + data += 8; + note->cue_point_id = GST_READ_UINT32_LE (data); + note->text = g_memdup (data + 4, size - 4); + + wav->notes = g_list_append (wav->notes, note); + + return TRUE; +} + /* * gst_wavparse_adtl_chunk: * @wav GstWavParse object @@ -1248,6 +1276,10 @@ gst_wavparse_adtl_chunk (GstWavParse * wav, const guint8 * data, guint32 size) switch (ltag) { case GST_RIFF_TAG_labl: gst_wavparse_labl_chunk (wav, data + offset, size); + break; + case GST_RIFF_TAG_note: + gst_wavparse_note_chunk (wav, data + offset, size); + break; default: break; } @@ -1258,6 +1290,24 @@ gst_wavparse_adtl_chunk (GstWavParse * wav, const guint8 * data, guint32 size) return TRUE; } +static GstTagList * +gst_wavparse_get_tags_toc_entry (GstToc * toc, gchar * id) +{ + GstTagList *tags = NULL; + GstTocEntry *entry = NULL; + + entry = gst_toc_find_entry (toc, id); + if (entry != NULL) { + tags = gst_toc_entry_get_tags (entry); + if (tags == NULL) { + tags = gst_tag_list_new_empty (); + gst_toc_entry_set_tags (entry, tags); + } + } + + return tags; +} + /* * gst_wavparse_create_toc: * @wav GstWavParse object @@ -1272,6 +1322,7 @@ gst_wavparse_create_toc (GstWavParse * wav) GList *list; GstWavParseCue *cue; GstWavParseLabl *labl; + GstWavParseNote *note; GstTagList *tags; GstToc *toc; GstTocEntry *entry = NULL, *cur_subentry = NULL, *prev_subentry = NULL; @@ -1296,19 +1347,19 @@ gst_wavparse_create_toc (GstWavParse * wav) gst_toc_entry_set_start_stop_times (entry, 0, wav->duration); gst_toc_append_entry (toc, entry); - /* add chapters in cue edition */ - list = g_list_first (wav->cues); + /* add tracks in cue edition */ + list = wav->cues; while (list) { cue = list->data; prev_subentry = cur_subentry; - /* previous chapter stop time = current chapter start time */ + /* previous track stop time = current track start time */ if (prev_subentry != NULL) { gst_toc_entry_get_start_stop_times (prev_subentry, &start, NULL); stop = gst_util_uint64_scale_round (cue->position, GST_SECOND, wav->rate); gst_toc_entry_set_start_stop_times (prev_subentry, start, stop); } id = g_strdup_printf ("%08x", cue->id); - cur_subentry = gst_toc_entry_new (GST_TOC_ENTRY_TYPE_CHAPTER, id); + cur_subentry = gst_toc_entry_new (GST_TOC_ENTRY_TYPE_TRACK, id); g_free (id); start = gst_util_uint64_scale_round (cue->position, GST_SECOND, wav->rate); stop = wav->duration; @@ -1317,18 +1368,28 @@ gst_wavparse_create_toc (GstWavParse * wav) list = g_list_next (list); } - /* add tags in chapters */ - list = g_list_first (wav->labls); + /* add tags in tracks */ + list = wav->labls; while (list) { labl = list->data; id = g_strdup_printf ("%08x", labl->cue_point_id); - cur_subentry = gst_toc_find_entry (toc, id); + tags = gst_wavparse_get_tags_toc_entry (toc, id); g_free (id); - if (cur_subentry != NULL) { - tags = gst_tag_list_new_empty (); + if (tags != NULL) { gst_tag_list_add (tags, GST_TAG_MERGE_APPEND, GST_TAG_TITLE, labl->text, NULL); - gst_toc_entry_set_tags (cur_subentry, tags); + } + list = g_list_next (list); + } + list = wav->notes; + while (list) { + note = list->data; + id = g_strdup_printf ("%08x", note->cue_point_id); + tags = gst_wavparse_get_tags_toc_entry (toc, id); + g_free (id); + if (tags != NULL) { + gst_tag_list_add (tags, GST_TAG_MERGE_PREPEND, GST_TAG_COMMENT, + note->text, NULL); } list = g_list_next (list); } @@ -2304,6 +2365,8 @@ gst_wavparse_loop (GstPad * pad) { GstFlowReturn ret; GstWavParse *wav = GST_WAVPARSE (GST_PAD_PARENT (pad)); + GstEvent *event; + gchar *stream_id; GST_LOG_OBJECT (wav, "process data"); @@ -2313,6 +2376,13 @@ gst_wavparse_loop (GstPad * pad) if ((ret = gst_wavparse_stream_init (wav)) != GST_FLOW_OK) goto pause; + stream_id = + gst_pad_create_stream_id (wav->srcpad, GST_ELEMENT_CAST (wav), NULL); + event = gst_event_new_stream_start (stream_id); + gst_event_set_group_id (event, gst_util_group_id_next ()); + gst_pad_push_event (wav->srcpad, event); + g_free (stream_id); + wav->state = GST_WAVPARSE_HEADER; /* fall-through */ diff --git a/gst/wavparse/gstwavparse.h b/gst/wavparse/gstwavparse.h index ad8e02b19b84d5e041cea24ebd664b16d547dfcb..7dc43bc1bef54dff1d754be232e4bc187827385b 100644 --- a/gst/wavparse/gstwavparse.h +++ b/gst/wavparse/gstwavparse.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ @@ -69,6 +69,7 @@ struct _GstWavParse { GstToc *toc; GList *cues; GList *labls; + GList *notes; GstEvent *start_segment; /* WAVE decoding state */ diff --git a/gst/y4m/Makefile.in b/gst/y4m/Makefile.in index 968a871f6fa5ad9959f62144dc71b12483931217..badfcee96bd6df716aa4fbd26d76117b882b7d31 100644 --- a/gst/y4m/Makefile.in +++ b/gst/y4m/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gst/y4m -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -135,10 +161,23 @@ libgsty4menc_la_OBJECTS = $(am_libgsty4menc_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgsty4menc_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgsty4menc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgsty4menc_la_CFLAGS) $(CFLAGS) \ $(libgsty4menc_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -151,20 +190,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgsty4menc_la_SOURCES) DIST_SOURCES = $(libgsty4menc_la_SOURCES) am__can_run_installinfo = \ @@ -173,6 +208,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -340,6 +392,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -541,6 +594,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -567,12 +621,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgsty4menc.la: $(libgsty4menc_la_OBJECTS) $(libgsty4menc_la_DEPENDENCIES) $(EXTRA_libgsty4menc_la_DEPENDENCIES) $(AM_V_CCLD)$(libgsty4menc_la_LINK) -rpath $(plugindir) $(libgsty4menc_la_OBJECTS) $(libgsty4menc_la_LIBADD) $(LIBS) @@ -585,22 +642,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsty4menc_la-gsty4mencode.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -618,26 +678,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -649,15 +698,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -666,6 +711,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -810,19 +870,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES Android.mk: Makefile.am $(BUILT_SOURCES) diff --git a/gst/y4m/gsty4mencode.c b/gst/y4m/gsty4mencode.c index 8d0641191d81dec48c5e46a8ce869589efeecde9..4926cb7a6c043ba606a455af4e2cf5443c446c3c 100644 --- a/gst/y4m/gsty4mencode.c +++ b/gst/y4m/gsty4mencode.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-y4menc diff --git a/gst/y4m/gsty4mencode.h b/gst/y4m/gsty4mencode.h index 9eb820e4895e9dd03abedc3ecbc930e105418a38..27bd05ec1f3243fa05bb91adeda5254f70c9b45c 100644 --- a/gst/y4m/gsty4mencode.h +++ b/gst/y4m/gsty4mencode.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/ltmain.sh b/ltmain.sh index 499e473fb966a9f1d74a216cdd0252c13a80c148..68c6d96ca5e37ac001a33a6d6a8e2d3f6fded2a2 100644 --- a/ltmain.sh +++ b/ltmain.sh @@ -70,7 +70,7 @@ # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.2 +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.3 # automake: $automake_version # autoconf: $autoconf_version # @@ -80,7 +80,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1.2" +VERSION="2.4.2 Debian-2.4.2-1.3" TIMESTAMP="" package_revision=1.3337 diff --git a/m4/Makefile.in b/m4/Makefile.in index 52355a2b369296f956fb7550307eb0e1ca26642a..0156d4443faea6ae1bf8e7026fb34faf9bc38ae9 100644 --- a/m4/Makefile.in +++ b/m4/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,23 +14,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -52,14 +79,13 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = m4 -DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -95,12 +121,18 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ @@ -108,6 +140,7 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) AALIB_CFLAGS = @AALIB_CFLAGS@ AALIB_CONFIG = @AALIB_CONFIG@ @@ -273,6 +306,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -509,11 +543,11 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -tags: TAGS -TAGS: +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -649,15 +683,16 @@ uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in index ac0c1bc5e0b48bf596d34e61d5703df5293b8446..f2b6e0c8c0a9bc3f6d0e38775f9759e7c576d13d 100644 --- a/pkgconfig/Makefile.in +++ b/pkgconfig/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,23 +14,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -52,7 +79,7 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = pkgconfig -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(srcdir)/gstreamer-plugins-good-uninstalled.pc.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -60,7 +87,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -96,12 +122,18 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = gstreamer-plugins-good-uninstalled.pc CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ @@ -109,6 +141,7 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) AALIB_CFLAGS = @AALIB_CFLAGS@ AALIB_CONFIG = @AALIB_CONFIG@ @@ -274,6 +307,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -498,11 +532,11 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -tags: TAGS -TAGS: +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -640,16 +674,17 @@ uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool distclean distclean-generic distclean-libtool \ - distdir dvi dvi-am html html-am info info-am install \ - install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - uninstall uninstall-am + clean-libtool cscopelist-am ctags-am distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am ### all-local: $(pcverfiles) $(pcverfiles_uninstalled) diff --git a/po/POTFILES.in b/po/POTFILES.in index ae3438c302edf0971cd398248c15d90197132034..596eda7e77c9e555b7e6331edac4a566e0f4bcec 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,7 +1,9 @@ -ext/pulse/pulsesink.c ext/flac/gstflacdec.c +ext/jack/gstjackaudiosink.c +ext/jack/gstjackaudiosrc.c ext/jpeg/gstjpegdec.c ext/libpng/gstpngdec.c +ext/pulse/pulsesink.c ext/shout2/gstshout2.c ext/soup/gstsouphttpsrc.c gst/audioparsers/gstwavpackparse.c @@ -10,13 +12,15 @@ gst/avi/gstavimux.c gst/isomp4/qtdemux.c gst/rtsp/gstrtspsrc.c gst/wavparse/gstwavparse.c -sys/oss/gstosssink.c -sys/oss/gstosssrc.c sys/oss4/oss4-sink.c sys/oss4/oss4-source.c +sys/oss/gstosssink.c +sys/oss/gstosssrc.c +sys/sunaudio/gstsunaudiomixeroptions.c sys/sunaudio/gstsunaudiomixertrack.c sys/v4l2/gstv4l2bufferpool.c sys/v4l2/gstv4l2object.c sys/v4l2/gstv4l2radio.c +sys/v4l2/gstv4l2videooverlay.c sys/v4l2/v4l2_calls.c sys/ximage/gstximagesrc.c diff --git a/po/af.gmo b/po/af.gmo index ffcee2f8ec59dd11cf75577add40bec0de47d823..ec87c10e0babfb28226682a8896bdb6051f04459 100644 Binary files a/po/af.gmo and b/po/af.gmo differ diff --git a/po/af.po b/po/af.po index afe938a58d1a4215016f10b08b92c342acfe6919..f97ac7451df9f2028eade6aef36e12d18a5f8a4d 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2004-03-18 14:16+0200\n" "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n" "Language-Team: Afrikaans <i18n@af.org.za>\n" @@ -16,18 +16,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#. TRANSLATORS: 'song title' by 'artist name' -#, c-format -msgid "'%s' by '%s'" +msgid "Jack server not found" msgstr "" msgid "Failed to decode JPEG image" msgstr "" +#. TRANSLATORS: 'song title' by 'artist name' +#, c-format +msgid "'%s' by '%s'" +msgstr "" + #, fuzzy msgid "Could not connect to server" msgstr "Kon nie beheertoestel \"%s\" toemaak nie." +msgid "No URL set." +msgstr "" + msgid "Server does not support seeking." msgstr "" @@ -49,9 +55,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "" @@ -64,6 +67,9 @@ msgstr "" msgid "This file is invalid and cannot be played." msgstr "" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "" @@ -108,6 +114,23 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Kon nie oudio-toestel \"%s\" oopmaak vir skryf nie." +msgid "" +"Could not open audio device for playback. This version of the Open Sound " +"System is not supported by this element." +msgstr "" + +msgid "Playback is not supported by this audio device." +msgstr "" + +msgid "Audio playback error." +msgstr "" + +msgid "Recording is not supported by this audio device." +msgstr "" + +msgid "Error recording from audio device." +msgstr "" + msgid "" "Could not open audio device for recording. You don't have permission to open " "the device." @@ -117,21 +140,33 @@ msgstr "" msgid "Could not open audio device for recording." msgstr "Kon nie CD-toestel oopmaak om te lees nie." -msgid "" -"Could not open audio device for playback. This version of the Open Sound " -"System is not supported by this element." +#, fuzzy +msgid "Record Source" +msgstr "Neem op" + +msgid "Microphone" +msgstr "Mikrofoon" + +#, fuzzy +msgid "Line In" +msgstr "Lyn-in" + +msgid "Internal CD" msgstr "" -msgid "Playback is not supported by this audio device." +msgid "SPDIF In" msgstr "" -msgid "Audio playback error." +msgid "AUX 1 In" msgstr "" -msgid "Recording is not supported by this audio device." +msgid "AUX 2 In" msgstr "" -msgid "Error recording from audio device." +msgid "Codec Loopback" +msgstr "" + +msgid "SunVTS Loopback" msgstr "" msgid "Volume" @@ -232,6 +267,10 @@ msgstr "Kon nie oudio-toestel \"%s\" toemaak nie." msgid "Failed to change mute state for device '%s'." msgstr "Kon nie buffers vanaf toestel \"%s\" verkry nie." +#, fuzzy, c-format +msgid "Cannot identify device '%s'." +msgstr "Kon nie skryf na toestel \"%s\" nie." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -254,10 +293,6 @@ msgstr "" msgid "Failed getting controls attributes on device '%s'." msgstr "" -#, fuzzy, c-format -msgid "Cannot identify device '%s'." -msgstr "Kon nie skryf na toestel \"%s\" nie." - #, c-format msgid "This isn't a device '%s'." msgstr "" @@ -339,9 +374,6 @@ msgstr "" #~ msgid "Line-in" #~ msgstr "Lyn-in" -#~ msgid "Microphone" -#~ msgstr "Mikrofoon" - #~ msgid "CD" #~ msgstr "CD" @@ -402,10 +434,6 @@ msgstr "" #~ msgid "Side" #~ msgstr "Video" -#, fuzzy -#~ msgid "Line In" -#~ msgstr "Lyn-in" - #, fuzzy #~ msgid "Video In" #~ msgstr "Video" @@ -422,10 +450,6 @@ msgstr "" #~ msgid "Microphone Boost" #~ msgstr "Mikrofoon" -#, fuzzy -#~ msgid "Record Source" -#~ msgstr "Neem op" - #, fuzzy #~ msgid "Monitor Source" #~ msgstr "Monitor" diff --git a/po/az.gmo b/po/az.gmo index 34490f3bf085d60233bfd878e742f41cc0fb15dd..3586969f1d4282d72c65a9e4d97e716df0ae1818 100644 Binary files a/po/az.gmo and b/po/az.gmo differ diff --git a/po/az.po b/po/az.po index a0fd18820d6bed6ac13f78ed32ce4165a9082b13..a9b7f6492b02a2db2e4764d21e84f8ac1476b499 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2004-03-19 18:29+0200\n" "Last-Translator: Metin Amiroff <metin@karegen.com>\n" "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n" @@ -17,18 +17,24 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.0.2\n" -#. TRANSLATORS: 'song title' by 'artist name' -#, c-format -msgid "'%s' by '%s'" +msgid "Jack server not found" msgstr "" msgid "Failed to decode JPEG image" msgstr "" +#. TRANSLATORS: 'song title' by 'artist name' +#, c-format +msgid "'%s' by '%s'" +msgstr "" + #, fuzzy msgid "Could not connect to server" msgstr "\"%s\" idarÉ™ avadanlığı baÄŸlana bilmÉ™di." +msgid "No URL set." +msgstr "" + msgid "Server does not support seeking." msgstr "" @@ -50,9 +56,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "" @@ -65,6 +68,9 @@ msgstr "" msgid "This file is invalid and cannot be played." msgstr "" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "" @@ -109,6 +115,23 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "\"%s\" audio avadanlığı yazma üçün açıla bilmÉ™di." +msgid "" +"Could not open audio device for playback. This version of the Open Sound " +"System is not supported by this element." +msgstr "" + +msgid "Playback is not supported by this audio device." +msgstr "" + +msgid "Audio playback error." +msgstr "" + +msgid "Recording is not supported by this audio device." +msgstr "" + +msgid "Error recording from audio device." +msgstr "" + msgid "" "Could not open audio device for recording. You don't have permission to open " "the device." @@ -118,21 +141,33 @@ msgstr "" msgid "Could not open audio device for recording." msgstr "CD avadanlığı oxuma üçün açıla bilmÉ™di." -msgid "" -"Could not open audio device for playback. This version of the Open Sound " -"System is not supported by this element." +#, fuzzy +msgid "Record Source" +msgstr "Qeyd" + +msgid "Microphone" +msgstr "Mikrofon" + +#, fuzzy +msgid "Line In" +msgstr "XÉ™td-giriÅŸ" + +msgid "Internal CD" msgstr "" -msgid "Playback is not supported by this audio device." +msgid "SPDIF In" msgstr "" -msgid "Audio playback error." +msgid "AUX 1 In" msgstr "" -msgid "Recording is not supported by this audio device." +msgid "AUX 2 In" msgstr "" -msgid "Error recording from audio device." +msgid "Codec Loopback" +msgstr "" + +msgid "SunVTS Loopback" msgstr "" msgid "Volume" @@ -233,6 +268,10 @@ msgstr "\"%s\" audio avadanlığı baÄŸlana bilmÉ™di." msgid "Failed to change mute state for device '%s'." msgstr "\"%s\" avadanlığından bufferlÉ™r alına bilmÉ™di." +#, fuzzy, c-format +msgid "Cannot identify device '%s'." +msgstr "\"%s\" avadanlığına yazıla bilmÉ™di." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -255,10 +294,6 @@ msgstr "" msgid "Failed getting controls attributes on device '%s'." msgstr "" -#, fuzzy, c-format -msgid "Cannot identify device '%s'." -msgstr "\"%s\" avadanlığına yazıla bilmÉ™di." - #, c-format msgid "This isn't a device '%s'." msgstr "" @@ -340,9 +375,6 @@ msgstr "" #~ msgid "Line-in" #~ msgstr "XÉ™td-giriÅŸ" -#~ msgid "Microphone" -#~ msgstr "Mikrofon" - #~ msgid "CD" #~ msgstr "CD" @@ -403,10 +435,6 @@ msgstr "" #~ msgid "Side" #~ msgstr "Video" -#, fuzzy -#~ msgid "Line In" -#~ msgstr "XÉ™td-giriÅŸ" - #, fuzzy #~ msgid "Video In" #~ msgstr "Video" @@ -423,10 +451,6 @@ msgstr "" #~ msgid "Microphone Boost" #~ msgstr "Mikrofon" -#, fuzzy -#~ msgid "Record Source" -#~ msgstr "Qeyd" - #, fuzzy #~ msgid "Monitor Source" #~ msgstr "Monitor" diff --git a/po/bg.gmo b/po/bg.gmo index 8c6a41814a72d366ee97b3980af673609a9d3034..08f85d4975e316a1094a67216e5bff5cbe903f5a 100644 Binary files a/po/bg.gmo and b/po/bg.gmo differ diff --git a/po/bg.po b/po/bg.po index a859def0915d974de20328ef140a782066822844..b5268cf7d81abdbaeee66920fe8aaeaf36af3df2 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2011-04-26 22:35+0300\n" "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n" "Language-Team: Bulgarian <dict@fsa-bg.org>\n" @@ -18,17 +18,23 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "ÐеуÑпешно декодиране на изображение, формат JPEG." + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "„%s“ от „%s“" -msgid "Failed to decode JPEG image" -msgstr "ÐеуÑпешно декодиране на изображение, формат JPEG." - msgid "Could not connect to server" msgstr "Ðе може да Ñе оÑъщеÑтви връзка към Ñървър." +msgid "No URL set." +msgstr "Ðе е зададен адреÑ." + msgid "Server does not support seeking." msgstr "Сървърът не поддържа Ñ‚ÑŠÑ€Ñене." @@ -48,9 +54,6 @@ msgstr "Възникна мрежова грешка или Ñървърът н msgid "Server sent bad data." msgstr "Сървърът изпрати лоши данни." -msgid "No URL set." -msgstr "Ðе е зададен адреÑ." - msgid "Internal data stream error." msgstr "Вътрешна грешка на потока от данни." @@ -63,6 +66,9 @@ msgstr "Този файл не Ñъдържа изпълними потоци." msgid "This file is invalid and cannot be played." msgstr "Този файл е повреден и не може да бъде изпълнен." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Този файл е повреден и не може да бъде изпълнен." @@ -114,15 +120,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "УÑтройÑтвото не може да Ñе отвори за изпълнение." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Ðудио уÑтройÑтвото не може да Ñе отвори за запиÑ, нÑмате права за това." - -msgid "Could not open audio device for recording." -msgstr "Ðудио уÑтройÑтвото не може да Ñе отвори за запиÑ." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -142,6 +139,44 @@ msgstr "Това аудио уÑтройÑтво не поддържа запи msgid "Error recording from audio device." msgstr "Грешка при запиÑа от аудио уÑтройÑтвото." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Ðудио уÑтройÑтвото не може да Ñе отвори за запиÑ, нÑмате права за това." + +msgid "Could not open audio device for recording." +msgstr "Ðудио уÑтройÑтвото не може да Ñе отвори за запиÑ." + +msgid "Record Source" +msgstr "Източник за запиÑ" + +msgid "Microphone" +msgstr "Микрофон" + +msgid "Line In" +msgstr "Вход" + +msgid "Internal CD" +msgstr "Вътрешно CD" + +msgid "SPDIF In" +msgstr "Вход SPDIF" + +msgid "AUX 1 In" +msgstr "Вход AUX 1" + +msgid "AUX 2 In" +msgstr "Вход AUX 2" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Обратна връзка" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Обратна връзка" + msgid "Volume" msgstr "Сила на звука" @@ -241,6 +276,10 @@ msgstr "ÐеуÑпешно задаване на вход %d на уÑÑ‚Ñ€Ð¾Ð¹Ñ msgid "Failed to change mute state for device '%s'." msgstr "ÐеуÑпешно получаване на Ñилата на Ñигнала на уÑтройÑтво „%s“." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "УÑтройÑтвото „%s“ не може да Ñе идентифицира." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -265,10 +304,6 @@ msgstr "ÐеуÑпешно запитване за нормата на уÑÑ‚Ñ€ msgid "Failed getting controls attributes on device '%s'." msgstr "ÐеуÑпешно получаване на контролните атрибути на уÑтройÑтвото „%s“." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "УÑтройÑтвото „%s“ не може да Ñе идентифицира." - #, c-format msgid "This isn't a device '%s'." msgstr "„%s“ не е уÑтройÑтво." @@ -362,9 +397,6 @@ msgstr "Работата без чаÑовник е невъзможна." #~ msgid "Line-in" #~ msgstr "Вход" -#~ msgid "Microphone" -#~ msgstr "Микрофон" - #~ msgid "CD" #~ msgstr "CD" @@ -463,21 +495,9 @@ msgstr "Работата без чаÑовник е невъзможна." #~ msgid "Telephone" #~ msgstr "Телефон" -#~ msgid "Line In" -#~ msgstr "Вход" - -#~ msgid "Internal CD" -#~ msgstr "Вътрешно CD" - #~ msgid "Video In" #~ msgstr "Видео вход" -#~ msgid "AUX 1 In" -#~ msgstr "Вход AUX 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Вход AUX 2" - #~ msgid "AUX In" #~ msgstr "Вход AUX" @@ -490,9 +510,6 @@ msgstr "Работата без чаÑовник е невъзможна." #~ msgid "Microphone Boost" #~ msgstr "УÑилване на микрофона" -#~ msgid "Loopback" -#~ msgstr "Обратна връзка" - #~ msgid "Diagnostic" #~ msgstr "ДиагноÑтика" @@ -505,9 +522,6 @@ msgstr "Работата без чаÑовник е невъзможна." #~ msgid "Input" #~ msgstr "Вход" -#~ msgid "Record Source" -#~ msgstr "Източник за запиÑ" - #~ msgid "Monitor Source" #~ msgstr "Източник за звуков монитор" @@ -547,9 +561,6 @@ msgstr "Работата без чаÑовник е невъзможна." #~ msgid "Input Mix" #~ msgstr "СмеÑител на входа" -#~ msgid "SPDIF In" -#~ msgstr "Вход SPDIF" - #~ msgid "Microphone 1" #~ msgstr "Микрофон 1" diff --git a/po/ca.gmo b/po/ca.gmo index 70c6f819b2b7f786eddcee541fadbd67d8f8a2f2..1517fb188683b749c249030123d03be8f88698fb 100644 Binary files a/po/ca.gmo and b/po/ca.gmo differ diff --git a/po/ca.po b/po/ca.po index 57d4685adebad3d3b5949efb4d9024c4a5f91720..0f6a5ff50e61892fc573322682b56afd23309334 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2012-01-01 14:19+0100\n" "Last-Translator: Gil Forcada <gforcada@gnome.org>\n" "Language-Team: Catalan <ca@dodds.net>\n" @@ -19,17 +19,23 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Ha fallat en descodificar la imatge JPEG" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "«%s» per «%s»" -msgid "Failed to decode JPEG image" -msgstr "Ha fallat en descodificar la imatge JPEG" - msgid "Could not connect to server" msgstr "No s'ha pogut connectar al servidor" +msgid "No URL set." +msgstr "No s'ha indicat cap URL." + msgid "Server does not support seeking." msgstr "El servidor no ademet les cerques." @@ -51,9 +57,6 @@ msgstr "" msgid "Server sent bad data." msgstr "El servidor ha enviat dades errònies." -msgid "No URL set." -msgstr "No s'ha indicat cap URL." - msgid "Internal data stream error." msgstr "S'ha produït un error intern de flux de dades." @@ -66,6 +69,9 @@ msgstr "Aquest fitxer no conté cap flux reproduïble." msgid "This file is invalid and cannot be played." msgstr "Aquest fitxer no és và lid i no es pot reproduir." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Aquest fitxer està malmès i no es pot reproduir." @@ -119,16 +125,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "No s'ha pogut obrir el dispositiu d'aÌ€udio per a la reproducció." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"No s'ha pogut obrir el dispositiu d'aÌ€udio per a l'enregistrament. No teniu " -"permiÌs per obrir el dispositiu." - -msgid "Could not open audio device for recording." -msgstr "No s'ha pogut obrir el dispositiu d'aÌ€udio per a l'enregistrament." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -148,6 +144,45 @@ msgstr "Aquest dispositiu d'à udio no permet l'enregistrament." msgid "Error recording from audio device." msgstr "S'ha produït un error a l'enregistrar des del dispositiu d'à udio." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"No s'ha pogut obrir el dispositiu d'aÌ€udio per a l'enregistrament. No teniu " +"permiÌs per obrir el dispositiu." + +msgid "Could not open audio device for recording." +msgstr "No s'ha pogut obrir el dispositiu d'aÌ€udio per a l'enregistrament." + +msgid "Record Source" +msgstr "Font d'enregistrament" + +msgid "Microphone" +msgstr "Micròfon" + +msgid "Line In" +msgstr "LÃnia d'entrada" + +msgid "Internal CD" +msgstr "CD intern" + +msgid "SPDIF In" +msgstr "Entrada SPDIF" + +msgid "AUX 1 In" +msgstr "Entrada AUX 1" + +msgid "AUX 2 In" +msgstr "Entrada AUX 2" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Bucle local" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Bucle local" + msgid "Volume" msgstr "Volum" @@ -254,6 +289,10 @@ msgstr "No s'ha pogut establir l'entrada %d en el dispositiu %s." msgid "Failed to change mute state for device '%s'." msgstr "No s'ha pogut obtenir la intensitat del senyal per al dispositiu «%s»." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "No es pot identificar el dispositiu «%s»." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -283,10 +322,6 @@ msgid "Failed getting controls attributes on device '%s'." msgstr "" "No s'ha pogut obtenir els atributs dels controls en el dispositiu «%s»." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "No es pot identificar el dispositiu «%s»." - #, c-format msgid "This isn't a device '%s'." msgstr "Això no és un dispositiu «%s»." @@ -386,9 +421,6 @@ msgstr "No es pot operar sense un rellotge" #~ msgid "Line-in" #~ msgstr "LÃnia d'entrada" -#~ msgid "Microphone" -#~ msgstr "Micròfon" - #~ msgid "CD" #~ msgstr "CD" @@ -489,21 +521,9 @@ msgstr "No es pot operar sense un rellotge" #~ msgid "Telephone" #~ msgstr "Telèfon" -#~ msgid "Line In" -#~ msgstr "LÃnia d'entrada" - -#~ msgid "Internal CD" -#~ msgstr "CD intern" - #~ msgid "Video In" #~ msgstr "Entrada de vÃdeo" -#~ msgid "AUX 1 In" -#~ msgstr "Entrada AUX 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Entrada AUX 2" - #~ msgid "AUX In" #~ msgstr "Entrada AUX" @@ -516,9 +536,6 @@ msgstr "No es pot operar sense un rellotge" #~ msgid "Microphone Boost" #~ msgstr "Amplificació del micròfon" -#~ msgid "Loopback" -#~ msgstr "Bucle local" - #~ msgid "Diagnostic" #~ msgstr "Diagnòstic" @@ -531,9 +548,6 @@ msgstr "No es pot operar sense un rellotge" #~ msgid "Input" #~ msgstr "Entrada" -#~ msgid "Record Source" -#~ msgstr "Font d'enregistrament" - #~ msgid "Monitor Source" #~ msgstr "Font del monitor" @@ -573,9 +587,6 @@ msgstr "No es pot operar sense un rellotge" #~ msgid "Input Mix" #~ msgstr "Mescla d'entrada" -#~ msgid "SPDIF In" -#~ msgstr "Entrada SPDIF" - #~ msgid "Microphone 1" #~ msgstr "Micròfon 1" diff --git a/po/cs.gmo b/po/cs.gmo index ce295114f3d5f43efdc294a1b1e84b2b993c0edd..2baf64f117efa1f554fbe4c41b8db32996b47216 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index e824a2306715869d5e14534d92b06d794dcaaf7d..feadd317d2fd410e468071410d4e6d489dd1a497 100644 --- a/po/cs.po +++ b/po/cs.po @@ -1,37 +1,45 @@ # Czech translation of gst-plugins-good. # Copyright (C) 2007, 2008, 2009, 2010, 2011 the author(s) of gst-plugins-good. -# Copyright (C) 2004 Miloslav Trmac <mitr@volny.cz>. # This file is put in the public domain. +# # Miloslav Trmac <mitr@volny.cz>, 2004. # Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010, 2011. +# Marek ÄŒernocký <marek@manet.cz>, 2013. +# msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good-0.10.26.2\n" +"Project-Id-Version: gst-plugins-good-1.1.4\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2013-08-28 15:03+0100\n" -"PO-Revision-Date: 2011-01-12 23:07+0100\n" -"Last-Translator: Petr Kovar <pknbe@volny.cz>\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" +"PO-Revision-Date: 2013-09-18 19:18+0200\n" +"Last-Translator: Marek ÄŒernocký <marek@manet.cz>\n" "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Lokalize 1.1\n" +"X-Generator: Gtranslator 2.91.6\n" + +msgid "Jack server not found" +msgstr "Server Jack nebyl nalezen" + +msgid "Failed to decode JPEG image" +msgstr "Selhalo dekódovánà obrázku JPEG" #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" -msgstr "\"%s\" od \"%s\"" - -msgid "Failed to decode JPEG image" -msgstr "NezdaÅ™ilo se dekódovánà obrázku JPEG" +msgstr "„%s“ od „%s“" msgid "Could not connect to server" msgstr "NezdaÅ™ilo se spojenà se serverem" +msgid "No URL set." +msgstr "Nenà nastavena žádná adresa URL." + msgid "Server does not support seeking." -msgstr "Server nepodporuje hledánÃ." +msgstr "Server nepodporuje pÅ™eskakovánÃ." msgid "Could not resolve server name." msgstr "NezdaÅ™il se pÅ™eklad názvu serveru." @@ -40,18 +48,15 @@ msgid "Could not establish connection to server." msgstr "NezdaÅ™ilo se navázánà spojenà se serverem." msgid "Secure connection setup failed." -msgstr "ZabezpeÄené pÅ™ipojenà selhalo." +msgstr "Selhalo nastavenà zabezpeÄeného pÅ™ipojenÃ." msgid "" "A network error occured, or the server closed the connection unexpectedly." -msgstr "DoÅ¡lo k sÃÅ¥ové chybÄ›, nebo server neoÄekávanÄ› ukonÄil spojenÃ." +msgstr "DoÅ¡lo k chybÄ› sÃtÄ› nebo server neoÄekávanÄ› ukonÄil spojenÃ." msgid "Server sent bad data." msgstr "Server odeslal chybná data." -msgid "No URL set." -msgstr "Nenastaveno URL." - msgid "Internal data stream error." msgstr "VnitÅ™nà chyba datového proudu." @@ -64,11 +69,14 @@ msgstr "Tento soubor neobsahuje hratelné proudy." msgid "This file is invalid and cannot be played." msgstr "Tento soubor je neplatný a nelze jej pÅ™ehrát." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "Nelze pÅ™ehrát proud, protože je Å¡ifrován pomocà DRM PlayReady." + msgid "This file is corrupt and cannot be played." msgstr "Tento soubor je poÅ¡kozen a nelze jej pÅ™ehrát." msgid "Invalid atom size." -msgstr "Atom - neplatná velikost." +msgstr "Neplatná atomická velikost." msgid "This file is incomplete and cannot be played." msgstr "Tento soubor nenà úplný a nelze jej pÅ™ehrát." @@ -93,7 +101,7 @@ msgid "" "plugin." msgstr "" "Nebyl nalezen žádný podporovaný proud. PatrnÄ› bude nutné povolit vÃce " -"pÅ™enosových protokolů, jinak asi bude scházet potÅ™ebný zásuvný modul " +"pÅ™enosových protokolů, jinak nejspÃÅ¡ bude scházet potÅ™ebný zásuvný modul " "rozÅ¡ÃÅ™enà GStreamer RTSP." msgid "Internal data flow error." @@ -103,35 +111,25 @@ msgid "" "Could not open audio device for playback. Device is being used by another " "application." msgstr "" -"Zvukové zaÅ™Ãzenà nelze otevÅ™Ãt k pÅ™ehrávánÃ. ZaÅ™Ãzenà je použÃváno jinou " +"Zvukové zaÅ™Ãzenà nelze otevÅ™Ãt pro pÅ™ehrávánÃ. ZaÅ™Ãzenà je použÃváno jinou " "aplikacÃ." msgid "" "Could not open audio device for playback. You don't have permission to open " "the device." msgstr "" -"Zvukové zaÅ™Ãzenà nelze otevÅ™Ãt k pÅ™ehrávánÃ. Nemáte oprávnÄ›nà k otevÅ™enà " +"Zvukové zaÅ™Ãzenà nelze otevÅ™Ãt pro pÅ™ehrávánÃ. Nemáte oprávnÄ›nà k otevÅ™enà " "zaÅ™ÃzenÃ." msgid "Could not open audio device for playback." -msgstr "Zvukové zaÅ™Ãzenà nelze otevÅ™Ãt ke ÄtenÃ." - -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Zvukové zaÅ™Ãzenà nelze otevÅ™Ãt k nahrávánÃ. Nemáte oprávnÄ›nà k otevÅ™enà " -"zaÅ™ÃzenÃ." - -msgid "Could not open audio device for recording." -msgstr "Zvukové zaÅ™Ãzenà nelze otevÅ™Ãt k nahrávánÃ." +msgstr "Zvukové zaÅ™Ãzenà nelze otevÅ™Ãt pro ÄtenÃ." msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." msgstr "" -"NezdaÅ™ilo se otevÅ™enà zvukového zaÅ™Ãzenà k pÅ™ehrávánÃ. Tato verze Open Sound " -"System nenà pÅ™ÃsluÅ¡ným prvkem podporována." +"NezdaÅ™ilo se otevÅ™enà zvukového zaÅ™Ãzenà pro pÅ™ehrávánÃ. Tato verze Open " +"Sound System nenà pÅ™ÃsluÅ¡ným prvkem podporována." msgid "Playback is not supported by this audio device." msgstr "PÅ™ehrávánà nenà tÃmto zvukovým zaÅ™ÃzenÃm podporováno." @@ -145,6 +143,43 @@ msgstr "Toto zvukové zaÅ™Ãzenà nepodporuje nahrávánÃ." msgid "Error recording from audio device." msgstr "Chyba pÅ™i nahrávánà ze zvukového zaÅ™ÃzenÃ." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Zvukové zaÅ™Ãzenà nelze otevÅ™Ãt pro nahrávánÃ. Nemáte oprávnÄ›nà k otevÅ™enà " +"zaÅ™ÃzenÃ." + +msgid "Could not open audio device for recording." +msgstr "Zvukové zaÅ™Ãzenà nelze otevÅ™Ãt pro nahrávánÃ." + +msgid "Record Source" +msgstr "Zdroj nahrávánÃ" + +msgid "Microphone" +msgstr "Mikrofon" + +msgid "Line In" +msgstr "Linkový vstup" + +msgid "Internal CD" +msgstr "Internà CD" + +msgid "SPDIF In" +msgstr "Vstup SPDIF" + +msgid "AUX 1 In" +msgstr "Vstup AUX 1" + +msgid "AUX 2 In" +msgstr "Vstup AUX 2" + +msgid "Codec Loopback" +msgstr "Kodeková smyÄka" + +msgid "SunVTS Loopback" +msgstr "SmyÄka SunVTS" + msgid "Volume" msgstr "Hlasitost" @@ -174,537 +209,163 @@ msgstr "Výstup AUX 2" #, c-format msgid "Error reading %d bytes from device '%s'." -msgstr "Chyba pÅ™i Ätenà %d bajtů na zaÅ™Ãzenà \"%s\"." +msgstr "Chyba pÅ™i Ätenà %d bajtů na zaÅ™Ãzenà „%s“." #, c-format msgid "Failed to enumerate possible video formats device '%s' can work with" msgstr "" +"Selhalo vytvoÅ™enà seznamu možných formátů videa, se kterými umà zaÅ™Ãzenà " +"„%s“ pracovat" #, c-format msgid "Could not map buffers from device '%s'" -msgstr "NezdaÅ™ilo se mapovánà vyrovnávacà pamÄ›ti ze zaÅ™Ãzenà \"%s\"" +msgstr "NezdaÅ™ilo se mapovánà vyrovnávacà pamÄ›ti ze zaÅ™Ãzenà „%s“" -#, fuzzy, c-format +#, c-format msgid "The driver of device '%s' does not support the IO method %d" -msgstr "OvladaÄ zaÅ™Ãzenà \"%s\" nepodporuje žádnou známou záznamovou metodu." +msgstr "OvladaÄ zaÅ™Ãzenà „%s“ nepodporuje V/V metodu %d" -#, fuzzy, c-format +#, c-format msgid "The driver of device '%s' does not support any known IO method." -msgstr "OvladaÄ zaÅ™Ãzenà \"%s\" nepodporuje žádnou známou záznamovou metodu." +msgstr "OvladaÄ zaÅ™Ãzenà „%s“ nepodporuje žádnou známou V/V metodu." -#, fuzzy, c-format +#, c-format msgid "Device '%s' does not support video capture" -msgstr "ZaÅ™Ãzenà \"%s\" nenà výstupnÃm zaÅ™ÃzenÃm." +msgstr "ZaÅ™Ãzenà „%s“ nepodporuje zachytávánà videa" -#, fuzzy, c-format +#, c-format msgid "Device '%s' is busy" -msgstr "ZaÅ™Ãzenà \"%s\" nenà výstupnÃm zaÅ™ÃzenÃm." +msgstr "ZaÅ™Ãzenà „%s“ je zaneprázdnÄ›no" -#, fuzzy, c-format +#, c-format msgid "Device '%s' cannot capture at %dx%d" -msgstr "ZaÅ™Ãzenà \"%s\" nenà záznamovým zaÅ™ÃzenÃm." +msgstr "ZaÅ™Ãzenà „%s“ neumà zachytávat v rozmÄ›ru %d × %d" -#, fuzzy, c-format +#, c-format msgid "Device '%s' cannot capture in the specified format" -msgstr "ZaÅ™Ãzenà \"%s\" nenà záznamovým zaÅ™ÃzenÃm." +msgstr "ZaÅ™Ãzenà „%s“ neumà zachytávat v tomto konkrétnÃm formátu" #, c-format msgid "Could not get parameters on device '%s'" -msgstr "NezdaÅ™ilo se zjiÅ¡tÄ›nà parametrů na zaÅ™Ãzenà \"%s\"" +msgstr "NezdaÅ™ilo se zjiÅ¡tÄ›nà parametrů na zaÅ™Ãzenà „%s“" -#, fuzzy msgid "Video device did not accept new frame rate setting." -msgstr "Vstupnà videozaÅ™Ãzenà nepÅ™ijalo nové nastavenà vzorkovacà frekvence." +msgstr "VideozaÅ™Ãzenà nepÅ™ijalo nové nastavenà snÃmkové rychlosti." msgid "Video device could not create buffer pool." -msgstr "" +msgstr "VideozaÅ™Ãzenà se nezdaÅ™ilo vytvoÅ™it spoleÄnou vyrovnávacà paměť." -#, fuzzy, c-format +#, c-format msgid "Failed to get settings of tuner %d on device '%s'." -msgstr "Selhalo zjiÅ¡tÄ›nà nastavenà tuneru %d na zaÅ™Ãzenà \"%s\"." +msgstr "Selhalo zjiÅ¡tÄ›nà nastavenà tuneru %d u zaÅ™Ãzenà „%s“." -#, fuzzy, c-format +#, c-format msgid "Error getting capabilities for device '%s'." -msgstr "Chyba pÅ™i Ätenà %d bajtů na zaÅ™Ãzenà \"%s\"." +msgstr "Chyba pÅ™i zjiÅ¡Å¥ovánà schopnostà zaÅ™Ãzenà „%s“." -#, fuzzy, c-format +#, c-format msgid "Device '%s' is not a tuner." -msgstr "ZaÅ™Ãzenà \"%s\" nenà výstupnÃm zaÅ™ÃzenÃm." +msgstr "ZaÅ™Ãzenà „%s“ nenà tuner." -#, fuzzy, c-format +#, c-format msgid "Failed to get radio input on device '%s'. " -msgstr "NezdaÅ™ilo se nastavenà vstupu \"%d\" na zaÅ™Ãzenà \"%s\"." +msgstr "Selhalo zÃskánà rádiového vstupu u zaÅ™Ãzenà „%s“." #, c-format msgid "Failed to set input %d on device %s." -msgstr "NezdaÅ™ilo se nastavenà vstupu \"%d\" na zaÅ™Ãzenà \"%s\"." +msgstr "NezdaÅ™ilo se nastavenà vstupu %d u zaÅ™Ãzenà „%s“." -#, fuzzy, c-format +#, c-format msgid "Failed to change mute state for device '%s'." -msgstr "NezdaÅ™ilo se zjiÅ¡tÄ›nà sÃly signálu u zaÅ™Ãzenà \"%s\"." +msgstr "Selhala zmÄ›na stavu zapnutÃ/vypnutà zvuku u zaÅ™Ãzenà „%s“." + +#, c-format +msgid "Cannot identify device '%s'." +msgstr "NezdaÅ™ilo se rozpoznat zaÅ™Ãzenà „%s“." #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " "it is a v4l1 driver." msgstr "" -"Chyba pÅ™i zÃskávánà informacà o schopnostech u zaÅ™Ãzenà \"%s\": Nejedná se o " -"ovladaÄ v4l2. Je nutné zkontrolovat, zda se nejedná o ovladaÄ v4l1." +"Chyba pÅ™i zÃskávánà informacà o schopnostech u zaÅ™Ãzenà „%s“: Nejedná se o " +"ovladaÄ v4l2. Zkontrolujte, zda se nejedná o ovladaÄ v4l1." #, c-format msgid "Failed to query attributes of input %d in device %s" -msgstr "NezdaÅ™ilo se dotázánà na vlastnosti vstupu %d na zaÅ™Ãzenà %s" +msgstr "NezdaÅ™ilo se dotázánà na vlastnosti vstupu %d u zaÅ™Ãzenà „%s“" #, c-format msgid "Failed to get setting of tuner %d on device '%s'." -msgstr "Selhalo zjiÅ¡tÄ›nà nastavenà tuneru %d na zaÅ™Ãzenà \"%s\"." +msgstr "Selhalo zjiÅ¡tÄ›nà nastavenà tuneru %d u zaÅ™Ãzenà „%s“." #, c-format msgid "Failed to query norm on device '%s'." -msgstr "NezdaÅ™ilo se dotázánà na norm na zaÅ™Ãzenà \"%s\"." +msgstr "NezdaÅ™ilo se dotázánà na normu na zaÅ™Ãzenà „%s“." #, c-format msgid "Failed getting controls attributes on device '%s'." -msgstr "NezdaÅ™ilo se zjiÅ¡tÄ›nà vlastnostà ovládacÃch prvků na zaÅ™Ãzenà \"%s\"." - -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Nelze rozpoznat zaÅ™Ãzenà \"%s\"." +msgstr "NezdaÅ™ilo se zjiÅ¡tÄ›nà vlastnostà ovládacÃch prvků u zaÅ™Ãzenà „%s“." #, c-format msgid "This isn't a device '%s'." -msgstr "Toto nenà zaÅ™Ãzenà \"%s\"." +msgstr "Toto nenà zaÅ™Ãzenà „%s“." #, c-format msgid "Could not open device '%s' for reading and writing." -msgstr "Nelze otevÅ™Ãt zaÅ™Ãzenà \"%s\" ke Ätenà a k zápisu." +msgstr "NezdaÅ™ilo se otevÅ™Ãt zaÅ™Ãzenà „%s“ pro Ätenà a pro zápisu." #, c-format msgid "Device '%s' is not a capture device." -msgstr "ZaÅ™Ãzenà \"%s\" nenà záznamovým zaÅ™ÃzenÃm." +msgstr "ZaÅ™Ãzenà „%s“ nenà zachytávacÃm zaÅ™ÃzenÃm." #, c-format msgid "Device '%s' is not a output device." -msgstr "ZaÅ™Ãzenà \"%s\" nenà výstupnÃm zaÅ™ÃzenÃm." +msgstr "ZaÅ™Ãzenà „%s“ nenà výstupnÃm zaÅ™ÃzenÃm." #, c-format msgid "Failed to set norm for device '%s'." -msgstr "NezdaÅ™ilo se nastavenà norm u zaÅ™Ãzenà \"%s\"." +msgstr "Selhalo nastavenà normy u zaÅ™Ãzenà „%s“." #, c-format msgid "Failed to get current tuner frequency for device '%s'." -msgstr "NezdaÅ™ilo se zjiÅ¡tÄ›nà aktuálnà frekvence tuneru u zaÅ™Ãzenà \"%s\"." +msgstr "Selhalo zjiÅ¡tÄ›nà aktuálnà frekvence tuneru u zaÅ™Ãzenà „%s“." #, c-format msgid "Failed to set current tuner frequency for device '%s' to %lu Hz." -msgstr "" -"NezdaÅ™ilo se nastavenà aktuálnà frekvence tuneru u zaÅ™Ãzenà \"%s\" na %lu Hz." +msgstr "Selhalo nastavenà aktuálnà frekvence tuneru u zaÅ™Ãzenà „%s“ na %lu Hz." #, c-format msgid "Failed to get signal strength for device '%s'." -msgstr "NezdaÅ™ilo se zjiÅ¡tÄ›nà sÃly signálu u zaÅ™Ãzenà \"%s\"." +msgstr "Selhalo zjiÅ¡tÄ›nà sÃly signálu u zaÅ™Ãzenà „%s“." #, c-format msgid "Failed to get value for control %d on device '%s'." -msgstr "" -"NezdaÅ™ilo se zjiÅ¡tÄ›nà hodnoty u ovládacÃho prvku \"%d\" na zaÅ™Ãzenà \"%s\"." +msgstr "Selhalo zjiÅ¡tÄ›nà hodnoty u ovládacÃho prvku %d na zaÅ™Ãzenà „%s“." #, c-format msgid "Failed to set value %d for control %d on device '%s'." -msgstr "" -"NezdaÅ™ilo se nastavenà hodnoty \"%d\" u ovládacÃho prvku \"%d\" na zaÅ™Ãzenà " -"\"%s\"." +msgstr "Selhalo nastavenà hodnoty %d u ovládacÃho prvku %d na zaÅ™Ãzenà „%s“." #, c-format msgid "Failed to get current input on device '%s'. May be it is a radio device" msgstr "" -"NezdaÅ™ilo se zÃskánà aktuálnÃho vstupu na zaÅ™Ãzenà \"%s\". Možná se jedná o " +"Selhalo zÃskánà aktuálnÃho vstupu na zaÅ™Ãzenà „%s“. Možná se jedná o " "radiopÅ™ijÃmaÄ." #, c-format msgid "" "Failed to get current output on device '%s'. May be it is a radio device" msgstr "" -"NezdaÅ™ilo se zÃskánà aktuálnÃho výstupu na zaÅ™Ãzenà \"%s\". Možná se jedná o " +"Selhalo zÃskánà aktuálnÃho výstupu na zaÅ™Ãzenà „%s“. Možná se jedná o " "radiopÅ™ijÃmaÄ" #, c-format msgid "Failed to set output %d on device %s." -msgstr "NezdaÅ™ilo se nastavenà výstupu %d na zaÅ™Ãzenà %s." +msgstr "Selhalo nastavenà výstupu %d na zaÅ™Ãzenà %s." msgid "Changing resolution at runtime is not yet supported." -msgstr "ZmÄ›na rozliÅ¡enà za bÄ›hu doposud nenà podporována." +msgstr "ZmÄ›na rozliÅ¡enà za bÄ›hu zatÃm nenà podporována." msgid "Cannot operate without a clock" msgstr "Nenà možné fungovat bez hodin" - -#~ msgid "Got unexpected frame size of %u instead of %u." -#~ msgstr "ZÃskána neoÄekávaná velikost snÃmku %u namÃsto %u." - -#~ msgid "Failed trying to get video frames from device '%s'." -#~ msgstr "NezdaÅ™il se pokus o zÃskánà videosnÃmků ze zaÅ™Ãzenà \"%s\"." - -#~ msgid "Failed after %d tries. device %s. system error: %s" -#~ msgstr "Selhánà po %d pokusech. ZaÅ™Ãzenà %s. Systémová chyba: %s" - -#~ msgid "Bass" -#~ msgstr "Basy" - -#~ msgid "Treble" -#~ msgstr "Výšky" - -#~ msgid "Synth" -#~ msgstr "Syntezátor" - -#~ msgid "PCM" -#~ msgstr "PCM" - -#~ msgid "Speaker" -#~ msgstr "Reproduktor" - -#~ msgid "Line-in" -#~ msgstr "Linkový vstup" - -#~ msgid "Microphone" -#~ msgstr "Mikrofon" - -#~ msgid "CD" -#~ msgstr "CD" - -#~ msgid "Mixer" -#~ msgstr "SměšovaÄ" - -#~ msgid "PCM-2" -#~ msgstr "PCM 2" - -#~ msgid "Record" -#~ msgstr "NahrávánÃ" - -#~ msgid "In-gain" -#~ msgstr "Vstupnà zesÃlenÃ" - -#~ msgid "Out-gain" -#~ msgstr "Výstupnà zesÃlenÃ" - -#~ msgid "Line-1" -#~ msgstr "Linka 1" - -#~ msgid "Line-2" -#~ msgstr "Linka 2" - -#~ msgid "Line-3" -#~ msgstr "Linka 3" - -#~ msgid "Digital-1" -#~ msgstr "Digitálnà 1" - -#~ msgid "Digital-2" -#~ msgstr "Digitálnà 2" - -#~ msgid "Digital-3" -#~ msgstr "Digitálnà 3" - -#~ msgid "Phone-in" -#~ msgstr "Telefonnà vstup" - -#~ msgid "Phone-out" -#~ msgstr "Telefonnà výstup" - -#~ msgid "Video" -#~ msgstr "Video" - -#~ msgid "Radio" -#~ msgstr "Rádio" - -#~ msgid "Could not open audio device for mixer control handling." -#~ msgstr "" -#~ "NezdaÅ™ilo se otevÅ™enà zvukového zaÅ™Ãzenà pro obsluhu ovládánà směšovaÄe." - -#~ msgid "" -#~ "Could not open audio device for mixer control handling. This version of " -#~ "the Open Sound System is not supported by this element." -#~ msgstr "" -#~ "NezdaÅ™ilo se otevÅ™enà zvukového zaÅ™Ãzenà k obsluze ovládánà směšovaÄe. " -#~ "Tato verze Open Sound System nenà pÅ™ÃsluÅ¡ným prvkem podporována." - -#~ msgid "Master" -#~ msgstr "Master" - -#~ msgid "Front" -#~ msgstr "PÅ™ednÃ" - -#~ msgid "Rear" -#~ msgstr "ZadnÃ" - -#~ msgid "Headphones" -#~ msgstr "Sluchátka" - -#~ msgid "Center" -#~ msgstr "StÅ™edový" - -#~ msgid "LFE" -#~ msgstr "LFE" - -#~ msgid "Surround" -#~ msgstr "Prostorový zvuk" - -#~ msgid "Side" -#~ msgstr "BoÄnÃ" - -#~ msgid "AUX Out" -#~ msgstr "Výstup AUX" - -#~ msgid "3D Depth" -#~ msgstr "Hloubka prostorového zvuku" - -#~ msgid "3D Center" -#~ msgstr "StÅ™ed prostorového zvuku" - -#~ msgid "3D Enhance" -#~ msgstr "Prostorové rozÅ¡ÃÅ™enÃ" - -#~ msgid "Telephone" -#~ msgstr "Telefon" - -#~ msgid "Line In" -#~ msgstr "Linkový vstup" - -#~ msgid "Internal CD" -#~ msgstr "VnitÅ™nà CD" - -#~ msgid "Video In" -#~ msgstr "Vstup videa" - -#~ msgid "AUX 1 In" -#~ msgstr "Vstup AUX 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Vstup AUX 2" - -#~ msgid "AUX In" -#~ msgstr "Vstup AUX" - -#~ msgid "Record Gain" -#~ msgstr "ZesÃlenà záznamu" - -#~ msgid "Output Gain" -#~ msgstr "Výstupnà zesÃlenÃ" - -#~ msgid "Microphone Boost" -#~ msgstr "ZesÃlenà mikrofonu" - -#~ msgid "Loopback" -#~ msgstr "ZpÄ›tná smyÄka" - -#~ msgid "Diagnostic" -#~ msgstr "Diagnostika" - -#~ msgid "Bass Boost" -#~ msgstr "ZesÃlenà basů" - -#~ msgid "Playback Ports" -#~ msgstr "Porty pÅ™ehrávánÃ" - -#~ msgid "Input" -#~ msgstr "Vstup" - -#~ msgid "Record Source" -#~ msgstr "Zdroj záznamu" - -#~ msgid "Monitor Source" -#~ msgstr "Zdroj monitoru" - -#~ msgid "Keyboard Beep" -#~ msgstr "Zvukové znamenà klávesnice" - -#~ msgid "Simulate Stereo" -#~ msgstr "Napodobit stereo" - -#~ msgid "Stereo" -#~ msgstr "Stereo" - -#~ msgid "Surround Sound" -#~ msgstr "Prostorový zvuk" - -#~ msgid "Microphone Gain" -#~ msgstr "ZesÃlenà mikrofonu" - -#~ msgid "Speaker Source" -#~ msgstr "Zdroj reproduktoru" - -#~ msgid "Microphone Source" -#~ msgstr "Zdroj mikrofonu" - -#~ msgid "Jack" -#~ msgstr "Jack" - -#~ msgid "Center / LFE" -#~ msgstr "StÅ™edový / LFE" - -#~ msgid "Stereo Mix" -#~ msgstr "SměšovaÄ stereo" - -#~ msgid "Mono Mix" -#~ msgstr "SměšovaÄ mono" - -#~ msgid "Input Mix" -#~ msgstr "SměšovaÄ vstupu" - -#~ msgid "SPDIF In" -#~ msgstr "Vstup SPDIF" - -#~ msgid "Microphone 1" -#~ msgstr "Mikrofon 1" - -#~ msgid "Microphone 2" -#~ msgstr "Mikrofon 2" - -#~ msgid "Digital Out" -#~ msgstr "Digitálnà výstup" - -#~ msgid "Digital In" -#~ msgstr "Digitálnà vstup" - -#~ msgid "HDMI" -#~ msgstr "HDMI" - -#~ msgid "Modem" -#~ msgstr "Modem" - -#~ msgid "Handset" -#~ msgstr "Telefonnà sluchátko" - -#~ msgid "Other" -#~ msgstr "Jiné" - -#~ msgid "None" -#~ msgstr "Žádné" - -#~ msgid "On" -#~ msgstr "Zapnuto" - -#~ msgid "Off" -#~ msgstr "Vypnuto" - -#~ msgid "Mute" -#~ msgstr "Ztlumit" - -#~ msgid "Fast" -#~ msgstr "Rychlé" - -#~ msgid "Very Low" -#~ msgstr "Velmi nÃzké" - -#~ msgid "Low" -#~ msgstr "NÃzké" - -#~ msgid "Medium" -#~ msgstr "StÅ™ednÃ" - -#~ msgid "High" -#~ msgstr "Vysoké" - -#~ msgid "Very High" -#~ msgstr "Velmi vysoké" - -#~ msgid "Production" -#~ msgstr "Výroba" - -#~ msgid "Front Panel Microphone" -#~ msgstr "Mikrofon na pÅ™ednÃm panelu" - -#~ msgid "Front Panel Line In" -#~ msgstr "Linkový vstup na pÅ™ednÃm panelu" - -#~ msgid "Front Panel Headphones" -#~ msgstr "Sluchátka na pÅ™ednÃm panelu" - -#~ msgid "Front Panel Line Out" -#~ msgstr "Linkový výstup na pÅ™ednÃm panelu" - -#~ msgid "Green Connector" -#~ msgstr "Zelený konektor" - -#~ msgid "Pink Connector" -#~ msgstr "Růžový konektor" - -#~ msgid "Blue Connector" -#~ msgstr "Modrý konektor" - -#~ msgid "White Connector" -#~ msgstr "BÃlý konektor" - -#~ msgid "Black Connector" -#~ msgstr "ÄŒerný konektor" - -#~ msgid "Gray Connector" -#~ msgstr "Å edý konektor" - -#~ msgid "Orange Connector" -#~ msgstr "Oranžový konektor" - -#~ msgid "Red Connector" -#~ msgstr "ÄŒervený konektor" - -#~ msgid "Yellow Connector" -#~ msgstr "Žlutý konektor" - -#~ msgid "Green Front Panel Connector" -#~ msgstr "Zelený konektor na pÅ™ednÃm panelu" - -#~ msgid "Pink Front Panel Connector" -#~ msgstr "Růžový konektor na pÅ™ednÃm panelu" - -#~ msgid "Blue Front Panel Connector" -#~ msgstr "Modrý konektor na pÅ™ednÃm panelu" - -#~ msgid "White Front Panel Connector" -#~ msgstr "BÃlý konektor na pÅ™ednÃm panelu" - -#~ msgid "Black Front Panel Connector" -#~ msgstr "ÄŒerný konektor na pÅ™ednÃm panelu" - -#~ msgid "Gray Front Panel Connector" -#~ msgstr "Å edý konektor na pÅ™ednÃm panelu" - -#~ msgid "Orange Front Panel Connector" -#~ msgstr "Oranžový konektor na pÅ™ednÃm panelu" - -#~ msgid "Red Front Panel Connector" -#~ msgstr "ÄŒervený konektor na pÅ™ednÃm panelu" - -#~ msgid "Yellow Front Panel Connector" -#~ msgstr "Žlutý konektor na pÅ™ednÃm panelu" - -#~ msgid "Spread Output" -#~ msgstr "Rozložený výstup" - -#~ msgid "Downmix" -#~ msgstr "SnÞenà poÄtu kanálů" - -#~ msgid "Virtual Mixer Input" -#~ msgstr "Vstup virtuálnÃho směšovaÄe" - -#~ msgid "Virtual Mixer Output" -#~ msgstr "Výstup virtuálnÃho směšovaÄe" - -#~ msgid "Virtual Mixer Channels" -#~ msgstr "Kanály virtuálnÃho směšovaÄe" - -#~ msgid "%s %d Function" -#~ msgstr "%s %d (funkce)" - -#~ msgid "%s Function" -#~ msgstr "%s (funkce)" - -#~ msgid "Error reading %d bytes on device '%s'." -#~ msgstr "Chyba pÅ™i Ätenà %d bajtů na zaÅ™Ãzenà \"%s\"." - -#~ msgid "Could not enqueue buffers in device '%s'." -#~ msgstr "NezdaÅ™ilo se zaÅ™azenà vyrovnávacà pamÄ›ti na zaÅ™Ãzenà \"%s\"." - -#~ msgid "Could not establish connection to sound server" -#~ msgstr "NezdaÅ™ilo se navázánà spojenà se zvukovým serverem" - -#~ msgid "Failed to query sound server capabilities" -#~ msgstr "NezdaÅ™il se dotaz na schopnosti zvukového serveru" diff --git a/po/da.gmo b/po/da.gmo index c0074b4f9676f97146f6dc58c1bf78f6d2a4a3e5..ef4448da40e6af15dcb2d9e607cf946eda330b01 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index 778a7538fd69c382fadc8ae3c3ccf30be3c052ce..461f3bafb35cd204429afd6fda3f23b3c299aaa1 100644 --- a/po/da.po +++ b/po/da.po @@ -12,7 +12,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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2012-12-13 23:54+0200\n" "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" @@ -21,17 +21,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Mislykkedes i at afkode JPEG-billede" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' af '%s'" -msgid "Failed to decode JPEG image" -msgstr "Mislykkedes i at afkode JPEG-billede" - msgid "Could not connect to server" msgstr "Kunne ikke forbinde til server" +msgid "No URL set." +msgstr "Ingen adresse angivet." + msgid "Server does not support seeking." msgstr "Server understøtter ikke søgning." @@ -52,9 +58,6 @@ msgstr "" msgid "Server sent bad data." msgstr "Server sendte ugyldige data." -msgid "No URL set." -msgstr "Ingen adresse angivet." - msgid "Internal data stream error." msgstr "Intern datastrømsfejl." @@ -67,6 +70,9 @@ msgstr "Denne fil indeholder ingen spilbar strøm." msgid "This file is invalid and cannot be played." msgstr "Denne fil er ufuldstændig og kan ikke afspilles." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Denne fil er ødelagt og kan ikke afspilles." @@ -122,16 +128,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Kunne ikke Ã¥bne enhed til afspilning." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Kunne ikke Ã¥bne lydenhed til optagelse. Du har ikke rettighed til at Ã¥bne " -"enheden." - -msgid "Could not open audio device for recording." -msgstr "Kunne ikke Ã¥bne lydenhed til optagelse." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -151,6 +147,47 @@ msgstr "Optagelse er ikke understøttet af denne lydenhed." msgid "Error recording from audio device." msgstr "Fejl ved optagelse fra lydenhed." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Kunne ikke Ã¥bne lydenhed til optagelse. Du har ikke rettighed til at Ã¥bne " +"enheden." + +msgid "Could not open audio device for recording." +msgstr "Kunne ikke Ã¥bne lydenhed til optagelse." + +msgid "Record Source" +msgstr "" + +msgid "Microphone" +msgstr "" + +#, fuzzy +msgid "Line In" +msgstr "Linje ud" + +msgid "Internal CD" +msgstr "" + +#, fuzzy +msgid "SPDIF In" +msgstr "SPDIF ud" + +#, fuzzy +msgid "AUX 1 In" +msgstr "AUX 1 ud" + +#, fuzzy +msgid "AUX 2 In" +msgstr "AUX 2 ud" + +msgid "Codec Loopback" +msgstr "" + +msgid "SunVTS Loopback" +msgstr "" + msgid "Volume" msgstr "Lydstyrke" @@ -249,6 +286,10 @@ msgstr "Kunne ikke sætte inddata %d for enhed %s." msgid "Failed to change mute state for device '%s'." msgstr "Kunne ikke ændre tilstand for tænk/slut for enhed »%s«." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Kan ikke identificere enhed '%s'." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -273,10 +314,6 @@ msgstr "Listning af standard pÃ¥ enhed '%s' fejlede." msgid "Failed getting controls attributes on device '%s'." msgstr "Hentning af kontrolattributter for enhed '%s' fejlede." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Kan ikke identificere enhed '%s'." - #, c-format msgid "This isn't a device '%s'." msgstr "Dette er ikke en enheds '%s'." diff --git a/po/de.gmo b/po/de.gmo index 740baf9f22f35e491b7f665b7b7c05faaacc3259..c17e166bdc061a3138c0fbe04df3548c5f4accb8 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index 3a1c13289ad8efbb6d51944917a6a43fa127638b..c8ec9c759eadf627555460376655980f4b428d2a 100644 --- a/po/de.po +++ b/po/de.po @@ -14,7 +14,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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2012-11-28 19:56+0100\n" "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" @@ -26,17 +26,23 @@ msgstr "" "X-Poedit-Country: GERMANY\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Dekodieren des JPEG-Bildes schlug fehl" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "»%s« durch »%s«" -msgid "Failed to decode JPEG image" -msgstr "Dekodieren des JPEG-Bildes schlug fehl" - msgid "Could not connect to server" msgstr "Verbindung zum Server konnte nicht hergestellt werden" +msgid "No URL set." +msgstr "Keine Adresse festgelegt." + msgid "Server does not support seeking." msgstr "Suchlauf wird nicht vom Server unterstützt." @@ -58,9 +64,6 @@ msgstr "" msgid "Server sent bad data." msgstr "Server gab unerwartete Daten zurück." -msgid "No URL set." -msgstr "Keine Adresse festgelegt." - msgid "Internal data stream error." msgstr "Interner Datenstromfehler." @@ -73,6 +76,9 @@ msgstr "Diese Datei enthält keine abspielbaren Ströme." msgid "This file is invalid and cannot be played." msgstr "Diese Datei ist ungültig und kann nicht wiedergegeben werden." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Diese Datei ist beschädigt und kann nicht wiedergegeben werden." @@ -127,16 +133,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Das Audio-Gerät konnte nicht zur Wiedergabe geöffnet werden. " -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Das Audio-Gerät konnte nicht zur Aufnahme geöffnet werden. Sie haben nicht " -"die Berechtigungen zum Öffnen des Gerätes." - -msgid "Could not open audio device for recording." -msgstr "Das Audio-Gerät konnte nicht zur Aufnahme geöffnet werden. " - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -156,6 +152,45 @@ msgstr "Aufnahme wird von diesem Audio-Gerät nicht unterstützt." msgid "Error recording from audio device." msgstr "Fehler beim Aufnehmen vom Audio-Gerät." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Das Audio-Gerät konnte nicht zur Aufnahme geöffnet werden. Sie haben nicht " +"die Berechtigungen zum Öffnen des Gerätes." + +msgid "Could not open audio device for recording." +msgstr "Das Audio-Gerät konnte nicht zur Aufnahme geöffnet werden. " + +msgid "Record Source" +msgstr "Aufnahmequelle" + +msgid "Microphone" +msgstr "Mikrofon" + +msgid "Line In" +msgstr "Line-Eingang" + +msgid "Internal CD" +msgstr "Interne CD" + +msgid "SPDIF In" +msgstr "SPDIF-Eingang" + +msgid "AUX 1 In" +msgstr "AUX-Eingang 1" + +msgid "AUX 2 In" +msgstr "AUX-Eingang 2" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Schleife" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Schleife" + msgid "Volume" msgstr "Lautstärke" @@ -260,6 +295,10 @@ msgstr "Festlegen der Eingabe »%d« des Geräts »%s« schlug fehl." msgid "Failed to change mute state for device '%s'." msgstr "Ändern des Stummzustands von Gerät »%s« schlug fehl." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Gerät »%s« kann nicht identifiziert werden." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -285,10 +324,6 @@ msgstr "Abfragen der Norm auf Gerät »%s« schlug fehl." msgid "Failed getting controls attributes on device '%s'." msgstr "Abfrage der Kontrollattribute auf Gerät »%s« schlug fehl." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Gerät »%s« kann nicht identifiziert werden." - #, c-format msgid "This isn't a device '%s'." msgstr "»%s« ist kein Gerät." @@ -379,9 +414,6 @@ msgstr "Es kann nicht ohne einen Taktgeber gearbeitet werden." #~ msgid "Line-in" #~ msgstr "Line-Eingang" -#~ msgid "Microphone" -#~ msgstr "Mikrofon" - #~ msgid "CD" #~ msgstr "CD" @@ -481,21 +513,9 @@ msgstr "Es kann nicht ohne einen Taktgeber gearbeitet werden." #~ msgid "Telephone" #~ msgstr "Telefon" -#~ msgid "Line In" -#~ msgstr "Line-Eingang" - -#~ msgid "Internal CD" -#~ msgstr "Interne CD" - #~ msgid "Video In" #~ msgstr "Video-Eingang" -#~ msgid "AUX 1 In" -#~ msgstr "AUX-Eingang 1" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX-Eingang 2" - #~ msgid "AUX In" #~ msgstr "AUX-Eingang" @@ -508,9 +528,6 @@ msgstr "Es kann nicht ohne einen Taktgeber gearbeitet werden." #~ msgid "Microphone Boost" #~ msgstr "Mikrofonverstärkung" -#~ msgid "Loopback" -#~ msgstr "Schleife" - #~ msgid "Diagnostic" #~ msgstr "Zur Diagnose" @@ -523,9 +540,6 @@ msgstr "Es kann nicht ohne einen Taktgeber gearbeitet werden." #~ msgid "Input" #~ msgstr "Eingang" -#~ msgid "Record Source" -#~ msgstr "Aufnahmequelle" - #~ msgid "Monitor Source" #~ msgstr "Ãœberwachungsquelle" @@ -565,9 +579,6 @@ msgstr "Es kann nicht ohne einen Taktgeber gearbeitet werden." #~ msgid "Input Mix" #~ msgstr "Eingangs-Mischpult" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF-Eingang" - #~ msgid "Microphone 1" #~ msgstr "Mikrofon 1" diff --git a/po/el.gmo b/po/el.gmo index 99ee2e674273ef1de756afe697001042bf52345d..9f0dca06ea822c61807daa43abc8e0cbc0d1e759 100644 Binary files a/po/el.gmo and b/po/el.gmo differ diff --git a/po/el.po b/po/el.po index c268e18cdd847f81acad8975e21e00201987a4b1..b15239441810e71876dc10bbaccec04ff64baf55 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2012-05-05 19:05+0100\n" "Last-Translator: Savvas Radevic <vicedar@gmail.com>\n" "Language-Team: Greek <team@lists.gnome.gr>\n" @@ -19,17 +19,23 @@ msgstr "" "X-Generator: Lokalize 0.3\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Αποτυχία αποκωδικοποίησης της εικόνας JPEG" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' από '%s'" -msgid "Failed to decode JPEG image" -msgstr "Αποτυχία αποκωδικοποίησης της εικόνας JPEG" - msgid "Could not connect to server" msgstr "Δεν ήταν δυνατή η σÏνδεση με τον διακομιστή" +msgid "No URL set." +msgstr "Δεν οÏίσθηκε URL." + msgid "Server does not support seeking." msgstr "Ο διακομιστής δεν υποστηÏίζει αναζήτηση." @@ -50,9 +56,6 @@ msgstr "" msgid "Server sent bad data." msgstr "Ο διακομιστής Îστειλε λάθος δεδομÎνα." -msgid "No URL set." -msgstr "Δεν οÏίσθηκε URL." - msgid "Internal data stream error." msgstr "ΕσωτεÏικό σφάλμα Ïοής δεδομÎνων." @@ -65,6 +68,9 @@ msgstr "Αυτό το αÏχείο δεν πεÏιÎχει αναπαÏαγώγ msgid "This file is invalid and cannot be played." msgstr "Το αÏχείο αυτό δεν είναι ÎγκυÏο και δεν μποÏεί να αναπαÏαχθεί." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Το αÏχείο αυτό είναι κατεστÏαμμÎνο και δεν μποÏεί να αναπαÏαχθεί. " @@ -117,16 +123,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Δεν ήταν δυνατό το άνοιγμα της συσκευής ήχου για αναπαÏαγωγή. " -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Δεν ήταν δυνατό το άνοιγμα της συσκευής ήχου για εγγÏαφή. Δεν Îχετε τα " -"δικαιώματα να ανοίξετε την συσκευή." - -msgid "Could not open audio device for recording." -msgstr "Δεν ήταν δυνατό το άνοιγμα της συσκευής ήχου για εγγÏαφή. " - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -146,6 +142,45 @@ msgstr "Αυτή η συσκευή ήχου δεν υποστηÏίζει εγγ msgid "Error recording from audio device." msgstr "Σφάλμα κατά την εγγÏαφή από τη συσκευή ήχου." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Δεν ήταν δυνατό το άνοιγμα της συσκευής ήχου για εγγÏαφή. Δεν Îχετε τα " +"δικαιώματα να ανοίξετε την συσκευή." + +msgid "Could not open audio device for recording." +msgstr "Δεν ήταν δυνατό το άνοιγμα της συσκευής ήχου για εγγÏαφή. " + +msgid "Record Source" +msgstr "Πηγή εγγÏαφής" + +msgid "Microphone" +msgstr "ΜικÏόφωνο" + +msgid "Line In" +msgstr "Είσοδος γÏαμμής" + +msgid "Internal CD" +msgstr "ΕσωτεÏικό CD" + +msgid "SPDIF In" +msgstr "Είσδος SPDIF" + +msgid "AUX 1 In" +msgstr "Είσοδις AUX 1" + +msgid "AUX 2 In" +msgstr "Είσοδος AUX 2" + +#, fuzzy +msgid "Codec Loopback" +msgstr "ΑνατÏοφοδότηση" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "ΑνατÏοφοδότηση" + msgid "Volume" msgstr "Ένταση" @@ -244,6 +279,10 @@ msgstr "Αποτυχία ÏÏθμισης εισαγωγής %d στην συσ msgid "Failed to change mute state for device '%s'." msgstr "Αποτυχία ανάγνωσης ισχÏÏ‚ σήματος για την συσκευή '%s'." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Δεν ήταν δυνατή η ταυτοποίηση της συσκευής '%s'." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -269,10 +308,6 @@ msgid "Failed getting controls attributes on device '%s'." msgstr "" "Αποτυχία κατά την ανάγνωση των χαÏακτηÏιστικών ελÎγχου στην συσκευή '%s'." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Δεν ήταν δυνατή η ταυτοποίηση της συσκευής '%s'." - #, c-format msgid "This isn't a device '%s'." msgstr "Αυτή δεν είναι μια συκευή '%s'." @@ -364,9 +399,6 @@ msgstr "Δεν είναι δυνατή η λειτουÏγία χωÏίς Ïολ #~ msgid "Line-in" #~ msgstr "ΓÏαμμή-εισόδου" -#~ msgid "Microphone" -#~ msgstr "ΜικÏόφωνο" - #~ msgid "CD" #~ msgstr "CD" @@ -467,21 +499,9 @@ msgstr "Δεν είναι δυνατή η λειτουÏγία χωÏίς Ïολ #~ msgid "Telephone" #~ msgstr "ΤηλÎφωνο" -#~ msgid "Line In" -#~ msgstr "Είσοδος γÏαμμής" - -#~ msgid "Internal CD" -#~ msgstr "ΕσωτεÏικό CD" - #~ msgid "Video In" #~ msgstr "Είσοδος βίντεο" -#~ msgid "AUX 1 In" -#~ msgstr "Είσοδις AUX 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Είσοδος AUX 2" - #~ msgid "AUX In" #~ msgstr "Είσοδος AUX" @@ -494,9 +514,6 @@ msgstr "Δεν είναι δυνατή η λειτουÏγία χωÏίς Ïολ #~ msgid "Microphone Boost" #~ msgstr "Ενίσχυση μικÏοφώνου" -#~ msgid "Loopback" -#~ msgstr "ΑνατÏοφοδότηση" - #~ msgid "Diagnostic" #~ msgstr "Διαγνωστικό" @@ -509,9 +526,6 @@ msgstr "Δεν είναι δυνατή η λειτουÏγία χωÏίς Ïολ #~ msgid "Input" #~ msgstr "Είσοδος" -#~ msgid "Record Source" -#~ msgstr "Πηγή εγγÏαφής" - #~ msgid "Monitor Source" #~ msgstr "ΠαÏακολοÏθηση πηγής" @@ -551,9 +565,6 @@ msgstr "Δεν είναι δυνατή η λειτουÏγία χωÏίς Ïολ #~ msgid "Input Mix" #~ msgstr "Μίξη εισόδου" -#~ msgid "SPDIF In" -#~ msgstr "Είσδος SPDIF" - #~ msgid "Microphone 1" #~ msgstr "ΜικÏόφωνο 1" diff --git a/po/en_GB.gmo b/po/en_GB.gmo index 0f6c1e1c206970ce33f1c7b3f0ebe30278ee9f44..ca1914939b2e74ca28ed3f3e309050d15fa52564 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 223e7f8c669b43ec8541df3a9fbfb9ef34558f2d..312cd3ed1e1ec313918357d0cc20c8c7b4be1942 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2004-04-26 10:41-0400\n" "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n" "Language-Team: English (British) <en_gb@li.org>\n" @@ -15,18 +15,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#. TRANSLATORS: 'song title' by 'artist name' -#, c-format -msgid "'%s' by '%s'" +msgid "Jack server not found" msgstr "" msgid "Failed to decode JPEG image" msgstr "" +#. TRANSLATORS: 'song title' by 'artist name' +#, c-format +msgid "'%s' by '%s'" +msgstr "" + #, fuzzy msgid "Could not connect to server" msgstr "Could not close control device \"%s\"." +msgid "No URL set." +msgstr "" + #, fuzzy msgid "Server does not support seeking." msgstr "Your oss device could not be probed correctly" @@ -49,9 +55,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "" @@ -64,6 +67,9 @@ msgstr "" msgid "This file is invalid and cannot be played." msgstr "" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "" @@ -108,6 +114,23 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Could not open audio device \"%s\" for writing." +msgid "" +"Could not open audio device for playback. This version of the Open Sound " +"System is not supported by this element." +msgstr "" + +msgid "Playback is not supported by this audio device." +msgstr "" + +msgid "Audio playback error." +msgstr "" + +msgid "Recording is not supported by this audio device." +msgstr "" + +msgid "Error recording from audio device." +msgstr "" + msgid "" "Could not open audio device for recording. You don't have permission to open " "the device." @@ -117,21 +140,33 @@ msgstr "" msgid "Could not open audio device for recording." msgstr "Could not open CD device for reading." -msgid "" -"Could not open audio device for playback. This version of the Open Sound " -"System is not supported by this element." +#, fuzzy +msgid "Record Source" +msgstr "Record" + +msgid "Microphone" +msgstr "Microphone" + +#, fuzzy +msgid "Line In" +msgstr "Line-in" + +msgid "Internal CD" msgstr "" -msgid "Playback is not supported by this audio device." +msgid "SPDIF In" msgstr "" -msgid "Audio playback error." +msgid "AUX 1 In" msgstr "" -msgid "Recording is not supported by this audio device." +msgid "AUX 2 In" msgstr "" -msgid "Error recording from audio device." +msgid "Codec Loopback" +msgstr "" + +msgid "SunVTS Loopback" msgstr "" msgid "Volume" @@ -232,6 +267,10 @@ msgstr "Could not close audio device \"%s\"." msgid "Failed to change mute state for device '%s'." msgstr "Could not get buffers from device \"%s\"." +#, fuzzy, c-format +msgid "Cannot identify device '%s'." +msgstr "Could not write to device \"%s\"." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -254,10 +293,6 @@ msgstr "" msgid "Failed getting controls attributes on device '%s'." msgstr "" -#, fuzzy, c-format -msgid "Cannot identify device '%s'." -msgstr "Could not write to device \"%s\"." - #, c-format msgid "This isn't a device '%s'." msgstr "" @@ -339,9 +374,6 @@ msgstr "" #~ msgid "Line-in" #~ msgstr "Line-in" -#~ msgid "Microphone" -#~ msgstr "Microphone" - #~ msgid "CD" #~ msgstr "CD" @@ -402,10 +434,6 @@ msgstr "" #~ msgid "Side" #~ msgstr "Video" -#, fuzzy -#~ msgid "Line In" -#~ msgstr "Line-in" - #, fuzzy #~ msgid "Video In" #~ msgstr "Video" @@ -422,10 +450,6 @@ msgstr "" #~ msgid "Microphone Boost" #~ msgstr "Microphone" -#, fuzzy -#~ msgid "Record Source" -#~ msgstr "Record" - #, fuzzy #~ msgid "Monitor Source" #~ msgstr "Monitor" diff --git a/po/eo.gmo b/po/eo.gmo index e841a57e33ac74700bb167eb7a9220002563d01e..cee0bab6b9ead4f00bcbd60d1bcf6ab01befd445 100644 Binary files a/po/eo.gmo and b/po/eo.gmo differ diff --git a/po/eo.po b/po/eo.po index 4be460629bafd8aa3bb36d168dd83bd5b8110c12..68c3b29d30b6383e57493243bab3904301293683 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2011-06-04 21:48+0100\n" "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n" "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" @@ -17,17 +17,23 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' de '%s'" -msgid "Failed to decode JPEG image" -msgstr "" - msgid "Could not connect to server" msgstr "Ne eblis konekti al servilo" +msgid "No URL set." +msgstr "" + msgid "Server does not support seeking." msgstr "" @@ -47,9 +53,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "Interna datumflu-eraro." @@ -62,6 +65,9 @@ msgstr "" msgid "This file is invalid and cannot be played." msgstr "" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "" @@ -107,6 +113,23 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Ne eblis malfermi la sonaparaton por reproduktado." +msgid "" +"Could not open audio device for playback. This version of the Open Sound " +"System is not supported by this element." +msgstr "" + +msgid "Playback is not supported by this audio device." +msgstr "" + +msgid "Audio playback error." +msgstr "" + +msgid "Recording is not supported by this audio device." +msgstr "" + +msgid "Error recording from audio device." +msgstr "" + msgid "" "Could not open audio device for recording. You don't have permission to open " "the device." @@ -115,21 +138,32 @@ msgstr "" msgid "Could not open audio device for recording." msgstr "Ne eblis malfermi sonaparaton por registrado." -msgid "" -"Could not open audio device for playback. This version of the Open Sound " -"System is not supported by this element." +#, fuzzy +msgid "Record Source" +msgstr "Registri" + +msgid "Microphone" +msgstr "Mikrofono" + +msgid "Line In" msgstr "" -msgid "Playback is not supported by this audio device." +msgid "Internal CD" msgstr "" -msgid "Audio playback error." +msgid "SPDIF In" msgstr "" -msgid "Recording is not supported by this audio device." +msgid "AUX 1 In" msgstr "" -msgid "Error recording from audio device." +msgid "AUX 2 In" +msgstr "" + +msgid "Codec Loopback" +msgstr "" + +msgid "SunVTS Loopback" msgstr "" msgid "Volume" @@ -229,6 +263,10 @@ msgstr "" msgid "Failed to change mute state for device '%s'." msgstr "" +#, c-format +msgid "Cannot identify device '%s'." +msgstr "" + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -251,10 +289,6 @@ msgstr "" msgid "Failed getting controls attributes on device '%s'." msgstr "" -#, c-format -msgid "Cannot identify device '%s'." -msgstr "" - #, c-format msgid "This isn't a device '%s'." msgstr "Tio ne estas '%s'-aparato." @@ -323,18 +357,12 @@ msgstr "" #~ msgid "Speaker" #~ msgstr "Parolilo" -#~ msgid "Microphone" -#~ msgstr "Mikrofono" - #~ msgid "CD" #~ msgstr "KD" #~ msgid "Mixer" #~ msgstr "Miksilo" -#~ msgid "Record" -#~ msgstr "Registri" - #~ msgid "Video" #~ msgstr "Video" diff --git a/po/es.gmo b/po/es.gmo index c730896832cb5f9f92f5a1007d80029cfb857994..7bc6db9371326084cb9a6441a41d000b8c334458 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 1dad20fca4a1be0647d46b6765f9b02ae1270e99..c719587560fadbb15503950926cdde9c654355c3 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2011-02-12 18:30+0100\n" "Last-Translator: Jorge González González <aloriel@gmail.com>\n" "Language-Team: Spanish <es@li.org>\n" @@ -18,17 +18,23 @@ msgstr "" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Falló al decodificar la imagen JPEG" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "«%s» por «%s»" -msgid "Failed to decode JPEG image" -msgstr "Falló al decodificar la imagen JPEG" - msgid "Could not connect to server" msgstr "No se pudo conectar con el servidor" +msgid "No URL set." +msgstr "No existe un URL establecido." + msgid "Server does not support seeking." msgstr "El servidor no soporta la búsqueda." @@ -49,9 +55,6 @@ msgstr "" msgid "Server sent bad data." msgstr "El servidor envió datos erróneos." -msgid "No URL set." -msgstr "No existe un URL establecido." - msgid "Internal data stream error." msgstr "Error interno de flujo de datos." @@ -64,6 +67,9 @@ msgstr "Este archivo no contiene flujos reproducibles." msgid "This file is invalid and cannot be played." msgstr "Este archivo no es válido y no se puede reproducir." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Este archivo está corrupto y no se puede reproducir." @@ -118,16 +124,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "No se pudo abrir el dispositivo para reproducir." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"No se pudo abrir el dispositivo de sonido para grabar. No tiene permisos " -"para abrir el dispositivo." - -msgid "Could not open audio device for recording." -msgstr "No se pudo abrir el dispositivo para grabar." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -148,6 +144,45 @@ msgstr "Este dispositivo de sonido no soporta la grabación." msgid "Error recording from audio device." msgstr "Error al grabar del dispositivo de sonido." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"No se pudo abrir el dispositivo de sonido para grabar. No tiene permisos " +"para abrir el dispositivo." + +msgid "Could not open audio device for recording." +msgstr "No se pudo abrir el dispositivo para grabar." + +msgid "Record Source" +msgstr "Origen de la grabación" + +msgid "Microphone" +msgstr "Micrófono" + +msgid "Line In" +msgstr "LÃnea de entrada" + +msgid "Internal CD" +msgstr "CD interno" + +msgid "SPDIF In" +msgstr "Entrada S/PDIF" + +msgid "AUX 1 In" +msgstr "Entrada AUX 1" + +msgid "AUX 2 In" +msgstr "Entrada AUX 2" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Bucle local" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Bucle local" + msgid "Volume" msgstr "Volumen" @@ -255,6 +290,10 @@ msgstr "Falló al establecer la entrada %d en el dispositivo %s." msgid "Failed to change mute state for device '%s'." msgstr "Falló al obtener la potencia de la señal para el dispositivo «%s»." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "No se puede identificar el dispositivo «%s»." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -280,10 +319,6 @@ msgstr "Falló al consultar la norma para el dispositivo «%s»." msgid "Failed getting controls attributes on device '%s'." msgstr "Falló al obtener los atributos de control en el dispositivo «%s»." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "No se puede identificar el dispositivo «%s»." - #, c-format msgid "This isn't a device '%s'." msgstr "Esto no es un dispositivo «%s»." @@ -379,9 +414,6 @@ msgstr "No se puede operar sin reloj" #~ msgid "Line-in" #~ msgstr "LÃnea de entrada" -#~ msgid "Microphone" -#~ msgstr "Micrófono" - #~ msgid "CD" #~ msgstr "CD" @@ -482,21 +514,9 @@ msgstr "No se puede operar sin reloj" #~ msgid "Telephone" #~ msgstr "TeleÌfono" -#~ msgid "Line In" -#~ msgstr "LÃnea de entrada" - -#~ msgid "Internal CD" -#~ msgstr "CD interno" - #~ msgid "Video In" #~ msgstr "Entrada de vÃdeo" -#~ msgid "AUX 1 In" -#~ msgstr "Entrada AUX 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Entrada AUX 2" - #~ msgid "AUX In" #~ msgstr "Entrada AUX" @@ -509,9 +529,6 @@ msgstr "No se puede operar sin reloj" #~ msgid "Microphone Boost" #~ msgstr "Aumento del micrófono" -#~ msgid "Loopback" -#~ msgstr "Bucle local" - #~ msgid "Diagnostic" #~ msgstr "DiagnoÌstico" @@ -524,9 +541,6 @@ msgstr "No se puede operar sin reloj" #~ msgid "Input" #~ msgstr "Entrada" -#~ msgid "Record Source" -#~ msgstr "Origen de la grabación" - #~ msgid "Monitor Source" #~ msgstr "Monitor de origen" @@ -566,9 +580,6 @@ msgstr "No se puede operar sin reloj" #~ msgid "Input Mix" #~ msgstr "Mezclador de entrada" -#~ msgid "SPDIF In" -#~ msgstr "Entrada S/PDIF" - #~ msgid "Microphone 1" #~ msgstr "Micrófono 1" diff --git a/po/eu.gmo b/po/eu.gmo index b691f3d1b2e358da46c8b81a9423bc35a5a5a2d4..880a137f463b7ae92650464c0e71878559c2594e 100644 Binary files a/po/eu.gmo and b/po/eu.gmo differ diff --git a/po/eu.po b/po/eu.po index a44aceaf7e2d65356f792d81f619b49cd806e16e..a15b2b9f5ee3bc8822cfb924dd812ee82bd64798 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2010-03-25 12:37+0100\n" "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n" "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n" @@ -19,17 +19,23 @@ msgstr "" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Huts egin du JPEG irudia deskodetzean" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' - '%s'" -msgid "Failed to decode JPEG image" -msgstr "Huts egin du JPEG irudia deskodetzean" - msgid "Could not connect to server" msgstr "Ezin izan da konektatu zerbitzariarekin" +msgid "No URL set." +msgstr "" + msgid "Server does not support seeking." msgstr "" @@ -51,9 +57,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "Datu-korrontearen barne-errorea." @@ -68,6 +71,9 @@ msgstr "Fitxategi horretan ez dago erreproduzi daitekeen korronterik." msgid "This file is invalid and cannot be played." msgstr "Fitxategi hau ez da baliozkoa eta ezin da erreproduzitu." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Fitxategi hau hondatua dago, eta ezin da erreproduzitu." @@ -121,16 +127,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Ezin izan da audioaren gailua ireki erreproduzitzeko." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Ezin izan da audioaren gailua ireki grabatzeko. Ez duzu baimenik gailua " -"irekitzeko." - -msgid "Could not open audio device for recording." -msgstr "Ezin izan da audioaren gailua ireki grabatzeko." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -150,6 +146,45 @@ msgstr "Audio gailu honek ez du grabatzea onartzen." msgid "Error recording from audio device." msgstr "Errorea audioko gailutik grabatzean." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Ezin izan da audioaren gailua ireki grabatzeko. Ez duzu baimenik gailua " +"irekitzeko." + +msgid "Could not open audio device for recording." +msgstr "Ezin izan da audioaren gailua ireki grabatzeko." + +msgid "Record Source" +msgstr "Grabazioaren iturburua" + +msgid "Microphone" +msgstr "Mikrofonoa" + +msgid "Line In" +msgstr "Sarrerako linea" + +msgid "Internal CD" +msgstr "Barneko CDa" + +msgid "SPDIF In" +msgstr "SPDIF sarrera" + +msgid "AUX 1 In" +msgstr "1. sarrera lagungarria" + +msgid "AUX 2 In" +msgstr "2. sarrera lagungarria" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Atzera-begizta" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Atzera-begizta" + msgid "Volume" msgstr "Bolumena" @@ -253,6 +288,10 @@ msgstr "Huts egin du '%2$s' gailuko %1$d. sarrera ezartzean." msgid "Failed to change mute state for device '%s'." msgstr "Huts egin du '%s' gailuaren seinalearen indarra eskuratzean." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Ezin da '%s' gailua identifikatu." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -278,10 +317,6 @@ msgstr "Huts egin du '%s' gailuaren araua kontsultatzean." msgid "Failed getting controls attributes on device '%s'." msgstr "Huts egin dut '%s' gailuaren kontrol-atributuak eskuratzean." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Ezin da '%s' gailua identifikatu." - #, c-format msgid "This isn't a device '%s'." msgstr "Hau ez da '%s' gailu bat." @@ -376,9 +411,6 @@ msgstr "Ezin du funtzionatu erlojurik gabe" #~ msgid "Line-in" #~ msgstr "Linea-sarrera" -#~ msgid "Microphone" -#~ msgstr "Mikrofonoa" - #~ msgid "CD" #~ msgstr "CDa" @@ -477,21 +509,9 @@ msgstr "Ezin du funtzionatu erlojurik gabe" #~ msgid "Telephone" #~ msgstr "Telefonoa" -#~ msgid "Line In" -#~ msgstr "Sarrerako linea" - -#~ msgid "Internal CD" -#~ msgstr "Barneko CDa" - #~ msgid "Video In" #~ msgstr "Bideo-sarrera" -#~ msgid "AUX 1 In" -#~ msgstr "1. sarrera lagungarria" - -#~ msgid "AUX 2 In" -#~ msgstr "2. sarrera lagungarria" - #~ msgid "AUX In" #~ msgstr "Sarrera lagungarria" @@ -504,9 +524,6 @@ msgstr "Ezin du funtzionatu erlojurik gabe" #~ msgid "Microphone Boost" #~ msgstr "Mikrofonoaren bultzada" -#~ msgid "Loopback" -#~ msgstr "Atzera-begizta" - #~ msgid "Diagnostic" #~ msgstr "Diagnostikoa" @@ -519,9 +536,6 @@ msgstr "Ezin du funtzionatu erlojurik gabe" #~ msgid "Input" #~ msgstr "Sarrera" -#~ msgid "Record Source" -#~ msgstr "Grabazioaren iturburua" - #~ msgid "Monitor Source" #~ msgstr "Monitorearen iturburua" @@ -561,9 +575,6 @@ msgstr "Ezin du funtzionatu erlojurik gabe" #~ msgid "Input Mix" #~ msgstr "Sarrerako nahasketa" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF sarrera" - #~ msgid "Microphone 1" #~ msgstr "1. mikrofonoa" diff --git a/po/fi.gmo b/po/fi.gmo index 90dac93b456047f03f8cd82eddf1e36616bbe189..5af02d0f6c4017e24806318f16d99695871e21d0 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index bd89e8d68fdf7c762dcf0c2d7af5a5d694a737b2..db8456cefc0d66def6a7c304979e1e3946b53e17 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2010-11-17 23:03+0200\n" "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n" "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" @@ -21,17 +21,23 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "JPEG-kuvan purku epäonnistui" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "â€%s†artistilta â€%sâ€" -msgid "Failed to decode JPEG image" -msgstr "JPEG-kuvan purku epäonnistui" - msgid "Could not connect to server" msgstr "Palvelimeen ei saatu yhteyttä" +msgid "No URL set." +msgstr "Ei URL:ää asetettuna." + msgid "Server does not support seeking." msgstr "Pavelin ei tue kelausta." @@ -51,9 +57,6 @@ msgstr "Tapahtui verkkovirhe tai palvelin sulki yhteyden yllättäen." msgid "Server sent bad data." msgstr "Palvelin lähetti virheellistä dataa." -msgid "No URL set." -msgstr "Ei URL:ää asetettuna." - msgid "Internal data stream error." msgstr "Sisäisen tietovirran virhe." @@ -68,6 +71,9 @@ msgstr "Tiedosto ei sisällä soitettavia virtoja." msgid "This file is invalid and cannot be played." msgstr "Tiedosto on virheellinen eikä sitä voida esittää." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Tiedosto on vioittunut eikä sitä voida näyttää." @@ -120,16 +126,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Äänilaitetta ei voitu avata toistettavaksi." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Äänilaitetta ei voitu avata nauhoitusta varten. Laitteen avaamiseen ei ole " -"oikeuksia." - -msgid "Could not open audio device for recording." -msgstr "Äänilaitetta ei voitu avata nauhoitusta varten." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -149,6 +145,45 @@ msgstr "Tämä äänilaite ei tue nauhoitusta." msgid "Error recording from audio device." msgstr "Virhe luettaessa äänilaitteelta." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Äänilaitetta ei voitu avata nauhoitusta varten. Laitteen avaamiseen ei ole " +"oikeuksia." + +msgid "Could not open audio device for recording." +msgstr "Äänilaitetta ei voitu avata nauhoitusta varten." + +msgid "Record Source" +msgstr "Nauhoituslähde" + +msgid "Microphone" +msgstr "Mikrofoni" + +msgid "Line In" +msgstr "Linjatulo" + +msgid "Internal CD" +msgstr "Sisäinen CD" + +msgid "SPDIF In" +msgstr "SPDIF sisään" + +msgid "AUX 1 In" +msgstr "AUX 1 sisään" + +msgid "AUX 2 In" +msgstr "AUX 2 sisään" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Takaisinkytkentä" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Takaisinkytkentä" + msgid "Volume" msgstr "Äänenvoimakkuus" @@ -247,6 +282,10 @@ msgstr "Sisääntuloa %d ei voitu asettaa laitteelle %s." msgid "Failed to change mute state for device '%s'." msgstr "Laitteelta â€%s†ei saatu signaalinvoimakkuutta." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Laitetta â€%s†ei voi tunnistaa." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -271,10 +310,6 @@ msgstr "Laitteen â€%s†videostandardia ei voitu kysyä." msgid "Failed getting controls attributes on device '%s'." msgstr "Laitteen â€%s†ohjainattribuutteja ei voitu lukea." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Laitetta â€%s†ei voi tunnistaa." - #, c-format msgid "This isn't a device '%s'." msgstr "Tämä ei ole laite â€%sâ€." @@ -365,9 +400,6 @@ msgstr "Ei voitu toimia ilman kelloa" #~ msgid "Line-in" #~ msgstr "Linjatulo" -#~ msgid "Microphone" -#~ msgstr "Mikrofoni" - #~ msgid "CD" #~ msgstr "CD" @@ -465,21 +497,9 @@ msgstr "Ei voitu toimia ilman kelloa" #~ msgid "Telephone" #~ msgstr "Puhelin" -#~ msgid "Line In" -#~ msgstr "Linjatulo" - -#~ msgid "Internal CD" -#~ msgstr "Sisäinen CD" - #~ msgid "Video In" #~ msgstr "Videotulo" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 sisään" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 sisään" - #~ msgid "AUX In" #~ msgstr "AUX sisään" @@ -492,9 +512,6 @@ msgstr "Ei voitu toimia ilman kelloa" #~ msgid "Microphone Boost" #~ msgstr "Mikrofonitehostin" -#~ msgid "Loopback" -#~ msgstr "Takaisinkytkentä" - #~ msgid "Diagnostic" #~ msgstr "Diagnosointi" @@ -507,9 +524,6 @@ msgstr "Ei voitu toimia ilman kelloa" #~ msgid "Input" #~ msgstr "Sisään" -#~ msgid "Record Source" -#~ msgstr "Nauhoituslähde" - #~ msgid "Monitor Source" #~ msgstr "Tarkkailulähde" @@ -549,9 +563,6 @@ msgstr "Ei voitu toimia ilman kelloa" #~ msgid "Input Mix" #~ msgstr "Sisään Mix" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF sisään" - #~ msgid "Microphone 1" #~ msgstr "Mikrofoni 1" diff --git a/po/fr.gmo b/po/fr.gmo index 3c8dd62f221e51854491f5ad23d989f52194b5d3..69814da1f7185f62149d6f0acc16212eed5a24a5 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index 401aa0c8295e2049e499c5403be8f072ca6184d5..081aab2d6ebcd12709bb028813df7847997a3b76 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2011-04-28 09:22+0200\n" "Last-Translator: Claude Paroz <claude@2xlibre.net>\n" "Language-Team: French <traduc@traduc.org>\n" @@ -18,17 +18,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Échec de décodage de l'image JPEG" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "« %s » par « %s »" -msgid "Failed to decode JPEG image" -msgstr "Échec de décodage de l'image JPEG" - msgid "Could not connect to server" msgstr "Impossible de se connecter au serveur" +msgid "No URL set." +msgstr "Aucun URL défini." + msgid "Server does not support seeking." msgstr "Le serveur ne gère pas le positionnement." @@ -50,9 +56,6 @@ msgstr "" msgid "Server sent bad data." msgstr "Le serveur a envoyé de mauvaises données." -msgid "No URL set." -msgstr "Aucun URL défini." - msgid "Internal data stream error." msgstr "Erreur interne de flux de données." @@ -65,6 +68,9 @@ msgstr "Ce fichier ne contient aucun flux exploitable." msgid "This file is invalid and cannot be played." msgstr "Ce fichier n'est pas valide et ne peut donc pas être lu." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Ce fichier est corrompu et ne peut pas être lu." @@ -119,16 +125,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Impossible d'ouvrir le périphérique audio pour la lecture." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Impossible d'ouvrir le périphérique audio pour l'enregistrement. Vous n'avez " -"pas les droits nécessaires pour ouvrir le périphérique." - -msgid "Could not open audio device for recording." -msgstr "Impossible d'ouvrir le périphérique audio pour l'enregistrement." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -148,6 +144,45 @@ msgstr "L'enregistrement n'est pas pris en charge par ce périphérique audio." msgid "Error recording from audio device." msgstr "Erreur lors de l'enregistrement à partir du périphérique audio." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Impossible d'ouvrir le périphérique audio pour l'enregistrement. Vous n'avez " +"pas les droits nécessaires pour ouvrir le périphérique." + +msgid "Could not open audio device for recording." +msgstr "Impossible d'ouvrir le périphérique audio pour l'enregistrement." + +msgid "Record Source" +msgstr "Source d'enregistrement" + +msgid "Microphone" +msgstr "Micro" + +msgid "Line In" +msgstr "Entrée ligne" + +msgid "Internal CD" +msgstr "CD interne" + +msgid "SPDIF In" +msgstr "Entrée SPDIF" + +msgid "AUX 1 In" +msgstr "Entrée AUX 1" + +msgid "AUX 2 In" +msgstr "Entrée AUX 2" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Boucle interne" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Boucle interne" + msgid "Volume" msgstr "Volume" @@ -253,6 +288,10 @@ msgstr "Impossible de définir l'entrée %d du périphérique %s." msgid "Failed to change mute state for device '%s'." msgstr "Impossible d'obtenir la force du signal du périphérique « %s »." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Impossible d'identifier le périphérique « %s »." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -278,10 +317,6 @@ msgstr "Impossible d'obtenir la norme du périphérique « %s »." msgid "Failed getting controls attributes on device '%s'." msgstr "Impossible d'obtenir les attributs de contrôle du périphérique « %s »." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Impossible d'identifier le périphérique « %s »." - #, c-format msgid "This isn't a device '%s'." msgstr "Ceci n'est pas un périphérique « %s »." @@ -379,9 +414,6 @@ msgstr "Impossible de fonctionner sans horloge" #~ msgid "Line-in" #~ msgstr "Entrée ligne" -#~ msgid "Microphone" -#~ msgstr "Micro" - #~ msgid "CD" #~ msgstr "CD" @@ -482,21 +514,9 @@ msgstr "Impossible de fonctionner sans horloge" #~ msgid "Telephone" #~ msgstr "Téléphone" -#~ msgid "Line In" -#~ msgstr "Entrée ligne" - -#~ msgid "Internal CD" -#~ msgstr "CD interne" - #~ msgid "Video In" #~ msgstr "Entrée vidéo" -#~ msgid "AUX 1 In" -#~ msgstr "Entrée AUX 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Entrée AUX 2" - #~ msgid "AUX In" #~ msgstr "Entrée AUX" @@ -509,9 +529,6 @@ msgstr "Impossible de fonctionner sans horloge" #~ msgid "Microphone Boost" #~ msgstr "Amplification micro" -#~ msgid "Loopback" -#~ msgstr "Boucle interne" - #~ msgid "Diagnostic" #~ msgstr "Diagnostic" @@ -524,9 +541,6 @@ msgstr "Impossible de fonctionner sans horloge" #~ msgid "Input" #~ msgstr "Entrée" -#~ msgid "Record Source" -#~ msgstr "Source d'enregistrement" - #~ msgid "Monitor Source" #~ msgstr "Source de moniteur" @@ -566,9 +580,6 @@ msgstr "Impossible de fonctionner sans horloge" #~ msgid "Input Mix" #~ msgstr "Mélangeur d'entrée" -#~ msgid "SPDIF In" -#~ msgstr "Entrée SPDIF" - #~ msgid "Microphone 1" #~ msgstr "Microphone 1" diff --git a/po/gl.gmo b/po/gl.gmo index 04f9a724e9272b1c7661b506055ae651f33cb830..618d5619c4920fe6b3cda9a27d7fb53081e85306 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index 3a3bfa2f7dc1734998a9c4bb545056ceb7218059..a4b86eb510f12d347729247ba9779864993073ff 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2012-12-15 03:46+0200\n" "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n" "Language-Team: Galician <proxecto@trasno.net>\n" @@ -19,17 +19,23 @@ msgstr "" "X-Generator: Virtaal 0.7.1\n" "X-Project-Style: gnome\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Produciuse un erro ao descodificar a imaxe JPEG" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "«%s» por «%s»" -msgid "Failed to decode JPEG image" -msgstr "Produciuse un erro ao descodificar a imaxe JPEG" - msgid "Could not connect to server" msgstr "Non foi posÃbel conectarse ao servidor" +msgid "No URL set." +msgstr "No existe un URL estabelecido." + msgid "Server does not support seeking." msgstr "O servidor non admite a busca." @@ -51,9 +57,6 @@ msgstr "" msgid "Server sent bad data." msgstr "O servidor enviou datos erróneos." -msgid "No URL set." -msgstr "No existe un URL estabelecido." - msgid "Internal data stream error." msgstr "Produciuse un erro no fluxo de datos interno." @@ -66,6 +69,9 @@ msgstr "Este ficheiro non contén ningún fluxo reproducÃbel." msgid "This file is invalid and cannot be played." msgstr "Este ficheiro é incorrecto e non pode reproducirse." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Este ficheiro está danado e non pode reproducirse." @@ -119,16 +125,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Non foi posÃbel abrir o dispositivo de son para a reprodución." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Non foi posÃbel abrir o dispositivo de son para a gravación. Vostede non ten " -"permisos para abrir o dispositivo." - -msgid "Could not open audio device for recording." -msgstr "Non foi posÃbel abrir o dispositivo de son para a gravación." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -148,6 +144,45 @@ msgstr "Este dispositivo de son non admite a gravación." msgid "Error recording from audio device." msgstr "Erro ao gravar do dispositivo de son." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Non foi posÃbel abrir o dispositivo de son para a gravación. Vostede non ten " +"permisos para abrir o dispositivo." + +msgid "Could not open audio device for recording." +msgstr "Non foi posÃbel abrir o dispositivo de son para a gravación." + +msgid "Record Source" +msgstr "Orixe da gravación" + +msgid "Microphone" +msgstr "Micrófono" + +msgid "Line In" +msgstr "Liña de entrada" + +msgid "Internal CD" +msgstr "CD interno" + +msgid "SPDIF In" +msgstr "Entrada SPDIF" + +msgid "AUX 1 In" +msgstr "Entrada AUX 1" + +msgid "AUX 2 In" +msgstr "Entrada AUX 2" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Bucle local" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Bucle local" + msgid "Volume" msgstr "Volume" @@ -252,6 +287,10 @@ msgid "Failed to change mute state for device '%s'." msgstr "" "Produciuse un erro ao cambiar o estado de enmudecido para o dispositivo «%s»." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Non foi posÃbel identificar o dispositivo «%s»." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -279,10 +318,6 @@ msgid "Failed getting controls attributes on device '%s'." msgstr "" "Produciuse un erro ao obter os atributos de control do dispositivo «%s»." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Non foi posÃbel identificar o dispositivo «%s»." - #, c-format msgid "This isn't a device '%s'." msgstr "Este non é un dispositivo «%s»." @@ -378,9 +413,6 @@ msgstr "Non é posÃbel operar sen reloxo" #~ msgid "Line-in" #~ msgstr "Liña de entrada" -#~ msgid "Microphone" -#~ msgstr "Micrófono" - #~ msgid "CD" #~ msgstr "CD" @@ -481,21 +513,9 @@ msgstr "Non é posÃbel operar sen reloxo" #~ msgid "Telephone" #~ msgstr "Teléfono" -#~ msgid "Line In" -#~ msgstr "Liña de entrada" - -#~ msgid "Internal CD" -#~ msgstr "CD interno" - #~ msgid "Video In" #~ msgstr "Entrada de vÃdeo" -#~ msgid "AUX 1 In" -#~ msgstr "Entrada AUX 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Entrada AUX 2" - #~ msgid "AUX In" #~ msgstr "Entrada AUX" @@ -508,9 +528,6 @@ msgstr "Non é posÃbel operar sen reloxo" #~ msgid "Microphone Boost" #~ msgstr "Aumento do micrófono" -#~ msgid "Loopback" -#~ msgstr "Bucle local" - #~ msgid "Diagnostic" #~ msgstr "Diagnóstico" @@ -523,9 +540,6 @@ msgstr "Non é posÃbel operar sen reloxo" #~ msgid "Input" #~ msgstr "Entrada" -#~ msgid "Record Source" -#~ msgstr "Orixe da gravación" - #~ msgid "Monitor Source" #~ msgstr "Monitor de orixe" @@ -565,9 +579,6 @@ msgstr "Non é posÃbel operar sen reloxo" #~ msgid "Input Mix" #~ msgstr "Misturador de entrada" -#~ msgid "SPDIF In" -#~ msgstr "Entrada SPDIF" - #~ msgid "Microphone 1" #~ msgstr "Micrófono 1" diff --git a/po/gst-plugins-good-1.0.pot b/po/gst-plugins-good-1.0.pot index 2a398375066c4f2be5f4519093cad36503ff6d52..fb1c045378fb7682ad98c2a6268c72337a4829f3 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.0.10\n" +"Project-Id-Version: gst-plugins-good 1.1.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -16,148 +16,149 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#. TRANSLATORS: 'song title' by 'artist name' -#: ext/pulse/pulsesink.c:2787 -#, c-format -msgid "'%s' by '%s'" +#: ext/jack/gstjackaudiosink.c:358 ext/jack/gstjackaudiosrc.c:366 +msgid "Jack server not found" msgstr "" -#: ext/jpeg/gstjpegdec.c:251 +#: ext/jpeg/gstjpegdec.c:924 ext/jpeg/gstjpegdec.c:1172 +#: ext/jpeg/gstjpegdec.c:1184 ext/jpeg/gstjpegdec.c:1213 +#: ext/jpeg/gstjpegdec.c:1222 ext/jpeg/gstjpegdec.c:1231 +#: ext/jpeg/gstjpegdec.c:1239 msgid "Failed to decode JPEG image" msgstr "" +#. TRANSLATORS: 'song title' by 'artist name' +#: ext/pulse/pulsesink.c:3189 +#, c-format +msgid "'%s' by '%s'" +msgstr "" + #: ext/shout2/gstshout2.c:549 msgid "Could not connect to server" msgstr "" -#: ext/soup/gstsouphttpsrc.c:817 +#: ext/soup/gstsouphttpsrc.c:658 +msgid "No URL set." +msgstr "" + +#: ext/soup/gstsouphttpsrc.c:886 msgid "Server does not support seeking." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1044 +#: ext/soup/gstsouphttpsrc.c:1134 msgid "Could not resolve server name." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1050 +#: ext/soup/gstsouphttpsrc.c:1140 msgid "Could not establish connection to server." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1055 +#: ext/soup/gstsouphttpsrc.c:1145 msgid "Secure connection setup failed." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1060 +#: ext/soup/gstsouphttpsrc.c:1150 msgid "" "A network error occured, or the server closed the connection unexpectedly." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1066 +#: ext/soup/gstsouphttpsrc.c:1156 msgid "Server sent bad data." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1213 -msgid "No URL set." -msgstr "" - -#: gst/avi/gstavidemux.c:5294 +#: gst/avi/gstavidemux.c:5382 msgid "Internal data stream error." msgstr "" -#: gst/avi/gstavimux.c:1788 +#: gst/avi/gstavimux.c:1808 msgid "No or invalid input audio, AVI stream will be corrupt." msgstr "" -#: gst/isomp4/qtdemux.c:526 gst/isomp4/qtdemux.c:530 +#: gst/isomp4/qtdemux.c:565 gst/isomp4/qtdemux.c:569 msgid "This file contains no playable streams." msgstr "" -#: gst/isomp4/qtdemux.c:596 gst/isomp4/qtdemux.c:4168 -#: gst/isomp4/qtdemux.c:4234 gst/isomp4/qtdemux.c:4389 +#: gst/isomp4/qtdemux.c:615 gst/isomp4/qtdemux.c:4596 +#: gst/isomp4/qtdemux.c:4662 gst/isomp4/qtdemux.c:4847 msgid "This file is invalid and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:2530 gst/isomp4/qtdemux.c:2606 -#: gst/isomp4/qtdemux.c:2649 gst/isomp4/qtdemux.c:4998 -#: gst/isomp4/qtdemux.c:5005 gst/isomp4/qtdemux.c:5643 -#: gst/isomp4/qtdemux.c:6071 gst/isomp4/qtdemux.c:6078 -#: gst/isomp4/qtdemux.c:7680 +#: gst/isomp4/qtdemux.c:2276 +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + +#: gst/isomp4/qtdemux.c:2841 gst/isomp4/qtdemux.c:2917 +#: gst/isomp4/qtdemux.c:2960 gst/isomp4/qtdemux.c:5513 +#: gst/isomp4/qtdemux.c:5520 gst/isomp4/qtdemux.c:6162 +#: gst/isomp4/qtdemux.c:6598 gst/isomp4/qtdemux.c:6605 +#: gst/isomp4/qtdemux.c:8409 msgid "This file is corrupt and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:2740 +#: gst/isomp4/qtdemux.c:3051 msgid "Invalid atom size." msgstr "" -#: gst/isomp4/qtdemux.c:2808 +#: gst/isomp4/qtdemux.c:3119 msgid "This file is incomplete and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:5220 +#: gst/isomp4/qtdemux.c:7261 msgid "The video in this file might not play correctly." msgstr "" -#: gst/isomp4/qtdemux.c:7709 +#: gst/isomp4/qtdemux.c:8446 #, c-format msgid "This file contains too many streams. Only playing first %d" msgstr "" -#: gst/rtsp/gstrtspsrc.c:5440 +#: gst/rtsp/gstrtspsrc.c:5755 msgid "" "No supported stream was found. You might need to install a GStreamer RTSP " "extension plugin for Real media streams." msgstr "" -#: gst/rtsp/gstrtspsrc.c:5445 +#: gst/rtsp/gstrtspsrc.c:5760 msgid "" "No supported stream was found. You might need to allow more transport " "protocols or may otherwise be missing the right GStreamer RTSP extension " "plugin." msgstr "" -#: gst/wavparse/gstwavparse.c:2387 +#: gst/wavparse/gstwavparse.c:2457 msgid "Internal data flow error." msgstr "" -#: sys/oss/gstosssink.c:384 sys/oss4/oss4-sink.c:495 -#: sys/oss4/oss4-source.c:360 +#: sys/oss4/oss4-sink.c:495 sys/oss4/oss4-source.c:360 +#: sys/oss/gstosssink.c:384 msgid "" "Could not open audio device for playback. Device is being used by another " "application." msgstr "" -#: sys/oss/gstosssink.c:391 sys/oss4/oss4-sink.c:505 -#: sys/oss4/oss4-source.c:370 +#: sys/oss4/oss4-sink.c:505 sys/oss4/oss4-source.c:370 +#: sys/oss/gstosssink.c:391 msgid "" "Could not open audio device for playback. You don't have permission to open " "the device." msgstr "" -#: sys/oss/gstosssink.c:399 sys/oss4/oss4-sink.c:516 -#: sys/oss4/oss4-source.c:381 +#: sys/oss4/oss4-sink.c:516 sys/oss4/oss4-source.c:381 +#: sys/oss/gstosssink.c:399 msgid "Could not open audio device for playback." msgstr "" -#: sys/oss/gstosssrc.c:377 -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" - -#: sys/oss/gstosssrc.c:385 -msgid "Could not open audio device for recording." -msgstr "" - #: sys/oss4/oss4-sink.c:525 sys/oss4/oss4-source.c:391 msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." msgstr "" -#: sys/oss4/oss4-sink.c:642 +#: sys/oss4/oss4-sink.c:648 msgid "Playback is not supported by this audio device." msgstr "" -#: sys/oss4/oss4-sink.c:649 +#: sys/oss4/oss4-sink.c:655 msgid "Audio playback error." msgstr "" @@ -169,6 +170,52 @@ msgstr "" msgid "Error recording from audio device." msgstr "" +#: sys/oss/gstosssrc.c:377 +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" + +#: sys/oss/gstosssrc.c:385 +msgid "Could not open audio device for recording." +msgstr "" + +#: sys/sunaudio/gstsunaudiomixeroptions.c:109 +msgid "Record Source" +msgstr "" + +#: sys/sunaudio/gstsunaudiomixeroptions.c:120 +msgid "Microphone" +msgstr "" + +#: sys/sunaudio/gstsunaudiomixeroptions.c:121 +msgid "Line In" +msgstr "" + +#: sys/sunaudio/gstsunaudiomixeroptions.c:122 +msgid "Internal CD" +msgstr "" + +#: sys/sunaudio/gstsunaudiomixeroptions.c:123 +msgid "SPDIF In" +msgstr "" + +#: sys/sunaudio/gstsunaudiomixeroptions.c:124 +msgid "AUX 1 In" +msgstr "" + +#: sys/sunaudio/gstsunaudiomixeroptions.c:125 +msgid "AUX 2 In" +msgstr "" + +#: sys/sunaudio/gstsunaudiomixeroptions.c:126 +msgid "Codec Loopback" +msgstr "" + +#: sys/sunaudio/gstsunaudiomixeroptions.c:127 +msgid "SunVTS Loopback" +msgstr "" + #: sys/sunaudio/gstsunaudiomixertrack.c:69 msgid "Volume" msgstr "" @@ -205,61 +252,61 @@ msgstr "" msgid "AUX 2 Out" msgstr "" -#: sys/v4l2/gstv4l2bufferpool.c:1010 +#: sys/v4l2/gstv4l2bufferpool.c:1151 #, c-format msgid "Error reading %d bytes from device '%s'." msgstr "" -#: sys/v4l2/gstv4l2object.c:1170 +#: sys/v4l2/gstv4l2object.c:1262 #, c-format msgid "Failed to enumerate possible video formats device '%s' can work with" msgstr "" -#: sys/v4l2/gstv4l2object.c:2187 +#: sys/v4l2/gstv4l2object.c:2297 #, c-format msgid "Could not map buffers from device '%s'" msgstr "" -#: sys/v4l2/gstv4l2object.c:2195 +#: sys/v4l2/gstv4l2object.c:2305 #, c-format msgid "The driver of device '%s' does not support the IO method %d" msgstr "" -#: sys/v4l2/gstv4l2object.c:2202 +#: sys/v4l2/gstv4l2object.c:2312 #, c-format msgid "The driver of device '%s' does not support any known IO method." msgstr "" -#: sys/v4l2/gstv4l2object.c:2396 +#: sys/v4l2/gstv4l2object.c:2500 #, c-format msgid "Device '%s' does not support video capture" msgstr "" -#: sys/v4l2/gstv4l2object.c:2405 +#: sys/v4l2/gstv4l2object.c:2509 #, c-format msgid "Device '%s' is busy" msgstr "" -#: sys/v4l2/gstv4l2object.c:2411 sys/v4l2/gstv4l2object.c:2422 +#: sys/v4l2/gstv4l2object.c:2515 sys/v4l2/gstv4l2object.c:2526 #, c-format msgid "Device '%s' cannot capture at %dx%d" msgstr "" -#: sys/v4l2/gstv4l2object.c:2431 +#: sys/v4l2/gstv4l2object.c:2535 #, c-format msgid "Device '%s' cannot capture in the specified format" msgstr "" -#: sys/v4l2/gstv4l2object.c:2444 +#: sys/v4l2/gstv4l2object.c:2548 #, c-format msgid "Could not get parameters on device '%s'" msgstr "" -#: sys/v4l2/gstv4l2object.c:2452 +#: sys/v4l2/gstv4l2object.c:2556 msgid "Video device did not accept new frame rate setting." msgstr "" -#: sys/v4l2/gstv4l2object.c:2459 +#: sys/v4l2/gstv4l2object.c:2563 msgid "Video device could not create buffer pool." msgstr "" @@ -283,7 +330,7 @@ msgstr "" msgid "Failed to get radio input on device '%s'. " msgstr "" -#: sys/v4l2/gstv4l2radio.c:202 sys/v4l2/v4l2_calls.c:861 +#: sys/v4l2/gstv4l2radio.c:202 sys/v4l2/v4l2_calls.c:956 #, c-format msgid "Failed to set input %d on device %s." msgstr "" @@ -293,6 +340,11 @@ msgstr "" msgid "Failed to change mute state for device '%s'." msgstr "" +#: sys/v4l2/gstv4l2videooverlay.c:103 sys/v4l2/v4l2_calls.c:559 +#, c-format +msgid "Cannot identify device '%s'." +msgstr "" + #: sys/v4l2/v4l2_calls.c:96 #, c-format msgid "" @@ -300,93 +352,88 @@ msgid "" "it is a v4l1 driver." msgstr "" -#: sys/v4l2/v4l2_calls.c:136 +#: sys/v4l2/v4l2_calls.c:137 #, c-format msgid "Failed to query attributes of input %d in device %s" msgstr "" -#: sys/v4l2/v4l2_calls.c:166 +#: sys/v4l2/v4l2_calls.c:168 #, c-format msgid "Failed to get setting of tuner %d on device '%s'." msgstr "" -#: sys/v4l2/v4l2_calls.c:210 +#: sys/v4l2/v4l2_calls.c:212 #, c-format msgid "Failed to query norm on device '%s'." msgstr "" -#: sys/v4l2/v4l2_calls.c:348 +#: sys/v4l2/v4l2_calls.c:408 #, c-format msgid "Failed getting controls attributes on device '%s'." msgstr "" -#: sys/v4l2/v4l2_calls.c:491 -#, c-format -msgid "Cannot identify device '%s'." -msgstr "" - -#: sys/v4l2/v4l2_calls.c:498 +#: sys/v4l2/v4l2_calls.c:566 #, c-format msgid "This isn't a device '%s'." msgstr "" -#: sys/v4l2/v4l2_calls.c:505 +#: sys/v4l2/v4l2_calls.c:573 #, c-format msgid "Could not open device '%s' for reading and writing." msgstr "" -#: sys/v4l2/v4l2_calls.c:512 +#: sys/v4l2/v4l2_calls.c:580 #, c-format msgid "Device '%s' is not a capture device." msgstr "" -#: sys/v4l2/v4l2_calls.c:520 +#: sys/v4l2/v4l2_calls.c:588 #, c-format msgid "Device '%s' is not a output device." msgstr "" -#: sys/v4l2/v4l2_calls.c:619 +#: sys/v4l2/v4l2_calls.c:687 #, c-format msgid "Failed to set norm for device '%s'." msgstr "" -#: sys/v4l2/v4l2_calls.c:657 +#: sys/v4l2/v4l2_calls.c:725 #, c-format msgid "Failed to get current tuner frequency for device '%s'." msgstr "" -#: sys/v4l2/v4l2_calls.c:699 +#: sys/v4l2/v4l2_calls.c:767 #, c-format msgid "Failed to set current tuner frequency for device '%s' to %lu Hz." msgstr "" -#: sys/v4l2/v4l2_calls.c:733 +#: sys/v4l2/v4l2_calls.c:801 #, c-format msgid "Failed to get signal strength for device '%s'." msgstr "" -#: sys/v4l2/v4l2_calls.c:769 +#: sys/v4l2/v4l2_calls.c:837 #, c-format msgid "Failed to get value for control %d on device '%s'." msgstr "" -#: sys/v4l2/v4l2_calls.c:804 +#: sys/v4l2/v4l2_calls.c:872 #, c-format msgid "Failed to set value %d for control %d on device '%s'." msgstr "" -#: sys/v4l2/v4l2_calls.c:836 +#: sys/v4l2/v4l2_calls.c:931 #, c-format msgid "Failed to get current input on device '%s'. May be it is a radio device" msgstr "" -#: sys/v4l2/v4l2_calls.c:893 +#: sys/v4l2/v4l2_calls.c:988 #, c-format msgid "" "Failed to get current output on device '%s'. May be it is a radio device" msgstr "" -#: sys/v4l2/v4l2_calls.c:918 +#: sys/v4l2/v4l2_calls.c:1013 #, c-format msgid "Failed to set output %d on device %s." msgstr "" diff --git a/po/hr.gmo b/po/hr.gmo index 1fb886331631142a92e92280a9c986a44819a292..e346405e8f1365ddee483d1cc73f93a52b001a4f 100644 Binary files a/po/hr.gmo and b/po/hr.gmo differ diff --git a/po/hr.po b/po/hr.po index 0950d6fce79b6e6edc9284555dcaa3f4ce3783f4..ccc502c7cf2c612a8f2d1e7f693227bf4d6bf236 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2012-04-16 03:04+0200\n" "Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n" "Language-Team: Croatian <lokalizacija@linux.hr>\n" @@ -17,17 +17,23 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Nisam uspio dekodirati JPEG sliku" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "„%s†(„%sâ€)" -msgid "Failed to decode JPEG image" -msgstr "Nisam uspio dekodirati JPEG sliku" - msgid "Could not connect to server" msgstr "Ne mogu se spojiti na poslužitelj" +msgid "No URL set." +msgstr "Nije postavljen URL." + msgid "Server does not support seeking." msgstr "Poslužitelj ne podržava traženje" @@ -48,9 +54,6 @@ msgstr "" msgid "Server sent bad data." msgstr "Poslužitelj je poslao neispravne podatke." -msgid "No URL set." -msgstr "Nije postavljen URL." - msgid "Internal data stream error." msgstr "GreÅ¡ka unutarnjeg niza podataka." @@ -63,6 +66,9 @@ msgstr "Datoteka ne sadrži nizove koji se mogu reproducirati." msgid "This file is invalid and cannot be played." msgstr "Datoteka je neispravna i ne može se reproducirati." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Datoteka je oÅ¡tećena i ne može se reproducirati." @@ -114,16 +120,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Ne mogu otvoriti zvuÄni ureÄ‘aj za reprodukciju." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Ne mogu otvoriti zvuÄni ureÄ‘aj za snimanje. Nemate dozvole za otvaranje " -"ureÄ‘aja." - -msgid "Could not open audio device for recording." -msgstr "Ne mogu otvoriti zvuÄni ureÄ‘aj za snimanje." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -143,6 +139,45 @@ msgstr "Ovaj zvuÄni ureÄ‘aj ne podržava snimanje." msgid "Error recording from audio device." msgstr "GreÅ¡ka snimanja sa zvuÄnog ureÄ‘aja." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Ne mogu otvoriti zvuÄni ureÄ‘aj za snimanje. Nemate dozvole za otvaranje " +"ureÄ‘aja." + +msgid "Could not open audio device for recording." +msgstr "Ne mogu otvoriti zvuÄni ureÄ‘aj za snimanje." + +msgid "Record Source" +msgstr "Izvor snimanja" + +msgid "Microphone" +msgstr "Mikrofon" + +msgid "Line In" +msgstr "Linijski ulaz" + +msgid "Internal CD" +msgstr "Interni CD" + +msgid "SPDIF In" +msgstr "SPDIF ulaz" + +msgid "AUX 1 In" +msgstr "AUX 1 ulaz" + +msgid "AUX 2 In" +msgstr "AUX 2 ulaz" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Povratna petlja" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Povratna petlja" + msgid "Volume" msgstr "Glasnoća" @@ -241,6 +276,10 @@ msgstr "Nisam uspio postaviti ulaz %d na ureÄ‘aj %s." msgid "Failed to change mute state for device '%s'." msgstr "Nisam uspio dobiti snagu signala za ureÄ‘aj „%sâ€." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Ne mogu identificirati ureÄ‘aj „%sâ€." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -265,10 +304,6 @@ msgstr "Nisam uspio ispitati norm na ureÄ‘aju „%sâ€." msgid "Failed getting controls attributes on device '%s'." msgstr "Nisam uspio dobiti svojstva upravljanja na ureÄ‘aju „%sâ€." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Ne mogu identificirati ureÄ‘aj „%sâ€." - #, c-format msgid "This isn't a device '%s'." msgstr "Ovo nije ureÄ‘aj „%sâ€." @@ -355,9 +390,6 @@ msgstr "Ne mogu raditi bez takta" #~ msgid "Line-in" #~ msgstr "Ulazna linija" -#~ msgid "Microphone" -#~ msgstr "Mikrofon" - #~ msgid "CD" #~ msgstr "CD" @@ -455,21 +487,9 @@ msgstr "Ne mogu raditi bez takta" #~ msgid "Telephone" #~ msgstr "Telefon" -#~ msgid "Line In" -#~ msgstr "Linijski ulaz" - -#~ msgid "Internal CD" -#~ msgstr "Interni CD" - #~ msgid "Video In" #~ msgstr "Video ulaz" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 ulaz" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 ulaz" - #~ msgid "AUX In" #~ msgstr "AUX ulaz" @@ -482,9 +502,6 @@ msgstr "Ne mogu raditi bez takta" #~ msgid "Microphone Boost" #~ msgstr "PojaÄanje mikrofona" -#~ msgid "Loopback" -#~ msgstr "Povratna petlja" - #~ msgid "Diagnostic" #~ msgstr "Dijagnostika" @@ -497,9 +514,6 @@ msgstr "Ne mogu raditi bez takta" #~ msgid "Input" #~ msgstr "Ulaz" -#~ msgid "Record Source" -#~ msgstr "Izvor snimanja" - #~ msgid "Monitor Source" #~ msgstr "Izvor nadziranja" @@ -539,9 +553,6 @@ msgstr "Ne mogu raditi bez takta" #~ msgid "Input Mix" #~ msgstr "Ulazni mikser" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF ulaz" - #~ msgid "Microphone 1" #~ msgstr "Mikrofon 1" diff --git a/po/hu.gmo b/po/hu.gmo index 1ad33001a4542da1ca282eed83d440f3d4f2ae85..cb3ae6403b42ffb89314fb0d86bef0577bfebae7 100644 Binary files a/po/hu.gmo and b/po/hu.gmo differ diff --git a/po/hu.po b/po/hu.po index 3ee31c633175d8975bfe300fe8c8b82ff7dbc7c8..5a96f39481443d76fea0b62bda747c696dba3ca0 100644 --- a/po/hu.po +++ b/po/hu.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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2012-11-30 15:05+0100\n" "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n" "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n" @@ -21,17 +21,23 @@ msgstr "" "X-Rosetta-Export-Date: 2007-07-27 19:18:15+0000\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "A JPEG kép visszafejtése meghiúsult" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "„%s†ettÅ‘l: „%sâ€" -msgid "Failed to decode JPEG image" -msgstr "A JPEG kép visszafejtése meghiúsult" - msgid "Could not connect to server" msgstr "Nem lehet csatlakozni a kiszolgálóhoz" +msgid "No URL set." +msgstr "Nincs beállÃtva URL." + msgid "Server does not support seeking." msgstr "A kiszolgáló nem támogatja a tekerést." @@ -52,9 +58,6 @@ msgstr "" msgid "Server sent bad data." msgstr "A kiszolgáló hibás adatokat küldött." -msgid "No URL set." -msgstr "Nincs beállÃtva URL." - msgid "Internal data stream error." msgstr "BelsÅ‘ adatfolyam-hiba." @@ -67,6 +70,9 @@ msgstr "A fájl nem tartalmaz lejátszható adatfolyamokat." msgid "This file is invalid and cannot be played." msgstr "A fájl nem érvényes és nem játszható le." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "A fájl sérült és nem játszható le." @@ -119,16 +125,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Nem nyitható meg hangeszköz a lejátszáshoz." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Nem nyitható meg hangeszköz a felvételhez. Nincs jogosultsága az eszköz " -"megnyitására." - -msgid "Could not open audio device for recording." -msgstr "Nem nyitható meg hangeszköz a felvételhez." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -148,6 +144,45 @@ msgstr "Ez a hangeszköz nem támogatja a felvételt." msgid "Error recording from audio device." msgstr "Hiba a hangeszközrÅ‘l való felvételkor." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Nem nyitható meg hangeszköz a felvételhez. Nincs jogosultsága az eszköz " +"megnyitására." + +msgid "Could not open audio device for recording." +msgstr "Nem nyitható meg hangeszköz a felvételhez." + +msgid "Record Source" +msgstr "Felvétel forrása" + +msgid "Microphone" +msgstr "Mikrofon" + +msgid "Line In" +msgstr "Vonalbemenet" + +msgid "Internal CD" +msgstr "BelsÅ‘ CD" + +msgid "SPDIF In" +msgstr "SPDIF be" + +msgid "AUX 1 In" +msgstr "1. AUX be" + +msgid "AUX 2 In" +msgstr "2. AUX be" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Visszacsatolás" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Visszacsatolás" + msgid "Volume" msgstr "HangerÅ‘" @@ -248,6 +283,10 @@ msgstr "A(z) %d. bemenet beállÃtása meghiúsult a(z) „%s†eszközön." msgid "Failed to change mute state for device '%s'." msgstr "A némÃtási állapot módosÃtása meghiúsult a(z) „%s†eszközön." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Nem azonosÃtható a(z) „%s†eszköz." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -272,10 +311,6 @@ msgstr "A norma lekérdezése meghiúsult a(z) „%s†eszköztÅ‘l." msgid "Failed getting controls attributes on device '%s'." msgstr "A vezérlÅ‘attribútumok lekérése meghiúsult a(z) „%s†eszközön." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Nem azonosÃtható a(z) „%s†eszköz." - #, c-format msgid "This isn't a device '%s'." msgstr "Ez nem egy eszköz: „%sâ€." @@ -367,9 +402,6 @@ msgstr "Óra nélkül lehetetlen a működés" #~ msgid "Line-in" #~ msgstr "Vonalbemenet" -#~ msgid "Microphone" -#~ msgstr "Mikrofon" - #~ msgid "CD" #~ msgstr "CD" @@ -467,21 +499,9 @@ msgstr "Óra nélkül lehetetlen a működés" #~ msgid "Telephone" #~ msgstr "Telefon" -#~ msgid "Line In" -#~ msgstr "Vonalbemenet" - -#~ msgid "Internal CD" -#~ msgstr "BelsÅ‘ CD" - #~ msgid "Video In" #~ msgstr "Video be" -#~ msgid "AUX 1 In" -#~ msgstr "1. AUX be" - -#~ msgid "AUX 2 In" -#~ msgstr "2. AUX be" - #~ msgid "AUX In" #~ msgstr "AUX be" @@ -494,9 +514,6 @@ msgstr "Óra nélkül lehetetlen a működés" #~ msgid "Microphone Boost" #~ msgstr "MikrofonerÅ‘sÃtés" -#~ msgid "Loopback" -#~ msgstr "Visszacsatolás" - #~ msgid "Diagnostic" #~ msgstr "Diagnosztika" @@ -509,9 +526,6 @@ msgstr "Óra nélkül lehetetlen a működés" #~ msgid "Input" #~ msgstr "Bemenet" -#~ msgid "Record Source" -#~ msgstr "Felvétel forrása" - #~ msgid "Monitor Source" #~ msgstr "Monitor forrása" @@ -551,9 +565,6 @@ msgstr "Óra nélkül lehetetlen a működés" #~ msgid "Input Mix" #~ msgstr "Bemeneti keverés" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF be" - #~ msgid "Microphone 1" #~ msgstr "1. mikrofon" diff --git a/po/id.gmo b/po/id.gmo index 262c5dc102398429039bf5b0eb051dc4d941d17a..bf422c36bc228c89394b1df4b1d207f5dfe96599 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index f5192b0b471ff3b24a09bc7f7e305b7ab7347316..cc0ad1152f28559660d340918321bf4e82ea10df 100644 --- a/po/id.po +++ b/po/id.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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2011-02-26 18:09+0700\n" "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n" "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n" @@ -16,17 +16,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Gagal untuk mengawasandi citra JPEG" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' oleh '%s'" -msgid "Failed to decode JPEG image" -msgstr "Gagal untuk mengawasandi citra JPEG" - msgid "Could not connect to server" msgstr "Tak dapat menghubungi server" +msgid "No URL set." +msgstr "Tak ada URL yang ditentukan." + msgid "Server does not support seeking." msgstr "Server tidak mendukung pencarian." @@ -47,9 +53,6 @@ msgstr "" msgid "Server sent bad data." msgstr "Server mengirim data rusak." -msgid "No URL set." -msgstr "Tak ada URL yang ditentukan." - msgid "Internal data stream error." msgstr "Galat arus data internal." @@ -62,6 +65,9 @@ msgstr "Berkas ini tidak berisi arus yang dapat diputar." msgid "This file is invalid and cannot be played." msgstr "Berkas ini tidak sah dan tak dapat diputar." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Berkas ini rusak dan tak dapat diputar." @@ -114,16 +120,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Tak dapat membuka divais audio untuk putar kembali." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Tak dapat membuka divais audio untuk merekam. Anda tak memiliki hak akses " -"untuk membuka divais." - -msgid "Could not open audio device for recording." -msgstr "Tak dapat membuka divais audio untuk merekam." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -143,6 +139,45 @@ msgstr "Perekaman tidak didukung oleh divais audio ini." msgid "Error recording from audio device." msgstr "Galat merekam dari divais audio." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Tak dapat membuka divais audio untuk merekam. Anda tak memiliki hak akses " +"untuk membuka divais." + +msgid "Could not open audio device for recording." +msgstr "Tak dapat membuka divais audio untuk merekam." + +msgid "Record Source" +msgstr "Sumber Rekaman" + +msgid "Microphone" +msgstr "Mikrofon" + +msgid "Line In" +msgstr "Jalur Masuk" + +msgid "Internal CD" +msgstr "CD Internal" + +msgid "SPDIF In" +msgstr "SPDIF Masuk" + +msgid "AUX 1 In" +msgstr "AUX 1 Masuk" + +msgid "AUX 2 In" +msgstr "AUX 2 Masuk" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Loopback" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Loopback" + msgid "Volume" msgstr "Volume" @@ -245,6 +280,10 @@ msgstr "Gagal mengatur masukan %d di divais %s." msgid "Failed to change mute state for device '%s'." msgstr "Gagal mendapatkan kekuatan sinyal untuk divais '%s'." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Tak dapat mengidentifikasi divais '%s'." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -269,10 +308,6 @@ msgstr "Gagal kueri standar di divais '%s'." msgid "Failed getting controls attributes on device '%s'." msgstr "Gagal mendapatkan kendali atribut di divais '%s'." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Tak dapat mengidentifikasi divais '%s'." - #, c-format msgid "This isn't a device '%s'." msgstr "Ini bukan divais '%s'." @@ -361,9 +396,6 @@ msgstr "Tak dapat beroperasi tanpa jam" #~ msgid "Line-in" #~ msgstr "Jalur masuk" -#~ msgid "Microphone" -#~ msgstr "Mikrofon" - #~ msgid "CD" #~ msgstr "CD" @@ -461,21 +493,9 @@ msgstr "Tak dapat beroperasi tanpa jam" #~ msgid "Telephone" #~ msgstr "Telepon" -#~ msgid "Line In" -#~ msgstr "Jalur Masuk" - -#~ msgid "Internal CD" -#~ msgstr "CD Internal" - #~ msgid "Video In" #~ msgstr "Video Masuk" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 Masuk" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 Masuk" - #~ msgid "AUX In" #~ msgstr "AUX Masuk" @@ -488,9 +508,6 @@ msgstr "Tak dapat beroperasi tanpa jam" #~ msgid "Microphone Boost" #~ msgstr "Mikrofon Boost" -#~ msgid "Loopback" -#~ msgstr "Loopback" - #~ msgid "Diagnostic" #~ msgstr "Diagnosis" @@ -503,9 +520,6 @@ msgstr "Tak dapat beroperasi tanpa jam" #~ msgid "Input" #~ msgstr "Masukan" -#~ msgid "Record Source" -#~ msgstr "Sumber Rekaman" - #~ msgid "Monitor Source" #~ msgstr "Sumber Monitor" @@ -545,9 +559,6 @@ msgstr "Tak dapat beroperasi tanpa jam" #~ msgid "Input Mix" #~ msgstr "Mix Masukan" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF Masuk" - #~ msgid "Microphone 1" #~ msgstr "Mikrofon 1" diff --git a/po/it.gmo b/po/it.gmo index 47954311d9757606329c916f258a72a93fc306da..0acb11442c966be513867e73ee59e9f91ff74e7d 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index 5e10ac574ca17e57278770cfe982bac58dee5977..e9d84ed89b77cdcd2e7ce8386755546989f98955 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2010-10-25 10:11+0200\n" "Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n" "Language-Team: Italian <tp@lists.linux.it>\n" @@ -16,17 +16,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Decodifica dell'immagine JPEG non riuscita" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "«%s» di «%s»" -msgid "Failed to decode JPEG image" -msgstr "Decodifica dell'immagine JPEG non riuscita" - msgid "Could not connect to server" msgstr "Impossibile connettersi al server" +msgid "No URL set." +msgstr "Nessun URL impostato." + msgid "Server does not support seeking." msgstr "Il server non supporta il posizionamento." @@ -48,9 +54,6 @@ msgstr "" msgid "Server sent bad data." msgstr "In server ha inviato dati errati." -msgid "No URL set." -msgstr "Nessun URL impostato." - msgid "Internal data stream error." msgstr "Errore interno nello stream dei dati." @@ -64,6 +67,9 @@ msgstr "Questo file non contiene alcuno stream riproducibile." msgid "This file is invalid and cannot be played." msgstr "Questo file non è valido e non può essere riprodotto." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Questo file è alterato e non può essere riprodotto." @@ -117,16 +123,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Impossibile aprire il dispositivo audio per la riproduzione." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Impossibile aprire il dispositivo audio per la registrazione. Permessi non " -"sufficienti per aprire il dispositivo." - -msgid "Could not open audio device for recording." -msgstr "Impossibile aprire il dispositivo audio per la registrazione." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -146,6 +142,45 @@ msgstr "Questo dispositivo audio non supporta la registrazione." msgid "Error recording from audio device." msgstr "Errore nel registrare dal dispositivo audio." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Impossibile aprire il dispositivo audio per la registrazione. Permessi non " +"sufficienti per aprire il dispositivo." + +msgid "Could not open audio device for recording." +msgstr "Impossibile aprire il dispositivo audio per la registrazione." + +msgid "Record Source" +msgstr "Sorgente registrazione" + +msgid "Microphone" +msgstr "Microfono" + +msgid "Line In" +msgstr "Linea in" + +msgid "Internal CD" +msgstr "CD interno" + +msgid "SPDIF In" +msgstr "SPDIF in" + +msgid "AUX 1 In" +msgstr "AUX 1 in" + +msgid "AUX 2 In" +msgstr "AUX 2 in" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Loopback" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Loopback" + msgid "Volume" msgstr "Volume" @@ -247,6 +282,10 @@ msgstr "Impostazione dell'ingresso %d sul device «%s» non riuscita." msgid "Failed to change mute state for device '%s'." msgstr "Recupero dell'intensità del segnale per il device «%s» non riuscito." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Impossibile identificare il device «%s»." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -280,10 +319,6 @@ msgstr "Interrogazione di norm sul device «%s» non riuscita." msgid "Failed getting controls attributes on device '%s'." msgstr "Recupero degli attributi dei controlli sul device «%s» non riuscito." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Impossibile identificare il device «%s»." - #, c-format msgid "This isn't a device '%s'." msgstr "Questo non è un dispositivo «%s»." @@ -381,9 +416,6 @@ msgstr "Impossibile operare senza un clock" #~ msgid "Line-in" #~ msgstr "Linea in" -#~ msgid "Microphone" -#~ msgstr "Microfono" - #~ msgid "CD" #~ msgstr "CD" @@ -485,21 +517,9 @@ msgstr "Impossibile operare senza un clock" #~ msgid "Telephone" #~ msgstr "Telefono" -#~ msgid "Line In" -#~ msgstr "Linea in" - -#~ msgid "Internal CD" -#~ msgstr "CD interno" - #~ msgid "Video In" #~ msgstr "Video in" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 in" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 in" - #~ msgid "AUX In" #~ msgstr "AUX in" @@ -512,9 +532,6 @@ msgstr "Impossibile operare senza un clock" #~ msgid "Microphone Boost" #~ msgstr "Incremento microfono" -#~ msgid "Loopback" -#~ msgstr "Loopback" - #~ msgid "Diagnostic" #~ msgstr "Diagnostica" @@ -527,9 +544,6 @@ msgstr "Impossibile operare senza un clock" #~ msgid "Input" #~ msgstr "Input" -#~ msgid "Record Source" -#~ msgstr "Sorgente registrazione" - #~ msgid "Monitor Source" #~ msgstr "Sorgente monitor" @@ -570,9 +584,6 @@ msgstr "Impossibile operare senza un clock" #~ msgid "Input Mix" #~ msgstr "Mix ingresso" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF in" - #~ msgid "Microphone 1" #~ msgstr "Microfono 1" diff --git a/po/ja.gmo b/po/ja.gmo index dc8aced0274f146fba889c3362bebef201c62ac8..022d9627eb8446e4d186fc0e8ece057d5e925875 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index 974a1d03bd56be0f83d6044680de1cce9d4b720f..b20bf34cd87cdc9a7a56b77a34b1d701f030cb2e 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2012-12-22 20:13+0900\n" "Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n" "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" @@ -19,17 +19,23 @@ msgstr "" "X-Generator: Poedit 1.5.4\n" "Plural-Forms: nplurals=1; plural=0;\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "JPEGç”»åƒã®ãƒ‡ã‚³ãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸ" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' , '%s'" -msgid "Failed to decode JPEG image" -msgstr "JPEGç”»åƒã®ãƒ‡ã‚³ãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸ" - msgid "Could not connect to server" msgstr "サーãƒãƒ¼ã¸æŽ¥ç¶šã§ãã¾ã›ã‚“" +msgid "No URL set." +msgstr "URLãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。" + msgid "Server does not support seeking." msgstr "サーãƒãƒ¼ã¯ã‚·ãƒ¼ã‚¯ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" @@ -49,9 +55,6 @@ msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸã‹ã€ã‚µãƒ¼ãƒãƒ¼ãŒäºˆæœŸã› msgid "Server sent bad data." msgstr "サーãƒãŒä¸æ£ãªãƒ‡ãƒ¼ã‚¿ã‚’é€ä¿¡ã—ã¾ã—ãŸã€‚" -msgid "No URL set." -msgstr "URLãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。" - msgid "Internal data stream error." msgstr "内部データストリームエラー" @@ -65,6 +68,9 @@ msgstr "ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯å†ç”Ÿä¸å¯èƒ½ãªã‚¹ãƒˆãƒªãƒ¼ãƒ ãŒå«ã¾ã‚Œã¦ msgid "This file is invalid and cannot be played." msgstr "ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ä¸æ£ãªãŸã‚å†ç”Ÿã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯å£Šã‚Œã¦ã„ã‚‹ãŸã‚å†ç”Ÿã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“" @@ -120,17 +126,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "音声デãƒã‚¤ã‚¹ã‚’èªã¿å–り用ã«é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“。" -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"録音用ã«ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒ‡ãƒã‚¤ã‚¹ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚デãƒã‚¤ã‚¹ã‚’é–‹ããŸã‚ã®" -"権é™ãŒã‚ã‚Šã¾ã›ã‚“。" - -# SUN REVIEWED -msgid "Could not open audio device for recording." -msgstr "音声デãƒã‚¤ã‚¹ã‚’録音用ã«é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“。" - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -150,6 +145,47 @@ msgstr "ã“ã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒ‡ãƒã‚¤ã‚¹ã«ã‚ˆã£ã¦éŒ²éŸ³ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œ msgid "Error recording from audio device." msgstr "オーディオデãƒã‚¤ã‚¹ã‹ã‚‰ã®éŒ²éŸ³æ™‚ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"録音用ã«ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒ‡ãƒã‚¤ã‚¹ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚デãƒã‚¤ã‚¹ã‚’é–‹ããŸã‚ã®" +"権é™ãŒã‚ã‚Šã¾ã›ã‚“。" + +# SUN REVIEWED +msgid "Could not open audio device for recording." +msgstr "音声デãƒã‚¤ã‚¹ã‚’録音用ã«é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“。" + +msgid "Record Source" +msgstr "録音ソース" + +# SUN REVIEWED +msgid "Microphone" +msgstr "マイクãƒãƒ•ã‚©ãƒ³" + +msgid "Line In" +msgstr "ライン入力" + +msgid "Internal CD" +msgstr "内蔵CD" + +msgid "SPDIF In" +msgstr "SPDIF入力" + +msgid "AUX 1 In" +msgstr "AUX 1入力" + +msgid "AUX 2 In" +msgstr "AUX 2入力" + +#, fuzzy +msgid "Codec Loopback" +msgstr "ループãƒãƒƒã‚¯" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "ループãƒãƒƒã‚¯" + # SUN REVIEWED msgid "Volume" msgstr "音é‡" @@ -253,6 +289,10 @@ msgstr "デãƒã‚¤ã‚¹ '%2$s' 上ã®å…¥åŠ›%1$d ã®è¨å®šã«å¤±æ•—ã—ã¾ã—ãŸã€‚" msgid "Failed to change mute state for device '%s'." msgstr "デãƒã‚¤ã‚¹ '%s' ã®ãƒŸãƒ¥ãƒ¼ãƒˆçŠ¶æ…‹ã®å¤‰æ›´ã«å¤±æ•—ã—ã¾ã—ãŸ" +#, c-format +msgid "Cannot identify device '%s'." +msgstr "デãƒã‚¤ã‚¹'%s'を特定ã§ãã¾ã›ã‚“。" + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -277,10 +317,6 @@ msgstr "デãƒã‚¤ã‚¹ '%s' 上ã®ãƒŽãƒ«ãƒ ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" msgid "Failed getting controls attributes on device '%s'." msgstr "デãƒã‚¤ã‚¹ '%s' ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«å±žæ€§ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸ" -#, c-format -msgid "Cannot identify device '%s'." -msgstr "デãƒã‚¤ã‚¹'%s'を特定ã§ãã¾ã›ã‚“。" - #, c-format msgid "This isn't a device '%s'." msgstr "ã“ã‚Œã¯ãƒ‡ãƒã‚¤ã‚¹ '%s' ã§ã¯ã‚ã‚Šã¾ã›ã‚“" @@ -376,10 +412,6 @@ msgstr "クãƒãƒƒã‚¯ãªã—ã§ã¯å‹•ä½œã§ãã¾ã›ã‚“。" #~ msgid "Line-in" #~ msgstr "ライン入力" -# SUN REVIEWED -#~ msgid "Microphone" -#~ msgstr "マイクãƒãƒ•ã‚©ãƒ³" - # SUN REVIEWED #~ msgid "CD" #~ msgstr "CD" @@ -497,21 +529,9 @@ msgstr "クãƒãƒƒã‚¯ãªã—ã§ã¯å‹•ä½œã§ãã¾ã›ã‚“。" #~ msgid "Telephone" #~ msgstr "電話" -#~ msgid "Line In" -#~ msgstr "ライン入力" - -#~ msgid "Internal CD" -#~ msgstr "内蔵CD" - #~ msgid "Video In" #~ msgstr "ビデオ入力" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1入力" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2入力" - #~ msgid "AUX In" #~ msgstr "AUX入力" @@ -524,9 +544,6 @@ msgstr "クãƒãƒƒã‚¯ãªã—ã§ã¯å‹•ä½œã§ãã¾ã›ã‚“。" #~ msgid "Microphone Boost" #~ msgstr "マイクãƒãƒ•ã‚©ãƒ³ãƒ–ースト" -#~ msgid "Loopback" -#~ msgstr "ループãƒãƒƒã‚¯" - #~ msgid "Diagnostic" #~ msgstr "診æ–" @@ -539,9 +556,6 @@ msgstr "クãƒãƒƒã‚¯ãªã—ã§ã¯å‹•ä½œã§ãã¾ã›ã‚“。" #~ msgid "Input" #~ msgstr "入力" -#~ msgid "Record Source" -#~ msgstr "録音ソース" - #~ msgid "Monitor Source" #~ msgstr "モニターソース" @@ -582,9 +596,6 @@ msgstr "クãƒãƒƒã‚¯ãªã—ã§ã¯å‹•ä½œã§ãã¾ã›ã‚“。" #~ msgid "Input Mix" #~ msgstr "入力ミックス" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF入力" - #~ msgid "Microphone 1" #~ msgstr "マイクãƒãƒ•ã‚©ãƒ³1" diff --git a/po/lt.gmo b/po/lt.gmo index 2ecb73298d9fb0e11d4758af9966c1048595750a..2488dc1bb36979c6f02c2db70b319cc97823c0b3 100644 Binary files a/po/lt.gmo and b/po/lt.gmo differ diff --git a/po/lt.po b/po/lt.po index 7a135bfe778f8efc37514b718cffb4edb1921be3..e134cdc8d57de2c82da1774b414b48626aad8420 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2010-07-16 19:34+0300\n" "Last-Translator: Žygimantas BeruÄka <uid0@akl.lt>\n" "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n" @@ -19,17 +19,23 @@ msgstr "" "%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Virtaal 0.6.1\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Nepavyko dekoduoti JPEG paveikslÄ—lio" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "„%s“ atlieka „%s“" -msgid "Failed to decode JPEG image" -msgstr "Nepavyko dekoduoti JPEG paveikslÄ—lio" - msgid "Could not connect to server" msgstr "Nepavyko prisijungti prie serverio" +msgid "No URL set." +msgstr "" + msgid "Server does not support seeking." msgstr "" @@ -51,9 +57,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "VidinÄ— duomenų srauto klaida." @@ -66,6 +69,9 @@ msgstr "Å iame faile nÄ—ra atkurtinų srautų." msgid "This file is invalid and cannot be played." msgstr "Failas netinkamas ir negali bÅ«ti atkurtas." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Failas sugadintas ir negali bÅ«ti atkurtas." @@ -116,16 +122,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Nepavyko atverti garso įrenginio grojimui. " -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Nepavyko atverti garso įrenginio įraÅ¡ymui. JÅ«s neturite leidimo atverti " -"įrenginį." - -msgid "Could not open audio device for recording." -msgstr "Nepavyko atverti garso įrenginio įraÅ¡ymui." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -145,6 +141,45 @@ msgstr "Å is garso įrenginys nepalaiko grojimo." msgid "Error recording from audio device." msgstr "Klaida įraÅ¡ant iÅ¡ garso įrenginio." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Nepavyko atverti garso įrenginio įraÅ¡ymui. JÅ«s neturite leidimo atverti " +"įrenginį." + +msgid "Could not open audio device for recording." +msgstr "Nepavyko atverti garso įrenginio įraÅ¡ymui." + +msgid "Record Source" +msgstr "Ä®raÅ¡ymo Å¡altinis" + +msgid "Microphone" +msgstr "Mikrofonas" + +msgid "Line In" +msgstr "Ä®einanti linija" + +msgid "Internal CD" +msgstr "Vidinis CD" + +msgid "SPDIF In" +msgstr "SPDIF įvestis" + +msgid "AUX 1 In" +msgstr "AUX 1 įvestis" + +msgid "AUX 2 In" +msgstr "AUX 2 įvestis" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Perduoti ratu" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Perduoti ratu" + msgid "Volume" msgstr "Garsumas" @@ -243,6 +278,10 @@ msgstr "Nepavyko nustatyti įvesties %d įrenginyje %s." msgid "Failed to change mute state for device '%s'." msgstr "Nepavyko gauti įrenginio „%s“ signalo stiprumo." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Nepavyko nustatyti įrenginio „%s“." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -267,10 +306,6 @@ msgstr "Nepavyko užklausti normalÄ—s įrenginyje „%s“." msgid "Failed getting controls attributes on device '%s'." msgstr "Nepavyko gauti valdymo atributų įrenginyje „%s“." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Nepavyko nustatyti įrenginio „%s“." - #, c-format msgid "This isn't a device '%s'." msgstr "Tai nÄ—ra įrenginys „%s“." @@ -361,9 +396,6 @@ msgstr "Negali veikti be laikrodžio" #~ msgid "Line-in" #~ msgstr "Ä®vedimas" -#~ msgid "Microphone" -#~ msgstr "Mikrofonas" - #~ msgid "CD" #~ msgstr "CD" @@ -461,21 +493,9 @@ msgstr "Negali veikti be laikrodžio" #~ msgid "Telephone" #~ msgstr "Telefonas" -#~ msgid "Line In" -#~ msgstr "Ä®einanti linija" - -#~ msgid "Internal CD" -#~ msgstr "Vidinis CD" - #~ msgid "Video In" #~ msgstr "Vaizdo įvestis" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 įvestis" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 įvestis" - #~ msgid "AUX In" #~ msgstr "AUX įvestis" @@ -488,9 +508,6 @@ msgstr "Negali veikti be laikrodžio" #~ msgid "Microphone Boost" #~ msgstr "Mikrofono pagarsinimas" -#~ msgid "Loopback" -#~ msgstr "Perduoti ratu" - #~ msgid "Diagnostic" #~ msgstr "Diagnostika" @@ -503,9 +520,6 @@ msgstr "Negali veikti be laikrodžio" #~ msgid "Input" #~ msgstr "Ä®vestis" -#~ msgid "Record Source" -#~ msgstr "Ä®raÅ¡ymo Å¡altinis" - #~ msgid "Monitor Source" #~ msgstr "Monitoriaus Å¡altinis" @@ -545,9 +559,6 @@ msgstr "Negali veikti be laikrodžio" #~ msgid "Input Mix" #~ msgstr "Ä®vesties maiÅ¡a" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF įvestis" - #~ msgid "Microphone 1" #~ msgstr "Mikrofonas 1" diff --git a/po/lv.gmo b/po/lv.gmo index b8c2357b63b6bd51602e2419d115918164df7c13..aea90a52d42081e7725432c94e1935eb30cc56cc 100644 Binary files a/po/lv.gmo and b/po/lv.gmo differ diff --git a/po/lv.po b/po/lv.po index 3b33e8722a94ce03f992ba002a494afa48eb489a..ec721d1dbb85bfd8a3730e9fc391037a29f8b11e 100644 --- a/po/lv.po +++ b/po/lv.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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2011-09-02 11:23-0000\n" "Last-Translator: Rihards PriedÄ«tis <rprieditis@gmail.com>\n" "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n" @@ -20,17 +20,23 @@ msgstr "" "2);\n" "X-Generator: Lokalize 1.0\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "NeizdevÄs atkodÄ“t JPEG attÄ“lu" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "\"%s\"ko \"%s\"" -msgid "Failed to decode JPEG image" -msgstr "NeizdevÄs atkodÄ“t JPEG attÄ“lu" - msgid "Could not connect to server" msgstr "Nevar savienoties ar serveri" +msgid "No URL set." +msgstr "URL nav uzstÄdÄ«ts." + msgid "Server does not support seeking." msgstr "Serveris neatbalsta meklÄ“Å¡anu." @@ -50,9 +56,6 @@ msgstr "Notika tÄ«kla kļūda, vai serveris negaidÄ«ti aizvÄ“ra savienojumu." msgid "Server sent bad data." msgstr "Serveris nosÅ«tija sliktus datus." -msgid "No URL set." -msgstr "URL nav uzstÄdÄ«ts." - msgid "Internal data stream error." msgstr "IekÅ¡Ä“jÄs datu plÅ«smas kļūda." @@ -65,6 +68,9 @@ msgstr "Å is fails nesatur nevienu atskaņojamu straumi." msgid "This file is invalid and cannot be played." msgstr "Å is fails ir nederÄ«gs un nevar tikt atskaņots." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Å is fails ir bojÄts un nevar tikt atskaņots." @@ -116,16 +122,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Nav iespÄ“jams atvÄ“rt audio ierÄ«ci atskaņoÅ¡anai." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Nevar atvÄ“rt audio ierÄ«ci ierakstÄ«Å¡anai. Jums nav nepiecieÅ¡amo piekļuves " -"tiesÄ«bu, lai atvÄ“rtu ierÄ«ci." - -msgid "Could not open audio device for recording." -msgstr "NevarÄ“ja atvÄ“rt audio ierÄ«ci ierakstÄ«Å¡anai." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -145,6 +141,45 @@ msgstr "Å Ä« audio ierÄ«ce neatablsta ierkastÄ«Å¡anu." msgid "Error recording from audio device." msgstr "Kļūda ierakstot no audio iekÄrtas." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Nevar atvÄ“rt audio ierÄ«ci ierakstÄ«Å¡anai. Jums nav nepiecieÅ¡amo piekļuves " +"tiesÄ«bu, lai atvÄ“rtu ierÄ«ci." + +msgid "Could not open audio device for recording." +msgstr "NevarÄ“ja atvÄ“rt audio ierÄ«ci ierakstÄ«Å¡anai." + +msgid "Record Source" +msgstr "IerakstÄ«Å¡anas avots" + +msgid "Microphone" +msgstr "Mikrofons" + +msgid "Line In" +msgstr "LÄ«nijas ieeja" + +msgid "Internal CD" +msgstr "IekÅ¡Ä“jais CD" + +msgid "SPDIF In" +msgstr "SPDIF ieeja" + +msgid "AUX 1 In" +msgstr "AUX 1 ieeja" + +msgid "AUX 2 In" +msgstr "AUX 2 ieeja" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Atpakaļcikls" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Atpakaļcikls" + msgid "Volume" msgstr "Skaļums" @@ -245,6 +280,10 @@ msgstr "NeizdevÄs uzstÄdÄ«t ievadi %d uz ierÄ«ces %s." msgid "Failed to change mute state for device '%s'." msgstr "NeizdevÄs saņemt signÄla stiprumu no ierÄ«ces \"%s\"." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Nevar atpazÄ«t ierÄ«ci \"%s\"" + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -269,10 +308,6 @@ msgstr "NeizdevÄs noskaidrot normu ierÄ«cei \"%s\"." msgid "Failed getting controls attributes on device '%s'." msgstr "NeizdevÄs iegÅ«t kontroles atribÅ«tus ierÄ«cei \"%s\"." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Nevar atpazÄ«t ierÄ«ci \"%s\"" - #, c-format msgid "This isn't a device '%s'." msgstr "Å Ä« nav ierÄ«ce \"%s\"" @@ -364,9 +399,6 @@ msgstr "Nevar veikt darbÄ«bas bez pulksteņa" #~ msgid "Line-in" #~ msgstr "Skaņas ieeja" -#~ msgid "Microphone" -#~ msgstr "Mikrofons" - #~ msgid "CD" #~ msgstr "CD" @@ -464,21 +496,9 @@ msgstr "Nevar veikt darbÄ«bas bez pulksteņa" #~ msgid "Telephone" #~ msgstr "Telefons" -#~ msgid "Line In" -#~ msgstr "LÄ«nijas ieeja" - -#~ msgid "Internal CD" -#~ msgstr "IekÅ¡Ä“jais CD" - #~ msgid "Video In" #~ msgstr "Video ieeja" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 ieeja" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 ieeja" - #~ msgid "AUX In" #~ msgstr "AUC ieeja" @@ -491,9 +511,6 @@ msgstr "Nevar veikt darbÄ«bas bez pulksteņa" #~ msgid "Microphone Boost" #~ msgstr "Mikrofona pastiprinÄjums" -#~ msgid "Loopback" -#~ msgstr "Atpakaļcikls" - #~ msgid "Diagnostic" #~ msgstr "Diagnostika" @@ -506,9 +523,6 @@ msgstr "Nevar veikt darbÄ«bas bez pulksteņa" #~ msgid "Input" #~ msgstr "Ievads" -#~ msgid "Record Source" -#~ msgstr "IerakstÄ«Å¡anas avots" - #~ msgid "Monitor Source" #~ msgstr "Monitora avots" @@ -548,9 +562,6 @@ msgstr "Nevar veikt darbÄ«bas bez pulksteņa" #~ msgid "Input Mix" #~ msgstr "Ieejas mikseris" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF ieeja" - #~ msgid "Microphone 1" #~ msgstr "Mikrofons 1" diff --git a/po/mt.gmo b/po/mt.gmo index 7e4bfd5dca9accea2158df2adcdfbdd81a59d420..b9cf43f757a1dacf0cc63875cd9f98b37816e727 100644 Binary files a/po/mt.gmo and b/po/mt.gmo differ diff --git a/po/mt.po b/po/mt.po index a168223e62ba63d20cc1f6a026a40763d1b8db51..c1f6745921aa63fe207e19013a552fccaa0bd9a4 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2008-10-26 19:09+0100\n" "Last-Translator: Michel Bugeja <michelbugeja@rabatmalta.com>\n" "Language-Team: Maltese <translation-team-mt@lists.sourceforge.net>\n" @@ -16,17 +16,23 @@ msgstr "" "X-Poedit-Language: Maltese\n" "X-Poedit-Country: MALTA\n" -#. TRANSLATORS: 'song title' by 'artist name' -#, c-format -msgid "'%s' by '%s'" +msgid "Jack server not found" msgstr "" msgid "Failed to decode JPEG image" msgstr "Problem fid-decoding tal-istampa JPEG" +#. TRANSLATORS: 'song title' by 'artist name' +#, c-format +msgid "'%s' by '%s'" +msgstr "" + msgid "Could not connect to server" msgstr "Mhux possibli naqbad mas-server" +msgid "No URL set." +msgstr "" + #, fuzzy msgid "Server does not support seeking." msgstr "Appart '%s' ma jagħmilx video capture" @@ -49,9 +55,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "Problema interna fid-data stream" @@ -64,6 +67,9 @@ msgstr "Il-fajl ma fiħ l-ebda stream li tista tindaqq." msgid "This file is invalid and cannot be played." msgstr "Il-fajl mhux validu u ma jistax jindaqq" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Il-fajl huwa korrott u ma jistax jinfetaħ." @@ -108,16 +114,6 @@ msgstr "Audio device ma jistax jintuża. M'għandex aÄ‹Ä‹ess għalih." msgid "Could not open audio device for playback." msgstr "Audio device ma jistax jintuża." -#, fuzzy -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Audio device ma jistax jintuża biex tirrekordja. M'għandex aÄ‹Ä‹ess għalih." - -msgid "Could not open audio device for recording." -msgstr "Audio device ma jistax jintuża biex tirrekordja." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -137,6 +133,45 @@ msgstr "Irrekordjar mhux issapportjat minn dan l-apparat tal-awdjo." msgid "Error recording from audio device." msgstr "Å»ball fl-irrekordjar mill-apparat tal-awdjo." +#, fuzzy +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Audio device ma jistax jintuża biex tirrekordja. M'għandex aÄ‹Ä‹ess għalih." + +msgid "Could not open audio device for recording." +msgstr "Audio device ma jistax jintuża biex tirrekordja." + +#, fuzzy +msgid "Record Source" +msgstr "Record" + +msgid "Microphone" +msgstr "Mikrofonu" + +#, fuzzy +msgid "Line In" +msgstr "Line-in" + +msgid "Internal CD" +msgstr "" + +msgid "SPDIF In" +msgstr "" + +msgid "AUX 1 In" +msgstr "" + +msgid "AUX 2 In" +msgstr "" + +msgid "Codec Loopback" +msgstr "" + +msgid "SunVTS Loopback" +msgstr "" + msgid "Volume" msgstr "Volum" @@ -239,6 +274,10 @@ msgstr "Problema biex nissettja input %d fuq apparat %s." msgid "Failed to change mute state for device '%s'." msgstr "Problema biex inÄ¡ib signal strength fuq l-apparat '%s'." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Device '%s' mhux identifikat." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -263,10 +302,6 @@ msgstr "Ma stajx nfittex norm fuq apparat '%s'." msgid "Failed getting controls attributes on device '%s'." msgstr "L-attributi ta' kontroll ta' device '%s' ma nqrawx." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Device '%s' mhux identifikat." - #, c-format msgid "This isn't a device '%s'." msgstr "Dan mhux device %s." @@ -360,9 +395,6 @@ msgstr "Ma nistax nħaddem mingħajr arloÄ¡Ä¡" #~ msgid "Line-in" #~ msgstr "Line-in" -#~ msgid "Microphone" -#~ msgstr "Mikrofonu" - #~ msgid "CD" #~ msgstr "CD" @@ -372,9 +404,6 @@ msgstr "Ma nistax nħaddem mingħajr arloÄ¡Ä¡" #~ msgid "PCM-2" #~ msgstr "PCM-2" -#~ msgid "Record" -#~ msgstr "Record" - #~ msgid "In-gain" #~ msgstr "In-gain" @@ -449,10 +478,6 @@ msgstr "Ma nistax nħaddem mingħajr arloÄ¡Ä¡" #~ msgid "Telephone" #~ msgstr "Headphones" -#, fuzzy -#~ msgid "Line In" -#~ msgstr "Line-in" - #, fuzzy #~ msgid "Microphone Boost" #~ msgstr "Mikrofonu" diff --git a/po/nb.gmo b/po/nb.gmo index c6cb02e49089e8e05762014921afbad98f274333..bdbb43c6234139c8d3418ee821cee253ccfdd4af 100644 Binary files a/po/nb.gmo and b/po/nb.gmo differ diff --git a/po/nb.po b/po/nb.po index 5e993d0ca04c03957b9786e37c3b62724e1109fd..d001e47d86bcf323d874cf171d51f5c39a01eda4 100644 --- a/po/nb.po +++ b/po/nb.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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2012-12-21 22:13+0100\n" "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n" "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n" @@ -18,17 +18,23 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Klarte ikke Ã¥ dekode JPEG-bilde" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "«%s» av «%s»" -msgid "Failed to decode JPEG image" -msgstr "Klarte ikke Ã¥ dekode JPEG-bilde" - msgid "Could not connect to server" msgstr "Kunne ikke koble til tjener." +msgid "No URL set." +msgstr "Ingen URL satt." + msgid "Server does not support seeking." msgstr "Tjener støtter ikke søking." @@ -48,9 +54,6 @@ msgstr "Et nettverk feil oppstod, eller tjeneren lukket uventet tilkoblingen." msgid "Server sent bad data." msgstr "Tjener sendte ugyldige data." -msgid "No URL set." -msgstr "Ingen URL satt." - msgid "Internal data stream error." msgstr "Intern feil i datastrøm." @@ -63,6 +66,9 @@ msgstr "Filen inneholder ingen spillbare strømmer." msgid "This file is invalid and cannot be played." msgstr "Filen er ugyldig og kan ikke spilles." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Filen er skadet og kan ikke spilles." @@ -115,16 +121,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Kunne ikke Ã¥pne lydenhet for avspilling." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Kunne ikke Ã¥pne lydenheten for opptak. Du har ikke tillatelse til Ã¥ Ã¥pne " -"enheten." - -msgid "Could not open audio device for recording." -msgstr "Kunne ikke Ã¥pne lydenhet for opptak." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -144,6 +140,45 @@ msgstr "Opptak støttes ikke av denne lydenheten." msgid "Error recording from audio device." msgstr "Feil ved opptak fra lydenheten." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Kunne ikke Ã¥pne lydenheten for opptak. Du har ikke tillatelse til Ã¥ Ã¥pne " +"enheten." + +msgid "Could not open audio device for recording." +msgstr "Kunne ikke Ã¥pne lydenhet for opptak." + +msgid "Record Source" +msgstr "Opptakskilde" + +msgid "Microphone" +msgstr "Mikrofon" + +msgid "Line In" +msgstr "Linje inn" + +msgid "Internal CD" +msgstr "Intern CD" + +msgid "SPDIF In" +msgstr "SPDIF Inn" + +msgid "AUX 1 In" +msgstr "AUX 1 inn" + +msgid "AUX 2 In" +msgstr "AUX 2 inn" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Loopback" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Loopback" + msgid "Volume" msgstr "Volum" @@ -241,6 +276,10 @@ msgstr "Klarte ikke Ã¥ sette inngang %d pÃ¥ enhet %s." msgid "Failed to change mute state for device '%s'." msgstr "Klarte ikke Ã¥ endre dempe-modus for enheten «%s»." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Kan ikke identifisere enhet «%s»." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -265,10 +304,6 @@ msgstr "Feil ved norm-spørring pÃ¥ enhet %s." msgid "Failed getting controls attributes on device '%s'." msgstr "Kunne ikke Ã¥ fÃ¥ inn kontrollattributter pÃ¥ enhet «%s»." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Kan ikke identifisere enhet «%s»." - #, c-format msgid "This isn't a device '%s'." msgstr "Dette er ikke en enhet «%s»." @@ -355,9 +390,6 @@ msgstr "Kan ikke operere uten en klokke" #~ msgid "Line-in" #~ msgstr "Linje inn" -#~ msgid "Microphone" -#~ msgstr "Mikrofon" - #~ msgid "CD" #~ msgstr "CD" @@ -455,21 +487,9 @@ msgstr "Kan ikke operere uten en klokke" #~ msgid "Telephone" #~ msgstr "Telefon" -#~ msgid "Line In" -#~ msgstr "Linje inn" - -#~ msgid "Internal CD" -#~ msgstr "Intern CD" - #~ msgid "Video In" #~ msgstr "Video inn" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 inn" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 inn" - #~ msgid "AUX In" #~ msgstr "AUX inn" @@ -482,9 +502,6 @@ msgstr "Kan ikke operere uten en klokke" #~ msgid "Microphone Boost" #~ msgstr "Mikrofonforsterkning" -#~ msgid "Loopback" -#~ msgstr "Loopback" - #~ msgid "Diagnostic" #~ msgstr "Diagnose" @@ -497,9 +514,6 @@ msgstr "Kan ikke operere uten en klokke" #~ msgid "Input" #~ msgstr "Inngang" -#~ msgid "Record Source" -#~ msgstr "Opptakskilde" - #~ msgid "Monitor Source" #~ msgstr "Monitorkilde" @@ -539,9 +553,6 @@ msgstr "Kan ikke operere uten en klokke" #~ msgid "Input Mix" #~ msgstr "Inndatamiks" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF Inn" - #~ msgid "Microphone 1" #~ msgstr "Mikrofon 1" diff --git a/po/nl.gmo b/po/nl.gmo index 1174ed2a97ab5f1854fa592e472e406640850e39..d934e7fe263e83feb8489c12a9255d8012999360 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index 4e0c899f6beab2334a68328beacd930cd0007aa1..bcd355659ef5ce51d6df8b8b2a211b89753dd5b7 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,13 +1,13 @@ -# translation of gst-plugins-good-1.0.3.nl.po to Dutch +# translation of gst-plugins-good-1.1.4.nl.po to Dutch # This file is put in the public domain. # -# Freek de Kruijf <f.de.kruijf@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2012. +# Freek de Kruijf <f.de.kruijf@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2012, 2013. msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good 1.0.3\n" +"Project-Id-Version: gst-plugins-good 1.1.4\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2013-08-28 15:03+0100\n" -"PO-Revision-Date: 2012-11-29 22:30+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" +"PO-Revision-Date: 2013-09-15 13:31+0200\n" "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n" "Language-Team: Dutch <vertaling@vrijschrift.org>\n" "Language: nl\n" @@ -17,17 +17,23 @@ msgstr "" "X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +msgid "Jack server not found" +msgstr "Jack-server niet gevonden" + +msgid "Failed to decode JPEG image" +msgstr "Kan de JPEG-afbeelding niet decoderen" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' door '%s'" -msgid "Failed to decode JPEG image" -msgstr "Kan de JPEG-afbeelding niet decoderen" - msgid "Could not connect to server" msgstr "Kan geen verbinding maken met server" +msgid "No URL set." +msgstr "Geen URL ingesteld." + msgid "Server does not support seeking." msgstr "Zoeken wordt door de server niet ondersteund." @@ -49,9 +55,6 @@ msgstr "" msgid "Server sent bad data." msgstr "De server stuurde onjuiste gegevens." -msgid "No URL set." -msgstr "Geen URL ingesteld." - msgid "Internal data stream error." msgstr "Interne fout in gegevensstroom." @@ -64,6 +67,9 @@ msgstr "Dit bestand bevat geen afspeelbare stromen." msgid "This file is invalid and cannot be played." msgstr "Dit bestand is ongeldig en kan niet afgespeeld worden." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "Kan stream niet afspelen omdat het versleuteld is met PlayReady DRM." + msgid "This file is corrupt and cannot be played." msgstr "Dit bestand is beschadigd en kan niet afgespeeld worden." @@ -117,16 +123,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Kan het audio-apparaat niet openen voor afspelen." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Kan het audio-apparaat niet openen voor opnemen. U hebt geen toestemming om " -"het apparaat te openen." - -msgid "Could not open audio device for recording." -msgstr "Kan het audio-apparaat niet openen voor opnemen." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -146,6 +142,43 @@ msgstr "Opnemen wordt niet ondersteund door dit audio-apparaat" msgid "Error recording from audio device." msgstr "Fout bij opnemen vanaf audio-apparaat." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Kan het audio-apparaat niet openen voor opnemen. U hebt geen toestemming om " +"het apparaat te openen." + +msgid "Could not open audio device for recording." +msgstr "Kan het audio-apparaat niet openen voor opnemen." + +msgid "Record Source" +msgstr "Opnamebron" + +msgid "Microphone" +msgstr "Microfoon" + +msgid "Line In" +msgstr "Lijn-in" + +msgid "Internal CD" +msgstr "Interne cd" + +msgid "SPDIF In" +msgstr "SPDIF-in" + +msgid "AUX 1 In" +msgstr "AUX 1-in" + +msgid "AUX 2 In" +msgstr "AUX 2-in" + +msgid "Codec Loopback" +msgstr "Codec-loopback" + +msgid "SunVTS Loopback" +msgstr "SunVTS-loopback" + msgid "Volume" msgstr "Volume" @@ -244,6 +277,10 @@ msgstr "Kan invoer %d op apparaat '%s' niet instellen." msgid "Failed to change mute state for device '%s'." msgstr "De gedempte status van apparaat '%s' wijzigen is mislukt." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Kan apparaat '%s' niet identificeren." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -268,10 +305,6 @@ msgstr "Kan de norm op apparaat '%s' niet opvragen." msgid "Failed getting controls attributes on device '%s'." msgstr "Kan de knopeigenschappen op apparaat '%s' niet verkrijgen." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Kan apparaat '%s' niet identificeren." - #, c-format msgid "This isn't a device '%s'." msgstr "Dit is geen apparaat '%s'." @@ -360,9 +393,6 @@ msgstr "Kan niet werken zonder een klok." #~ msgid "Line-in" #~ msgstr "Lijn-in" -#~ msgid "Microphone" -#~ msgstr "Microfoon" - #~ msgid "CD" #~ msgstr "CD" @@ -460,21 +490,9 @@ msgstr "Kan niet werken zonder een klok." #~ msgid "Telephone" #~ msgstr "Telefoon" -#~ msgid "Line In" -#~ msgstr "Lijn-in" - -#~ msgid "Internal CD" -#~ msgstr "Interne cd" - #~ msgid "Video In" #~ msgstr "Video-in" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1-in" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2-in" - #~ msgid "AUX In" #~ msgstr "AUX-in" @@ -487,9 +505,6 @@ msgstr "Kan niet werken zonder een klok." #~ msgid "Microphone Boost" #~ msgstr "Microfoon-boost" -#~ msgid "Loopback" -#~ msgstr "Loopback" - #~ msgid "Diagnostic" #~ msgstr "Diagnose" @@ -502,9 +517,6 @@ msgstr "Kan niet werken zonder een klok." #~ msgid "Input" #~ msgstr "Invoer" -#~ msgid "Record Source" -#~ msgstr "Opnamebron" - #~ msgid "Monitor Source" #~ msgstr "Monitorbron" @@ -544,9 +556,6 @@ msgstr "Kan niet werken zonder een klok." #~ msgid "Input Mix" #~ msgstr "Invoer-mix" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF-in" - #~ msgid "Microphone 1" #~ msgstr "Microfoon-1" diff --git a/po/or.gmo b/po/or.gmo index a8d376d25f1e621f662d2b7d192994c982f18424..2e16035c43154d6d2e9ad94899fd108a60020e88 100644 Binary files a/po/or.gmo and b/po/or.gmo differ diff --git a/po/or.po b/po/or.po index 39fd31823039110fbaf4add335288c36556d97cb..f5e7c04f19d0cad866705bf107d66e93e6fe0384 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2004-09-27 13:32+0530\n" "Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n" "Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n" @@ -17,18 +17,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#. TRANSLATORS: 'song title' by 'artist name' -#, c-format -msgid "'%s' by '%s'" +msgid "Jack server not found" msgstr "" msgid "Failed to decode JPEG image" msgstr "" +#. TRANSLATORS: 'song title' by 'artist name' +#, c-format +msgid "'%s' by '%s'" +msgstr "" + #, fuzzy msgid "Could not connect to server" msgstr "\"%s\" ନିàŸà¬¨àତàରଣ ଯନàତàର ବନàଦ କରିହà‡à¬²à¬¾ ନାହିà¬." +msgid "No URL set." +msgstr "" + #, fuzzy msgid "Server does not support seeking." msgstr "\"%s\" ଯନàତàର ଗà‹à¬Ÿà¬¿à¬ ଅନàଲିପିକାର ନàହà‡à¬." @@ -51,9 +57,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "" @@ -66,6 +69,9 @@ msgstr "" msgid "This file is invalid and cannot be played." msgstr "" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "" @@ -111,6 +117,23 @@ msgstr "\"%s\" ଧàବନି ଯନàତàର ଲà‡à¬–ିବା ପାଇ msgid "Could not open audio device for playback." msgstr "\"%s\" ଧàବନି ଯନàତàର ଲà‡à¬–ିବା ପାଇଠଖà‹à¬²à¬¿à¬¹à‡à¬²à¬¾ ନାହିà¬." +msgid "" +"Could not open audio device for playback. This version of the Open Sound " +"System is not supported by this element." +msgstr "" + +msgid "Playback is not supported by this audio device." +msgstr "" + +msgid "Audio playback error." +msgstr "" + +msgid "Recording is not supported by this audio device." +msgstr "" + +msgid "Error recording from audio device." +msgstr "" + #, fuzzy msgid "" "Could not open audio device for recording. You don't have permission to open " @@ -121,21 +144,33 @@ msgstr "ସି.ଡି. ଯନàତàର ପଢ଼ିବା à¬ªà¬¾à¬‡à¬ à¬–à‹ msgid "Could not open audio device for recording." msgstr "ସି.ଡି. ଯନàତàର ପଢ଼ିବା ପାଇଠଖà‹à¬²à¬¿à¬¹à‡à¬²à¬¾ ନାହିà¬." -msgid "" -"Could not open audio device for playback. This version of the Open Sound " -"System is not supported by this element." +#, fuzzy +msgid "Record Source" +msgstr "ପàରଦରàଶିକା" + +msgid "Microphone" +msgstr "ମାଇକàରà‹à¬«à‹à¬¨à" + +#, fuzzy +msgid "Line In" +msgstr "ଲାଇନ-ଇନ" + +msgid "Internal CD" msgstr "" -msgid "Playback is not supported by this audio device." +msgid "SPDIF In" msgstr "" -msgid "Audio playback error." +msgid "AUX 1 In" msgstr "" -msgid "Recording is not supported by this audio device." +msgid "AUX 2 In" msgstr "" -msgid "Error recording from audio device." +msgid "Codec Loopback" +msgstr "" + +msgid "SunVTS Loopback" msgstr "" msgid "Volume" @@ -236,6 +271,10 @@ msgstr "\"%s\" ଧàବନି ଯନàତàର ବନàଦ à¬•à¬°à¬¿à¬¹à‡ msgid "Failed to change mute state for device '%s'." msgstr "\"%s\" ଯନàତàରରà ଅସàଥାàŸà€ ସଞàà¬šàŸ à¬¸àଥାନ ଆଣିହà‡à¬²à¬¾ ନାହିà¬." +#, fuzzy, c-format +msgid "Cannot identify device '%s'." +msgstr "\"%s\" ଯନàତàà¬°à¬°à‡ à¬²à‡à¬–ିହà‡à¬²à¬¾ ନାହିà¬." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -258,10 +297,6 @@ msgstr "" msgid "Failed getting controls attributes on device '%s'." msgstr "" -#, fuzzy, c-format -msgid "Cannot identify device '%s'." -msgstr "\"%s\" ଯନàତàà¬°à¬°à‡ à¬²à‡à¬–ିହà‡à¬²à¬¾ ନାହିà¬." - #, c-format msgid "This isn't a device '%s'." msgstr "" @@ -343,9 +378,6 @@ msgstr "" #~ msgid "Line-in" #~ msgstr "ଲାଇନ-ଇନ" -#~ msgid "Microphone" -#~ msgstr "ମାଇକàରà‹à¬«à‹à¬¨à" - #~ msgid "CD" #~ msgstr "ସି.ଡି." @@ -412,10 +444,6 @@ msgstr "" #~ msgid "Side" #~ msgstr "à¬à¬¿à¬¡à¬¿à¬“" -#, fuzzy -#~ msgid "Line In" -#~ msgstr "ଲାଇନ-ଇନ" - #, fuzzy #~ msgid "Output Gain" #~ msgstr "ନିରàଗମ-ବàƒà¬¦àଧି" @@ -424,10 +452,6 @@ msgstr "" #~ msgid "Microphone Boost" #~ msgstr "ମାଇକàରà‹à¬«à‹à¬¨à" -#, fuzzy -#~ msgid "Monitor Source" -#~ msgstr "ପàରଦରàଶିକା" - #, fuzzy #~ msgid "Microphone Gain" #~ msgstr "ମାଇକàରà‹à¬«à‹à¬¨à" diff --git a/po/pl.gmo b/po/pl.gmo index 110045fb3f9bbac6cce692ddd744ec3d5a350443..998f34e118cc928d6448b3fd4be5b681aa3da4a5 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index 1f1528ae82577f49a627e07b2f6aa279035370b3..bce78bc4942ad51aaf1975a6b6586d9003256e33 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,13 +1,13 @@ # Polish translation for gst-plugins-good. # This file is distributed under the same license as the gst-plugins-good package. -# Jakub Bogusz <qboosh@pld-linux.org>, 2007-2012. +# Jakub Bogusz <qboosh@pld-linux.org>, 2007-2013. # msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good 1.0.3\n" +"Project-Id-Version: gst-plugins-good 1.1.4\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2013-08-28 15:03+0100\n" -"PO-Revision-Date: 2012-11-28 19:27+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" +"PO-Revision-Date: 2013-09-15 11:26+0200\n" "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" "Language: pl\n" @@ -15,17 +15,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Jack server not found" +msgstr "Nie znaleziono serwera Jack" + +msgid "Failed to decode JPEG image" +msgstr "Nie udaÅ‚o siÄ™ zdekodować obrazu JPEG" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' autorstwa '%s'" -msgid "Failed to decode JPEG image" -msgstr "Nie udaÅ‚o siÄ™ zdekodować obrazu JPEG" - msgid "Could not connect to server" msgstr "Nie udaÅ‚o siÄ™ poÅ‚Ä…czyć z serwerem" +msgid "No URL set." +msgstr "Nie ustawiono URL-a." + msgid "Server does not support seeking." msgstr "Serwer nie obsÅ‚uguje przewijania." @@ -45,9 +51,6 @@ msgstr "WystÄ…piÅ‚ bÅ‚Ä…d sieciowy lub serwer nieoczekiwanie zamknÄ…Å‚ poÅ‚Ä…cze msgid "Server sent bad data." msgstr "Serwer przysÅ‚aÅ‚ bÅ‚Ä™dne dane." -msgid "No URL set." -msgstr "Nie ustawiono URL-a." - msgid "Internal data stream error." msgstr "BÅ‚Ä…d wewnÄ™trzny strumienia danych." @@ -60,6 +63,10 @@ msgstr "Ten plik nie zawiera strumieni nadajÄ…cych siÄ™ do odtworzenia." msgid "This file is invalid and cannot be played." msgstr "Ten plik jest bÅ‚Ä™dny i nie może być odtworzony." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" +"Nie można odtwarzać strumienia, ponieważ jest zaszyfrowany DRM-em PlayReady." + msgid "This file is corrupt and cannot be played." msgstr "Ten plik jest uszkodzony i nie może być odtworzony." @@ -112,16 +119,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Nie udaÅ‚o siÄ™ otworzyć urzÄ…dzenia dźwiÄ™kowego do odtwarzania." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Nie udaÅ‚o siÄ™ otworzyć urzÄ…dzenia dźwiÄ™kowego do nagrywania. Brak uprawnieÅ„ " -"do otwarcia urzÄ…dzenia." - -msgid "Could not open audio device for recording." -msgstr "Nie udaÅ‚o siÄ™ otworzyć urzÄ…dzenia dźwiÄ™kowego do nagrywania." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -141,6 +138,43 @@ msgstr "Nagrywanie nie jest obsÅ‚ugiwane przez to urzÄ…dzenie dźwiÄ™kowe." msgid "Error recording from audio device." msgstr "BÅ‚Ä…d nagrywania z urzÄ…dzenia dźwiÄ™kowego." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Nie udaÅ‚o siÄ™ otworzyć urzÄ…dzenia dźwiÄ™kowego do nagrywania. Brak uprawnieÅ„ " +"do otwarcia urzÄ…dzenia." + +msgid "Could not open audio device for recording." +msgstr "Nie udaÅ‚o siÄ™ otworzyć urzÄ…dzenia dźwiÄ™kowego do nagrywania." + +msgid "Record Source" +msgstr "ŹródÅ‚o nagrywania" + +msgid "Microphone" +msgstr "Mikrofon" + +msgid "Line In" +msgstr "WejÅ›cie linii" + +msgid "Internal CD" +msgstr "WewnÄ™trzny CD" + +msgid "SPDIF In" +msgstr "WejÅ›cie SPDIF" + +msgid "AUX 1 In" +msgstr "WejÅ›cie AUX 1" + +msgid "AUX 2 In" +msgstr "WejÅ›cie AUX 2" + +msgid "Codec Loopback" +msgstr "PÄ™tla zwrotna kodeka" + +msgid "SunVTS Loopback" +msgstr "PÄ™tla zwrotna SunVTS" + msgid "Volume" msgstr "GÅ‚oÅ›ność" @@ -241,6 +275,10 @@ msgstr "Nie udaÅ‚o siÄ™ ustawić wejÅ›cia %d urzÄ…dzenia %s." msgid "Failed to change mute state for device '%s'." msgstr "Nie udaÅ‚o siÄ™ zmienić stanu wyciszenia dla urzÄ…dzenia '%s'." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Nie można zidentyfikować urzÄ…dzenia '%s'." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -265,10 +303,6 @@ msgstr "Nie udaÅ‚o siÄ™ odpytać normalizacji urzÄ…dzenia '%s'." msgid "Failed getting controls attributes on device '%s'." msgstr "Nie udaÅ‚o siÄ™ uzyskać atrybutów sterujÄ…cych urzÄ…dzenia '%s'." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Nie można zidentyfikować urzÄ…dzenia '%s'." - #, c-format msgid "This isn't a device '%s'." msgstr "To nie jest urzÄ…dzenie '%s'." diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index 6309ce6811188efdce05ad4ee93e3fd5aaa0fc3a..69efad69e9215e2a2088f09f27b8825ac4fbbcfe 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 c2e1d6bd2982d6e5b3b62604d4d4ed80ecef691f..71c48c30b79322783a70345bf122b663bba7113f 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,7 +1,7 @@ # Brazilian Portuguese translation of gst-plugins-good. # This file is distributed under the same license as the gst-plugins-good package. -# Copyright (C) 2008-2011 Free Software Foundation, Inc. -# FabrÃcio Godoy <skarllot@gmail.com>, 2008-2011. +# Copyright (C) 2008-2013 Free Software Foundation, Inc. +# FabrÃcio Godoy <skarllot@gmail.com>, 2008-2013. # # data flow -> fluxo de dados # streaming -> fluxo contÃnuo @@ -9,29 +9,36 @@ # msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good 0.10.26.2\n" +"Project-Id-Version: gst-plugins-good-1.0.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2013-08-28 15:03+0100\n" -"PO-Revision-Date: 2011-01-08 01:28-0300\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" +"PO-Revision-Date: 2013-08-21 00:12-0300\n" "Last-Translator: FabrÃcio Godoy <skarllot@gmail.com>\n" -"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n" +"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge." +"net>\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Falha ao decodificar a imagem JPEG" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "\"%s\" por \"%s\"" -msgid "Failed to decode JPEG image" -msgstr "Falha ao decodificar a imagem JPEG" - msgid "Could not connect to server" msgstr "Não foi possÃvel conectar ao servidor" +msgid "No URL set." +msgstr "Nenhum URL definido." + msgid "Server does not support seeking." msgstr "Nâo há suporte a busca pelo servidor." @@ -52,9 +59,6 @@ msgstr "" msgid "Server sent bad data." msgstr "O servidor enviou dados ruins." -msgid "No URL set." -msgstr "Nenhum URL definido." - msgid "Internal data stream error." msgstr "Erro interno no fluxo de dados." @@ -67,6 +71,9 @@ msgstr "Este arquivo não contêm fluxos reproduzÃveis." msgid "This file is invalid and cannot be played." msgstr "Este arquivo é inválido e não pôde ser reproduzido." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Este arquivo está corrompido e não pôde ser reproduzido." @@ -119,16 +126,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Não foi possÃvel abrir o dispositivo de áudio para reprodução." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Não foi possÃvel abrir o dispositivo de áudio para gravação. Você não tem " -"permissão para abrir o dispositivo." - -msgid "Could not open audio device for recording." -msgstr "Não foi possÃvel abrir o dispositivo de áudio para gravação." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -148,6 +145,45 @@ msgstr "Não há suporte a gravação por este dispositivo de áudio." msgid "Error recording from audio device." msgstr "Erro ao gravar do dispositivo de áudio." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Não foi possÃvel abrir o dispositivo de áudio para gravação. Você não tem " +"permissão para abrir o dispositivo." + +msgid "Could not open audio device for recording." +msgstr "Não foi possÃvel abrir o dispositivo de áudio para gravação." + +msgid "Record Source" +msgstr "Origem de gravação" + +msgid "Microphone" +msgstr "Microfone" + +msgid "Line In" +msgstr "Entrada de linha" + +msgid "Internal CD" +msgstr "CD interno" + +msgid "SPDIF In" +msgstr "Entrada SPDIF" + +msgid "AUX 1 In" +msgstr "Entrada aux. 1" + +msgid "AUX 2 In" +msgstr "Entrada aux. 2" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Loopback" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Loopback" + msgid "Volume" msgstr "Volume" @@ -182,75 +218,76 @@ msgstr "Erro ao ler %d bytes do dispositivo \"%s\"." #, c-format msgid "Failed to enumerate possible video formats device '%s' can work with" msgstr "" +"Falha ao relacionar os formatos de vÃdeo que o dispositivo \"%s\" oferece " +"suporte" #, c-format msgid "Could not map buffers from device '%s'" msgstr "Não foi possÃvel mapear buffers do dispositivo \"%s\"" -#, fuzzy, c-format +#, c-format msgid "The driver of device '%s' does not support the IO method %d" -msgstr "" -"O driver do dispositivo \"%s\" não tem suporte a nenhum método conhecido de " -"captura." +msgstr "O driver do dispositivo \"%s\" não tem suporte ao método %d de E/S" -#, fuzzy, c-format +#, c-format msgid "The driver of device '%s' does not support any known IO method." msgstr "" "O driver do dispositivo \"%s\" não tem suporte a nenhum método conhecido de " -"captura." +"E/S." -#, fuzzy, c-format +#, c-format msgid "Device '%s' does not support video capture" -msgstr "O dispositivo \"%s\" não é um dispositivo de saÃda." +msgstr "O dispositivo \"%s\" não tem suporte a captura de vÃdeo" -#, fuzzy, c-format +#, c-format msgid "Device '%s' is busy" -msgstr "O dispositivo \"%s\" não é um dispositivo de saÃda." +msgstr "O dispositivo \"%s\" está ocupado" -#, fuzzy, c-format +#, c-format msgid "Device '%s' cannot capture at %dx%d" -msgstr "O dispositivo \"%s\" não é um dispositivo de captura." +msgstr "O dispositivo \"%s\" não realiza captura a %dx%d" -#, fuzzy, c-format +#, c-format msgid "Device '%s' cannot capture in the specified format" -msgstr "O dispositivo \"%s\" não é um dispositivo de captura." +msgstr "O dispositivo \"%s\" não realiza captura no formato especificado" #, c-format msgid "Could not get parameters on device '%s'" msgstr "Não foi possÃvel obter os parâmetros no dispositivo \"%s\"" -#, fuzzy msgid "Video device did not accept new frame rate setting." -msgstr "" -"A entrada do dispositivo de vÃdeo não aceita definir uma nova taxa de " -"quadros." +msgstr "O dispositivo de vÃdeo não aceita definir uma nova taxa de quadros." msgid "Video device could not create buffer pool." -msgstr "" +msgstr "O dispositivo de vÃdeo não pôde reservar um buffer." -#, fuzzy, c-format +#, c-format msgid "Failed to get settings of tuner %d on device '%s'." msgstr "Falha ao obter configurações do sintonizador %d no dispositivo \"%s\"." -#, fuzzy, c-format +#, c-format msgid "Error getting capabilities for device '%s'." -msgstr "Erro ao ler %d bytes do dispositivo \"%s\"." +msgstr "Erro ao obter funcionalidades do dispositivo \"%s\"." -#, fuzzy, c-format +#, c-format msgid "Device '%s' is not a tuner." -msgstr "O dispositivo \"%s\" não é um dispositivo de saÃda." +msgstr "O dispositivo \"%s\" não é um sintonizador." -#, fuzzy, c-format +#, c-format msgid "Failed to get radio input on device '%s'. " -msgstr "Falha ao definir a entrada %d no dispositivo %s." +msgstr "Falha ao obter a entrada de rádio do dispositivo \"%s\"." #, c-format msgid "Failed to set input %d on device %s." msgstr "Falha ao definir a entrada %d no dispositivo %s." -#, fuzzy, c-format +#, c-format msgid "Failed to change mute state for device '%s'." -msgstr "Falha ao obter a força do sinal para o dispositivo \"%s\"." +msgstr "Falha ao alternar entre com e sem áudio para o dispositivo \"%s\"." + +#, c-format +msgid "Cannot identify device '%s'." +msgstr "O dispositivo \"%s\" não pôde ser identificado." #, c-format msgid "" @@ -276,10 +313,6 @@ msgstr "Falha ao examinar as normas no dispositivo \"%s\"." msgid "Failed getting controls attributes on device '%s'." msgstr "Falha ao obter atributos de controle no dispositivo \"%s\"." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "O dispositivo \"%s\" não pôde ser identificado." - #, c-format msgid "This isn't a device '%s'." msgstr "\"%s\" não é um dispositivo." @@ -345,14 +378,11 @@ msgstr "Ainda não há suporte a mudança de resolução enquanto está executan msgid "Cannot operate without a clock" msgstr "Não é possÃvel operar sem um temporizador" -#~ msgid "Got unexpected frame size of %u instead of %u." -#~ msgstr "Foi obtido um tamanho de quadro inesperado de %u, ao invés de %u." - -#~ msgid "Failed trying to get video frames from device '%s'." -#~ msgstr "Falha ao tentar obter os quadros de vÃdeo do dispositivo \"%s\"." +#~ msgid "Could not establish connection to sound server" +#~ msgstr "Não foi possÃvel estabelecer uma conexão com servidor de som" -#~ msgid "Failed after %d tries. device %s. system error: %s" -#~ msgstr "Falha após %d tentativas. Dispositivo %s. Erro do sistema: %s" +#~ msgid "Failed to query sound server capabilities" +#~ msgstr "Falha ao examinar os recursos do servidor de som" #~ msgid "Bass" #~ msgstr "Grave" @@ -372,9 +402,6 @@ msgstr "Não é possÃvel operar sem um temporizador" #~ msgid "Line-in" #~ msgstr "Entrada de linha" -#~ msgid "Microphone" -#~ msgstr "Microfone" - #~ msgid "CD" #~ msgstr "CD" @@ -475,21 +502,9 @@ msgstr "Não é possÃvel operar sem um temporizador" #~ msgid "Telephone" #~ msgstr "Telefone" -#~ msgid "Line In" -#~ msgstr "Entrada de linha" - -#~ msgid "Internal CD" -#~ msgstr "CD interno" - #~ msgid "Video In" #~ msgstr "Entrada de vÃdeo" -#~ msgid "AUX 1 In" -#~ msgstr "Entrada aux. 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Entrada aux. 2" - #~ msgid "AUX In" #~ msgstr "Entrada aux." @@ -502,9 +517,6 @@ msgstr "Não é possÃvel operar sem um temporizador" #~ msgid "Microphone Boost" #~ msgstr "Aumento do microfone" -#~ msgid "Loopback" -#~ msgstr "Loopback" - #~ msgid "Diagnostic" #~ msgstr "Diagnóstico" @@ -517,9 +529,6 @@ msgstr "Não é possÃvel operar sem um temporizador" #~ msgid "Input" #~ msgstr "Entrada" -#~ msgid "Record Source" -#~ msgstr "Origem de gravação" - #~ msgid "Monitor Source" #~ msgstr "Origem de monitoração" @@ -559,9 +568,6 @@ msgstr "Não é possÃvel operar sem um temporizador" #~ msgid "Input Mix" #~ msgstr "Mixagem de entrada" -#~ msgid "SPDIF In" -#~ msgstr "Entrada SPDIF" - #~ msgid "Microphone 1" #~ msgstr "Microfone 1" @@ -706,14 +712,17 @@ msgstr "Não é possÃvel operar sem um temporizador" #~ msgid "%s Function" #~ msgstr "%s" +#~ msgid "Got unexpected frame size of %u instead of %u." +#~ msgstr "Foi obtido um tamanho de quadro inesperado de %u, ao invés de %u." + #~ msgid "Error reading %d bytes on device '%s'." #~ msgstr "Erro ao ler %d bytes no dispositivo \"%s\"." #~ msgid "Could not enqueue buffers in device '%s'." #~ msgstr "Não possÃvel adicionar buffers à fila no dispositivo \"%s\"." -#~ msgid "Could not establish connection to sound server" -#~ msgstr "Não foi possÃvel estabelecer uma conexão com servidor de som" +#~ msgid "Failed trying to get video frames from device '%s'." +#~ msgstr "Falha ao tentar obter os quadros de vÃdeo do dispositivo \"%s\"." -#~ msgid "Failed to query sound server capabilities" -#~ msgstr "Falha ao examinar os recursos do servidor de som" +#~ msgid "Failed after %d tries. device %s. system error: %s" +#~ msgstr "Falha após %d tentativas. Dispositivo %s. Erro do sistema: %s" diff --git a/po/ro.gmo b/po/ro.gmo index c1bd38bd16a199f81d523fc12f5f9d36513424b2..058340e148a03aa51421d9fd6f3afe6c06814dec 100644 Binary files a/po/ro.gmo and b/po/ro.gmo differ diff --git a/po/ro.po b/po/ro.po index d6657ece5b70e1def68ef675827cf0fadad8c848..ed237390a25b865f869e5cc5e47a229ba5fabee1 100644 --- a/po/ro.po +++ b/po/ro.po @@ -5,7 +5,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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2010-08-16 03:22+0300\n" "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n" "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n" @@ -18,17 +18,23 @@ msgstr "" "X-Generator: Virtaal 0.6.1\n" "X-Launchpad-Export-Date: 2010-08-16 00:08+0000\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Nu s-a putut decoda imaginea JPEG" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "„%s†de „%sâ€" -msgid "Failed to decode JPEG image" -msgstr "Nu s-a putut decoda imaginea JPEG" - msgid "Could not connect to server" msgstr "Nu se poate stabili o conexiune la server" +msgid "No URL set." +msgstr "" + msgid "Server does not support seeking." msgstr "" @@ -50,9 +56,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "Eroare internă a fluxului de date." @@ -66,6 +69,9 @@ msgstr "Acest fiÈ™ier nu conÈ›ine fluxuri ce pot fi redate." msgid "This file is invalid and cannot be played." msgstr "FiÈ™ierul nu este valid È™i nu poate fi redat." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Acest fiÈ™ier este corupt È™i nu poate fi redat." @@ -118,16 +124,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Nu s-a putut deschide dispozitivul audio pentru redare." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Nu s-a putut deschide dispozitivul audio pentru înregistrare Nu aveÈ›i " -"permisiunea de a deschide dispozitivul." - -msgid "Could not open audio device for recording." -msgstr "Nu s-a putut deschide dispozitivul audio pentru înregistrare." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -147,6 +143,45 @@ msgstr "ÃŽnregistrarea nu este suportată de acest dispozitiv audio." msgid "Error recording from audio device." msgstr "Eroare la înregistrarea de la dispozitivul audio." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Nu s-a putut deschide dispozitivul audio pentru înregistrare Nu aveÈ›i " +"permisiunea de a deschide dispozitivul." + +msgid "Could not open audio device for recording." +msgstr "Nu s-a putut deschide dispozitivul audio pentru înregistrare." + +msgid "Record Source" +msgstr "Sursă înregistrare" + +msgid "Microphone" +msgstr "Microfon" + +msgid "Line In" +msgstr "Linie intrare" + +msgid "Internal CD" +msgstr "CD intern" + +msgid "SPDIF In" +msgstr "Intrare SPDIF" + +msgid "AUX 1 In" +msgstr "Intrare AUX 1" + +msgid "AUX 2 In" +msgstr "Intrare AUX 2" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Buclă" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Buclă" + msgid "Volume" msgstr "Volum" @@ -251,6 +286,10 @@ msgstr "Definirea valorii %d pentru dispozitivul „%s†a eÈ™uat." msgid "Failed to change mute state for device '%s'." msgstr "ObÈ›inerea nivelului semnalului pentru dispozitivul „%s†a eÈ™uat." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Dispozitivul „%s†nu poate fi identificat." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -276,10 +315,6 @@ msgstr "Interogarea normei pentru dispozitivul „%s†a eÈ™uat." msgid "Failed getting controls attributes on device '%s'." msgstr "ObÈ›inerea atributelor de control pentru dispozitivul „%s†a eÈ™uat." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Dispozitivul „%s†nu poate fi identificat." - #, c-format msgid "This isn't a device '%s'." msgstr "Acesta nu este un dispozitiv „%sâ€." @@ -373,9 +408,6 @@ msgstr "Nu se poate opera fără un ceas" #~ msgid "Line-in" #~ msgstr "Linie intrare" -#~ msgid "Microphone" -#~ msgstr "Microfon" - #~ msgid "CD" #~ msgstr "CD" @@ -476,21 +508,9 @@ msgstr "Nu se poate opera fără un ceas" #~ msgid "Telephone" #~ msgstr "Telefon" -#~ msgid "Line In" -#~ msgstr "Linie intrare" - -#~ msgid "Internal CD" -#~ msgstr "CD intern" - #~ msgid "Video In" #~ msgstr "Intrare video" -#~ msgid "AUX 1 In" -#~ msgstr "Intrare AUX 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Intrare AUX 2" - #~ msgid "AUX In" #~ msgstr "Intrare AUX" @@ -503,9 +523,6 @@ msgstr "Nu se poate opera fără un ceas" #~ msgid "Microphone Boost" #~ msgstr "Amplificare microfon" -#~ msgid "Loopback" -#~ msgstr "Buclă" - #~ msgid "Diagnostic" #~ msgstr "Diagnostic" @@ -518,9 +535,6 @@ msgstr "Nu se poate opera fără un ceas" #~ msgid "Input" #~ msgstr "Intrare" -#~ msgid "Record Source" -#~ msgstr "Sursă înregistrare" - #~ msgid "Monitor Source" #~ msgstr "Sursă monitor" @@ -560,9 +574,6 @@ msgstr "Nu se poate opera fără un ceas" #~ msgid "Input Mix" #~ msgstr "Mix intrare" -#~ msgid "SPDIF In" -#~ msgstr "Intrare SPDIF" - #~ msgid "Microphone 1" #~ msgstr "Microfon 1" diff --git a/po/ru.gmo b/po/ru.gmo index 2e6a98fd5532f072e3a38efafcef4d3959437933..e1dd8258733d4e8b354a0d81dba044fb47d2bde2 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index e22a003483be61e0f577f4207274f0d7cd1a4e36..831981e886578b392685b61e3801963af6aa8bec 100644 --- a/po/ru.po +++ b/po/ru.po @@ -4,33 +4,40 @@ # Ðртём Попов <artfwo@gmail.com>, 2009. # Pavel Maryanov <acid_jack@ukr.net>, 2009. # Yuri Kozlov <yuray@komyakino.ru>, 2011, 2012. +# Pavel Maryanov <acid@jack.kiev.ua>, 2013. msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.0.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2013-08-28 15:03+0100\n" -"PO-Revision-Date: 2012-12-01 13:23+0400\n" -"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" +"PO-Revision-Date: 2013-03-09 17:09+0200\n" +"Last-Translator: Pavel Maryanov <acid@jack.kiev.ua>\n" "Language-Team: Russian <gnu@mx.ru>\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.4\n" +"X-Generator: Poedit 1.5.5\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#. TRANSLATORS: 'song title' by 'artist name' -#, c-format -msgid "'%s' by '%s'" -msgstr "«%s» иÑполнÑет «%s»" +msgid "Jack server not found" +msgstr "" msgid "Failed to decode JPEG image" msgstr "Ðе удалоÑÑŒ декодировать JPEG-изображение" +#. TRANSLATORS: 'song title' by 'artist name' +#, c-format +msgid "'%s' by '%s'" +msgstr "«%s», «%s»" + msgid "Could not connect to server" msgstr "Ðе удалоÑÑŒ ÑоединитьÑÑ Ñ Ñервером" +msgid "No URL set." +msgstr "URL не задан." + msgid "Server does not support seeking." msgstr "Сервер не поддерживает поиÑк." @@ -50,9 +57,6 @@ msgstr "Произошла ÑÐµÑ‚ÐµÐ²Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° или Ñервер не msgid "Server sent bad data." msgstr "Сервер приÑлал некорректные данные." -msgid "No URL set." -msgstr "URL не задан." - msgid "Internal data stream error." msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° потока данных." @@ -67,6 +71,9 @@ msgstr "Файл не Ñодержит воÑпроизводимых поток msgid "This file is invalid and cannot be played." msgstr "Файл некорректен и не может быть воÑпроизведён." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Файл повреждён и не может быть воÑпроизведён." @@ -119,16 +126,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Ðе удалоÑÑŒ открыть аудио-уÑтройÑтво Ð´Ð»Ñ Ð²Ð¾ÑпроизведениÑ." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Ðе удалоÑÑŒ открыть аудио-уÑтройÑтво Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи. ОтÑутÑтвуют права доÑтупа к " -"уÑтройÑтву." - -msgid "Could not open audio device for recording." -msgstr "Ðе удалоÑÑŒ открыть аудио-уÑтройÑтво Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -148,6 +145,45 @@ msgstr "ЗапиÑÑŒ не поддерживаетÑÑ Ð´Ð°Ð½Ð½Ñ‹Ð¼ аудио- msgid "Error recording from audio device." msgstr "Ошибка запиÑи Ñ Ð°ÑƒÐ´Ð¸Ð¾-уÑтройÑтва." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Ðе удалоÑÑŒ открыть аудио-уÑтройÑтво Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи. ОтÑутÑтвуют права доÑтупа к " +"уÑтройÑтву." + +msgid "Could not open audio device for recording." +msgstr "Ðе удалоÑÑŒ открыть аудио-уÑтройÑтво Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи." + +msgid "Record Source" +msgstr "УÑтройÑтво запиÑи" + +msgid "Microphone" +msgstr "Микрофон" + +msgid "Line In" +msgstr "Линейный вход" + +msgid "Internal CD" +msgstr "Внутренний CD" + +msgid "SPDIF In" +msgstr "Вход SPDIF" + +msgid "AUX 1 In" +msgstr "Вход AUX 1" + +msgid "AUX 2 In" +msgstr "Вход AUX 2" + +#, fuzzy +msgid "Codec Loopback" +msgstr "ПетлÑ" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "ПетлÑ" + msgid "Volume" msgstr "Уровень" @@ -249,6 +285,10 @@ msgstr "Ðе удалоÑÑŒ выбрать вход %d Ð´Ð»Ñ ÑƒÑтройÑтв msgid "Failed to change mute state for device '%s'." msgstr "Ðе удалоÑÑŒ изменить ÑоÑтоÑние Ð¿Ñ€Ð¸Ð³Ð»ÑƒÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑƒÑтройÑтва «%s»." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Ðе удаётÑÑ Ñ€Ð°Ñпознать уÑтройÑтво «%s»." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -273,10 +313,6 @@ msgstr "Ошибка запроÑа Ñтандарта уÑтройÑтва «%s msgid "Failed getting controls attributes on device '%s'." msgstr "Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÑтройÑтва «%s»." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Ðе удаётÑÑ Ñ€Ð°Ñпознать уÑтройÑтво «%s»." - #, c-format msgid "This isn't a device '%s'." msgstr "«%s» не ÑвлÑетÑÑ ÑƒÑтройÑтвом." @@ -367,9 +403,6 @@ msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð° без чаÑов" #~ msgid "Line-in" #~ msgstr "Линейный вход" -#~ msgid "Microphone" -#~ msgstr "Микрофон" - #~ msgid "CD" #~ msgstr "CD" @@ -468,21 +501,9 @@ msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð° без чаÑов" #~ msgid "Telephone" #~ msgstr "Телефон" -#~ msgid "Line In" -#~ msgstr "Линейный вход" - -#~ msgid "Internal CD" -#~ msgstr "Внутренний CD" - #~ msgid "Video In" #~ msgstr "Видео вход" -#~ msgid "AUX 1 In" -#~ msgstr "Вход AUX 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Вход AUX 2" - #~ msgid "AUX In" #~ msgstr "Вход AUX" @@ -495,9 +516,6 @@ msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð° без чаÑов" #~ msgid "Microphone Boost" #~ msgstr "Микрофонный уÑилитель" -#~ msgid "Loopback" -#~ msgstr "ПетлÑ" - #~ msgid "Diagnostic" #~ msgstr "ДиагноÑтика" @@ -510,9 +528,6 @@ msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð° без чаÑов" #~ msgid "Input" #~ msgstr "Вход" -#~ msgid "Record Source" -#~ msgstr "УÑтройÑтво запиÑи" - #~ msgid "Monitor Source" #~ msgstr "УÑтройÑтво вывода" @@ -552,9 +567,6 @@ msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð° без чаÑов" #~ msgid "Input Mix" #~ msgstr "Микширование входа" -#~ msgid "SPDIF In" -#~ msgstr "Вход SPDIF" - #~ msgid "Microphone 1" #~ msgstr "Микрофон 1" diff --git a/po/sk.gmo b/po/sk.gmo index c3125b79af12add0d2a8079eaf29fc884b5e0d34..f55cb523e15c9c4ae37b9795307b0d281254f77e 100644 Binary files a/po/sk.gmo and b/po/sk.gmo differ diff --git a/po/sk.po b/po/sk.po index ba99f1f36c08d73954629058a23960e2374dc669..e0c10896073ab9bf15d094fec5e6a10b349894fb 100644 --- a/po/sk.po +++ b/po/sk.po @@ -6,7 +6,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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2010-11-08 15:48+0100\n" "Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n" "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n" @@ -18,17 +18,23 @@ msgstr "" "X-Generator: KBabel 1.11.4\n" "X-Poedit-Country: SLOVAKIA\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Nepodarilo sa dekódovaÅ¥ obrázok JPEG" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' od '%s'" -msgid "Failed to decode JPEG image" -msgstr "Nepodarilo sa dekódovaÅ¥ obrázok JPEG" - msgid "Could not connect to server" msgstr "Nepodarilo sa pripojiÅ¥ k serveru" +msgid "No URL set." +msgstr "Nebolo nastavené URL." + msgid "Server does not support seeking." msgstr "Server nepodporuje zmenu pozÃcie" @@ -48,9 +54,6 @@ msgstr "Vyskytla sa sieÅ¥ová chyba, alebo server neoÄakávane uzavrel spojenie msgid "Server sent bad data." msgstr "Server odoslal chybné údaje." -msgid "No URL set." -msgstr "Nebolo nastavené URL." - msgid "Internal data stream error." msgstr "Vnútorná chyba prúdu údajov." @@ -63,6 +66,9 @@ msgstr "Tento súbor neobsahuje žiadne prehrateľné prúdy údajov." msgid "This file is invalid and cannot be played." msgstr "Tento súbor je chybný a nedá sa prehraÅ¥." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Tento súbor je poÅ¡kodený a nedá sa prehraÅ¥." @@ -115,16 +121,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Nepodarilo sa otvoriÅ¥ zvukové zariadenie vrežime prehrávania." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Nepodarilo sa otvoriÅ¥ zvukové zariadenie v režime záznamu. Nemáte oprávnenie " -"na otvorenie tohto zariadenia." - -msgid "Could not open audio device for recording." -msgstr "Nepodarilo sa otvoriÅ¥ zvukové zariadenie v režime záznamu." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -144,6 +140,45 @@ msgstr "Záznam nie je podporovaný týmto zvukovým zariadenÃm." msgid "Error recording from audio device." msgstr "Chyba pri zázname zo zvukového zariadenia." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Nepodarilo sa otvoriÅ¥ zvukové zariadenie v režime záznamu. Nemáte oprávnenie " +"na otvorenie tohto zariadenia." + +msgid "Could not open audio device for recording." +msgstr "Nepodarilo sa otvoriÅ¥ zvukové zariadenie v režime záznamu." + +msgid "Record Source" +msgstr "Zdroj záznamu" + +msgid "Microphone" +msgstr "Mikrofón" + +msgid "Line In" +msgstr "Linkový vstup" + +msgid "Internal CD" +msgstr "Vnútorne CD" + +msgid "SPDIF In" +msgstr "SPDIF vstup" + +msgid "AUX 1 In" +msgstr "AUX 1 vstup" + +msgid "AUX 2 In" +msgstr "AUX 2 vstup" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Spätná sluÄka" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Spätná sluÄka" + msgid "Volume" msgstr "HlasitosÅ¥" @@ -247,6 +282,10 @@ msgstr "Nepodarilo sa nastaviÅ¥ vstup %d na zariadenà %s." msgid "Failed to change mute state for device '%s'." msgstr "Nepodarilo sa zistiÅ¥ silu signálu pre zariadenie '%s'." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Neviem identifikovaÅ¥ zariadenie '%s'." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -271,10 +310,6 @@ msgstr "Zlyhala požiadavka norm na zariadenà '%s'." msgid "Failed getting controls attributes on device '%s'." msgstr "Nepodarilo sa zÃskaÅ¥ atribúty ovládacÃch prvkov na zariadenà '%s'." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Neviem identifikovaÅ¥ zariadenie '%s'." - #, c-format msgid "This isn't a device '%s'." msgstr "Toto nie je zariadenie '%s'." @@ -367,9 +402,6 @@ msgstr "Nemôžem fungovaÅ¥ bez hodÃn" #~ msgid "Line-in" #~ msgstr "Linkový vstup" -#~ msgid "Microphone" -#~ msgstr "Mikrofón" - #~ msgid "CD" #~ msgstr "CD" @@ -467,21 +499,9 @@ msgstr "Nemôžem fungovaÅ¥ bez hodÃn" #~ msgid "Telephone" #~ msgstr "Telefón" -#~ msgid "Line In" -#~ msgstr "Linkový vstup" - -#~ msgid "Internal CD" -#~ msgstr "Vnútorne CD" - #~ msgid "Video In" #~ msgstr "Video vstup" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 vstup" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 vstup" - #~ msgid "AUX In" #~ msgstr "AUX vstup" @@ -494,9 +514,6 @@ msgstr "Nemôžem fungovaÅ¥ bez hodÃn" #~ msgid "Microphone Boost" #~ msgstr "Zosilnenie mikrofónu" -#~ msgid "Loopback" -#~ msgstr "Spätná sluÄka" - #~ msgid "Diagnostic" #~ msgstr "Diagnostika" @@ -509,9 +526,6 @@ msgstr "Nemôžem fungovaÅ¥ bez hodÃn" #~ msgid "Input" #~ msgstr "Vstup" -#~ msgid "Record Source" -#~ msgstr "Zdroj záznamu" - #~ msgid "Monitor Source" #~ msgstr "Monitor zdroja" @@ -551,9 +565,6 @@ msgstr "Nemôžem fungovaÅ¥ bez hodÃn" #~ msgid "Input Mix" #~ msgstr "Vstup Mix" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF vstup" - #~ msgid "Microphone 1" #~ msgstr "Mikrofón 1" diff --git a/po/sl.gmo b/po/sl.gmo index 56f133c7c01dffdc79c42b8fc1b675e24935bd0b..56d06c2e00b6ccd8bee005dd121abc6e28d9cfb6 100644 Binary files a/po/sl.gmo and b/po/sl.gmo differ diff --git a/po/sl.po b/po/sl.po index 2e2a19d9ea48ee7af53f60a97bd906b45171cea3..f50839e99468c7a7b77992240323bf7a5ce94286 100644 --- a/po/sl.po +++ b/po/sl.po @@ -10,7 +10,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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2013-01-05 10:03+0100\n" "Last-Translator: Klemen KoÅ¡ir <klemen913@gmail.com>\n" "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n" @@ -21,17 +21,23 @@ msgstr "" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Napaka med dekodiranjem JPEG slike" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' izvajalca '%s'" -msgid "Failed to decode JPEG image" -msgstr "Napaka med dekodiranjem JPEG slike" - msgid "Could not connect to server" msgstr "Ni se mogoÄe povezati s strežnikom" +msgid "No URL set." +msgstr "Ni nastavljenega naslova URL." + msgid "Server does not support seeking." msgstr "Strežnik ne podpira iskanja." @@ -52,9 +58,6 @@ msgstr "" msgid "Server sent bad data." msgstr "Strežnik je poslal slabe podatke." -msgid "No URL set." -msgstr "Ni nastavljenega naslova URL." - msgid "Internal data stream error." msgstr "Notranja napaka pretoka podatkov." @@ -67,6 +70,9 @@ msgstr "Datoteka ne vsebuje pretokov za predvajanje." msgid "This file is invalid and cannot be played." msgstr "Datoteka je napaÄna, zato je ni mogoÄe predvajati." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Datoteka je pokvarjena, zato je ni mogoÄe predvajati." @@ -119,16 +125,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Ni mogoÄe odpreti zvoÄne naprave za predvajanje." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Ni mogoÄe odpreti zvoÄne naprave za snemanje. Ni ustreznih dovoljenj za " -"odpiranje naprave." - -msgid "Could not open audio device for recording." -msgstr "Ni mogoÄe odpreti zvoÄne naprave za snemanje." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -147,6 +143,47 @@ msgstr "Snemanje s to zvoÄno napravo ni podprto." msgid "Error recording from audio device." msgstr "Napaka med shranjevanjem preko zvoÄne naprave" +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Ni mogoÄe odpreti zvoÄne naprave za snemanje. Ni ustreznih dovoljenj za " +"odpiranje naprave." + +msgid "Could not open audio device for recording." +msgstr "Ni mogoÄe odpreti zvoÄne naprave za snemanje." + +msgid "Record Source" +msgstr "" + +msgid "Microphone" +msgstr "" + +#, fuzzy +msgid "Line In" +msgstr "Analogni izhod" + +msgid "Internal CD" +msgstr "" + +#, fuzzy +msgid "SPDIF In" +msgstr "Izhod SPDIF" + +#, fuzzy +msgid "AUX 1 In" +msgstr "AUX 1 izhod" + +#, fuzzy +msgid "AUX 2 In" +msgstr "AUX 2 izhod" + +msgid "Codec Loopback" +msgstr "" + +msgid "SunVTS Loopback" +msgstr "" + msgid "Volume" msgstr "Glasnost" @@ -249,6 +286,10 @@ msgid "Failed to change mute state for device '%s'." msgstr "" "Med nastavljanjem stanja glasnosti na napravi \"%s\" je priÅ¡lo do napake." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Ni mogoÄe doloÄiti naprave '%s'." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -273,10 +314,6 @@ msgstr "Napaka med poizvedovanjem uravnanosti naprave '%s'." msgid "Failed getting controls attributes on device '%s'." msgstr "Napaka med pridobivanjem atributov nadzora naprave '%s'." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Ni mogoÄe doloÄiti naprave '%s'." - #, c-format msgid "This isn't a device '%s'." msgstr "To ni naprava '%s'." diff --git a/po/sq.gmo b/po/sq.gmo index c4fde0a318f991d056bb9f756a6cec26b9c5aaee..9fa0b2d9c49f9c1a8c9da360570a2ff4087f77f5 100644 Binary files a/po/sq.gmo and b/po/sq.gmo differ diff --git a/po/sq.po b/po/sq.po index c2c90d7ed09857c68b492d0e2bd08118c65485e0..cb60e08a9c8e8d2e5f466d96718ca646a8ca136c 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2004-08-07 20:29+0200\n" "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n" "Language-Team: Albanian <begraj@hotmail.com>\n" @@ -15,18 +15,24 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#. TRANSLATORS: 'song title' by 'artist name' -#, c-format -msgid "'%s' by '%s'" +msgid "Jack server not found" msgstr "" msgid "Failed to decode JPEG image" msgstr "" +#. TRANSLATORS: 'song title' by 'artist name' +#, c-format +msgid "'%s' by '%s'" +msgstr "" + #, fuzzy msgid "Could not connect to server" msgstr "E pamundur mbyllja e dispozitivit të kontrollit \"%s\"." +msgid "No URL set." +msgstr "" + #, fuzzy msgid "Server does not support seeking." msgstr "Dispozitivi juaj OSS mund të mos provohet korrektësisht" @@ -49,9 +55,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "" @@ -64,6 +67,9 @@ msgstr "" msgid "This file is invalid and cannot be played." msgstr "" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "" @@ -108,6 +114,23 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "E pamundur hapja e dispozitivit të zërit \"%s\" për shkrim." +msgid "" +"Could not open audio device for playback. This version of the Open Sound " +"System is not supported by this element." +msgstr "" + +msgid "Playback is not supported by this audio device." +msgstr "" + +msgid "Audio playback error." +msgstr "" + +msgid "Recording is not supported by this audio device." +msgstr "" + +msgid "Error recording from audio device." +msgstr "" + msgid "" "Could not open audio device for recording. You don't have permission to open " "the device." @@ -117,21 +140,33 @@ msgstr "" msgid "Could not open audio device for recording." msgstr "I pamundur hapja e dispozitivit CD për lexim." -msgid "" -"Could not open audio device for playback. This version of the Open Sound " -"System is not supported by this element." +#, fuzzy +msgid "Record Source" +msgstr "Regjistrimi" + +msgid "Microphone" +msgstr "Mikrofoni" + +#, fuzzy +msgid "Line In" +msgstr "Linja-hyrje" + +msgid "Internal CD" msgstr "" -msgid "Playback is not supported by this audio device." +msgid "SPDIF In" msgstr "" -msgid "Audio playback error." +msgid "AUX 1 In" msgstr "" -msgid "Recording is not supported by this audio device." +msgid "AUX 2 In" msgstr "" -msgid "Error recording from audio device." +msgid "Codec Loopback" +msgstr "" + +msgid "SunVTS Loopback" msgstr "" msgid "Volume" @@ -232,6 +267,10 @@ msgstr "E pamundur mbyllja e dispozitivit audio \"%s\"." msgid "Failed to change mute state for device '%s'." msgstr "E pamundur marrja e buffers nga dispozitivi \"%s\"." +#, fuzzy, c-format +msgid "Cannot identify device '%s'." +msgstr "I pamundur shkrimi në dispozitivin \"%s\"." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -254,10 +293,6 @@ msgstr "" msgid "Failed getting controls attributes on device '%s'." msgstr "" -#, fuzzy, c-format -msgid "Cannot identify device '%s'." -msgstr "I pamundur shkrimi në dispozitivin \"%s\"." - #, c-format msgid "This isn't a device '%s'." msgstr "" @@ -339,9 +374,6 @@ msgstr "" #~ msgid "Line-in" #~ msgstr "Linja-hyrje" -#~ msgid "Microphone" -#~ msgstr "Mikrofoni" - #~ msgid "CD" #~ msgstr "CD" @@ -402,10 +434,6 @@ msgstr "" #~ msgid "Side" #~ msgstr "Video" -#, fuzzy -#~ msgid "Line In" -#~ msgstr "Linja-hyrje" - #, fuzzy #~ msgid "Video In" #~ msgstr "Video" @@ -422,10 +450,6 @@ msgstr "" #~ msgid "Microphone Boost" #~ msgstr "Mikrofoni" -#, fuzzy -#~ msgid "Record Source" -#~ msgstr "Regjistrimi" - #, fuzzy #~ msgid "Monitor Source" #~ msgstr "Ekrani" diff --git a/po/sr.gmo b/po/sr.gmo index 2f141409742b5977b89d238c63acd22992fe05bc..715e451aa341d755658d935b9679ed890cce8d0a 100644 Binary files a/po/sr.gmo and b/po/sr.gmo differ diff --git a/po/sr.po b/po/sr.po index 91cfe9983aeb61ce53cccdf6e9cd9022132ede67..3900546779125b1928034b23a9112133b7d94179 100644 --- a/po/sr.po +++ b/po/sr.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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2011-12-04 16:44+0200\n" "Last-Translator: МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>\n" "Language-Team: Serbian <gnu@prevod.org>\n" @@ -20,17 +20,23 @@ msgstr "" "X-Generator: Virtaal 0.7.0\n" "X-Project-Style: gnome\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "ÐиÑам уÑпео да декодирам ЈПЕГ Ñлику" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "„%s“ изводи „%s“" -msgid "Failed to decode JPEG image" -msgstr "ÐиÑам уÑпео да декодирам ЈПЕГ Ñлику" - msgid "Could not connect to server" msgstr "Ðе могу да Ñе повежем Ñа Ñервером" +msgid "No URL set." +msgstr "Ðије подешена адреÑа." + msgid "Server does not support seeking." msgstr "Сервер не подржава позиционирање." @@ -50,9 +56,6 @@ msgstr "Дошло је до грешке на мрежи, или је Ñерв msgid "Server sent bad data." msgstr "Сервер је поÑлао лоше податке." -msgid "No URL set." -msgstr "Ðије подешена адреÑа." - msgid "Internal data stream error." msgstr "Унутрашња грешка тока података." @@ -65,6 +68,9 @@ msgstr "Ова датотека не Ñадржи токове за пуштањ msgid "This file is invalid and cannot be played." msgstr "Ова датотека је неиÑправна и не може бити пуштена." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Ова датотека је оштећена и не може бити пуштена." @@ -117,16 +123,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Ðе могу да покренем звучни уређај ради пуштања." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Ðе могу да покренем аудио уређај ради Ñнимања. Ðемате овлашћење за покретање " -"уређаја." - -msgid "Could not open audio device for recording." -msgstr "Ðе могу да покренем звучни уређај ради Ñнимања." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -146,6 +142,45 @@ msgstr "Снимање није подржано од Ñтране овог зв msgid "Error recording from audio device." msgstr "Грешка приликом Ñнимања Ñа звучног уређаја." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Ðе могу да покренем аудио уређај ради Ñнимања. Ðемате овлашћење за покретање " +"уређаја." + +msgid "Could not open audio device for recording." +msgstr "Ðе могу да покренем звучни уређај ради Ñнимања." + +msgid "Record Source" +msgstr "Извор Ñнимања" + +msgid "Microphone" +msgstr "Микрофон" + +msgid "Line In" +msgstr "ЛинијÑки улаз" + +msgid "Internal CD" +msgstr "Унутрашњи ЦД" + +msgid "SPDIF In" +msgstr "СПДИФ улаз" + +msgid "AUX 1 In" +msgstr "ÐУХ 1 улаз" + +msgid "AUX 2 In" +msgstr "ÐУХ 2 улаз" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Повратна петља" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Повратна петља" + msgid "Volume" msgstr "Јачина звука" @@ -246,6 +281,10 @@ msgstr "ÐиÑам уÑпео да подеÑим улаз %d на уређај msgid "Failed to change mute state for device '%s'." msgstr "ÐиÑам уÑпео да добавим јачину Ñигнала за уређај „%s“." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Ðе могу да раÑпознам уређај „%s“." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -270,10 +309,6 @@ msgstr "ÐиÑам уÑпео да пропитам норму на уређај msgid "Failed getting controls attributes on device '%s'." msgstr "ÐиÑам уÑпео да добавим ÑвојÑтва контрола на уређају „%s“." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Ðе могу да раÑпознам уређај „%s“." - #, c-format msgid "This isn't a device '%s'." msgstr "Ово није уређај „%s“." @@ -364,9 +399,6 @@ msgstr "Ðе могу да радим без Ñата" #~ msgid "Line-in" #~ msgstr "ЛинијÑки улаз" -#~ msgid "Microphone" -#~ msgstr "Микрофон" - #~ msgid "CD" #~ msgstr "ЦД" @@ -464,21 +496,9 @@ msgstr "Ðе могу да радим без Ñата" #~ msgid "Telephone" #~ msgstr "Телефон" -#~ msgid "Line In" -#~ msgstr "ЛинијÑки улаз" - -#~ msgid "Internal CD" -#~ msgstr "Унутрашњи ЦД" - #~ msgid "Video In" #~ msgstr "Видео улаз" -#~ msgid "AUX 1 In" -#~ msgstr "ÐУХ 1 улаз" - -#~ msgid "AUX 2 In" -#~ msgstr "ÐУХ 2 улаз" - #~ msgid "AUX In" #~ msgstr "ÐУХ улаз" @@ -491,9 +511,6 @@ msgstr "Ðе могу да радим без Ñата" #~ msgid "Microphone Boost" #~ msgstr "Појачање микрофона" -#~ msgid "Loopback" -#~ msgstr "Повратна петља" - #~ msgid "Diagnostic" #~ msgstr "ДијагноÑтика" @@ -506,9 +523,6 @@ msgstr "Ðе могу да радим без Ñата" #~ msgid "Input" #~ msgstr "Улаз" -#~ msgid "Record Source" -#~ msgstr "Извор Ñнимања" - #~ msgid "Monitor Source" #~ msgstr "Извор праћења" @@ -548,9 +562,6 @@ msgstr "Ðе могу да радим без Ñата" #~ msgid "Input Mix" #~ msgstr "Улазни микÑ" -#~ msgid "SPDIF In" -#~ msgstr "СПДИФ улаз" - #~ msgid "Microphone 1" #~ msgstr "Микрофон 1" diff --git a/po/sv.gmo b/po/sv.gmo index 1d16595c91c542685c05833e743895758ff7d9c4..9dc8f1d754331e3275fb9920917ee479a1336cbf 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index 5caf9998c095771953b22662294a5e6c40afa7be..40c55c024d6fb23c5cdc6a72b3de4052b03008d3 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2011-01-09 19:36+0100\n" "Last-Translator: Daniel Nylander <po@danielnylander.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" @@ -17,17 +17,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "Misslyckades med att avkoda JPEG-bild" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "\"%s\" av \"%s\"" -msgid "Failed to decode JPEG image" -msgstr "Misslyckades med att avkoda JPEG-bild" - msgid "Could not connect to server" msgstr "Kunde inte ansluta till servern" +msgid "No URL set." +msgstr "Ingen URL inställd." + msgid "Server does not support seeking." msgstr "Servern saknar stöd för sökning/spolning." @@ -47,9 +53,6 @@ msgstr "Ett nätverksfel inträfade eller servern stängde anslutningen oväntat msgid "Server sent bad data." msgstr "Servern skickade felaktigt data." -msgid "No URL set." -msgstr "Ingen URL inställd." - msgid "Internal data stream error." msgstr "Internt fel i dataström." @@ -62,6 +65,9 @@ msgstr "Den här filen innehÃ¥ller inga uppspelningsbara strömmar." msgid "This file is invalid and cannot be played." msgstr "Den här filen är ogiltig och kan inte spelas upp." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Den här filen är skadad och kan inte spelas upp." @@ -115,16 +121,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Kunde inte öppna ljudenheten för uppspelning." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Kunde inte öppna ljudenheten för inspelning. Du har inte behörighet att " -"öppna enheten." - -msgid "Could not open audio device for recording." -msgstr "Kunde inte öppna ljudenheten för inspelning." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -144,6 +140,45 @@ msgstr "Inspelning stöds inte av denna ljudenhet." msgid "Error recording from audio device." msgstr "Fel vid inspelning frÃ¥n ljudenheten." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Kunde inte öppna ljudenheten för inspelning. Du har inte behörighet att " +"öppna enheten." + +msgid "Could not open audio device for recording." +msgstr "Kunde inte öppna ljudenheten för inspelning." + +msgid "Record Source" +msgstr "Inspelningskälla" + +msgid "Microphone" +msgstr "Mikrofon" + +msgid "Line In" +msgstr "Linje-in" + +msgid "Internal CD" +msgstr "Intern cd-spelare" + +msgid "SPDIF In" +msgstr "SPDIF in" + +msgid "AUX 1 In" +msgstr "AUX 1 in" + +msgid "AUX 2 In" +msgstr "AUX 2 in" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Loopback" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Loopback" + msgid "Volume" msgstr "Volym" @@ -246,6 +281,10 @@ msgstr "Kunde inte ställa in ingÃ¥ng %d pÃ¥ enheten %s." msgid "Failed to change mute state for device '%s'." msgstr "Misslyckades med att fÃ¥ tag pÃ¥ signalstyrka för enheten \"%s\"." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Kunde inte identifiera enheten \"%s\"." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -272,10 +311,6 @@ msgstr "Misslyckades med att frÃ¥ga efter norm pÃ¥ enheten \"%s\"." msgid "Failed getting controls attributes on device '%s'." msgstr "Misslyckades med att fÃ¥ tag pÃ¥ kontrollattributen pÃ¥ enheten \"%s\"." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Kunde inte identifiera enheten \"%s\"." - #, c-format msgid "This isn't a device '%s'." msgstr "Det här är inte en enhet \"%s\"." @@ -370,9 +405,6 @@ msgstr "Kan inte fungera utan en klocka" #~ msgid "Line-in" #~ msgstr "Linje-in" -#~ msgid "Microphone" -#~ msgstr "Mikrofon" - #~ msgid "CD" #~ msgstr "Cd" @@ -470,21 +502,9 @@ msgstr "Kan inte fungera utan en klocka" #~ msgid "Telephone" #~ msgstr "Telefon" -#~ msgid "Line In" -#~ msgstr "Linje-in" - -#~ msgid "Internal CD" -#~ msgstr "Intern cd-spelare" - #~ msgid "Video In" #~ msgstr "Video-in" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 in" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 in" - #~ msgid "AUX In" #~ msgstr "AUX in" @@ -497,9 +517,6 @@ msgstr "Kan inte fungera utan en klocka" #~ msgid "Microphone Boost" #~ msgstr "Mikrofonboost" -#~ msgid "Loopback" -#~ msgstr "Loopback" - #~ msgid "Diagnostic" #~ msgstr "Diagnostik" @@ -512,9 +529,6 @@ msgstr "Kan inte fungera utan en klocka" #~ msgid "Input" #~ msgstr "IngÃ¥ng" -#~ msgid "Record Source" -#~ msgstr "Inspelningskälla" - #~ msgid "Monitor Source" #~ msgstr "Monitorkälla" @@ -554,9 +568,6 @@ msgstr "Kan inte fungera utan en klocka" #~ msgid "Input Mix" #~ msgstr "IngÃ¥ngsmix" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF in" - #~ msgid "Microphone 1" #~ msgstr "Mikrofon 1" diff --git a/po/tr.gmo b/po/tr.gmo index adda6096a9c5ffca8cc47e32010197b8a0c7458a..7f47bbf382d89a33e4449d312fa948813b96a2c2 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index 6a3eb4344ada6bb9977994619177e89b772898b4..536b77b48640ea611f850a7f6b8b24257c00113d 100644 --- a/po/tr.po +++ b/po/tr.po @@ -1,13 +1,14 @@ -# translation of gst-plugins-good-0.10.26.2.po to Turkish +# translation of gst-plugins-good-1.0.3.po to Turkish # This file is put in the public domain. # Server Acim <serveracim@gmail.com>, 2010. # Server Acim <serveracim@gmail.com>, 2011. +# Server Acim <serveracim@gmail.com>, 2013. msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good 0.10.26.2\n" +"Project-Id-Version: gst-plugins-good 1.0.3\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2013-08-28 15:03+0100\n" -"PO-Revision-Date: 2011-01-08 00:03+0200\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" +"PO-Revision-Date: 2013-03-10 13:05+0200\n" "Last-Translator: Server Acim <serveracim@gmail.com>\n" "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n" "Language: tr\n" @@ -15,17 +16,23 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "JPEG görüntüsünü çözümlenemedi" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "'%s' tarafından '%s'" -msgid "Failed to decode JPEG image" -msgstr "JPEG görüntüsünü çözümlenemedi" - msgid "Could not connect to server" msgstr "Sunucuya baÄŸlanamıyor" +msgid "No URL set." +msgstr "Hiç bir URL ayarlanmamış." + msgid "Server does not support seeking." msgstr "Sunucu aramayı desteklemiyor." @@ -47,9 +54,6 @@ msgstr "" msgid "Server sent bad data." msgstr "Sunucu yetersiz veri gönderdi." -msgid "No URL set." -msgstr "Hiç bir URL ayarlanmamış." - msgid "Internal data stream error." msgstr "İç veri akım hatası." @@ -62,6 +66,9 @@ msgstr "Dosya çalınabilir akışlar içermiyor." msgid "This file is invalid and cannot be played." msgstr "Bu dosya geçersiz ve oynatılamaz." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "Bu dosya bozuk ve oynatılamaz." @@ -111,14 +118,6 @@ msgstr "Çalmak için ses aygıtı açılamıyor. Aygıtı açma izniniz bulunmu msgid "Could not open audio device for playback." msgstr "Çalmak için ses aygıtı açılamıyor." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "Kayıt için aygıtı açamıyor. Aygıtı açmak için yetkiniz yok." - -msgid "Could not open audio device for recording." -msgstr "Aygıtı kayıt için açamıyor." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -138,6 +137,43 @@ msgstr "Bu ses aygıtı kaydetmeyi desteklemiyor." msgid "Error recording from audio device." msgstr "Ses aygıtından kaydetmekte hata." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "Kayıt için aygıtı açamıyor. Aygıtı açmak için yetkiniz yok." + +msgid "Could not open audio device for recording." +msgstr "Aygıtı kayıt için açamıyor." + +msgid "Record Source" +msgstr "Kayıt Kaynağı" + +msgid "Microphone" +msgstr "Mikrofon" + +msgid "Line In" +msgstr "Hat GiriÅŸi" + +msgid "Internal CD" +msgstr "Dahili CD" + +msgid "SPDIF In" +msgstr "SPDIF GiriÅŸi" + +msgid "AUX 1 In" +msgstr "AUX 1 GiriÅŸ" + +msgid "AUX 2 In" +msgstr "AUX 2 GiriÅŸ" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Geridönüm" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Geridönüm" + msgid "Volume" msgstr "Ses GiriÅŸi" @@ -177,25 +213,23 @@ msgstr "Aygıtın '%s' birlikte çalışabileceÄŸi vidyo kiplerini sıralamada h msgid "Could not map buffers from device '%s'" msgstr "Aygıttan '%s' bellekler eÅŸlenemiyor" -#, fuzzy, c-format +#, c-format msgid "The driver of device '%s' does not support the IO method %d" -msgstr "" -"Bu aygıtın sürücüsü '%s' bilinen görüntü yakalama yöntemlerinden herhangi " -"birisi desteklemiyor." +msgstr "Bu aygıtın sürücüsü '%s' IO yöntemini desteklemiyor %d" -#, fuzzy, c-format +#, c-format msgid "The driver of device '%s' does not support any known IO method." msgstr "" -"Bu aygıtın sürücüsü '%s' bilinen görüntü yakalama yöntemlerinden herhangi " -"birisi desteklemiyor." +"Bu aygıtın sürücüsü '%s' bilinen IO yöntemlerinden herhangi birisini " +"desteklemiyor." -#, fuzzy, c-format +#, c-format msgid "Device '%s' does not support video capture" -msgstr "Aygıt '%s' bir çıkış aygıtı deÄŸil." +msgstr "Aygıt '%s' video yakalamayı desteklemiyor" #, c-format msgid "Device '%s' is busy" -msgstr "" +msgstr "Aygıt '%s' meÅŸgul" #, c-format msgid "Device '%s' cannot capture at %dx%d" @@ -209,36 +243,39 @@ msgstr "Aygıt '%s' belirtilen kipte görüntü yakalayamadı" msgid "Could not get parameters on device '%s'" msgstr "DeÄŸiÅŸtirgeler aygıttan '%s' alınamıyor" -#, fuzzy msgid "Video device did not accept new frame rate setting." -msgstr "Vidyo giriÅŸ aygıtı yeni çerçeve oranı ayarlarını kabul etmedi." +msgstr "Vidyo aygıtı yeni çerçeve oranı ayarlarını kabul etmedi." msgid "Video device could not create buffer pool." -msgstr "" +msgstr "Video aygıtı tampon havuzu yaratamadı." -#, fuzzy, c-format +#, c-format msgid "Failed to get settings of tuner %d on device '%s'." -msgstr "Radyo istasyonu ayarlarını bulma %d ÅŸu aygıtta '%s' baÅŸarılamadı." +msgstr "Ä°stasyon ayarlarını bulma iÅŸlemi %d ÅŸu aygıtta '%s' baÅŸarılamadı." -#, fuzzy, c-format +#, c-format msgid "Error getting capabilities for device '%s'." -msgstr "%d bayt bilgili '%s' aygıtından okumada hata." +msgstr "Bu aygıt için kapasite bilgisi alınamadı '%s'." -#, fuzzy, c-format +#, c-format msgid "Device '%s' is not a tuner." -msgstr "Aygıt '%s' bir çıkış aygıtı deÄŸil." +msgstr "Aygıt '%s' bir radyo deÄŸil." -#, fuzzy, c-format +#, c-format msgid "Failed to get radio input on device '%s'. " -msgstr "GiriÅŸ deÄŸeri olarak bu %d ÅŸu aygıtta %s ayarlanamadı." +msgstr "Radyo giriÅŸ deÄŸeri ÅŸu aygıtta '%s' ayarlanamadı." #, c-format msgid "Failed to set input %d on device %s." msgstr "GiriÅŸ deÄŸeri olarak bu %d ÅŸu aygıtta %s ayarlanamadı." -#, fuzzy, c-format +#, c-format msgid "Failed to change mute state for device '%s'." -msgstr "Aygıt için '%s' güçlü sinyal alımı gerçekleÅŸemedi." +msgstr "Aygıt '%s' susturulmaya ayarlanamadı." + +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Aygıt tanımlanamıyor '%s'." #, c-format msgid "" @@ -264,10 +301,6 @@ msgstr "Åžu aygıtta '%s' sorgu normuna eriÅŸilemedi." msgid "Failed getting controls attributes on device '%s'." msgstr "Denetim davranışları ÅŸu aygıtta '%s' bulunamadı." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Aygıt tanımlanamıyor '%s'." - #, c-format msgid "This isn't a device '%s'." msgstr "Bu bir aygıt deÄŸil'%s'." @@ -353,9 +386,6 @@ msgstr "Saat olmadan çalışamaz" #~ msgid "Line-in" #~ msgstr "Hat giriÅŸi" -#~ msgid "Microphone" -#~ msgstr "Mikrofon" - #~ msgid "CD" #~ msgstr "CD" @@ -453,21 +483,9 @@ msgstr "Saat olmadan çalışamaz" #~ msgid "Telephone" #~ msgstr "Telefon" -#~ msgid "Line In" -#~ msgstr "Hat GiriÅŸi" - -#~ msgid "Internal CD" -#~ msgstr "Dahili CD" - #~ msgid "Video In" #~ msgstr "Vidyo GiriÅŸi" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 GiriÅŸ" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 GiriÅŸ" - #~ msgid "AUX In" #~ msgstr "AUX GiriÅŸ" @@ -480,9 +498,6 @@ msgstr "Saat olmadan çalışamaz" #~ msgid "Microphone Boost" #~ msgstr "Mikrofon Seviye Yükseltme" -#~ msgid "Loopback" -#~ msgstr "Geridönüm" - #~ msgid "Diagnostic" #~ msgstr "Ayarlar" @@ -495,9 +510,6 @@ msgstr "Saat olmadan çalışamaz" #~ msgid "Input" #~ msgstr "GiriÅŸ" -#~ msgid "Record Source" -#~ msgstr "Kayıt Kaynağı" - #~ msgid "Monitor Source" #~ msgstr "Hoparlör Kaynağı" @@ -537,9 +549,6 @@ msgstr "Saat olmadan çalışamaz" #~ msgid "Input Mix" #~ msgstr "GiriÅŸ Mix" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF GiriÅŸi" - #~ msgid "Microphone 1" #~ msgstr "Mikrofon 1" diff --git a/po/uk.gmo b/po/uk.gmo index bcb614b5fd714dfdf0c951a98e1de969b186f585..4be2e07301863a8648c3aa4c5c71bbb733678050 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index ed3977341edae098126b59b6f15f1824067cb9d7..4fc97b030f79621145d47ca5809fdadcb28e4d92 100644 --- a/po/uk.po +++ b/po/uk.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the gst-plugins-good package. # # Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2004-2007. -# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012. +# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013. msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good 1.0.3\n" +"Project-Id-Version: gst-plugins-good 1.1.4\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2013-08-28 15:03+0100\n" -"PO-Revision-Date: 2012-11-28 20:23+0200\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" +"PO-Revision-Date: 2013-09-14 22:23+0300\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n" "Language: uk\n" @@ -19,17 +19,23 @@ msgstr "" "X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=1; plural=0;\n" -#. TRANSLATORS: 'song title' by 'artist name' -#, c-format -msgid "'%s' by '%s'" -msgstr "«%s» виконує %s" +msgid "Jack server not found" +msgstr "Ðе знайдено Ñервера Jack" msgid "Failed to decode JPEG image" msgstr "Помилка при декодуванні Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ JPEG" +#. TRANSLATORS: 'song title' by 'artist name' +#, c-format +msgid "'%s' by '%s'" +msgstr "«%s», %s" + msgid "Could not connect to server" msgstr "Ðе вдалоÑÑ Ð·'єднатиÑÑŒ з Ñервером" +msgid "No URL set." +msgstr "Ðе вказано адреÑу" + msgid "Server does not support seeking." msgstr "Сервером не підтримуєтьÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ." @@ -51,9 +57,6 @@ msgstr "" msgid "Server sent bad data." msgstr "Сервером надіÑлано помилкові дані." -msgid "No URL set." -msgstr "Ðе вказано адреÑу" - msgid "Internal data stream error." msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° потоку даних." @@ -68,6 +71,11 @@ msgstr "Файл не міÑтить потоків, Ñкі можна відт msgid "This file is invalid and cannot be played." msgstr "Файл Ñ” некоректним, його не можна відтворити." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" +"Ð’Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ даних неможливе, оÑкільки дані зашифровано за допомогою " +"PlayReady DRM." + msgid "This file is corrupt and cannot be played." msgstr "Файл пошкоджено, його не можна відтворити." @@ -120,16 +128,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ приÑтрій Ð´Ð»Ñ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ приÑтрій Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу. У Ð²Ð°Ñ Ð½ÐµÐ´Ð¾Ñтатньо прав Ð´Ð»Ñ " -"Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ñ€Ð¸Ñтрою." - -msgid "Could not open audio device for recording." -msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ приÑтрій Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -149,6 +147,43 @@ msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð½Ðµ підтримуєтьÑÑ Ñ†Ð¸Ð¼ звуковим пр msgid "Error recording from audio device." msgstr "Помилка запиÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ñ– звукового приÑтрою." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ приÑтрій Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу. У Ð²Ð°Ñ Ð½ÐµÐ´Ð¾Ñтатньо прав Ð´Ð»Ñ " +"Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ñ€Ð¸Ñтрою." + +msgid "Could not open audio device for recording." +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ приÑтрій Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу." + +msgid "Record Source" +msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð°" + +msgid "Microphone" +msgstr "Мікрофон" + +msgid "Line In" +msgstr "Лінійний вхід" + +msgid "Internal CD" +msgstr "Вбудований КД" + +msgid "SPDIF In" +msgstr "Вхід SPDIF" + +msgid "AUX 1 In" +msgstr "Вхід AUX 1" + +msgid "AUX 2 In" +msgstr "Вхід AUX 2" + +msgid "Codec Loopback" +msgstr "ÐŸÐµÑ‚Ð»Ñ ÐºÐ¾Ð´ÐµÐºÐ°" + +msgid "SunVTS Loopback" +msgstr "ÐŸÐµÑ‚Ð»Ñ SunVTS" + msgid "Volume" msgstr "ГучніÑÑ‚ÑŒ" @@ -251,6 +286,10 @@ msgstr "Ðе вдалоÑÑ Ð²Ñтановити ввід %d приÑтрою « msgid "Failed to change mute state for device '%s'." msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ñтан Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ на приÑтрої «%s»." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Ðе вдалоÑÑ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÑƒÐ²Ð°Ñ‚Ð¸ приÑтрій «%s»." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -275,10 +314,6 @@ msgstr "Помилка при запиті норми приÑтрою «%s»." msgid "Failed getting controls attributes on device '%s'." msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ атрибути регулÑторів ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ñтрою «%s»." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Ðе вдалоÑÑ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÑƒÐ²Ð°Ñ‚Ð¸ приÑтрій «%s»." - #, c-format msgid "This isn't a device '%s'." msgstr "Це не приÑтрій «%s»." @@ -367,9 +402,6 @@ msgstr "Робота без годинника неможлива" #~ msgid "Line-in" #~ msgstr "Лінійний вхід" -#~ msgid "Microphone" -#~ msgstr "Мікрофон" - #~ msgid "CD" #~ msgstr "КД" @@ -467,21 +499,9 @@ msgstr "Робота без годинника неможлива" #~ msgid "Telephone" #~ msgstr "Телефон" -#~ msgid "Line In" -#~ msgstr "Лінійний вхід" - -#~ msgid "Internal CD" -#~ msgstr "Вбудований КД" - #~ msgid "Video In" #~ msgstr "Відеовхід" -#~ msgid "AUX 1 In" -#~ msgstr "Вхід AUX 1" - -#~ msgid "AUX 2 In" -#~ msgstr "Вхід AUX 2" - #~ msgid "AUX In" #~ msgstr "Вхід AUX" @@ -494,9 +514,6 @@ msgstr "Робота без годинника неможлива" #~ msgid "Microphone Boost" #~ msgstr "ПідÑÐ¸Ð»ÐµÐ½Ð½Ñ Ð¼Ñ–ÐºÑ€Ð¾Ñ„Ð¾Ð½Ð°" -#~ msgid "Loopback" -#~ msgstr "Заглушка" - #~ msgid "Diagnostic" #~ msgstr "ДіагноÑтика" @@ -509,9 +526,6 @@ msgstr "Робота без годинника неможлива" #~ msgid "Input" #~ msgstr "Вхід" -#~ msgid "Record Source" -#~ msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð°" - #~ msgid "Monitor Source" #~ msgstr "СпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð° джерелом" @@ -551,9 +565,6 @@ msgstr "Робота без годинника неможлива" #~ msgid "Input Mix" #~ msgstr "Мікшер вх. даних" -#~ msgid "SPDIF In" -#~ msgstr "Вхід SPDIF" - #~ msgid "Microphone 1" #~ msgstr "Мікрофон 1" diff --git a/po/vi.gmo b/po/vi.gmo index cf16bf057ff11e633892eb4195ad9bfa6180bc16..136f160f9c1253f6506b98ae88eb30f2a8d65061 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index 3ff53fa786d039e86860d7f1d9eb7c5769cd4c28..5584843e2d8735ebd40335ab138e2626e068a051 100644 --- a/po/vi.po +++ b/po/vi.po @@ -1,15 +1,15 @@ # Vietnamese Translation for GST Plugins Good. -# Copyright © 2012 Free Software Foundation, Inc. +# Copyright © 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the gst-plugins-good package. # Clytie Siddall <clytie@riverland.net.au>, 2005-2010. -# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012. +# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012-2013. # msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good-1.0.3\n" +"Project-Id-Version: gst-plugins-good-1.1.4\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2013-08-28 15:03+0100\n" -"PO-Revision-Date: 2012-12-02 08:06+0700\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" +"PO-Revision-Date: 2013-09-16 14:36+0700\n" "Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" "Language: vi\n" @@ -20,18 +20,26 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: LocFactoryEditor 1.8\n" "X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Language: Vietnamese\n" +"X-Poedit-Country: VIET NAM\n" + +msgid "Jack server not found" +msgstr "Không tìm thấy máy phục vụ Jack" + +msgid "Failed to decode JPEG image" +msgstr "Gặp lá»—i khi giải mã ảnh JPEG" #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "“%s†bởi “%sâ€" -msgid "Failed to decode JPEG image" -msgstr "Gặp lá»—i khi giải mã ảnh JPEG" - msgid "Could not connect to server" msgstr "Không thể kết nối tá»›i máy phục vụ" +msgid "No URL set." +msgstr "Không có URL nà o được đặt." + msgid "Server does not support seeking." msgstr "Máy phục vụ không há»— trợ di chuyển vị trÃ." @@ -46,21 +54,18 @@ msgstr "Cà i đặt kết nối an toà n gặp lá»—i." msgid "" "A network error occured, or the server closed the connection unexpectedly." -msgstr "Má»™t lá»—i mạng đã xảy ra, hoặc máy chủ đóng kết nối bất ngá»." +msgstr "Có lá»—i mạng đã xảy ra, hoặc máy chủ đóng kết nối bất ngá»." msgid "Server sent bad data." msgstr "Máy chủ gá»i dữ liệu sai." -msgid "No URL set." -msgstr "Không có URL nà o được đặt." - msgid "Internal data stream error." msgstr "Lá»—i luồng dữ liệu ná»™i bá»™." msgid "No or invalid input audio, AVI stream will be corrupt." msgstr "" "ChÆ°a có dữ liệu âm thanh nháºp, hoặc dữ liệu âm thanh nháºp không hợp lệ. Vì " -"thế luồng AVI hÆ°." +"thế luồng AVI sẽ há»ng." msgid "This file contains no playable streams." msgstr "Táºp tin nà y không chứa luồng có thể phát." @@ -68,6 +73,9 @@ msgstr "Táºp tin nà y không chứa luồng có thể phát." msgid "This file is invalid and cannot be played." msgstr "Táºp tin nà y không hợp lệ nên không thể phát được." +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "Không thể phát luồng dữ liệu bởi vì nó được mã hóa bằng PlayReady DRM." + msgid "This file is corrupt and cannot be played." msgstr "Táºp tin nà y bị há»ng nên không thể phát." @@ -96,8 +104,8 @@ msgid "" "protocols or may otherwise be missing the right GStreamer RTSP extension " "plugin." msgstr "" -"Không tìm thấy luồng được há»— trợ. NgÆ°á»i dùng có thể cần cho phép thêm giao " -"thức truyá»n, hoặc chÆ°a cà i đặt phần bổ sung RTSP Gstreamer đúng." +"Không tìm thấy luồng dữ liệu được há»— trợ. NgÆ°á»i dùng có thể cần cho phép " +"thêm giao thức truyá»n, hoặc chÆ°a cà i đặt phần bổ sung RTSP Gstreamer đúng." msgid "Internal data flow error." msgstr "Lá»—i luồng dữ liệu ná»™i bá»™." @@ -113,21 +121,12 @@ msgid "" "Could not open audio device for playback. You don't have permission to open " "the device." msgstr "" -"Không thể mở thiết bị âm thanh để phát lại. Bạn không có quyá»n mở thiết bị " -"nà y." +"Không thể mở thiết bị âm thanh để phát lại. Bạn không có đủ thẩm quyá»n để mở " +"thiết bị nà y." msgid "Could not open audio device for playback." msgstr "Không thể mở thiết bị âm thanh để phát lại." -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" -"Không thể mở thiết bị âm thanh để thu. Bạn không có quyá»n mở thiết bị nà y." - -msgid "Could not open audio device for recording." -msgstr "Không thể mở thiết bị âm thanh để thu." - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -147,6 +146,42 @@ msgstr "Chức năng thu không phải được thiết bị âm thanh nà y há»— msgid "Error recording from audio device." msgstr "Gặp lá»—i khi thu từ thiết bị âm thanh." +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" +"Không thể mở thiết bị âm thanh để thu. Bạn không có quyá»n mở thiết bị nà y." + +msgid "Could not open audio device for recording." +msgstr "Không thể mở thiết bị âm thanh để thu." + +msgid "Record Source" +msgstr "Ghi lÆ°u nguồn" + +msgid "Microphone" +msgstr "Micrô" + +msgid "Line In" +msgstr "Äầu và o" + +msgid "Internal CD" +msgstr "CD ở trong" + +msgid "SPDIF In" +msgstr "SPDIF Và o" + +msgid "AUX 1 In" +msgstr "AUX 1 Và o" + +msgid "AUX 2 In" +msgstr "AUX 2 Và o" + +msgid "Codec Loopback" +msgstr "Vòng ngược Codec" + +msgid "SunVTS Loopback" +msgstr "Vòng ngược SunVTS" + msgid "Volume" msgstr "Âm lượng" @@ -163,7 +198,7 @@ msgid "Headphone" msgstr "Tai nghe" msgid "Line Out" -msgstr "Dây Ra" +msgstr "Äầu ra" msgid "SPDIF Out" msgstr "SPDIF Ra" @@ -242,12 +277,16 @@ msgstr "Gặp lá»—i khi lấy đầu và o radio trên thiết bị “%sâ€." #, c-format msgid "Failed to set input %d on device %s." -msgstr "Lá»—i đặt dữ liệu nháºp %d và o thiết bị “%sâ€." +msgstr "Gặp lá»—i khi đặt dữ liệu nháºp %d và o thiết bị “%sâ€." #, c-format msgid "Failed to change mute state for device '%s'." msgstr "Gặp lá»—i khi thay đổi trạng thái ngắt tiếng cho thiết bị “%sâ€." +#, c-format +msgid "Cannot identify device '%s'." +msgstr "Không thể nháºn diện thiết bị “%sâ€." + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -272,10 +311,6 @@ msgstr "Lá»—i truy vấn chỉ tiêu trên thiết bị “%sâ€." msgid "Failed getting controls attributes on device '%s'." msgstr "Lá»—i lấy các thuá»™c tÃnh của bá»™ Ä‘iá»u khiển trên thiết bị “%sâ€." -#, c-format -msgid "Cannot identify device '%s'." -msgstr "Không thể nháºn diện thiết bị “%sâ€." - #, c-format msgid "This isn't a device '%s'." msgstr "Không phải là thiết bị “%sâ€." @@ -286,7 +321,7 @@ msgstr "Không thể mở thiết bị “%s†để Ä‘á»c và ghi." #, c-format msgid "Device '%s' is not a capture device." -msgstr "Thiết bị “%s†không phải là thiết bị bắt gì." +msgstr "Thiết bị “%s†không phải là thiết bị bắt hình/tiếng." #, c-format msgid "Device '%s' is not a output device." @@ -294,24 +329,27 @@ msgstr "Thiết bị “%s†không phải là thiết bị xuất ra." #, c-format msgid "Failed to set norm for device '%s'." -msgstr "Lá»—i đặt chỉ tiêu cho thiết bị “%sâ€." +msgstr "Gặp lá»—i khi đặt chỉ tiêu cho thiết bị “%sâ€." #, c-format msgid "Failed to get current tuner frequency for device '%s'." -msgstr "Lá»—i lấy tần số hiện thá»i của thiết bị Ä‘iá»u hưởng cho thiết bị “%sâ€." +msgstr "" +"Gặp lá»—i khi lấy tần số hiện thá»i của thiết bị Ä‘iá»u chỉnh cá»™ng hưởng cho " +"thiết bị “%sâ€." #, c-format msgid "Failed to set current tuner frequency for device '%s' to %lu Hz." msgstr "" -"Lá»—i đặt tần số hiện thá»i của thiết bị Ä‘iá»u hưởng cho thiết bị “%s†là %lu Hz." +"Gặp lá»—i khi đặt tần số hiện thá»i của thiết bị Ä‘iá»u chỉnh cá»™ng hưởng cho " +"thiết bị “%s†là %lu Hz." #, c-format msgid "Failed to get signal strength for device '%s'." -msgstr "Lá»—i lấy biên Ä‘á»™ tÃn hiệu cho thiết bị “%sâ€." +msgstr "Gặp lá»—i khi lấy biên Ä‘á»™ tÃn hiệu cho thiết bị “%sâ€." #, c-format msgid "Failed to get value for control %d on device '%s'." -msgstr "Lá»—i lấy giá trị của bá»™ Ä‘iá»u khiển %d trên thiết bị “%sâ€." +msgstr "Gặp lá»—i khi lấy giá trị của bá»™ Ä‘iá»u khiển %d trên thiết bị “%sâ€." #, c-format msgid "Failed to set value %d for control %d on device '%s'." @@ -364,9 +402,6 @@ msgstr "Không thể thao tác khi không có đồng hồ" #~ msgid "Line-in" #~ msgstr "Dây-và o" -#~ msgid "Microphone" -#~ msgstr "Micrô" - #~ msgid "CD" #~ msgstr "CD" @@ -464,21 +499,9 @@ msgstr "Không thể thao tác khi không có đồng hồ" #~ msgid "Telephone" #~ msgstr "Äiện thoại" -#~ msgid "Line In" -#~ msgstr "Dây Và o" - -#~ msgid "Internal CD" -#~ msgstr "CD ở trong" - #~ msgid "Video In" #~ msgstr "Ảnh Ä‘á»™ng Và o" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 Và o" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 Và o" - #~ msgid "AUX In" #~ msgstr "AUX Và o" @@ -491,9 +514,6 @@ msgstr "Không thể thao tác khi không có đồng hồ" #~ msgid "Microphone Boost" #~ msgstr "Tăng máy vi âm" -#~ msgid "Loopback" -#~ msgstr "Mạch ná»™i bá»™" - #~ msgid "Diagnostic" #~ msgstr "Chẩn Ä‘oán" @@ -506,9 +526,6 @@ msgstr "Không thể thao tác khi không có đồng hồ" #~ msgid "Input" #~ msgstr "Và o" -#~ msgid "Record Source" -#~ msgstr "Ghi lÆ°u nguồn" - #~ msgid "Monitor Source" #~ msgstr "Theo dõi nguồn" @@ -548,9 +565,6 @@ msgstr "Không thể thao tác khi không có đồng hồ" #~ msgid "Input Mix" #~ msgstr "Hoà tiếng đầu và o" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF Và o" - #~ msgid "Microphone 1" #~ msgstr "Máy vi âm 1" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index 766098458c7f173979c9c336ff4f8ab52904d476..3ed270939c4c629c7afe767787508eb7dd7a58f7 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 174f883468d7d87b999a370a8f7a49e9f7c38683..b9eef162ac30d95bcde0e82cf08dcf9f5c528b4e 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2009-11-13 22:20+0800\n" "Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" @@ -16,17 +16,23 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "解ç JPEG 图åƒå‡ºé”™" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "‘%s’ ç”± ‘%s’" -msgid "Failed to decode JPEG image" -msgstr "解ç JPEG 图åƒå‡ºé”™" - msgid "Could not connect to server" msgstr "æ— æ³•è¿žæŽ¥è‡³æœåŠ¡å™¨" +msgid "No URL set." +msgstr "" + #, fuzzy msgid "Server does not support seeking." msgstr "设备‘%s’ä¸æ”¯æŒè§†é¢‘æ•èŽ·" @@ -49,9 +55,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "内部数æ®æµé”™è¯¯ã€‚" @@ -64,6 +67,9 @@ msgstr "æ¤æ–‡ä»¶ä¸åŒ…å«å¯æ’放的æµã€‚" msgid "This file is invalid and cannot be played." msgstr "æ¤æ–‡ä»¶æ— æ•ˆï¼Œæ— æ³•æ’放。" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "æ¤æ–‡ä»¶å·²æŸåï¼Œæ— æ³•æ’放。" @@ -111,14 +117,6 @@ msgstr "æ— æ³•æ‰“å¼€éŸ³é¢‘è®¾å¤‡æ’æ”¾éŸ³é¢‘ã€‚æ‚¨æ— æƒä½¿ç”¨è¿™ä¸€è®¾å¤‡ã€‚" msgid "Could not open audio device for playback." msgstr "æ— æ³•æ‰“å¼€éŸ³é¢‘è®¾å¤‡æ’放音频。" -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "æ— æ³•æ‰“å¼€éŸ³é¢‘è®¾å¤‡å½•éŸ³ã€‚æ‚¨æ— æƒä½¿ç”¨è¿™ä¸€è®¾å¤‡ã€‚" - -msgid "Could not open audio device for recording." -msgstr "æ— æ³•æ‰“å¼€éŸ³é¢‘è®¾å¤‡å½•éŸ³ã€‚" - #, fuzzy msgid "" "Could not open audio device for playback. This version of the Open Sound " @@ -138,6 +136,46 @@ msgstr "" msgid "Error recording from audio device." msgstr "从设备‘%2$s’ä¸è¯»å– %1$d 个å—节时出错。" +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "æ— æ³•æ‰“å¼€éŸ³é¢‘è®¾å¤‡å½•éŸ³ã€‚æ‚¨æ— æƒä½¿ç”¨è¿™ä¸€è®¾å¤‡ã€‚" + +msgid "Could not open audio device for recording." +msgstr "æ— æ³•æ‰“å¼€éŸ³é¢‘è®¾å¤‡å½•éŸ³ã€‚" + +#, fuzzy +msgid "Record Source" +msgstr "录音" + +msgid "Microphone" +msgstr "è¯ç’" + +#, fuzzy +msgid "Line In" +msgstr "线路输入(Line-in)" + +msgid "Internal CD" +msgstr "" + +#, fuzzy +msgid "SPDIF In" +msgstr "SPDIF 输出" + +#, fuzzy +msgid "AUX 1 In" +msgstr "AUX 1 输出" + +#, fuzzy +msgid "AUX 2 In" +msgstr "AUX 2 输出" + +msgid "Codec Loopback" +msgstr "" + +msgid "SunVTS Loopback" +msgstr "" + msgid "Volume" msgstr "音é‡" @@ -236,6 +274,10 @@ msgstr "设置设备 %2$s 上的输入 %1$d 时出错。" msgid "Failed to change mute state for device '%s'." msgstr "获å–设备‘%s’的信å·é•¿åº¦æ—¶å‡ºé”™ã€‚" +#, c-format +msgid "Cannot identify device '%s'." +msgstr "æ— æ³•ç¡®è®¤è®¾å¤‡â€˜%s’。" + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -258,10 +300,6 @@ msgstr "查寻设备 ‘%s’上的基准时出错。" msgid "Failed getting controls attributes on device '%s'." msgstr "获å–设备‘%s’上的控制属性时出错。" -#, c-format -msgid "Cannot identify device '%s'." -msgstr "æ— æ³•ç¡®è®¤è®¾å¤‡â€˜%s’。" - #, c-format msgid "This isn't a device '%s'." msgstr "ä¸æ˜¯è®¾å¤‡â€˜%s’。" @@ -339,12 +377,6 @@ msgstr "没有时钟的è¯æ— 法æ“作" #~ msgid "Speaker" #~ msgstr "扬声器(Speaker)" -#~ msgid "Line-in" -#~ msgstr "线路输入(Line-in)" - -#~ msgid "Microphone" -#~ msgstr "è¯ç’" - #~ msgid "CD" #~ msgstr "CD 音频" @@ -354,9 +386,6 @@ msgstr "没有时钟的è¯æ— 法æ“作" #~ msgid "PCM-2" #~ msgstr "PCM-2" -#~ msgid "Record" -#~ msgstr "录音" - #~ msgid "In-gain" #~ msgstr "输入增益" diff --git a/po/zh_HK.gmo b/po/zh_HK.gmo index 88164f7d83b57c413be539f45aaf0cf93c901837..0049d528371df12e496598f6126da77be7605bbc 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 4fdb18861d34f7eb41e197aeb57ba9f9be79ec64..1e2572ea65ce71f3aa32611eb1825ddf62aa3d62 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2006-08-29 01:08+0800\n" "Last-Translator: Abel Cheung <abelcheung@gmail.com>\n" "Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n" @@ -15,15 +15,21 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "" -msgid "Failed to decode JPEG image" +msgid "Could not connect to server" msgstr "" -msgid "Could not connect to server" +msgid "No URL set." msgstr "" msgid "Server does not support seeking." @@ -45,9 +51,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "內部資料串æµç™¼ç”ŸéŒ¯èª¤ã€‚" @@ -60,6 +63,9 @@ msgstr "" msgid "This file is invalid and cannot be played." msgstr "" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "" @@ -104,14 +110,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "" -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" - -msgid "Could not open audio device for recording." -msgstr "" - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -129,6 +127,44 @@ msgstr "æ¤éŸ³é¢‘设备ä¸æ”¯æŒå½•éŸ³ã€‚" msgid "Error recording from audio device." msgstr "从音频设备录音时å‘生错误。" +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" + +msgid "Could not open audio device for recording." +msgstr "" + +msgid "Record Source" +msgstr "录音æ¥æº" + +#, fuzzy +msgid "Microphone" +msgstr "麦克风 1" + +msgid "Line In" +msgstr "线路输入" + +msgid "Internal CD" +msgstr "内部 CD 音频" + +msgid "SPDIF In" +msgstr "SPDIF 输入" + +msgid "AUX 1 In" +msgstr "AUX 1 输入" + +msgid "AUX 2 In" +msgstr "AUX 2 输入" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Loopback" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Loopback" + msgid "Volume" msgstr "" @@ -226,6 +262,10 @@ msgstr "" msgid "Failed to change mute state for device '%s'." msgstr "" +#, c-format +msgid "Cannot identify device '%s'." +msgstr "" + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -248,10 +288,6 @@ msgstr "" msgid "Failed getting controls attributes on device '%s'." msgstr "" -#, c-format -msgid "Cannot identify device '%s'." -msgstr "" - #, c-format msgid "This isn't a device '%s'." msgstr "" @@ -359,21 +395,9 @@ msgstr "" #~ msgid "Telephone" #~ msgstr "è¯ç’" -#~ msgid "Line In" -#~ msgstr "线路输入" - -#~ msgid "Internal CD" -#~ msgstr "内部 CD 音频" - #~ msgid "Video In" #~ msgstr "视频输入" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 输入" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 输入" - #~ msgid "AUX In" #~ msgstr "AUX 输入" @@ -386,9 +410,6 @@ msgstr "" #~ msgid "Microphone Boost" #~ msgstr "麦克风增益" -#~ msgid "Loopback" -#~ msgstr "Loopback" - #, fuzzy #~ msgid "Diagnostic" #~ msgstr "é‡‡æ ·åˆ†æž" @@ -402,9 +423,6 @@ msgstr "" #~ msgid "Input" #~ msgstr "输入" -#~ msgid "Record Source" -#~ msgstr "录音æ¥æº" - #~ msgid "Monitor Source" #~ msgstr "监视器æ¥æº" @@ -444,12 +462,6 @@ msgstr "" #~ msgid "Input Mix" #~ msgstr "混音输入" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF 输入" - -#~ msgid "Microphone 1" -#~ msgstr "麦克风 1" - #~ msgid "Microphone 2" #~ msgstr "麦克风 2" diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index 8c6ad1e8293bc8316ce100fa08ae5243bd4c565a..349d26cd4acf31ca0b218063a89dda5189c6600d 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 b84cbca4512d30d71a659fe0724eb150ccd2d612..dbb9719b60296fbad9b1b1121cbdba737d90cf92 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: 2013-08-28 15:03+0100\n" +"POT-Creation-Date: 2013-09-19 10:18+0200\n" "PO-Revision-Date: 2006-08-29 01:08+0800\n" "Last-Translator: Abel Cheung <abelcheung@gmail.com>\n" "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n" @@ -15,15 +15,21 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Jack server not found" +msgstr "" + +msgid "Failed to decode JPEG image" +msgstr "" + #. TRANSLATORS: 'song title' by 'artist name' #, c-format msgid "'%s' by '%s'" msgstr "" -msgid "Failed to decode JPEG image" +msgid "Could not connect to server" msgstr "" -msgid "Could not connect to server" +msgid "No URL set." msgstr "" msgid "Server does not support seeking." @@ -45,9 +51,6 @@ msgstr "" msgid "Server sent bad data." msgstr "" -msgid "No URL set." -msgstr "" - msgid "Internal data stream error." msgstr "內部資料串æµç™¼ç”ŸéŒ¯èª¤ã€‚" @@ -60,6 +63,9 @@ msgstr "" msgid "This file is invalid and cannot be played." msgstr "" +msgid "Cannot play stream because it is encrypted with PlayReady DRM." +msgstr "" + msgid "This file is corrupt and cannot be played." msgstr "" @@ -104,14 +110,6 @@ msgstr "" msgid "Could not open audio device for playback." msgstr "" -msgid "" -"Could not open audio device for recording. You don't have permission to open " -"the device." -msgstr "" - -msgid "Could not open audio device for recording." -msgstr "" - msgid "" "Could not open audio device for playback. This version of the Open Sound " "System is not supported by this element." @@ -129,6 +127,44 @@ msgstr "æ¤éŸ³é¢‘设备ä¸æ”¯æŒå½•éŸ³ã€‚" msgid "Error recording from audio device." msgstr "从音频设备录音时å‘生错误。" +msgid "" +"Could not open audio device for recording. You don't have permission to open " +"the device." +msgstr "" + +msgid "Could not open audio device for recording." +msgstr "" + +msgid "Record Source" +msgstr "录音æ¥æº" + +#, fuzzy +msgid "Microphone" +msgstr "麦克风 1" + +msgid "Line In" +msgstr "线路输入" + +msgid "Internal CD" +msgstr "内部 CD 音频" + +msgid "SPDIF In" +msgstr "SPDIF 输入" + +msgid "AUX 1 In" +msgstr "AUX 1 输入" + +msgid "AUX 2 In" +msgstr "AUX 2 输入" + +#, fuzzy +msgid "Codec Loopback" +msgstr "Loopback" + +#, fuzzy +msgid "SunVTS Loopback" +msgstr "Loopback" + msgid "Volume" msgstr "" @@ -226,6 +262,10 @@ msgstr "" msgid "Failed to change mute state for device '%s'." msgstr "" +#, c-format +msgid "Cannot identify device '%s'." +msgstr "" + #, c-format msgid "" "Error getting capabilities for device '%s': It isn't a v4l2 driver. Check if " @@ -248,10 +288,6 @@ msgstr "" msgid "Failed getting controls attributes on device '%s'." msgstr "" -#, c-format -msgid "Cannot identify device '%s'." -msgstr "" - #, c-format msgid "This isn't a device '%s'." msgstr "" @@ -359,21 +395,9 @@ msgstr "" #~ msgid "Telephone" #~ msgstr "è¯ç’" -#~ msgid "Line In" -#~ msgstr "线路输入" - -#~ msgid "Internal CD" -#~ msgstr "内部 CD 音频" - #~ msgid "Video In" #~ msgstr "视频输入" -#~ msgid "AUX 1 In" -#~ msgstr "AUX 1 输入" - -#~ msgid "AUX 2 In" -#~ msgstr "AUX 2 输入" - #~ msgid "AUX In" #~ msgstr "AUX 输入" @@ -386,9 +410,6 @@ msgstr "" #~ msgid "Microphone Boost" #~ msgstr "麦克风增益" -#~ msgid "Loopback" -#~ msgstr "Loopback" - #, fuzzy #~ msgid "Diagnostic" #~ msgstr "é‡‡æ ·åˆ†æž" @@ -402,9 +423,6 @@ msgstr "" #~ msgid "Input" #~ msgstr "输入" -#~ msgid "Record Source" -#~ msgstr "录音æ¥æº" - #~ msgid "Monitor Source" #~ msgstr "监视器æ¥æº" @@ -444,12 +462,6 @@ msgstr "" #~ msgid "Input Mix" #~ msgstr "混音输入" -#~ msgid "SPDIF In" -#~ msgstr "SPDIF 输入" - -#~ msgid "Microphone 1" -#~ msgstr "麦克风 1" - #~ msgid "Microphone 2" #~ msgstr "麦克风 2" diff --git a/sys/Makefile.in b/sys/Makefile.in index 516a6a90028f8dd5ab9bc4eae66fc602d516aeed..91748c5c0cb902bbe36fac145a4deea44f68ea80 100644 --- a/sys/Makefile.in +++ b/sys/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -26,23 +25,51 @@ # descending into all subdirectories a second time, but only after the first # (parallel) run has finished, so it should go right through the second time. VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -62,8 +89,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/common/parallel-subdirs.mak +DIST_COMMON = $(top_srcdir)/common/parallel-subdirs.mak \ + $(srcdir)/Makefile.in $(srcdir)/Makefile.am subdir = sys ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -71,7 +98,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -107,21 +133,28 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -129,9 +162,29 @@ am__can_run_installinfo = \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -324,6 +377,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -570,22 +624,25 @@ clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -600,57 +657,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -666,12 +678,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -683,15 +690,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -700,6 +703,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -860,22 +878,20 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am .PHONY: independent-subdirs $(SUBDIRS) diff --git a/sys/directsound/Makefile.in b/sys/directsound/Makefile.in index a679c78c43788cf5a5a2a658341d61a3bcc0c697..a6c922d4fab331b80f517c4ca85d86634a73affa 100644 --- a/sys/directsound/Makefile.in +++ b/sys/directsound/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = sys/directsound -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -139,10 +165,23 @@ libgstdirectsoundsink_la_OBJECTS = \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstdirectsoundsink_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstdirectsoundsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstdirectsoundsink_la_CFLAGS) \ $(CFLAGS) $(libgstdirectsoundsink_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -155,20 +194,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstdirectsoundsink_la_SOURCES) DIST_SOURCES = $(libgstdirectsoundsink_la_SOURCES) am__can_run_installinfo = \ @@ -177,6 +212,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -344,6 +396,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -556,6 +609,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -582,12 +636,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstdirectsoundsink.la: $(libgstdirectsoundsink_la_OBJECTS) $(libgstdirectsoundsink_la_DEPENDENCIES) $(EXTRA_libgstdirectsoundsink_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstdirectsoundsink_la_LINK) -rpath $(plugindir) $(libgstdirectsoundsink_la_OBJECTS) $(libgstdirectsoundsink_la_LIBADD) $(LIBS) @@ -601,22 +658,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdirectsoundsink_la-gstdirectsoundsink.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -641,26 +701,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -672,15 +721,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -689,6 +734,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -833,19 +893,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/sys/directsound/gstdirectsoundplugin.c b/sys/directsound/gstdirectsoundplugin.c index bc19ce249e1ae51cd414b6157eeef144a56fdcbc..faee215f5af8a7a3f91b24d7c98fae304750c1c4 100644 --- a/sys/directsound/gstdirectsoundplugin.c +++ b/sys/directsound/gstdirectsoundplugin.c @@ -16,8 +16,8 @@ * * 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. +* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +* Boston, MA 02110-1301, USA. * * * The development of this code was made possible due to the involvement diff --git a/sys/directsound/gstdirectsoundsink.c b/sys/directsound/gstdirectsoundsink.c index e80ed2e540907838c8acd3ba6e74b9aa6fae8953..56b04187c28cdd115825532fefe75061b3ba906a 100644 --- a/sys/directsound/gstdirectsoundsink.c +++ b/sys/directsound/gstdirectsoundsink.c @@ -17,8 +17,8 @@ * * 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. +* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +* Boston, MA 02110-1301, USA. * * * The development of this code was made possible due to the involvement @@ -53,7 +53,6 @@ #endif #include <gst/base/gstbasesink.h> -#include <gst/audio/streamvolume.h> #include "gstdirectsoundsink.h" #include <gst/audio/gstaudioiec61937.h> @@ -156,8 +155,6 @@ gst_directsound_sink_class_init (GstDirectSoundSinkClass * klass) GST_DEBUG_CATEGORY_INIT (directsoundsink_debug, "directsoundsink", 0, "DirectSound sink"); - parent_class = g_type_class_peek_parent (klass); - gobject_class->finalize = gst_directsound_sink_finalize; gobject_class->set_property = gst_directsound_sink_set_property; gobject_class->get_property = gst_directsound_sink_get_property; @@ -261,7 +258,6 @@ gst_directsound_sink_getcaps (GstBaseSink * bsink, GstCaps * filter) GstPadTemplate *pad_template; GstDirectSoundSink *dsoundsink = GST_DIRECTSOUND_SINK (bsink); GstCaps *caps; - gchar *caps_string = NULL; if (dsoundsink->pDS == NULL) { GST_DEBUG_OBJECT (dsoundsink, "device not open, using template caps"); @@ -269,20 +265,23 @@ gst_directsound_sink_getcaps (GstBaseSink * bsink, GstCaps * filter) } if (dsoundsink->cached_caps) { - caps_string = gst_caps_to_string (dsoundsink->cached_caps); - GST_DEBUG_OBJECT (dsoundsink, "Returning cached caps: %s", caps_string); - g_free (caps_string); - return gst_caps_ref (dsoundsink->cached_caps); + caps = gst_caps_ref (dsoundsink->cached_caps); + } else { + element_class = GST_ELEMENT_GET_CLASS (dsoundsink); + pad_template = gst_element_class_get_pad_template (element_class, "sink"); + g_return_val_if_fail (pad_template != NULL, NULL); + + caps = gst_directsound_probe_supported_formats (dsoundsink, + gst_pad_template_get_caps (pad_template)); + if (caps) + dsoundsink->cached_caps = gst_caps_ref (caps); } - element_class = GST_ELEMENT_GET_CLASS (dsoundsink); - pad_template = gst_element_class_get_pad_template (element_class, "sink"); - g_return_val_if_fail (pad_template != NULL, NULL); - - caps = gst_directsound_probe_supported_formats (dsoundsink, - gst_pad_template_get_caps (pad_template)); - if (caps) { - dsoundsink->cached_caps = gst_caps_ref (caps); + if (caps && filter) { + GstCaps *tmp = + gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (caps); + caps = tmp; } if (caps) { @@ -315,10 +314,11 @@ gst_directsound_sink_acceptcaps (GstBaseSink * sink, GstQuery * query) pad_caps = gst_pad_query_caps (pad, NULL); if (pad_caps) { - gboolean cret = gst_caps_can_intersect (pad_caps, caps); + gboolean cret = gst_caps_is_subset (caps, pad_caps); gst_caps_unref (pad_caps); if (!cret) { - GST_DEBUG_OBJECT (dsink, "Can't intersect caps, not accepting caps"); + GST_DEBUG_OBJECT (dsink, + "Caps are not a subset of the pad caps, not accepting caps"); goto done; } } diff --git a/sys/directsound/gstdirectsoundsink.h b/sys/directsound/gstdirectsoundsink.h index 43b2dde1b97a7b3c61620f04f5fc2af98934f59c..3a83181940afa1cf0f1f860c55c4c749262271ae 100644 --- a/sys/directsound/gstdirectsoundsink.h +++ b/sys/directsound/gstdirectsoundsink.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * The development of this code was made possible due to the involvement * of Pioneers of the Inevitable, the creators of the Songbird Music player @@ -30,6 +30,7 @@ #define __GST_DIRECTSOUNDSINK_H__ #include <gst/gst.h> +#include <gst/audio/audio.h> #include <gst/audio/gstaudiosink.h> #include <windows.h> diff --git a/sys/oss/Makefile.in b/sys/oss/Makefile.in index abf6054f181d29c0077c35b8602d90e78870fa68..cd237a31540dc94e29414b8926e31e938178fd91 100644 --- a/sys/oss/Makefile.in +++ b/sys/oss/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = sys/oss -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,10 +163,23 @@ libgstossaudio_la_OBJECTS = $(am_libgstossaudio_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstossaudio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstossaudio_la_CFLAGS) $(CFLAGS) \ $(libgstossaudio_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +192,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstossaudio_la_SOURCES) DIST_SOURCES = $(libgstossaudio_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +210,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +394,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -557,6 +610,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -583,12 +637,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstossaudio.la: $(libgstossaudio_la_OBJECTS) $(libgstossaudio_la_DEPENDENCIES) $(EXTRA_libgstossaudio_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstossaudio_la_LINK) -rpath $(plugindir) $(libgstossaudio_la_OBJECTS) $(libgstossaudio_la_LIBADD) $(LIBS) @@ -604,22 +661,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstossaudio_la-gstosssrc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -658,26 +718,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -689,15 +738,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -706,6 +751,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -850,19 +910,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/sys/oss/common.h b/sys/oss/common.h index 2445c3d8a9f90b3857560ed8aada335435cb3a8a..6c3632f26bc03bb8e57ae9217c08058c55dd709f 100644 --- a/sys/oss/common.h +++ b/sys/oss/common.h @@ -14,10 +14,12 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ +#include <gst/audio/audio.h> + #define SET_PARAM(_oss, _name, _val, _detail) \ G_STMT_START { \ int _tmp = _val; \ diff --git a/sys/oss/gstossaudio.c b/sys/oss/gstossaudio.c index 57fcf0aeac2daa535c90bb0b5d3611754b16ad06..7194e2e84ee4b3180cc3656af55804360b6352cd 100644 --- a/sys/oss/gstossaudio.c +++ b/sys/oss/gstossaudio.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -23,6 +23,7 @@ #include "gst/gst-i18n-plugin.h" +#include "common.h" #include "gstosssink.h" #include "gstosssrc.h" diff --git a/sys/oss/gstossdmabuffer.h b/sys/oss/gstossdmabuffer.h index c38ef6f555bc97191cbac86c6a50f0ae7690a7b4..9143b0351f9c17c5254fe9a0957f22e8e89b05e2 100644 --- a/sys/oss/gstossdmabuffer.h +++ b/sys/oss/gstossdmabuffer.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_OSSDMABUFFER_H__ diff --git a/sys/oss/gstosshelper.c b/sys/oss/gstosshelper.c index ad62990b18e6ca6d1081ae1bfa9748580cbd0572..11e3ff6df82a34364ae711264e21a4758d4c0e4f 100644 --- a/sys/oss/gstosshelper.c +++ b/sys/oss/gstosshelper.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/sys/oss/gstosshelper.h b/sys/oss/gstosshelper.h index aa30b0c245c1e43966df2d2a7d1f767e959e0502..d9f99148f68be600e58cd8121886001ff33976a8 100644 --- a/sys/oss/gstosshelper.h +++ b/sys/oss/gstosshelper.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/sys/oss/gstosssink.c b/sys/oss/gstosssink.c index 759f0d375a5c2ec109aa7831f6ea4eb74a4a0c95..3ee3c2a37d0d3105a7201a29b337faeaef320c83 100644 --- a/sys/oss/gstosssink.c +++ b/sys/oss/gstosssink.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/sys/oss/gstosssink.h b/sys/oss/gstosssink.h index bb2ca932e499089011a65fb4c0f733cb42bd9117..3174df169447d41b176ceaa28a6a76566b7cd462 100644 --- a/sys/oss/gstosssink.h +++ b/sys/oss/gstosssink.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/sys/oss/gstosssrc.c b/sys/oss/gstosssrc.c index 4738c22197851185e7316a96f91aa0e628436fd4..742c59dc443298dedce284e0dcdb0bbf9e56d3e0 100644 --- a/sys/oss/gstosssrc.c +++ b/sys/oss/gstosssrc.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -59,8 +59,8 @@ # endif /* HAVE_OSS_INCLUDE_IN_ROOT */ #endif /* HAVE_OSS_INCLUDE_IN_SYS */ -#include "gstosssrc.h" #include "common.h" +#include "gstosssrc.h" #include <gst/gst-i18n-plugin.h> diff --git a/sys/oss/gstosssrc.h b/sys/oss/gstosssrc.h index ec9af4cb097d73e41455cc2e03ed8f35dab65cc1..58995fb22e3807153888c326a82351aa93c2541c 100644 --- a/sys/oss/gstosssrc.h +++ b/sys/oss/gstosssrc.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ diff --git a/sys/oss4/Makefile.in b/sys/oss4/Makefile.in index 4802719719f429f9f99eb0ee52cb66c8aa7529eb..de406abb2d36da584916d955e6ac3dd38ca40b48 100644 --- a/sys/oss4/Makefile.in +++ b/sys/oss4/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = sys/oss4 -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -138,10 +164,23 @@ libgstoss4audio_la_OBJECTS = $(am_libgstoss4audio_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstoss4audio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) \ $(libgstoss4audio_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -154,20 +193,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstoss4audio_la_SOURCES) DIST_SOURCES = $(libgstoss4audio_la_SOURCES) am__can_run_installinfo = \ @@ -176,6 +211,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -343,6 +395,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -559,6 +612,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -585,12 +639,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstoss4audio.la: $(libgstoss4audio_la_OBJECTS) $(libgstoss4audio_la_DEPENDENCIES) $(EXTRA_libgstoss4audio_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstoss4audio_la_LINK) -rpath $(plugindir) $(libgstoss4audio_la_OBJECTS) $(libgstoss4audio_la_LIBADD) $(LIBS) @@ -606,22 +663,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstoss4audio_la-oss4-source.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -660,26 +720,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -691,15 +740,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -708,6 +753,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -852,19 +912,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/sys/oss4/oss4-audio.c b/sys/oss4/oss4-audio.c index 21a963fe5b564c134c14ad87a046e1566889f940..56d12b15e681989605a06ba6ff697bff166d92f9 100644 --- a/sys/oss4/oss4-audio.c +++ b/sys/oss4/oss4-audio.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* FIXME 0.11: suppress warnings for deprecated API such as GValueArray diff --git a/sys/oss4/oss4-audio.h b/sys/oss4/oss4-audio.h index fcfbb8e8cc498c957713be52a93351dc381ff087..054ecf92641ad21f5076d44befc77d184909d0d7 100644 --- a/sys/oss4/oss4-audio.h +++ b/sys/oss4/oss4-audio.h @@ -13,15 +13,15 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef GST_OSS4_AUDIO_H #define GST_OSS4_AUDIO_H_ #include <gst/gst.h> -#include <gst/audio/gstaudioringbuffer.h> +#include <gst/audio/audio.h> /* This is the minimum version we require */ #define GST_MIN_OSS4_VERSION 0x040003 diff --git a/sys/oss4/oss4-property-probe.c b/sys/oss4/oss4-property-probe.c index c628af81a4b929133340634d8e59e6fa6d457bc3..2e164f2853506431f7ba7b5a2461aa60f5e7658e 100644 --- a/sys/oss4/oss4-property-probe.c +++ b/sys/oss4/oss4-property-probe.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* FIXME 0.11: suppress warnings for deprecated API such as GValueArray diff --git a/sys/oss4/oss4-property-probe.h b/sys/oss4/oss4-property-probe.h index 8426bb60478e66f55b89af2fb2ab99a69cb9d61f..1f46f9a874c85abdc7aafd6ca67f4745751606be 100644 --- a/sys/oss4/oss4-property-probe.h +++ b/sys/oss4/oss4-property-probe.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef GST_OSS4_PROPERTY_PROBE_H diff --git a/sys/oss4/oss4-sink.c b/sys/oss4/oss4-sink.c index 8d746cdf6f4baf3186f17757d5fcb9421b8e1ce1..eb3ada0fe5afd9137b851c969d14f1bd7bf2f65a 100644 --- a/sys/oss4/oss4-sink.c +++ b/sys/oss4/oss4-sink.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** * SECTION:element-oss4sink @@ -545,7 +545,13 @@ non_block: static gboolean gst_oss4_sink_open_func (GstAudioSink * asink) { - return gst_oss4_sink_open (asink, FALSE); + if (!gst_oss4_sink_open (asink, FALSE)) + return FALSE; + + /* the initial volume might not be the property default, so notify + * application to make it get a reading of the current volume */ + g_object_notify (G_OBJECT (asink), "volume"); + return TRUE; } static gboolean diff --git a/sys/oss4/oss4-sink.h b/sys/oss4/oss4-sink.h index 47221955d8152a0ff3bdae0bc5ad73a28ddaec59..04645fe7f3535448ea9d1532fb4cc752bf2daf32 100644 --- a/sys/oss4/oss4-sink.h +++ b/sys/oss4/oss4-sink.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef GST_OSS4_SINK_H diff --git a/sys/oss4/oss4-source.c b/sys/oss4/oss4-source.c index c193616c37c5702033c4fc32c71cd163cc9106bc..e8c667e0999a123914f449a75039b2dc9ffd66f9 100644 --- a/sys/oss4/oss4-source.c +++ b/sys/oss4/oss4-source.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/sys/oss4/oss4-source.h b/sys/oss4/oss4-source.h index f30021ee37372d9ae636faaac4e82a2c471d4c2f..91d8f136904b572bbeaaf7d2a4b039a615f8d55f 100644 --- a/sys/oss4/oss4-source.h +++ b/sys/oss4/oss4-source.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef GST_OSS4_SOURCE_H diff --git a/sys/osxaudio/Makefile.in b/sys/osxaudio/Makefile.in index d04928b31ffbb37c97539cdf4df5328081f2be5c..757ddec8782f0e9e44ffead6c09b6b512dadb487 100644 --- a/sys/osxaudio/Makefile.in +++ b/sys/osxaudio/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -55,15 +82,14 @@ host_triplet = @host@ target_triplet = @target@ @HAVE_IOS_FALSE@am__append_1 = -Wl,-framework,AudioUnit -Wl,-framework,CoreServices subdir = sys/osxaudio -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -143,10 +169,23 @@ libgstosxaudio_la_OBJECTS = $(am_libgstosxaudio_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstosxaudio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) \ $(libgstosxaudio_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -159,20 +198,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstosxaudio_la_SOURCES) DIST_SOURCES = $(libgstosxaudio_la_SOURCES) am__can_run_installinfo = \ @@ -181,6 +216,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -348,6 +400,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -573,6 +626,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -599,12 +653,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstosxaudio.la: $(libgstosxaudio_la_OBJECTS) $(libgstosxaudio_la_DEPENDENCIES) $(EXTRA_libgstosxaudio_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstosxaudio_la_LINK) -rpath $(plugindir) $(libgstosxaudio_la_OBJECTS) $(libgstosxaudio_la_LIBADD) $(LIBS) @@ -623,22 +680,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstosxaudio_la-gstosxcoreaudiocommon.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -698,26 +758,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -729,15 +778,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -746,6 +791,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -890,19 +950,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/sys/osxaudio/gstosxaudio.c b/sys/osxaudio/gstosxaudio.c index d0019982581f62c84cb8c4e4223431cec799bbc2..c48b03f8f525ad22c71134b6f63f4806eb697abc 100644 --- a/sys/osxaudio/gstosxaudio.c +++ b/sys/osxaudio/gstosxaudio.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * The development of this code was made possible due to the involvement of * Pioneers of the Inevitable, the creators of the Songbird Music player diff --git a/sys/osxaudio/gstosxaudioelement.c b/sys/osxaudio/gstosxaudioelement.c index 0442b1d3dae63b6c66301d3b174d7d544ae825fe..bec24d14926b674fd015d293310c32fe15c14184 100644 --- a/sys/osxaudio/gstosxaudioelement.c +++ b/sys/osxaudio/gstosxaudioelement.c @@ -38,8 +38,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * The development of this code was made possible due to the involvement of * Pioneers of the Inevitable, the creators of the Songbird Music player diff --git a/sys/osxaudio/gstosxaudioelement.h b/sys/osxaudio/gstosxaudioelement.h index 198dc1e4e4c46066b6bfa26fbe31fc05f4ea3f59..3e09dc1bb780a91a795c6d4a2dc009f35969a8a3 100644 --- a/sys/osxaudio/gstosxaudioelement.h +++ b/sys/osxaudio/gstosxaudioelement.h @@ -38,8 +38,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * The development of this code was made possible due to the involvement of * Pioneers of the Inevitable, the creators of the Songbird Music player diff --git a/sys/osxaudio/gstosxaudioringbuffer.c b/sys/osxaudio/gstosxaudioringbuffer.c index ae69319e51bd3f72b75f998e79aef5d5f71beb1f..997ae975cb9d6f42d69e0a8eb89efbcd4ef10198 100644 --- a/sys/osxaudio/gstosxaudioringbuffer.c +++ b/sys/osxaudio/gstosxaudioringbuffer.c @@ -39,8 +39,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/sys/osxaudio/gstosxaudioringbuffer.h b/sys/osxaudio/gstosxaudioringbuffer.h index 533d16a40f3f53813e0fda17f265a3899eeddcfc..5054fd38533a2cf4cfcfb87a26d910abf47de45c 100644 --- a/sys/osxaudio/gstosxaudioringbuffer.h +++ b/sys/osxaudio/gstosxaudioringbuffer.h @@ -38,8 +38,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_OSX_RING_BUFFER_H__ diff --git a/sys/osxaudio/gstosxaudiosink.c b/sys/osxaudio/gstosxaudiosink.c index 2273a347d75c068700f45ce9e16e77c7db88c973..8f01a3bad733309adf366cbecef272735d579bda 100644 --- a/sys/osxaudio/gstosxaudiosink.c +++ b/sys/osxaudio/gstosxaudiosink.c @@ -39,8 +39,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * The development of this code was made possible due to the involvement of * Pioneers of the Inevitable, the creators of the Songbird Music player @@ -315,6 +315,9 @@ gst_osx_audio_sink_getcaps (GstBaseSink * base, GstCaps * filter) caps_string = gst_caps_to_string (sink->cached_caps); GST_DEBUG_OBJECT (sink, "using cached caps: %s", caps_string); g_free (caps_string); + if (filter) + return gst_caps_intersect_full (sink->cached_caps, filter, + GST_CAPS_INTERSECT_FIRST); return gst_caps_ref (sink->cached_caps); } @@ -325,15 +328,12 @@ gst_osx_audio_sink_getcaps (GstBaseSink * base, GstCaps * filter) static gboolean gst_osx_audio_sink_acceptcaps (GstOsxAudioSink * sink, GstCaps * caps) { - GstOsxAudioRingBuffer *osxbuf = NULL; GstCaps *pad_caps; GstStructure *st; gboolean ret = FALSE; GstAudioRingBufferSpec spec = { 0 }; gchar *caps_string = NULL; - osxbuf = GST_OSX_AUDIO_RING_BUFFER (GST_AUDIO_BASE_SINK (sink)->ringbuffer); - caps_string = gst_caps_to_string (caps); GST_DEBUG_OBJECT (sink, "acceptcaps called with %s", caps_string); g_free (caps_string); @@ -577,39 +577,30 @@ gst_osx_audio_sink_allowed_caps (GstOsxAudioSink * osxsink) switch (layout->mChannelDescriptions[i].mChannelLabel) { case kAudioChannelLabel_Left: pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT; - channel_mask |= GST_AUDIO_CHANNEL_POSITION_MASK (FRONT_LEFT); break; case kAudioChannelLabel_Right: pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT; - channel_mask |= GST_AUDIO_CHANNEL_POSITION_MASK (FRONT_RIGHT); break; case kAudioChannelLabel_Center: pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER; - channel_mask |= GST_AUDIO_CHANNEL_POSITION_MASK (FRONT_CENTER); break; case kAudioChannelLabel_LFEScreen: pos[i] = GST_AUDIO_CHANNEL_POSITION_LFE1; - channel_mask |= GST_AUDIO_CHANNEL_POSITION_MASK (LFE1); break; case kAudioChannelLabel_LeftSurround: pos[i] = GST_AUDIO_CHANNEL_POSITION_REAR_LEFT; - channel_mask |= GST_AUDIO_CHANNEL_POSITION_MASK (REAR_LEFT); break; case kAudioChannelLabel_RightSurround: pos[i] = GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT; - channel_mask |= GST_AUDIO_CHANNEL_POSITION_MASK (REAR_RIGHT); break; case kAudioChannelLabel_RearSurroundLeft: pos[i] = GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT; - channel_mask |= GST_AUDIO_CHANNEL_POSITION_MASK (SIDE_LEFT); break; case kAudioChannelLabel_RearSurroundRight: pos[i] = GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT; - channel_mask |= GST_AUDIO_CHANNEL_POSITION_MASK (SIDE_RIGHT); break; case kAudioChannelLabel_CenterSurround: pos[i] = GST_AUDIO_CHANNEL_POSITION_REAR_CENTER; - channel_mask |= GST_AUDIO_CHANNEL_POSITION_MASK (REAR_CENTER); break; default: GST_WARNING_OBJECT (osxsink, "unrecognized channel: %d", @@ -640,6 +631,7 @@ gst_osx_audio_sink_allowed_caps (GstOsxAudioSink * osxsink) gst_caps_append_structure (caps, gst_structure_copy (in_s)); } } + gst_audio_channel_positions_to_mask (pos, channels, false, &channel_mask); out_s = gst_structure_copy (in_s); gst_structure_remove_fields (out_s, "channels", "channel-mask", NULL); gst_structure_set (out_s, "channels", G_TYPE_INT, channels, diff --git a/sys/osxaudio/gstosxaudiosink.h b/sys/osxaudio/gstosxaudiosink.h index 6b1fc29e342820c1d8baa205c8b242d17ad51422..84949b7fc411dca63249bf17d06f8464df8f13b2 100644 --- a/sys/osxaudio/gstosxaudiosink.h +++ b/sys/osxaudio/gstosxaudiosink.h @@ -39,8 +39,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * The development of this code was made possible due to the involvement of * Pioneers of the Inevitable, the creators of the Songbird Music player diff --git a/sys/osxaudio/gstosxaudiosrc.c b/sys/osxaudio/gstosxaudiosrc.c index 5f788c37cfc15388f91b10b6d9ccb8377bf38203..fa5da162f1395afb23948e50a968a78e0398ed6e 100644 --- a/sys/osxaudio/gstosxaudiosrc.c +++ b/sys/osxaudio/gstosxaudiosrc.c @@ -38,8 +38,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/sys/osxaudio/gstosxaudiosrc.h b/sys/osxaudio/gstosxaudiosrc.h index 3d6768a0363537b161a802e6faac9186869139dd..a5f5d841179951790a55d4592e3c0ea8a9be736e 100644 --- a/sys/osxaudio/gstosxaudiosrc.h +++ b/sys/osxaudio/gstosxaudiosrc.h @@ -37,8 +37,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_OSXAUDIOSRC_H__ diff --git a/sys/osxaudio/gstosxcoreaudio.h b/sys/osxaudio/gstosxcoreaudio.h index 71fcfa65c1a8153a438280380fb6d49b0add68de..421ff624540c79e217c5ba9b5ea14cd5727ac48c 100644 --- a/sys/osxaudio/gstosxcoreaudio.h +++ b/sys/osxaudio/gstosxcoreaudio.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * */ diff --git a/sys/osxvideo/Makefile.in b/sys/osxvideo/Makefile.in index cc95a622aa34d25aa01b548c6a6da81d27c1a037..9bcc0f69594c5030d0e7e53b21493052fe001ab8 100644 --- a/sys/osxvideo/Makefile.in +++ b/sys/osxvideo/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = sys/osxvideo -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,10 +163,23 @@ libgstosxvideosink_la_OBJECTS = $(am_libgstosxvideosink_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstosxvideosink_la_LINK = $(LIBTOOL) $(AM_V_lt) \ $(libgstosxvideosink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(OBJCLD) $(libgstosxvideosink_la_OBJCFLAGS) \ $(OBJCFLAGS) $(libgstosxvideosink_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +192,16 @@ LTOBJCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(AM_OBJCFLAGS) $(OBJCFLAGS) AM_V_OBJC = $(am__v_OBJC_@AM_V@) am__v_OBJC_ = $(am__v_OBJC_@AM_DEFAULT_V@) -am__v_OBJC_0 = @echo " OBJC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_OBJC_0 = @echo " OBJC " $@; +am__v_OBJC_1 = OBJCLD = $(OBJC) OBJCLINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(OBJCLD) $(AM_OBJCFLAGS) $(OBJCFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_OBJCLD = $(am__v_OBJCLD_@AM_V@) am__v_OBJCLD_ = $(am__v_OBJCLD_@AM_DEFAULT_V@) -am__v_OBJCLD_0 = @echo " OBJCLD" $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_OBJCLD_0 = @echo " OBJCLD " $@; +am__v_OBJCLD_1 = SOURCES = $(libgstosxvideosink_la_SOURCES) DIST_SOURCES = $(libgstosxvideosink_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +210,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +394,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -553,6 +606,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -579,12 +633,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstosxvideosink.la: $(libgstosxvideosink_la_OBJECTS) $(libgstosxvideosink_la_DEPENDENCIES) $(EXTRA_libgstosxvideosink_la_DEPENDENCIES) $(AM_V_OBJCLD)$(libgstosxvideosink_la_LINK) -rpath $(plugindir) $(libgstosxvideosink_la_OBJECTS) $(libgstosxvideosink_la_LIBADD) $(LIBS) @@ -598,22 +655,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstosxvideosink_la-osxvideosink.Plo@am__quote@ .m.o: -@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)$(OBJCCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepOBJC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepOBJC_TRUE@ $(OBJCCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepOBJC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(OBJCCOMPILE) -c -o $@ $< .m.obj: -@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)$(OBJCCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepOBJC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepOBJC_TRUE@ $(OBJCCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepOBJC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(OBJCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .m.lo: -@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)$(LTOBJCCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepOBJC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepOBJC_TRUE@ $(LTOBJCCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepOBJC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(LTOBJCCOMPILE) -c -o $@ $< @@ -638,26 +698,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -669,15 +718,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -686,6 +731,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -830,19 +890,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/sys/osxvideo/cocoawindow.h b/sys/osxvideo/cocoawindow.h index 7e69a7bb9a8e5352f54882559a111841861596ca..a896d228b7b73c1743d12787ff1441a7e1662eb8 100644 --- a/sys/osxvideo/cocoawindow.h +++ b/sys/osxvideo/cocoawindow.h @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * The development of this code was made possible due to the involvement of Pioneers * of the Inevitable, the creators of the Songbird Music player diff --git a/sys/osxvideo/cocoawindow.m b/sys/osxvideo/cocoawindow.m index 2b1704b8a5bcf61384dfadb5a52b346a87202a6a..0491ab979ec673e0877848210ec2f50602982bda 100644 --- a/sys/osxvideo/cocoawindow.m +++ b/sys/osxvideo/cocoawindow.m @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * The development of this code was made possible due to the involvement of Pioneers * of the Inevitable, the creators of the Songbird Music player diff --git a/sys/osxvideo/osxvideosink.h b/sys/osxvideo/osxvideosink.h index a842b8c914e5bbfc8365c6b8c535f44720af64d6..da912dfaff1ba519ade90c8c0ab637cc2f625763 100644 --- a/sys/osxvideo/osxvideosink.h +++ b/sys/osxvideo/osxvideosink.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * * The development of this code was made possible due to the involvement of Pioneers diff --git a/sys/osxvideo/osxvideosink.m b/sys/osxvideo/osxvideosink.m index 9d8fbd20e5b8b5244658f50b41a21d487291ad2f..89e980767f09b9c68996385497a4c0038d3c691f 100644 --- a/sys/osxvideo/osxvideosink.m +++ b/sys/osxvideo/osxvideosink.m @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. * * The development of this code was made possible due to the involvement of * Pioneers of the Inevitable, the creators of the Songbird Music player. @@ -486,6 +486,9 @@ 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 " + "instead."); break; case ARG_FORCE_PAR: osxvideosink->keep_par = g_value_get_boolean(value); diff --git a/sys/sunaudio/Makefile.in b/sys/sunaudio/Makefile.in index 6838c0832419ab22d02d389832047ea54663ac2c..d60562a9b387fed3fdf6f67a895fd52ad5b12989 100644 --- a/sys/sunaudio/Makefile.in +++ b/sys/sunaudio/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = sys/sunaudio -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -141,10 +167,23 @@ libgstsunaudio_la_OBJECTS = $(am_libgstsunaudio_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstsunaudio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) \ $(libgstsunaudio_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -157,20 +196,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstsunaudio_la_SOURCES) DIST_SOURCES = $(libgstsunaudio_la_SOURCES) am__can_run_installinfo = \ @@ -179,6 +214,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -346,6 +398,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -565,6 +618,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -591,12 +645,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstsunaudio.la: $(libgstsunaudio_la_OBJECTS) $(libgstsunaudio_la_DEPENDENCIES) $(EXTRA_libgstsunaudio_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstsunaudio_la_LINK) -rpath $(plugindir) $(libgstsunaudio_la_OBJECTS) $(libgstsunaudio_la_LIBADD) $(LIBS) @@ -615,22 +672,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsunaudio_la-gstsunaudiosrc.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -690,26 +750,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -721,15 +770,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -738,6 +783,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -882,19 +942,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/sys/sunaudio/gstsunaudio.c b/sys/sunaudio/gstsunaudio.c index 67bc0b17432fd625944f63471d1b079b9a235e0d..633c1f0128014c66ad482c6feddc99f5ef9b77bc 100644 --- a/sys/sunaudio/gstsunaudio.c +++ b/sys/sunaudio/gstsunaudio.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -48,7 +48,6 @@ plugin_init (GstPlugin * plugin) GST_DEBUG_CATEGORY_INIT (sunaudio_debug, "sunaudio", 0, "sunaudio elements"); #ifdef ENABLE_NLS - setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif /* ENABLE_NLS */ diff --git a/sys/sunaudio/gstsunaudiomixer.c b/sys/sunaudio/gstsunaudiomixer.c index 3966d3a50a01d68638a19d88c457d86a135e96b3..0a431bf19f23d7682a0fc65e182e4054f8bfd1e0 100644 --- a/sys/sunaudio/gstsunaudiomixer.c +++ b/sys/sunaudio/gstsunaudiomixer.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/sys/sunaudio/gstsunaudiomixer.h b/sys/sunaudio/gstsunaudiomixer.h index 7ab6e74587ab7e61645566db228fbc285011e2bb..03292ed962359ef4dde00fed850b62062b84a58b 100644 --- a/sys/sunaudio/gstsunaudiomixer.h +++ b/sys/sunaudio/gstsunaudiomixer.h @@ -15,7 +15,7 @@ * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __GST_SUNAUDIO_MIXER_H__ diff --git a/sys/sunaudio/gstsunaudiomixerctrl.c b/sys/sunaudio/gstsunaudiomixerctrl.c index 07231348e47f71491fc086b2d1b4b963a1fa32c3..32fc4e2d9814cf3d83680570b44ca15c75322ba5 100644 --- a/sys/sunaudio/gstsunaudiomixerctrl.c +++ b/sys/sunaudio/gstsunaudiomixerctrl.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/sys/sunaudio/gstsunaudiomixerctrl.h b/sys/sunaudio/gstsunaudiomixerctrl.h index 2ca17f0ed3ae402166e0d6a30fa3f8dd2496337e..f9aa477b9efb89b248cf5937c263b3689551ee3c 100644 --- a/sys/sunaudio/gstsunaudiomixerctrl.h +++ b/sys/sunaudio/gstsunaudiomixerctrl.h @@ -17,7 +17,7 @@ * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __GST_SUNAUDIO_MIXER_CTRL_H diff --git a/sys/sunaudio/gstsunaudiomixeroptions.c b/sys/sunaudio/gstsunaudiomixeroptions.c index 1fa025b9e9b72fc0004b7c3c7c7a1e4ca50dcad6..4637d8288ec6ff00fa079dd0d447bf50ebf8326c 100644 --- a/sys/sunaudio/gstsunaudiomixeroptions.c +++ b/sys/sunaudio/gstsunaudiomixeroptions.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/sys/sunaudio/gstsunaudiomixeroptions.h b/sys/sunaudio/gstsunaudiomixeroptions.h index fb02b46e0b1f5a6c598e7b91592f26984243bfad..e27ef21b70ceb123dd3d292db152c1c49e0edc62 100644 --- a/sys/sunaudio/gstsunaudiomixeroptions.h +++ b/sys/sunaudio/gstsunaudiomixeroptions.h @@ -18,7 +18,7 @@ * * 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, + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, */ #ifndef __GST_SUNAUDIO_MIXER_OPTIONS_H__ diff --git a/sys/sunaudio/gstsunaudiomixertrack.c b/sys/sunaudio/gstsunaudiomixertrack.c index 786ef0d835b2e983cfd4ae009de01633a225a14d..43bf0442a19cbddaee5df4335acad4a65e9d6f12 100644 --- a/sys/sunaudio/gstsunaudiomixertrack.c +++ b/sys/sunaudio/gstsunaudiomixertrack.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/sys/sunaudio/gstsunaudiomixertrack.h b/sys/sunaudio/gstsunaudiomixertrack.h index 83be9fcd2591f5243a58864d20cc153a50429811..278ed81fbf8a6cfd30098637f6fd530347c878d8 100644 --- a/sys/sunaudio/gstsunaudiomixertrack.h +++ b/sys/sunaudio/gstsunaudiomixertrack.h @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_SUNAUDIO_MIXER_TRACK_H__ diff --git a/sys/sunaudio/gstsunaudiosink.c b/sys/sunaudio/gstsunaudiosink.c index 19cdd215a952742b46d5b48802f1937e0bf36df9..99e08eaed0f78bc184d27d91c5ff9146d9d9778a 100644 --- a/sys/sunaudio/gstsunaudiosink.c +++ b/sys/sunaudio/gstsunaudiosink.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/sys/sunaudio/gstsunaudiosink.h b/sys/sunaudio/gstsunaudiosink.h index 94544752cd843b9d9aad13d9908db32848f36d97..fb30e6a80ec6e6f4b0ee4a6c9251a43c471d8866 100644 --- a/sys/sunaudio/gstsunaudiosink.h +++ b/sys/sunaudio/gstsunaudiosink.h @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_SUNAUDIO_SINK_H__ diff --git a/sys/sunaudio/gstsunaudiosrc.c b/sys/sunaudio/gstsunaudiosrc.c index 9d5d60d9cdf7fa4f14d7f140cf0ed48b018bdf39..ec1d7d7a42d2e4e6a73496fa815f519338b8740e 100644 --- a/sys/sunaudio/gstsunaudiosrc.c +++ b/sys/sunaudio/gstsunaudiosrc.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/sys/sunaudio/gstsunaudiosrc.h b/sys/sunaudio/gstsunaudiosrc.h index 95d96134ba70d8274c9ca58f4db7e0264b5858ca..e165f3be9c550d7e80f1b155122c10208916a14d 100644 --- a/sys/sunaudio/gstsunaudiosrc.h +++ b/sys/sunaudio/gstsunaudiosrc.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_SUNAUDIO_SRC_H__ diff --git a/sys/v4l2/Makefile.am b/sys/v4l2/Makefile.am index efdabeb6bb49da1f5ed51356c0ca516ad64c11db..da138ae565be8c8f64c2a76557bf373804c58435 100644 --- a/sys/v4l2/Makefile.am +++ b/sys/v4l2/Makefile.am @@ -8,27 +8,6 @@ xv_source = xv_libs = endif - -# variables used for enum/marshal generation -glib_enum_headers = tuner.h tunernorm.h tunerchannel.h -glib_enum_define = GST_INTERFACES -glib_gen_prefix = gst_interfaces -glib_gen_basename = tuner - -built_sources = \ - tuner-marshal.c \ - tuner-enumtypes.c - -built_headers = \ - tuner-marshal.h \ - tuner-enumtypes.h - -EXTRA_DIST = tuner-marshal.list - -CLEANFILES = $(built_sources) $(built_headers) - -BUILT_SOURCES = $(built_sources) $(built_headers) - include $(top_srcdir)/common/gst-glib-gen.mak libgstvideo4linux2_la_SOURCES = gstv4l2.c \ @@ -45,7 +24,6 @@ libgstvideo4linux2_la_SOURCES = gstv4l2.c \ tunerchannel.c \ tunernorm.c \ $(xv_source) -nodist_libgstvideo4linux2_la_SOURCES = $(built_sources) $(built_headers) libgstvideo4linux2_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \ $(GST_BASE_CFLAGS) \ @@ -56,15 +34,15 @@ libgstvideo4linux2_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \ libgstvideo4linux2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstvideo4linux2_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) - libgstvideo4linux2_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \ - $(GST_BASE_LIBS) \ - $(GST_PLUGINS_BASE_LIBS) \ + -lgstallocators-$(GST_API_VERSION) \ -lgstvideo-$(GST_API_VERSION) \ + $(GST_BASE_LIBS) \ $(GST_LIBS) \ $(xv_libs) \ $(LIBV4L2_LIBS) \ - $(GUDEV_LIBS) + $(GUDEV_LIBS) \ + $(LIBRT) noinst_HEADERS = \ gstv4l2bufferpool.h \ diff --git a/sys/v4l2/Makefile.in b/sys/v4l2/Makefile.in index a1e04f2b712c278a7cd36569263aaa6d38454611..ca18d7af91901cfbd10fcc1b01616be3c356a949 100644 --- a/sys/v4l2/Makefile.in +++ b/sys/v4l2/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -25,23 +24,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -61,8 +88,9 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/common/gst-glib-gen.mak +DIST_COMMON = $(top_srcdir)/common/gst-glib-gen.mak \ + $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) README subdir = sys/v4l2 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -70,7 +98,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -140,7 +167,7 @@ am__DEPENDENCIES_1 = @USE_XVIDEO_TRUE@ $(am__DEPENDENCIES_1) libgstvideo4linux2_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am__libgstvideo4linux2_la_SOURCES_DIST = gstv4l2.c \ gstv4l2colorbalance.c gstv4l2object.c gstv4l2bufferpool.c \ @@ -162,20 +189,27 @@ am_libgstvideo4linux2_la_OBJECTS = libgstvideo4linux2_la-gstv4l2.lo \ libgstvideo4linux2_la-tuner.lo \ libgstvideo4linux2_la-tunerchannel.lo \ libgstvideo4linux2_la-tunernorm.lo $(am__objects_1) -am__objects_2 = libgstvideo4linux2_la-tuner-marshal.lo \ - libgstvideo4linux2_la-tuner-enumtypes.lo -am__objects_3 = -nodist_libgstvideo4linux2_la_OBJECTS = $(am__objects_2) \ - $(am__objects_3) -libgstvideo4linux2_la_OBJECTS = $(am_libgstvideo4linux2_la_OBJECTS) \ - $(nodist_libgstvideo4linux2_la_OBJECTS) +libgstvideo4linux2_la_OBJECTS = $(am_libgstvideo4linux2_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstvideo4linux2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) \ $(libgstvideo4linux2_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -188,22 +222,17 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libgstvideo4linux2_la_SOURCES) \ - $(nodist_libgstvideo4linux2_la_SOURCES) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgstvideo4linux2_la_SOURCES) DIST_SOURCES = $(am__libgstvideo4linux2_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ @@ -211,6 +240,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -378,6 +424,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -543,23 +590,6 @@ plugin_LTLIBRARIES = libgstvideo4linux2.la @USE_XVIDEO_TRUE@xv_source = gstv4l2videooverlay.c @USE_XVIDEO_FALSE@xv_libs = @USE_XVIDEO_TRUE@xv_libs = $(X_LIBS) $(XVIDEO_LIBS) - -# variables used for enum/marshal generation -glib_enum_headers = tuner.h tunernorm.h tunerchannel.h -glib_enum_define = GST_INTERFACES -glib_gen_prefix = gst_interfaces -glib_gen_basename = tuner -built_sources = \ - tuner-marshal.c \ - tuner-enumtypes.c - -built_headers = \ - tuner-marshal.h \ - tuner-enumtypes.h - -EXTRA_DIST = tuner-marshal.list -CLEANFILES = $(built_sources) $(built_headers) -BUILT_SOURCES = $(built_sources) $(built_headers) enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\") libgstvideo4linux2_la_SOURCES = gstv4l2.c \ gstv4l2colorbalance.c \ @@ -576,7 +606,6 @@ libgstvideo4linux2_la_SOURCES = gstv4l2.c \ tunernorm.c \ $(xv_source) -nodist_libgstvideo4linux2_la_SOURCES = $(built_sources) $(built_headers) libgstvideo4linux2_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \ $(GST_BASE_CFLAGS) \ $(GST_CFLAGS) \ @@ -587,13 +616,14 @@ libgstvideo4linux2_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \ libgstvideo4linux2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstvideo4linux2_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) libgstvideo4linux2_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \ - $(GST_BASE_LIBS) \ - $(GST_PLUGINS_BASE_LIBS) \ + -lgstallocators-$(GST_API_VERSION) \ -lgstvideo-$(GST_API_VERSION) \ + $(GST_BASE_LIBS) \ $(GST_LIBS) \ $(xv_libs) \ $(LIBV4L2_LIBS) \ - $(GUDEV_LIBS) + $(GUDEV_LIBS) \ + $(LIBRT) noinst_HEADERS = \ gstv4l2bufferpool.h \ @@ -610,8 +640,7 @@ noinst_HEADERS = \ tunerchannel.h \ tunernorm.h -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am +all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj @@ -646,6 +675,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -672,12 +702,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstvideo4linux2.la: $(libgstvideo4linux2_la_OBJECTS) $(libgstvideo4linux2_la_DEPENDENCIES) $(EXTRA_libgstvideo4linux2_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstvideo4linux2_la_LINK) -rpath $(plugindir) $(libgstvideo4linux2_la_OBJECTS) $(libgstvideo4linux2_la_LIBADD) $(LIBS) @@ -697,30 +730,31 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2tuner.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2videooverlay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2vidorient.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-tuner-enumtypes.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-tuner-marshal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-tuner.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-tunerchannel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-tunernorm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-v4l2_calls.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -823,46 +857,21 @@ libgstvideo4linux2_la-gstv4l2videooverlay.lo: gstv4l2videooverlay.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-gstv4l2videooverlay.lo `test -f 'gstv4l2videooverlay.c' || echo '$(srcdir)/'`gstv4l2videooverlay.c -libgstvideo4linux2_la-tuner-marshal.lo: tuner-marshal.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-tuner-marshal.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-tuner-marshal.Tpo -c -o libgstvideo4linux2_la-tuner-marshal.lo `test -f 'tuner-marshal.c' || echo '$(srcdir)/'`tuner-marshal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-tuner-marshal.Tpo $(DEPDIR)/libgstvideo4linux2_la-tuner-marshal.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tuner-marshal.c' object='libgstvideo4linux2_la-tuner-marshal.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-tuner-marshal.lo `test -f 'tuner-marshal.c' || echo '$(srcdir)/'`tuner-marshal.c - -libgstvideo4linux2_la-tuner-enumtypes.lo: tuner-enumtypes.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-tuner-enumtypes.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-tuner-enumtypes.Tpo -c -o libgstvideo4linux2_la-tuner-enumtypes.lo `test -f 'tuner-enumtypes.c' || echo '$(srcdir)/'`tuner-enumtypes.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-tuner-enumtypes.Tpo $(DEPDIR)/libgstvideo4linux2_la-tuner-enumtypes.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tuner-enumtypes.c' object='libgstvideo4linux2_la-tuner-enumtypes.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-tuner-enumtypes.lo `test -f 'tuner-enumtypes.c' || echo '$(srcdir)/'`tuner-enumtypes.c - mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -874,15 +883,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -891,6 +896,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -926,15 +946,13 @@ distdir: $(DISTFILES) fi; \ done check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am +check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(plugindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am +install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -956,7 +974,6 @@ install-strip: mostlyclean-generic: clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) @@ -965,7 +982,6 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \ @@ -1037,21 +1053,22 @@ ps-am: uninstall-am: uninstall-pluginLTLIBRARIES -.MAKE: all check install install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # these are all the rules generating the relevant files diff --git a/sys/v4l2/gstv4l2.c b/sys/v4l2/gstv4l2.c index 23a5add47937b67a27257e97cacd945b02b9d202..a61d6ab7027467322f1a5c79d8d88470ec1f89ad 100644 --- a/sys/v4l2/gstv4l2.c +++ b/sys/v4l2/gstv4l2.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -61,7 +61,6 @@ plugin_init (GstPlugin * plugin) return FALSE; #ifdef ENABLE_NLS - setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif /* ENABLE_NLS */ diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c index c43749e0f98549bac87c4242d87be398fbd0c66d..0bc88ca7b6ba322474fc1240cc231b4f7834a242 100644 --- a/sys/v4l2/gstv4l2bufferpool.c +++ b/sys/v4l2/gstv4l2bufferpool.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -29,15 +29,17 @@ #include <sys/mman.h> #include <string.h> #include <unistd.h> +#if HAVE_DECL_V4L2_MEMORY_DMABUF +#include <fcntl.h> +#endif #include "gst/video/video.h" #include "gst/video/gstvideometa.h" #include "gst/video/gstvideopool.h" +#include "gst/allocators/gstdmabuf.h" #include <gstv4l2bufferpool.h> -#include "gstv4l2src.h" -#include "gstv4l2sink.h" #include "v4l2_calls.h" #include "gst/gst-i18n-plugin.h" #include <gst/glib-compat-private.h> @@ -61,7 +63,8 @@ GType gst_v4l2_meta_api_get_type (void) { static volatile GType type; - static const gchar *tags[] = { "memory", NULL }; + static const gchar *tags[] = + { GST_META_TAG_VIDEO_STR, GST_META_TAG_MEMORY_STR, NULL }; if (g_once_init_enter (&type)) { GType _type = gst_meta_api_type_register ("GstV4l2MetaAPI", tags); @@ -104,6 +107,7 @@ gst_v4l2_buffer_pool_free_buffer (GstBufferPool * bpool, GstBuffer * buffer) switch (obj->mode) { case GST_V4L2_IO_RW: + case GST_V4L2_IO_DMABUF: break; case GST_V4L2_IO_MMAP: { @@ -152,7 +156,30 @@ gst_v4l2_buffer_pool_alloc_buffer (GstBufferPool * bpool, GstBuffer ** buffer, break; } case GST_V4L2_IO_MMAP: + case GST_V4L2_IO_DMABUF: { +#ifdef VIDIOC_CREATE_BUFS + if (pool->num_allocated == pool->num_buffers) { + struct v4l2_create_buffers create_bufs; + + memset (&create_bufs, 0, sizeof (struct v4l2_create_buffers)); + create_bufs.count = 1; + create_bufs.memory = V4L2_MEMORY_MMAP; + create_bufs.format.type = obj->type; + + if (v4l2_ioctl (pool->video_fd, VIDIOC_G_FMT, &create_bufs.format) < 0) + goto g_fmt_failed; + + if (v4l2_ioctl (pool->video_fd, VIDIOC_CREATE_BUFS, &create_bufs) < 0) + goto create_bufs_failed; + + GST_LOG_OBJECT (pool, "created buffer with index: %u", + create_bufs.index); + pool->num_buffers++; + pool->buffers = g_renew (GstBuffer *, pool->buffers, pool->num_buffers); + pool->buffers[pool->num_buffers - 1] = NULL; + } +#endif newbuf = gst_buffer_new (); meta = GST_V4L2_META_ADD (newbuf); @@ -175,19 +202,36 @@ gst_v4l2_buffer_pool_alloc_buffer (GstBufferPool * bpool, GstBuffer ** buffer, GST_LOG_OBJECT (pool, " memory: %d", meta->vbuffer.memory); if (meta->vbuffer.memory == V4L2_MEMORY_MMAP) GST_LOG_OBJECT (pool, " MMAP offset: %u", meta->vbuffer.m.offset); - GST_LOG_OBJECT (pool, " length: %u", meta->vbuffer.length); - - meta->mem = v4l2_mmap (0, meta->vbuffer.length, - PROT_READ | PROT_WRITE, MAP_SHARED, pool->video_fd, - meta->vbuffer.m.offset); - if (meta->mem == MAP_FAILED) - goto mmap_failed; - - gst_buffer_append_memory (newbuf, - gst_memory_new_wrapped (GST_MEMORY_FLAG_NO_SHARE, - meta->mem, meta->vbuffer.length, 0, meta->vbuffer.length, NULL, - NULL)); + if (obj->mode == GST_V4L2_IO_MMAP) { + meta->mem = v4l2_mmap (0, meta->vbuffer.length, + PROT_READ | PROT_WRITE, MAP_SHARED, pool->video_fd, + meta->vbuffer.m.offset); + if (meta->mem == MAP_FAILED) + goto mmap_failed; + + gst_buffer_append_memory (newbuf, + gst_memory_new_wrapped (GST_MEMORY_FLAG_NO_SHARE, + meta->mem, meta->vbuffer.length, 0, meta->vbuffer.length, NULL, + NULL)); + } +#if HAVE_DECL_V4L2_MEMORY_DMABUF + if (obj->mode == GST_V4L2_IO_DMABUF) { + struct v4l2_exportbuffer expbuf; + + memset (&expbuf, 0, sizeof (struct v4l2_exportbuffer)); + expbuf.type = meta->vbuffer.type; + expbuf.index = meta->vbuffer.index; + expbuf.flags = O_CLOEXEC; + if (v4l2_ioctl (pool->video_fd, VIDIOC_EXPBUF, &expbuf) < 0) + goto expbuf_failed; + + meta->vbuffer.memory = V4L2_MEMORY_DMABUF; + gst_buffer_append_memory (newbuf, + gst_dmabuf_allocator_alloc (pool->allocator, expbuf.fd, + meta->vbuffer.length)); + } +#endif /* add metadata to raw video buffers */ if (pool->add_videometa && info->finfo) { const GstVideoFormatInfo *finfo = info->finfo; @@ -204,8 +248,22 @@ gst_v4l2_buffer_pool_alloc_buffer (GstBufferPool * bpool, GstBuffer ** buffer, offs = 0; for (i = 0; i < n_planes; i++) { offset[i] = offs; - stride[i] = - GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (finfo, i, obj->bytesperline); + + switch (info->finfo->format) { + case GST_VIDEO_FORMAT_NV12: + case GST_VIDEO_FORMAT_NV21: + case GST_VIDEO_FORMAT_NV16: + case GST_VIDEO_FORMAT_NV24: + stride[i] = + (i == 0 ? 1 : 2) * GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (finfo, + i, obj->bytesperline); + break; + default: + stride[i] = + GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (finfo, i, + obj->bytesperline); + break; + } offs += stride[i] * GST_VIDEO_FORMAT_INFO_SCALE_HEIGHT (finfo, i, height); @@ -229,6 +287,24 @@ gst_v4l2_buffer_pool_alloc_buffer (GstBufferPool * bpool, GstBuffer ** buffer, return GST_FLOW_OK; /* ERRORS */ +#ifdef VIDIOC_CREATE_BUFS +g_fmt_failed: + { + gint errnosave = errno; + + GST_WARNING ("Failed G_FMT: %s", g_strerror (errnosave)); + errno = errnosave; + return GST_FLOW_ERROR; + } +create_bufs_failed: + { + gint errnosave = errno; + + GST_WARNING ("Failed CREATE_BUFS: %s", g_strerror (errnosave)); + errno = errnosave; + return GST_FLOW_ERROR; + } +#endif querybuf_failed: { gint errnosave = errno; @@ -247,6 +323,17 @@ mmap_failed: errno = errnosave; return GST_FLOW_ERROR; } +#if HAVE_DECL_V4L2_MEMORY_DMABUF +expbuf_failed: + { + gint errnosave = errno; + + GST_WARNING ("Failed EXPBUF: %s", g_strerror (errnosave)); + gst_buffer_unref (newbuf); + errno = errnosave; + return GST_FLOW_ERROR; + } +#endif } static gboolean @@ -298,6 +385,7 @@ gst_v4l2_buffer_pool_set_config (GstBufferPool * bpool, GstStructure * config) num_buffers = 1; copy_threshold = 0; break; + case GST_V4L2_IO_DMABUF: case GST_V4L2_IO_MMAP: { /* request a reasonable number of buffers when no max specified. We will @@ -357,6 +445,10 @@ gst_v4l2_buffer_pool_set_config (GstBufferPool * bpool, GstStructure * config) pool->size = size; pool->num_buffers = num_buffers; pool->copy_threshold = copy_threshold; + + if (obj->mode == GST_V4L2_IO_DMABUF) + allocator = gst_dmabuf_allocator_new (); + if (pool->allocator) gst_object_unref (pool->allocator); if ((pool->allocator = allocator)) @@ -406,6 +498,7 @@ start_streaming (GstV4l2BufferPool * pool) break; case GST_V4L2_IO_MMAP: case GST_V4L2_IO_USERPTR: + case GST_V4L2_IO_DMABUF: GST_DEBUG_OBJECT (pool, "STREAMON"); if (v4l2_ioctl (pool->video_fd, VIDIOC_STREAMON, &obj->type) < 0) goto start_failed; @@ -460,6 +553,23 @@ start_failed: } } +static void +gst_v4l2_buffer_pool_free_buffers (GstV4l2BufferPool * pool) +{ + if (pool->num_buffers > 0) { + struct v4l2_requestbuffers breq; + memset (&breq, 0, sizeof (struct v4l2_requestbuffers)); + breq.type = pool->obj->type; + breq.count = 0; + breq.memory = V4L2_MEMORY_MMAP; + if (v4l2_ioctl (pool->video_fd, VIDIOC_REQBUFS, &breq) < 0) { + GST_ERROR_OBJECT (pool, "error releasing buffers: %s", + g_strerror (errno)); + } + pool->num_buffers = 0; + } +} + static gboolean gst_v4l2_buffer_pool_stop (GstBufferPool * bpool) { @@ -478,6 +588,7 @@ gst_v4l2_buffer_pool_stop (GstBufferPool * bpool) break; case GST_V4L2_IO_MMAP: case GST_V4L2_IO_USERPTR: + case GST_V4L2_IO_DMABUF: /* we actually need to sync on all queued buffers but not * on the non-queued ones */ GST_DEBUG_OBJECT (pool, "STREAMOFF"); @@ -503,6 +614,8 @@ gst_v4l2_buffer_pool_stop (GstBufferPool * bpool) g_free (pool->buffers); pool->buffers = NULL; + gst_v4l2_buffer_pool_free_buffers (pool); + return ret; /* ERRORS */ @@ -566,9 +679,12 @@ gst_v4l2_buffer_pool_qbuf (GstV4l2BufferPool * pool, GstBuffer * buf) } index = meta->vbuffer.index; + meta->vbuffer.bytesused = gst_buffer_get_size (buf); - GST_LOG_OBJECT (pool, "enqueue buffer %p, index:%d, queued:%d, flags:%08x", - buf, index, pool->num_queued, meta->vbuffer.flags); + GST_LOG_OBJECT (pool, + "enqueue buffer %p, index:%d, queued:%d, flags:%08x used:%d", + buf, index, pool->num_queued, meta->vbuffer.flags, + meta->vbuffer.bytesused); if (pool->buffers[index] != NULL) goto already_queued; @@ -605,17 +721,17 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer) GstV4l2Object *obj = pool->obj; GstClockTime timestamp; - if (obj->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) { - /* select works for input devices when data is available. According to the - * specs we can also poll to find out when a frame has been displayed but - * that just seems to lock up here */ - if ((res = gst_v4l2_object_poll (obj)) != GST_FLOW_OK) - goto poll_error; - } + if ((res = gst_v4l2_object_poll (obj)) != GST_FLOW_OK) + goto poll_error; memset (&vbuffer, 0x00, sizeof (vbuffer)); vbuffer.type = obj->type; - vbuffer.memory = V4L2_MEMORY_MMAP; +#if HAVE_DECL_V4L2_MEMORY_DMABUF + if (obj->mode == GST_V4L2_IO_DMABUF) + vbuffer.memory = V4L2_MEMORY_DMABUF; + else +#endif + vbuffer.memory = V4L2_MEMORY_MMAP; GST_LOG_OBJECT (pool, "doing DQBUF"); if (v4l2_ioctl (pool->video_fd, VIDIOC_DQBUF, &vbuffer) < 0) @@ -651,8 +767,6 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer) /* this can change at every frame, esp. with jpeg */ if (obj->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) gst_buffer_resize (outbuf, 0, vbuffer.bytesused); - else - gst_buffer_resize (outbuf, 0, vbuffer.length); GST_BUFFER_TIMESTAMP (outbuf) = timestamp; @@ -744,7 +858,7 @@ gst_v4l2_buffer_pool_acquire_buffer (GstBufferPool * bpool, GstBuffer ** buffer, ret = GST_BUFFER_POOL_CLASS (parent_class)->acquire_buffer (bpool, buffer, params); break; - + case GST_V4L2_IO_DMABUF: case GST_V4L2_IO_MMAP: /* just dequeue a buffer, we basically use the queue of v4l2 as the * storage for our buffers. This function does poll first so we can @@ -756,6 +870,17 @@ gst_v4l2_buffer_pool_acquire_buffer (GstBufferPool * bpool, GstBuffer ** buffer, /* start copying buffers when we are running low on buffers */ if (pool->num_queued < pool->copy_threshold) { GstBuffer *copy; +#ifdef VIDIOC_CREATE_BUFS + if (pool->can_alloc) { + if (GST_BUFFER_POOL_CLASS (parent_class)->acquire_buffer (bpool, + ©, params) == GST_FLOW_OK) { + gst_v4l2_buffer_pool_release_buffer (bpool, copy); + break; + } else { + pool->can_alloc = FALSE; + } + } +#endif /* copy the memory */ copy = gst_buffer_copy (*buffer); @@ -832,6 +957,7 @@ gst_v4l2_buffer_pool_release_buffer (GstBufferPool * bpool, GstBuffer * buffer) GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (bpool, buffer); break; + case GST_V4L2_IO_DMABUF: case GST_V4L2_IO_MMAP: /* queue back in the device */ gst_v4l2_buffer_pool_qbuf (pool, buffer); @@ -854,12 +980,20 @@ gst_v4l2_buffer_pool_release_buffer (GstBufferPool * bpool, GstBuffer * buffer) case GST_V4L2_IO_MMAP: { GstV4l2Meta *meta; + guint index; meta = GST_V4L2_META_GET (buffer); g_assert (meta != NULL); - if (pool->buffers[meta->vbuffer.index] == NULL) { - GST_LOG_OBJECT (pool, "buffer not queued, putting on free list"); + index = meta->vbuffer.index; + + if (pool->buffers[index] == NULL) { + GST_LOG_OBJECT (pool, "buffer %u not queued, putting on free list", + index); + + /* reset to the full length, in case it was changed */ + gst_buffer_resize (buffer, 0, meta->vbuffer.length); + /* playback, put the buffer back in the queue to refill later. */ GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (bpool, buffer); @@ -867,7 +1001,7 @@ gst_v4l2_buffer_pool_release_buffer (GstBufferPool * bpool, GstBuffer * buffer) /* the buffer is queued in the device but maybe not played yet. We just * leave it there and not make it available for future calls to acquire * for now. The buffer will be dequeued and reused later. */ - GST_LOG_OBJECT (pool, "buffer is queued"); + GST_LOG_OBJECT (pool, "buffer %u is queued", index); } break; } @@ -890,12 +1024,16 @@ gst_v4l2_buffer_pool_finalize (GObject * object) { GstV4l2BufferPool *pool = GST_V4L2_BUFFER_POOL (object); + gst_v4l2_buffer_pool_free_buffers (pool); + if (pool->video_fd >= 0) v4l2_close (pool->video_fd); if (pool->allocator) gst_object_unref (pool->allocator); g_free (pool->buffers); + gst_object_unref (pool->obj->element); + G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -943,11 +1081,14 @@ gst_v4l2_buffer_pool_new (GstV4l2Object * obj, GstCaps * caps) pool = (GstV4l2BufferPool *) g_object_new (GST_TYPE_V4L2_BUFFER_POOL, NULL); pool->video_fd = fd; pool->obj = obj; + pool->can_alloc = TRUE; s = gst_buffer_pool_get_config (GST_BUFFER_POOL_CAST (pool)); gst_buffer_pool_config_set_params (s, caps, obj->sizeimage, 2, 0); gst_buffer_pool_set_config (GST_BUFFER_POOL_CAST (pool), s); + gst_object_ref (obj->element); + return GST_BUFFER_POOL (pool); /* ERRORS */ @@ -1084,14 +1225,14 @@ gst_v4l2_buffer_pool_process (GstV4l2BufferPool * pool, GstBuffer * buf) /* FIXME, do write() */ GST_WARNING_OBJECT (pool, "implement write()"); break; - + case GST_V4L2_IO_DMABUF: case GST_V4L2_IO_MMAP: { GstBuffer *to_queue; if (buf->pool == bpool) { /* nothing, we can queue directly */ - to_queue = buf; + to_queue = gst_buffer_ref (buf); GST_LOG_OBJECT (pool, "processing buffer from our pool"); } else { GST_LOG_OBJECT (pool, "alloc buffer from our pool"); @@ -1113,8 +1254,7 @@ gst_v4l2_buffer_pool_process (GstV4l2BufferPool * pool, GstBuffer * buf) /* this can block if all buffers are outstanding which would be * strange because we would expect the upstream element to have * allocated them and returned to us.. */ - ret = GST_BUFFER_POOL_CLASS (parent_class)->acquire_buffer (bpool, - &to_queue, NULL); + ret = gst_buffer_pool_acquire_buffer (bpool, &to_queue, NULL); if (ret != GST_FLOW_OK) goto acquire_failed; @@ -1133,16 +1273,22 @@ gst_v4l2_buffer_pool_process (GstV4l2BufferPool * pool, GstBuffer * buf) goto start_failed; if (pool->num_queued == pool->num_allocated) { + GstBuffer *out; /* all buffers are queued, try to dequeue one and release it back * into the pool so that _acquire can get to it again. */ - ret = gst_v4l2_buffer_pool_dqbuf (pool, &to_queue); - if (ret != GST_FLOW_OK) + ret = gst_v4l2_buffer_pool_dqbuf (pool, &out); + if (ret != GST_FLOW_OK) { + gst_buffer_unref (to_queue); goto done; + } /* release the rendered buffer back into the pool. This wakes up any - * thread waiting for a buffer in _acquire() */ - gst_v4l2_buffer_pool_release_buffer (bpool, to_queue); + * thread waiting for a buffer in _acquire(). If the buffer still has + * a pool then this will happen when the refcount reaches 0 */ + if (!out->pool) + gst_v4l2_buffer_pool_release_buffer (bpool, out); } + gst_buffer_unref (to_queue); break; } diff --git a/sys/v4l2/gstv4l2bufferpool.h b/sys/v4l2/gstv4l2bufferpool.h index a9b022e9aa872fd421fa4355b049c0ae0d84256c..90ccad4319f68f57dafd3ee4077387b2262e8276 100644 --- a/sys/v4l2/gstv4l2bufferpool.h +++ b/sys/v4l2/gstv4l2bufferpool.h @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_V4L2_BUFFER_POOL_H__ @@ -55,6 +55,7 @@ struct _GstV4l2BufferPool GstAllocationParams params; guint size; gboolean add_videometa; + gboolean can_alloc; /* if extra buffers can be allocated */ guint num_buffers; /* number of buffers we use */ guint num_allocated; /* number of buffers allocated by the driver */ diff --git a/sys/v4l2/gstv4l2colorbalance.c b/sys/v4l2/gstv4l2colorbalance.c index a07c9be3168e1999f03871616951e248211f9216..7b369789f527982cc3b3c0abfdf6d15a97f5e7fe 100644 --- a/sys/v4l2/gstv4l2colorbalance.c +++ b/sys/v4l2/gstv4l2colorbalance.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/sys/v4l2/gstv4l2colorbalance.h b/sys/v4l2/gstv4l2colorbalance.h index cd720a4237e1d9ebf3946d351b81d73dc11edf25..e3be0d4902d32352df63f0489c771336376e2418 100644 --- a/sys/v4l2/gstv4l2colorbalance.h +++ b/sys/v4l2/gstv4l2colorbalance.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_V4L2_COLOR_BALANCE_H__ diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index 843f3b425d39946514d34a60077cac34d4ce433f..7af3536968a00b1f15ebab80e7a23665d20c1038 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -14,7 +14,7 @@ * 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, + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, * USA. */ @@ -73,6 +73,8 @@ enum V4L2_STD_OBJECT_PROPS, }; +static GSList *gst_v4l2_object_get_format_list (GstV4l2Object * v4l2object); + #if 0 G_LOCK_DEFINE_STATIC (probe_lock); @@ -389,6 +391,7 @@ gst_v4l2_io_mode_get_type (void) {GST_V4L2_IO_RW, "GST_V4L2_IO_RW", "rw"}, {GST_V4L2_IO_MMAP, "GST_V4L2_IO_MMAP", "mmap"}, {GST_V4L2_IO_USERPTR, "GST_V4L2_IO_USERPTR", "userptr"}, + {GST_V4L2_IO_DMABUF, "GST_V4L2_IO_DMABUF", "dmabuf"}, {0, NULL, NULL} }; @@ -489,6 +492,47 @@ gst_v4l2_object_install_properties_helper (GObjectClass * gobject_class, "I/O mode", GST_TYPE_V4L2_IO_MODE, DEFAULT_PROP_IO_MODE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + /** + * GstV4l2Src:extra-controls + * + * Additional v4l2 controls for the device. The controls are identified + * by the control name (lowercase with '_' for any non-alphanumeric + * characters). + * + * Since: 1.2 + */ + g_object_class_install_property (gobject_class, PROP_EXTRA_CONTROLS, + g_param_spec_boxed ("extra-controls", "Extra Controls", + "Extra v4l2 controls (CIDs) for the device", + GST_TYPE_STRUCTURE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + /** + * GstV4l2Src:pixel-aspect-ratio + * + * The pixel aspect ratio of the device. This overwrites the pixel aspect + * ratio queried from the device. + * + * Since: 1.2 + */ + g_object_class_install_property (gobject_class, PROP_PIXEL_ASPECT_RATIO, + g_param_spec_string ("pixel-aspect-ratio", "Pixel Aspect Ratio", + "Overwrite the pixel aspect ratio of the device", "1/1", + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + /** + * GstV4l2Src:force-aspect-ratio + * + * When enabled, the pixel aspect ratio queried from the device or set + * with the pixel-aspect-ratio property will be enforced. + * + * Since: 1.2 + */ + g_object_class_install_property (gobject_class, PROP_FORCE_ASPECT_RATIO, + g_param_spec_boolean ("force-aspect-ratio", "Force aspect ratio", + "When enabled, the pixel aspect ratio will be enforced", TRUE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + } GstV4l2Object * @@ -525,6 +569,8 @@ gst_v4l2_object_new (GstElement * element, v4l2object->xwindow_id = 0; + v4l2object->keep_aspect = TRUE; + return v4l2object; } @@ -549,6 +595,10 @@ gst_v4l2_object_destroy (GstV4l2Object * v4l2object) gst_v4l2_object_clear_format_list (v4l2object); } + if (v4l2object->probed_caps) { + gst_caps_unref (v4l2object->probed_caps); + } + g_free (v4l2object); } @@ -653,6 +703,32 @@ gst_v4l2_object_set_property_helper (GstV4l2Object * v4l2object, case PROP_IO_MODE: v4l2object->req_mode = g_value_get_enum (value); break; + case PROP_EXTRA_CONTROLS:{ + const GstStructure *s = gst_value_get_structure (value); + + if (v4l2object->extra_controls) + gst_structure_free (v4l2object->extra_controls); + + v4l2object->extra_controls = s ? gst_structure_copy (s) : NULL; + if (GST_V4L2_IS_OPEN (v4l2object)) + gst_v4l2_set_controls (v4l2object, v4l2object->extra_controls); + break; + } + case PROP_PIXEL_ASPECT_RATIO: + g_free (v4l2object->par); + v4l2object->par = g_new0 (GValue, 1); + g_value_init (v4l2object->par, GST_TYPE_FRACTION); + if (!g_value_transform (value, v4l2object->par)) { + g_warning ("Could not transform string to aspect ratio"); + gst_value_set_fraction (v4l2object->par, 1, 1); + } + GST_DEBUG_OBJECT (v4l2object->element, "set PAR to %d/%d", + gst_value_get_fraction_numerator (v4l2object->par), + gst_value_get_fraction_denominator (v4l2object->par)); + break; + case PROP_FORCE_ASPECT_RATIO: + v4l2object->keep_aspect = g_value_get_boolean (value); + break; default: return FALSE; break; @@ -729,6 +805,16 @@ gst_v4l2_object_get_property_helper (GstV4l2Object * v4l2object, case PROP_IO_MODE: g_value_set_enum (value, v4l2object->req_mode); break; + case PROP_EXTRA_CONTROLS: + gst_value_set_structure (value, v4l2object->extra_controls); + break; + case PROP_PIXEL_ASPECT_RATIO: + if (v4l2object->par) + g_value_transform (v4l2object->par, value); + break; + case PROP_FORCE_ASPECT_RATIO: + g_value_set_boolean (value, v4l2object->keep_aspect); + break; default: return FALSE; break; @@ -879,7 +965,13 @@ static const GstV4L2FormatDesc gst_v4l2_formats[] = { #endif {V4L2_PIX_FMT_DV, TRUE}, {V4L2_PIX_FMT_MPEG, FALSE}, +#ifdef V4L2_PIX_FMT_MPEG4 + {V4L2_PIX_FMT_MPEG4, TRUE}, +#endif +#ifdef V4L2_PIX_FMT_H263 + {V4L2_PIX_FMT_H263, TRUE}, +#endif #ifdef V4L2_PIX_FMT_H264 {V4L2_PIX_FMT_H264, TRUE}, #endif @@ -1177,7 +1269,7 @@ failed: * Get the list of supported capture formats, a list of * <code>struct v4l2_fmtdesc</code>. */ -GSList * +static GSList * gst_v4l2_object_get_format_list (GstV4l2Object * v4l2object) { if (!v4l2object->formats) @@ -1203,6 +1295,19 @@ gst_v4l2_object_v4l2fourcc_to_structure (guint32 fourcc) case V4L2_PIX_FMT_HI240: /* 8 8-bit color */ /* FIXME: get correct fourccs here */ break; +#ifdef V4L2_PIX_FMT_MPEG4 + case V4L2_PIX_FMT_MPEG4: + structure = gst_structure_new ("video/mpeg", + "mpegversion", G_TYPE_INT, 4, "systemstream", + G_TYPE_BOOLEAN, FALSE, NULL); + break; +#endif +#ifdef V4L2_PIX_FMT_H263 + case V4L2_PIX_FMT_H263: + structure = gst_structure_new ("video/x-h263", + "variant", G_TYPE_STRING, "itu", NULL); + break; +#endif #ifdef V4L2_PIX_FMT_H264 case V4L2_PIX_FMT_H264: /* H.264 */ structure = gst_structure_new_empty ("video/x-h264"); @@ -1403,11 +1508,10 @@ gst_v4l2_object_get_caps_info (GstV4l2Object * v4l2object, GstCaps * caps, mimetype = gst_structure_get_name (structure); - if (g_str_equal (mimetype, "video/x-raw")) { - /* raw caps, parse into video info */ - if (!gst_video_info_from_caps (info, caps)) - goto invalid_format; + if (!gst_video_info_from_caps (info, caps)) + goto invalid_format; + if (g_str_equal (mimetype, "video/x-raw")) { switch (GST_VIDEO_INFO_FORMAT (info)) { case GST_VIDEO_FORMAT_I420: fourcc = V4L2_PIX_FMT_YUV420; @@ -1469,18 +1573,20 @@ gst_v4l2_object_get_caps_info (GstV4l2Object * v4l2object, GstCaps * caps, break; } } else { - gboolean dimensions = TRUE; - - /* no video caps, construct videoinfo ourselves */ - gst_video_info_init (info); - if (g_str_equal (mimetype, "video/mpegts")) { fourcc = V4L2_PIX_FMT_MPEG; - dimensions = FALSE; } else if (g_str_equal (mimetype, "video/x-dv")) { fourcc = V4L2_PIX_FMT_DV; } else if (g_str_equal (mimetype, "image/jpeg")) { fourcc = V4L2_PIX_FMT_JPEG; +#ifdef V4L2_PIX_FMT_MPEG4 + } else if (g_str_equal (mimetype, "video/mpeg")) { + fourcc = V4L2_PIX_FMT_MPEG4; +#endif +#ifdef V4L2_PIX_FMT_H263 + } else if (g_str_equal (mimetype, "video/x-h263")) { + fourcc = V4L2_PIX_FMT_H263; +#endif #ifdef V4L2_PIX_FMT_H264 } else if (g_str_equal (mimetype, "video/x-h264")) { fourcc = V4L2_PIX_FMT_H264; @@ -1502,26 +1608,6 @@ gst_v4l2_object_get_caps_info (GstV4l2Object * v4l2object, GstCaps * caps, fourcc = V4L2_PIX_FMT_PWC2; } #endif - - if (dimensions) { - const gchar *interlace_mode; - - if (!gst_structure_get_int (structure, "width", &info->width)) - goto no_width; - - if (!gst_structure_get_int (structure, "height", &info->height)) - goto no_height; - - interlace_mode = gst_structure_get_string (structure, "interlace-mode"); - if (g_str_equal (interlace_mode, "progressive")) { - info->interlace_mode = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE; - } else { - info->interlace_mode = GST_VIDEO_INTERLACE_MODE_MIXED; - } - if (!gst_structure_get_fraction (structure, "framerate", &info->fps_n, - &info->fps_d)) - goto no_framerate; - } } if (fourcc == 0) @@ -1536,21 +1622,6 @@ gst_v4l2_object_get_caps_info (GstV4l2Object * v4l2object, GstCaps * caps, return TRUE; /* ERRORS */ -no_width: - { - GST_DEBUG_OBJECT (v4l2object, "no width"); - return FALSE; - } -no_height: - { - GST_DEBUG_OBJECT (v4l2object, "no height"); - return FALSE; - } -no_framerate: - { - GST_DEBUG_OBJECT (v4l2object, "no framerate"); - return FALSE; - } invalid_format: { GST_DEBUG_OBJECT (v4l2object, "invalid format"); @@ -1573,6 +1644,43 @@ static gboolean gst_v4l2_object_get_nearest_size (GstV4l2Object * v4l2object, guint32 pixelformat, gint * width, gint * height, gboolean * interlaced); +static void +gst_v4l2_object_add_aspect_ratio (GstV4l2Object * v4l2object, GstStructure * s) +{ + struct v4l2_cropcap cropcap; + int num = 1, den = 1; + + if (!v4l2object->keep_aspect) + return; + + if (v4l2object->par) { + num = gst_value_get_fraction_numerator (v4l2object->par); + den = gst_value_get_fraction_denominator (v4l2object->par); + goto done; + } + + memset (&cropcap, 0, sizeof (cropcap)); + + cropcap.type = v4l2object->type; + if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_CROPCAP, &cropcap) < 0) + goto cropcap_failed; + + num = cropcap.pixelaspect.numerator; + den = cropcap.pixelaspect.denominator; + +done: + gst_structure_set (s, "pixel-aspect-ratio", GST_TYPE_FRACTION, num, den, + NULL); + return; + +cropcap_failed: + if (errno != ENOTTY) + GST_WARNING_OBJECT (v4l2object->element, + "Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: %s", + g_strerror (errno)); + goto done; +} + /* The frame interval enumeration code first appeared in Linux 2.6.19. */ #ifdef VIDIOC_ENUM_FRAMEINTERVALS @@ -1759,9 +1867,11 @@ gst_v4l2_object_probe_caps_for_format_and_size (GstV4l2Object * v4l2object, return_data: s = gst_structure_copy (template); gst_structure_set (s, "width", G_TYPE_INT, (gint) width, - "height", G_TYPE_INT, (gint) height, - "interlace-mode", G_TYPE_STRING, (interlaced ? "mixed" : "progressive"), - "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, NULL); + "height", G_TYPE_INT, (gint) height, NULL); + gst_v4l2_object_add_aspect_ratio (v4l2object, s); + if (g_str_equal (gst_structure_get_name (s), "video/x-raw")) + gst_structure_set (s, "interlace-mode", G_TYPE_STRING, + (interlaced ? "mixed" : "progressive"), NULL); if (G_IS_VALUE (&rates)) { /* only change the framerate on the template when we have a valid probed new @@ -1809,7 +1919,7 @@ sort_by_frame_size (GstStructure * s1, GstStructure * s2) } #endif -GstCaps * +static GstCaps * gst_v4l2_object_probe_caps_for_format (GstV4l2Object * v4l2object, guint32 pixelformat, const GstStructure * template) { @@ -2021,10 +2131,10 @@ default_frame_sizes: else gst_structure_set (tmp, "height", GST_TYPE_INT_RANGE, min_h, max_h, NULL); - gst_structure_set (tmp, "interlace-mode", G_TYPE_STRING, - (interlaced ? "mixed" : "progressive"), NULL); - gst_structure_set (tmp, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, - NULL); + if (g_str_equal (gst_structure_get_name (tmp), "video/x-raw")) + gst_structure_set (tmp, "interlace-mode", G_TYPE_STRING, + (interlaced ? "mixed" : "progressive"), NULL); + gst_v4l2_object_add_aspect_ratio (v4l2object, tmp); gst_caps_append_structure (ret, tmp); @@ -2205,12 +2315,6 @@ no_supported_capture_method: } } - -/* Note about fraction simplification - * * n1/d1 == n2/d2 is also written as n1 == ( n2 * d1 ) / d2 - * */ -#define fractions_are_equal(n1,d1,n2,d2) ((n1) == gst_util_uint64_scale_int((n2), (d1), (d2))) - gboolean gst_v4l2_object_set_format (GstV4l2Object * v4l2object, GstCaps * caps) { @@ -2439,7 +2543,7 @@ invalid_pixelformat: get_parm_failed: { /* it's possible that this call is not supported */ - if (errno != EINVAL) { + if (errno != EINVAL && errno != ENOTTY) { GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS, (_("Could not get parameters on device '%s'"), v4l2object->videodev), GST_ERROR_SYSTEM); @@ -2461,6 +2565,21 @@ pool_failed: } } +gboolean +gst_v4l2_object_caps_equal (GstV4l2Object * v4l2object, GstCaps * caps) +{ + GstStructure *s; + GstCaps *oldcaps; + + if (!v4l2object->pool) + return FALSE; + + s = gst_buffer_pool_get_config (GST_BUFFER_POOL_CAST (v4l2object->pool)); + gst_buffer_pool_config_get_params (s, &oldcaps, NULL, NULL, NULL); + + return oldcaps && gst_caps_is_equal (caps, oldcaps); +} + gboolean gst_v4l2_object_unlock (GstV4l2Object * v4l2object) { @@ -2506,7 +2625,10 @@ gboolean gst_v4l2_object_copy (GstV4l2Object * v4l2object, GstBuffer * dest, GstBuffer * src) { - if (v4l2object->info.finfo) { + const GstVideoFormatInfo *finfo = v4l2object->info.finfo; + + if (finfo && (finfo->format != GST_VIDEO_FORMAT_UNKNOWN && + finfo->format != GST_VIDEO_FORMAT_ENCODED)) { GstVideoFrame src_frame, dest_frame; GST_DEBUG_OBJECT (v4l2object->element, "copy video frame"); @@ -2530,8 +2652,9 @@ gst_v4l2_object_copy (GstV4l2Object * v4l2object, GstBuffer * dest, GST_DEBUG_OBJECT (v4l2object->element, "copy raw bytes"); gst_buffer_map (src, &map, GST_MAP_READ); - gst_buffer_fill (dest, 0, map.data, map.size); + gst_buffer_fill (dest, 0, map.data, gst_buffer_get_size (src)); gst_buffer_unmap (src, &map); + gst_buffer_resize (dest, 0, gst_buffer_get_size (src)); } GST_CAT_LOG_OBJECT (GST_CAT_PERFORMANCE, v4l2object->element, "slow copy into buffer %p", dest); @@ -2546,3 +2669,53 @@ invalid_buffer: return FALSE; } } + +GstCaps * +gst_v4l2_object_get_caps (GstV4l2Object * v4l2object, GstCaps * filter) +{ + GstCaps *ret; + GSList *walk; + GSList *formats; + + if (v4l2object->probed_caps == NULL) { + formats = gst_v4l2_object_get_format_list (v4l2object); + + ret = gst_caps_new_empty (); + + for (walk = formats; walk; walk = walk->next) { + struct v4l2_fmtdesc *format; + GstStructure *template; + + format = (struct v4l2_fmtdesc *) walk->data; + + template = gst_v4l2_object_v4l2fourcc_to_structure (format->pixelformat); + + if (template) { + GstCaps *tmp; + + tmp = gst_v4l2_object_probe_caps_for_format (v4l2object, + format->pixelformat, template); + if (tmp) + gst_caps_append (ret, tmp); + + gst_structure_free (template); + } else { + GST_DEBUG_OBJECT (v4l2object->element, "unknown format %u", + format->pixelformat); + } + } + v4l2object->probed_caps = ret; + } + + if (filter) { + ret = gst_caps_intersect_full (filter, v4l2object->probed_caps, + GST_CAPS_INTERSECT_FIRST); + } else { + ret = gst_caps_ref (v4l2object->probed_caps); + } + + GST_INFO_OBJECT (v4l2object->element, "probed caps: %p", ret); + LOG_CAPS (v4l2object->element, ret); + + return ret; +} diff --git a/sys/v4l2/gstv4l2object.h b/sys/v4l2/gstv4l2object.h index 9b3c5d270013ec9f18528ea1569c1a1e0fe6c2eb..fbfff925d35805a0677977e11b7767d39cd68fd8 100644 --- a/sys/v4l2/gstv4l2object.h +++ b/sys/v4l2/gstv4l2object.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_V4L2_OBJECT_H__ @@ -75,7 +75,8 @@ typedef enum { GST_V4L2_IO_AUTO = 0, GST_V4L2_IO_RW = 1, GST_V4L2_IO_MMAP = 2, - GST_V4L2_IO_USERPTR = 3 + GST_V4L2_IO_USERPTR = 3, + GST_V4L2_IO_DMABUF = 4 } GstV4l2IOMode; typedef gboolean (*GstV4l2GetInOutFunction) (GstV4l2Object * v4l2object, gint * input); @@ -138,15 +139,20 @@ struct _GstV4l2Object { /* lists... */ GSList *formats; /* list of available capture formats */ + GstCaps *probed_caps; GList *colors; GList *norms; GList *channels; + GData *controls; /* properties */ v4l2_std_id tv_norm; gchar *channel; gulong frequency; + GstStructure *extra_controls; + gboolean keep_aspect; + GValue *par; /* X-overlay */ GstV4l2Xv *xv; @@ -175,7 +181,10 @@ GType gst_v4l2_object_get_type (void); PROP_SATURATION, \ PROP_HUE, \ PROP_TV_NORM, \ - PROP_IO_MODE + PROP_IO_MODE, \ + PROP_EXTRA_CONTROLS, \ + PROP_PIXEL_ASPECT_RATIO, \ + PROP_FORCE_ASPECT_RATIO /* create/destroy */ GstV4l2Object * gst_v4l2_object_new (GstElement * element, @@ -215,17 +224,14 @@ GValueArray* gst_v4l2_probe_get_values (GstPropertyProbe * probe, guint pro GList ** klass_devices); #endif -GstCaps* gst_v4l2_object_probe_caps_for_format (GstV4l2Object *v4l2object, guint32 pixelformat, - const GstStructure * template); - -GSList* gst_v4l2_object_get_format_list (GstV4l2Object *v4l2object); - GstCaps* gst_v4l2_object_get_all_caps (void); GstStructure* gst_v4l2_object_v4l2fourcc_to_structure (guint32 fourcc); gboolean gst_v4l2_object_set_format (GstV4l2Object *v4l2object, GstCaps * caps); +gboolean gst_v4l2_object_caps_equal (GstV4l2Object * v4l2object, GstCaps * caps); + gboolean gst_v4l2_object_unlock (GstV4l2Object *v4l2object); gboolean gst_v4l2_object_unlock_stop (GstV4l2Object *v4l2object); @@ -235,6 +241,9 @@ gboolean gst_v4l2_object_stop (GstV4l2Object *v4l2object); gboolean gst_v4l2_object_copy (GstV4l2Object * v4l2object, GstBuffer * dest, GstBuffer *src); +GstCaps * gst_v4l2_object_get_caps (GstV4l2Object * v4l2object, + GstCaps * filter); + #define GST_IMPLEMENT_V4L2_PROBE_METHODS(Type_Class, interface_as_function) \ \ diff --git a/sys/v4l2/gstv4l2radio.c b/sys/v4l2/gstv4l2radio.c index 831db61eee1c0270379c645c19f13ecd9e964188..7a6463c1a97738a8f635e19c9378d7d61514937c 100644 --- a/sys/v4l2/gstv4l2radio.c +++ b/sys/v4l2/gstv4l2radio.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** diff --git a/sys/v4l2/gstv4l2radio.h b/sys/v4l2/gstv4l2radio.h index 68b7ec3912597a931fd320d8c30f8f63f26874ca..2fda4fb46523e4a7d3f0b80cc7ae932b9614d706 100644 --- a/sys/v4l2/gstv4l2radio.h +++ b/sys/v4l2/gstv4l2radio.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_V4L2RADIO_H__ diff --git a/sys/v4l2/gstv4l2sink.c b/sys/v4l2/gstv4l2sink.c index 115f0578ea74901ad2211722f07409e63d220be3..ef0941216e59b60b4818ed6fe69e59edba3e221a 100644 --- a/sys/v4l2/gstv4l2sink.c +++ b/sys/v4l2/gstv4l2sink.c @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -118,7 +118,6 @@ G_DEFINE_TYPE_WITH_CODE (GstV4l2Sink, gst_v4l2sink, GST_TYPE_VIDEO_SINK, gst_v4l2sink_video_orientation_interface_init)); -static void gst_v4l2sink_dispose (GObject * object); static void gst_v4l2sink_finalize (GstV4l2Sink * v4l2sink); /* GObject methods: */ @@ -154,7 +153,6 @@ gst_v4l2sink_class_init (GstV4l2SinkClass * klass) element_class = GST_ELEMENT_CLASS (klass); basesink_class = GST_BASE_SINK_CLASS (klass); - gobject_class->dispose = gst_v4l2sink_dispose; gobject_class->finalize = (GObjectFinalizeFunc) gst_v4l2sink_finalize; gobject_class->set_property = gst_v4l2sink_set_property; gobject_class->get_property = gst_v4l2sink_get_property; @@ -232,26 +230,11 @@ gst_v4l2sink_init (GstV4l2Sink * v4l2sink) */ g_object_set (v4l2sink, "device", "/dev/video1", NULL); - v4l2sink->probed_caps = NULL; - v4l2sink->overlay_fields_set = 0; v4l2sink->crop_fields_set = 0; } -static void -gst_v4l2sink_dispose (GObject * object) -{ - GstV4l2Sink *v4l2sink = GST_V4L2SINK (object); - - if (v4l2sink->probed_caps) { - gst_caps_unref (v4l2sink->probed_caps); - } - - G_OBJECT_CLASS (parent_class)->dispose (object); -} - - static void gst_v4l2sink_finalize (GstV4l2Sink * v4l2sink) { @@ -506,9 +489,6 @@ static GstCaps * gst_v4l2sink_get_caps (GstBaseSink * bsink, GstCaps * filter) { GstV4l2Sink *v4l2sink = GST_V4L2SINK (bsink); - GstCaps *ret; - GSList *walk; - GSList *formats; if (!GST_V4L2_IS_OPEN (v4l2sink->v4l2object)) { /* FIXME: copy? */ @@ -516,49 +496,8 @@ gst_v4l2sink_get_caps (GstBaseSink * bsink, GstCaps * filter) return gst_pad_get_pad_template_caps (GST_BASE_SINK_PAD (v4l2sink)); } - if (v4l2sink->probed_caps == NULL) { - formats = gst_v4l2_object_get_format_list (v4l2sink->v4l2object); - - ret = gst_caps_new_empty (); - - for (walk = formats; walk; walk = walk->next) { - struct v4l2_fmtdesc *format; - - GstStructure *template; - format = (struct v4l2_fmtdesc *) walk->data; - - template = gst_v4l2_object_v4l2fourcc_to_structure (format->pixelformat); - - if (template) { - GstCaps *tmp; - - tmp = - gst_v4l2_object_probe_caps_for_format (v4l2sink->v4l2object, - format->pixelformat, template); - if (tmp) - gst_caps_append (ret, tmp); - - gst_structure_free (template); - } else { - GST_DEBUG_OBJECT (v4l2sink, "unknown format %u", format->pixelformat); - } - } - v4l2sink->probed_caps = ret; - } - - if (filter) { - ret = - gst_caps_intersect_full (filter, v4l2sink->probed_caps, - GST_CAPS_INTERSECT_FIRST); - } else { - ret = gst_caps_ref (v4l2sink->probed_caps); - } - - GST_INFO_OBJECT (v4l2sink, "probed caps: %p", ret); - LOG_CAPS (v4l2sink, ret); - - return ret; + return gst_v4l2_object_get_caps (v4l2sink->v4l2object, filter); } static gboolean @@ -574,6 +513,10 @@ gst_v4l2sink_set_caps (GstBaseSink * bsink, GstCaps * caps) return FALSE; } + /* make sure the caps changed before doing anything */ + if (gst_v4l2_object_caps_equal (obj, caps)) + return TRUE; + if (!gst_v4l2_object_stop (obj)) goto stop_failed; diff --git a/sys/v4l2/gstv4l2sink.h b/sys/v4l2/gstv4l2sink.h index b461e2c922d79718e4fdbb11b1686904e42357a2..3e5129f79237f14ef6aa770bbdb5705d8e277750 100644 --- a/sys/v4l2/gstv4l2sink.h +++ b/sys/v4l2/gstv4l2sink.h @@ -18,8 +18,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GSTV4L2SINK_H__ @@ -54,7 +54,6 @@ struct _GstV4l2Sink { /*< private >*/ GstV4l2Object * v4l2object; - GstCaps *probed_caps; /* all supported caps of underlying v4l2 device */ gint video_width, video_height; /* original (unscaled) video w/h */ diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c index d9349ac4d5a98d6e9cad38939cea4cb94d090450..8e1b7549f8f08e1d841dd2e6bda1a634d9b4868e 100644 --- a/sys/v4l2/gstv4l2src.c +++ b/sys/v4l2/gstv4l2src.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -109,7 +109,6 @@ G_DEFINE_TYPE_WITH_CODE (GstV4l2Src, gst_v4l2src, GST_TYPE_PUSH_SRC, G_IMPLEMENT_INTERFACE (GST_TYPE_VIDEO_ORIENTATION, gst_v4l2src_video_orientation_interface_init)); -static void gst_v4l2src_dispose (GObject * object); static void gst_v4l2src_finalize (GstV4l2Src * v4l2src); /* element methods */ @@ -148,7 +147,6 @@ gst_v4l2src_class_init (GstV4l2SrcClass * klass) basesrc_class = GST_BASE_SRC_CLASS (klass); pushsrc_class = GST_PUSH_SRC_CLASS (klass); - gobject_class->dispose = gst_v4l2src_dispose; gobject_class->finalize = (GObjectFinalizeFunc) gst_v4l2src_finalize; gobject_class->set_property = gst_v4l2src_set_property; gobject_class->get_property = gst_v4l2src_get_property; @@ -162,9 +160,7 @@ gst_v4l2src_class_init (GstV4l2SrcClass * klass) * GstV4l2Src::prepare-format: * @v4l2src: the v4l2src instance * @fd: the file descriptor of the current device - * @fourcc: the fourcc of the format being set - * @width: The width of the video - * @height: The height of the video + * @caps: the caps of the format being set * * This signal gets emitted before calling the v4l2 VIDIOC_S_FMT ioctl * (set format). This allows for any custom configuration of the device to @@ -177,9 +173,7 @@ gst_v4l2src_class_init (GstV4l2SrcClass * klass) gst_v4l2_signals[SIGNAL_PRE_SET_FORMAT] = g_signal_new ("prepare-format", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - NULL, G_TYPE_NONE, 4, G_TYPE_INT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); + 0, NULL, NULL, NULL, G_TYPE_NONE, 2, G_TYPE_INT, GST_TYPE_CAPS); gst_element_class_set_static_metadata (element_class, "Video (video4linux2) Source", "Source/Video", @@ -223,18 +217,6 @@ gst_v4l2src_init (GstV4l2Src * v4l2src) gst_base_src_set_live (GST_BASE_SRC (v4l2src), TRUE); } -static void -gst_v4l2src_dispose (GObject * object) -{ - GstV4l2Src *v4l2src = GST_V4L2SRC (object); - - if (v4l2src->probed_caps) { - gst_caps_unref (v4l2src->probed_caps); - } - - G_OBJECT_CLASS (parent_class)->dispose (object); -} - static void gst_v4l2src_finalize (GstV4l2Src * v4l2src) @@ -334,8 +316,8 @@ gst_v4l2src_negotiate (GstBaseSrc * basesrc) if (thiscaps == NULL || gst_caps_is_any (thiscaps)) goto no_nego_needed; - /* get the peer caps */ - peercaps = gst_pad_peer_query_caps (GST_BASE_SRC_PAD (basesrc), thiscaps); + /* get the peer caps without a filter as we'll filter ourselves later on */ + peercaps = gst_pad_peer_query_caps (GST_BASE_SRC_PAD (basesrc), NULL); GST_DEBUG_OBJECT (basesrc, "caps of peer: %" GST_PTR_FORMAT, peercaps); LOG_CAPS (basesrc, peercaps); if (peercaps && !gst_caps_is_any (peercaps)) { @@ -441,9 +423,6 @@ gst_v4l2src_get_caps (GstBaseSrc * src, GstCaps * filter) { GstV4l2Src *v4l2src; GstV4l2Object *obj; - GstCaps *ret; - GSList *walk; - GSList *formats; v4l2src = GST_V4L2SRC (src); obj = v4l2src->v4l2object; @@ -452,41 +431,7 @@ gst_v4l2src_get_caps (GstBaseSrc * src, GstCaps * filter) return gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD (v4l2src)); } - if (v4l2src->probed_caps) - return gst_caps_ref (v4l2src->probed_caps); - - formats = gst_v4l2_object_get_format_list (obj); - - ret = gst_caps_new_empty (); - - for (walk = formats; walk; walk = walk->next) { - struct v4l2_fmtdesc *format; - GstStructure *template; - - format = (struct v4l2_fmtdesc *) walk->data; - - template = gst_v4l2_object_v4l2fourcc_to_structure (format->pixelformat); - - if (template) { - GstCaps *tmp; - - tmp = - gst_v4l2_object_probe_caps_for_format (obj, - format->pixelformat, template); - if (tmp) - gst_caps_append (ret, tmp); - - gst_structure_free (template); - } else { - GST_DEBUG_OBJECT (v4l2src, "unknown format %u", format->pixelformat); - } - } - - v4l2src->probed_caps = gst_caps_ref (ret); - - GST_INFO_OBJECT (v4l2src, "probed caps: %" GST_PTR_FORMAT, ret); - - return ret; + return gst_v4l2_object_get_caps (obj, filter); } static gboolean @@ -498,10 +443,17 @@ gst_v4l2src_set_caps (GstBaseSrc * src, GstCaps * caps) v4l2src = GST_V4L2SRC (src); obj = v4l2src->v4l2object; + /* make sure the caps changed before doing anything */ + if (gst_v4l2_object_caps_equal (obj, caps)) + return TRUE; + /* make sure we stop capturing and dealloc buffers */ if (!gst_v4l2_object_stop (obj)) return FALSE; + g_signal_emit (v4l2src, gst_v4l2_signals[SIGNAL_PRE_SET_FORMAT], 0, + v4l2src->v4l2object->video_fd, caps); + if (!gst_v4l2_object_set_format (obj, caps)) /* error already posted */ return FALSE; @@ -563,6 +515,7 @@ gst_v4l2src_decide_allocation (GstBaseSrc * bsrc, GstQuery * query) break; case GST_V4L2_IO_MMAP: case GST_V4L2_IO_USERPTR: + case GST_V4L2_IO_DMABUF: /* in streaming mode, prefer our own pool */ pool = GST_BUFFER_POOL_CAST (obj->pool); size = obj->sizeimage; @@ -737,10 +690,6 @@ gst_v4l2src_change_state (GstElement * element, GstStateChange transition) if (!gst_v4l2_object_close (obj)) return GST_STATE_CHANGE_FAILURE; - if (v4l2src->probed_caps) { - gst_caps_unref (v4l2src->probed_caps); - v4l2src->probed_caps = NULL; - } break; default: break; diff --git a/sys/v4l2/gstv4l2src.h b/sys/v4l2/gstv4l2src.h index db5209243af83c4ae7e850670dc264d011292c71..36915cb6e81ca0e4519020a78b56094b734abf04 100644 --- a/sys/v4l2/gstv4l2src.h +++ b/sys/v4l2/gstv4l2src.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_V4L2SRC_H__ @@ -57,9 +57,6 @@ struct _GstV4l2Src /*< private >*/ GstV4l2Object * v4l2object; - /* pads */ - GstCaps *probed_caps; - guint64 offset; GstClockTime ctrl_time; diff --git a/sys/v4l2/gstv4l2tuner.c b/sys/v4l2/gstv4l2tuner.c index c885dc67400d8d6585bfbc3927740efcf05cc8be..3a82eb72a60f85c985810ae1b6336868fd241da0 100644 --- a/sys/v4l2/gstv4l2tuner.c +++ b/sys/v4l2/gstv4l2tuner.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -31,47 +31,15 @@ #include "gstv4l2object.h" #include "v4l2_calls.h" -static void gst_v4l2_tuner_channel_class_init (GstV4l2TunerChannelClass * - klass); -static void gst_v4l2_tuner_channel_init (GstV4l2TunerChannel * channel); +G_DEFINE_TYPE (GstV4l2TunerChannel, gst_v4l2_tuner_channel, + GST_TYPE_TUNER_CHANNEL); -static void gst_v4l2_tuner_norm_class_init (GstV4l2TunerNormClass * klass); -static void gst_v4l2_tuner_norm_init (GstV4l2TunerNorm * norm); +G_DEFINE_TYPE (GstV4l2TunerNorm, gst_v4l2_tuner_norm, GST_TYPE_TUNER_NORM); -static GstTunerNormClass *norm_parent_class = NULL; -static GstTunerChannelClass *channel_parent_class = NULL; - -GType -gst_v4l2_tuner_channel_get_type (void) -{ - static GType gst_v4l2_tuner_channel_type = 0; - - if (!gst_v4l2_tuner_channel_type) { - static const GTypeInfo v4l2_tuner_channel_info = { - sizeof (GstV4l2TunerChannelClass), - NULL, - NULL, - (GClassInitFunc) gst_v4l2_tuner_channel_class_init, - NULL, - NULL, - sizeof (GstV4l2TunerChannel), - 0, - (GInstanceInitFunc) gst_v4l2_tuner_channel_init, - NULL - }; - - gst_v4l2_tuner_channel_type = - g_type_register_static (GST_TYPE_TUNER_CHANNEL, - "GstV4l2TunerChannel", &v4l2_tuner_channel_info, 0); - } - - return gst_v4l2_tuner_channel_type; -} static void gst_v4l2_tuner_channel_class_init (GstV4l2TunerChannelClass * klass) { - channel_parent_class = g_type_class_peek_parent (klass); } static void @@ -82,37 +50,9 @@ gst_v4l2_tuner_channel_init (GstV4l2TunerChannel * channel) channel->audio = (guint32) - 1; } -GType -gst_v4l2_tuner_norm_get_type (void) -{ - static GType gst_v4l2_tuner_norm_type = 0; - - if (!gst_v4l2_tuner_norm_type) { - static const GTypeInfo v4l2_tuner_norm_info = { - sizeof (GstV4l2TunerNormClass), - NULL, - NULL, - (GClassInitFunc) gst_v4l2_tuner_norm_class_init, - NULL, - NULL, - sizeof (GstV4l2TunerNorm), - 0, - (GInstanceInitFunc) gst_v4l2_tuner_norm_init, - NULL - }; - - gst_v4l2_tuner_norm_type = - g_type_register_static (GST_TYPE_TUNER_NORM, - "GstV4l2TunerNorm", &v4l2_tuner_norm_info, 0); - } - - return gst_v4l2_tuner_norm_type; -} - static void gst_v4l2_tuner_norm_class_init (GstV4l2TunerNormClass * klass) { - norm_parent_class = g_type_class_peek_parent (klass); } static void diff --git a/sys/v4l2/gstv4l2tuner.h b/sys/v4l2/gstv4l2tuner.h index 5a6e2f54dca7ef2d78e7079e6681826ec4e93007..3556502b20346b48885ccb8a4d657e474578a72c 100644 --- a/sys/v4l2/gstv4l2tuner.h +++ b/sys/v4l2/gstv4l2tuner.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_V4L2_TUNER_H__ diff --git a/sys/v4l2/gstv4l2videooverlay.c b/sys/v4l2/gstv4l2videooverlay.c index 88ccf5cdfcd337daae0dad1ac219a58f9ec75298..66d2109beaee13ca05328fbc7b8799fc9368c495 100644 --- a/sys/v4l2/gstv4l2videooverlay.c +++ b/sys/v4l2/gstv4l2videooverlay.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/sys/v4l2/gstv4l2videooverlay.h b/sys/v4l2/gstv4l2videooverlay.h index 0f602e75ca758dc677d1ab23aaa5d966923d6f69..cd4091621f0315c2978dba02ff3172a88f972566 100644 --- a/sys/v4l2/gstv4l2videooverlay.h +++ b/sys/v4l2/gstv4l2videooverlay.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_V4L2_VIDEO_OVERLAY_H__ diff --git a/sys/v4l2/gstv4l2vidorient.c b/sys/v4l2/gstv4l2vidorient.c index 4dc0da73f2a306bda02c58612e434e9bb6eac43a..75589470f58153c8b809e08612c64f92c8972cf6 100644 --- a/sys/v4l2/gstv4l2vidorient.c +++ b/sys/v4l2/gstv4l2vidorient.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/sys/v4l2/gstv4l2vidorient.h b/sys/v4l2/gstv4l2vidorient.h index 41da501b39c28729e3c65c9b91317eaaa0941bb9..ab88478524ef8901fe2e611834026db79a9addb1 100644 --- a/sys/v4l2/gstv4l2vidorient.h +++ b/sys/v4l2/gstv4l2vidorient.h @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_V4L2_VIDORIENT_H__ diff --git a/sys/v4l2/tuner-marshal.list b/sys/v4l2/tuner-marshal.list deleted file mode 100644 index c99ddc7d2b9c15a35131b8fbf94f3c16b3ea33ae..0000000000000000000000000000000000000000 --- a/sys/v4l2/tuner-marshal.list +++ /dev/null @@ -1,2 +0,0 @@ -VOID:OBJECT,ULONG -VOID:OBJECT,INT diff --git a/sys/v4l2/tuner.c b/sys/v4l2/tuner.c index 59cea711d49772a6c1a27068a8b70294165fb1e6..b6b3fe91795360f1f3ead2fa4c382a0d11862be6 100644 --- a/sys/v4l2/tuner.c +++ b/sys/v4l2/tuner.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -24,7 +24,6 @@ #endif #include "tuner.h" -#include "tuner-marshal.h" #include <string.h> @@ -83,37 +82,12 @@ enum LAST_SIGNAL }; -static void gst_tuner_class_init (GstTunerInterface * iface); - static guint gst_tuner_signals[LAST_SIGNAL] = { 0 }; -GType -gst_tuner_get_type (void) -{ - static GType gst_tuner_type = 0; - - if (!gst_tuner_type) { - static const GTypeInfo gst_tuner_info = { - sizeof (GstTunerInterface), - (GBaseInitFunc) gst_tuner_class_init, - NULL, - NULL, - NULL, - NULL, - 0, - 0, - NULL, - }; - - gst_tuner_type = g_type_register_static (G_TYPE_INTERFACE, - "GstTuner", &gst_tuner_info, 0); - } - - return gst_tuner_type; -} +G_DEFINE_INTERFACE (GstTuner, gst_tuner, G_TYPE_INVALID); static void -gst_tuner_class_init (GstTunerInterface * iface) +gst_tuner_default_init (GstTunerInterface * iface) { static gboolean initialized = FALSE; @@ -157,8 +131,8 @@ gst_tuner_class_init (GstTunerInterface * iface) GST_TYPE_TUNER, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstTunerInterface, frequency_changed), NULL, NULL, - gst_interfaces_marshal_VOID__OBJECT_ULONG, G_TYPE_NONE, 2, - GST_TYPE_TUNER_CHANNEL, G_TYPE_ULONG); + g_cclosure_marshal_generic, G_TYPE_NONE, 2, GST_TYPE_TUNER_CHANNEL, + G_TYPE_ULONG); /** * GstTuner::signal-changed: * @tuner: The element providing the GstTuner interface @@ -174,8 +148,8 @@ gst_tuner_class_init (GstTunerInterface * iface) GST_TYPE_TUNER, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstTunerInterface, signal_changed), NULL, NULL, - gst_interfaces_marshal_VOID__OBJECT_INT, G_TYPE_NONE, 2, - GST_TYPE_TUNER_CHANNEL, G_TYPE_INT); + g_cclosure_marshal_generic, G_TYPE_NONE, 2, GST_TYPE_TUNER_CHANNEL, + G_TYPE_INT); initialized = TRUE; } diff --git a/sys/v4l2/tuner.h b/sys/v4l2/tuner.h index c7cffe509c416ff5b53a93aca9219d32e55cc3b6..7297e4b40c95b2d6bcb031a8a438b30ca7e6f647 100644 --- a/sys/v4l2/tuner.h +++ b/sys/v4l2/tuner.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_TUNER_H__ @@ -26,7 +26,6 @@ #include "tunernorm.h" #include "tunerchannel.h" -#include "tuner-enumtypes.h" G_BEGIN_DECLS diff --git a/sys/v4l2/tunerchannel.c b/sys/v4l2/tunerchannel.c index ac2b74e8199d64b428e6f8d250e7c8776e415c30..6e456967bc43de2a38912ce45236a5a09ffaf208 100644 --- a/sys/v4l2/tunerchannel.c +++ b/sys/v4l2/tunerchannel.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -51,47 +51,17 @@ enum LAST_SIGNAL }; -static void gst_tuner_channel_class_init (GstTunerChannelClass * klass); -static void gst_tuner_channel_init (GstTunerChannel * channel); +G_DEFINE_TYPE (GstTunerChannel, gst_tuner_channel, G_TYPE_OBJECT); + static void gst_tuner_channel_dispose (GObject * object); -static GObjectClass *parent_class = NULL; static guint signals[LAST_SIGNAL] = { 0 }; -GType -gst_tuner_channel_get_type (void) -{ - static GType gst_tuner_channel_type = 0; - - if (!gst_tuner_channel_type) { - static const GTypeInfo tuner_channel_info = { - sizeof (GstTunerChannelClass), - NULL, - NULL, - (GClassInitFunc) gst_tuner_channel_class_init, - NULL, - NULL, - sizeof (GstTunerChannel), - 0, - (GInstanceInitFunc) gst_tuner_channel_init, - NULL - }; - - gst_tuner_channel_type = - g_type_register_static (G_TYPE_OBJECT, - "GstTunerChannel", &tuner_channel_info, 0); - } - - return gst_tuner_channel_type; -} - static void gst_tuner_channel_class_init (GstTunerChannelClass * klass) { GObjectClass *object_klass = (GObjectClass *) klass; - parent_class = g_type_class_peek_parent (klass); - /** * GstTunerChannel::frequency-changed: * @tunerchannel: The #GstTunerChannel @@ -143,6 +113,5 @@ gst_tuner_channel_dispose (GObject * object) channel->label = NULL; } - if (parent_class->dispose) - parent_class->dispose (object); + G_OBJECT_CLASS (gst_tuner_channel_parent_class)->dispose (object); } diff --git a/sys/v4l2/tunerchannel.h b/sys/v4l2/tunerchannel.h index 1bbb6cfaae2bcc931d5c0adee85ca4b6b797841b..0080c734c789a52e55d95742eb442bf0914369cc 100644 --- a/sys/v4l2/tunerchannel.h +++ b/sys/v4l2/tunerchannel.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_TUNER_CHANNEL_H__ diff --git a/sys/v4l2/tunernorm.c b/sys/v4l2/tunernorm.c index 47260b0ed1d652c22f9b29d1e8f70a7efd0c69dd..5c57ffb7d2f98557ee95e082a51b594bd0b1e367 100644 --- a/sys/v4l2/tunernorm.c +++ b/sys/v4l2/tunernorm.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -44,47 +44,18 @@ enum LAST_SIGNAL }; -static void gst_tuner_norm_class_init (GstTunerNormClass * klass); -static void gst_tuner_norm_init (GstTunerNorm * norm); +G_DEFINE_TYPE (GstTunerNorm, gst_tuner_norm, G_TYPE_OBJECT); + static void gst_tuner_norm_dispose (GObject * object); -static GObjectClass *parent_class = NULL; /*static guint signals[LAST_SIGNAL] = { 0 };*/ -GType -gst_tuner_norm_get_type (void) -{ - static GType gst_tuner_norm_type = 0; - - if (!gst_tuner_norm_type) { - static const GTypeInfo tuner_norm_info = { - sizeof (GstTunerNormClass), - NULL, - NULL, - (GClassInitFunc) gst_tuner_norm_class_init, - NULL, - NULL, - sizeof (GstTunerNorm), - 0, - (GInstanceInitFunc) gst_tuner_norm_init, - NULL - }; - - gst_tuner_norm_type = - g_type_register_static (G_TYPE_OBJECT, - "GstTunerNorm", &tuner_norm_info, 0); - } - - return gst_tuner_norm_type; -} - static void gst_tuner_norm_class_init (GstTunerNormClass * klass) { GObjectClass *object_klass = (GObjectClass *) klass; - parent_class = g_type_class_peek_parent (klass); object_klass->dispose = gst_tuner_norm_dispose; } @@ -106,6 +77,5 @@ gst_tuner_norm_dispose (GObject * object) norm->label = NULL; } - if (parent_class->dispose) - parent_class->dispose (object); + G_OBJECT_CLASS (gst_tuner_norm_parent_class)->dispose (object); } diff --git a/sys/v4l2/tunernorm.h b/sys/v4l2/tunernorm.h index 988f4cb5d725212ab89f4354cc063369b9b443fa..94da22ca9c41d4847802679c9db2114b394541fd 100644 --- a/sys/v4l2/tunernorm.h +++ b/sys/v4l2/tunernorm.h @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_TUNER_NORM_H__ diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c index 7c27024695dd280d3f8d8780fc8554b69c70920e..a84ce506bfe4d04108cb54cd7da10e44d673c948 100644 --- a/sys/v4l2/v4l2_calls.c +++ b/sys/v4l2/v4l2_calls.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -109,7 +109,8 @@ cap_failed: static gboolean gst_v4l2_fill_lists (GstV4l2Object * v4l2object) { - gint n; + gint n, next; + struct v4l2_queryctrl control = { 0, }; GstElement *e; @@ -145,7 +146,8 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) GST_LOG_OBJECT (e, " name: '%s'", input.name); GST_LOG_OBJECT (e, " type: %08x", input.type); GST_LOG_OBJECT (e, " audioset: %08x", input.audioset); - GST_LOG_OBJECT (e, " std: %016" G_GINT64_MODIFIER "x", input.std); + GST_LOG_OBJECT (e, " std: %016" G_GINT64_MODIFIER "x", + (guint64) input.std); GST_LOG_OBJECT (e, " status: %08x", input.status); v4l2channel = g_object_new (GST_TYPE_V4L2_TUNER_CHANNEL, NULL); @@ -203,7 +205,7 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) standard.index = n; if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_ENUMSTD, &standard) < 0) { - if (errno == EINVAL || errno == ENOTTY) + if (errno == EINVAL || errno == ENOTTY || errno == ENODATA) break; /* end of enumeration */ else { GST_ELEMENT_ERROR (e, RESOURCE, SETTINGS, @@ -236,11 +238,21 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) GST_DEBUG_OBJECT (e, " controls+menus"); /* and lastly, controls+menus (if appropriate) */ - for (n = V4L2_CID_BASE;; n++) { - struct v4l2_queryctrl control = { 0, }; +#ifdef V4L2_CTRL_FLAG_NEXT_CTRL + next = V4L2_CTRL_FLAG_NEXT_CTRL; + n = 0; +#else + next = 0; + n = V4L2_CID_BASE; +#endif + control.id = next; + while (TRUE) { GstV4l2ColorBalanceChannel *v4l2channel; GstColorBalanceChannel *channel; + if (!next) + n++; + /* when we reached the last official CID, continue with private CIDs */ if (n == V4L2_CID_LASTP1) { GST_DEBUG_OBJECT (e, "checking private CIDs"); @@ -248,8 +260,19 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) } GST_DEBUG_OBJECT (e, "checking control %08x", n); - control.id = n; + control.id = n | next; if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_QUERYCTRL, &control) < 0) { + if (next) { + if (n > 0) { + GST_DEBUG_OBJECT (e, "controls finished"); + break; + } else { + GST_DEBUG_OBJECT (e, "V4L2_CTRL_FLAG_NEXT_CTRL not supported."); + next = 0; + n = V4L2_CID_BASE; + continue; + } + } if (errno == EINVAL || errno == ENOTTY || errno == EIO || errno == ENOENT) { if (n < V4L2_CID_PRIVATE_BASE) { GST_DEBUG_OBJECT (e, "skipping control %08x", n); @@ -265,10 +288,47 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) continue; } } + n = control.id; if (control.flags & V4L2_CTRL_FLAG_DISABLED) { GST_DEBUG_OBJECT (e, "skipping disabled control"); continue; } +#ifdef V4L2_CTRL_TYPE_CTRL_CLASS + if (control.type == V4L2_CTRL_TYPE_CTRL_CLASS) { + GST_DEBUG_OBJECT (e, "starting control class '%s'", control.name); + continue; + } +#endif + switch (control.type) { + case V4L2_CTRL_TYPE_INTEGER: + case V4L2_CTRL_TYPE_BOOLEAN: + case V4L2_CTRL_TYPE_MENU: +#ifdef V4L2_CTRL_TYPE_INTEGER_MENU + case V4L2_CTRL_TYPE_INTEGER_MENU: +#endif +#ifdef V4L2_CTRL_TYPE_BITMASK + case V4L2_CTRL_TYPE_BITMASK: +#endif + case V4L2_CTRL_TYPE_BUTTON:{ + int i; + control.name[31] = '\0'; + for (i = 0; control.name[i]; ++i) { + control.name[i] = g_ascii_tolower (control.name[i]); + if (!g_ascii_isalnum (control.name[i])) + control.name[i] = '_'; + } + GST_INFO_OBJECT (e, "adding generic controls '%s'", control.name); + g_datalist_id_set_data (&v4l2object->controls, + g_quark_from_string ((const gchar *) control.name), + GINT_TO_POINTER (n)); + break; + } + default: + GST_DEBUG_OBJECT (e, + "Control type for '%s' not suppored for extra controls.", + control.name); + break; + } switch (n) { case V4L2_CID_BRIGHTNESS: @@ -406,6 +466,8 @@ gst_v4l2_empty_lists (GstV4l2Object * v4l2object) g_list_foreach (v4l2object->colors, (GFunc) g_object_unref, NULL); g_list_free (v4l2object->colors); v4l2object->colors = NULL; + + g_datalist_clear (&v4l2object->controls); } /****************************************************** @@ -480,7 +542,13 @@ gst_v4l2_open (GstV4l2Object * v4l2object) pollfd.fd = v4l2object->video_fd; gst_poll_add_fd (v4l2object->poll, &pollfd); - gst_poll_fd_ctl_read (v4l2object->poll, &pollfd, TRUE); + if (v4l2object->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) + gst_poll_fd_ctl_read (v4l2object->poll, &pollfd, TRUE); + else + gst_poll_fd_ctl_write (v4l2object->poll, &pollfd, TRUE); + + if (v4l2object->extra_controls) + gst_v4l2_set_controls (v4l2object, v4l2object->extra_controls); return TRUE; @@ -807,6 +875,33 @@ ctrl_failed: } } +static gboolean +set_contol (GQuark field_id, const GValue * value, gpointer user_data) +{ + GstV4l2Object *v4l2object = user_data; + gpointer *d = g_datalist_id_get_data (&v4l2object->controls, field_id); + if (!d) { + GST_WARNING_OBJECT (v4l2object, + "Control '%s' does not exist or has an unsupported type.", + g_quark_to_string (field_id)); + return TRUE; + } + if (!G_VALUE_HOLDS (value, G_TYPE_INT)) { + GST_WARNING_OBJECT (v4l2object, + "'int' value expected for control '%s'.", g_quark_to_string (field_id)); + return TRUE; + } + gst_v4l2_set_attribute (v4l2object, GPOINTER_TO_INT (d), + g_value_get_int (value)); + return TRUE; +} + +gboolean +gst_v4l2_set_controls (GstV4l2Object * v4l2object, GstStructure * controls) +{ + return gst_structure_foreach (controls, set_contol, v4l2object); +} + gboolean gst_v4l2_get_input (GstV4l2Object * v4l2object, gint * input) { diff --git a/sys/v4l2/v4l2_calls.h b/sys/v4l2/v4l2_calls.h index 36cf0f3a94099722ae024ed7548924508d601e66..221d26e075d61dd40dcc85468cf1de24276eecfc 100644 --- a/sys/v4l2/v4l2_calls.h +++ b/sys/v4l2/v4l2_calls.h @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __V4L2_CALLS_H__ @@ -126,6 +126,9 @@ gboolean gst_v4l2_set_attribute (GstV4l2Object *v4l2object, int attribute, const int value); +gboolean gst_v4l2_set_controls (GstV4l2Object * v4l2object, + GstStructure * controls); + gboolean gst_v4l2_get_capabilities (GstV4l2Object * v4l2object); diff --git a/sys/waveform/Makefile.in b/sys/waveform/Makefile.in index cb029be81f2c25df845350d55429d38848701bf7..1c4ac63c47e9b3e54405ddec85a20be5b465cf99 100644 --- a/sys/waveform/Makefile.in +++ b/sys/waveform/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = sys/waveform -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -137,10 +163,23 @@ libgstwaveformsink_la_OBJECTS = $(am_libgstwaveformsink_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstwaveformsink_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstwaveformsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(libgstwaveformsink_la_CFLAGS) $(CFLAGS) \ $(libgstwaveformsink_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -153,20 +192,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstwaveformsink_la_SOURCES) DIST_SOURCES = $(libgstwaveformsink_la_SOURCES) am__can_run_installinfo = \ @@ -175,6 +210,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -342,6 +394,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -551,6 +604,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -577,12 +631,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstwaveformsink.la: $(libgstwaveformsink_la_OBJECTS) $(libgstwaveformsink_la_DEPENDENCIES) $(EXTRA_libgstwaveformsink_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstwaveformsink_la_LINK) -rpath $(plugindir) $(libgstwaveformsink_la_OBJECTS) $(libgstwaveformsink_la_LIBADD) $(LIBS) @@ -596,22 +653,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwaveformsink_la-gstwaveformsink.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -636,26 +696,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -667,15 +716,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -684,6 +729,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -828,19 +888,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/sys/waveform/gstwaveformplugin.c b/sys/waveform/gstwaveformplugin.c index a169dd4667d6f2071f14ba8dd607e365e6984226..d00c4c245eb5811b0b6eac305c37af5e4b6de898 100644 --- a/sys/waveform/gstwaveformplugin.c +++ b/sys/waveform/gstwaveformplugin.c @@ -15,8 +15,8 @@ * * 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. +* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +* Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/sys/waveform/gstwaveformsink.c b/sys/waveform/gstwaveformsink.c index 3056795518525b19185b7f2176792a26ce629e0c..93414755544726868cc0a3c97343411781d91b40 100644 --- a/sys/waveform/gstwaveformsink.c +++ b/sys/waveform/gstwaveformsink.c @@ -15,8 +15,8 @@ * * 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. +* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +* Boston, MA 02110-1301, USA. */ /** diff --git a/sys/waveform/gstwaveformsink.h b/sys/waveform/gstwaveformsink.h index b23aea145ad86e720f11b36f46103675712af783..340dfc35562793619c2ac5fa7e49671eef6c6d63 100644 --- a/sys/waveform/gstwaveformsink.h +++ b/sys/waveform/gstwaveformsink.h @@ -15,14 +15,15 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_WAVEFORMSINK_H__ #define __GST_WAVEFORMSINK_H__ #include <gst/gst.h> +#include <gst/audio/audio.h> #include <gst/audio/gstaudiosink.h> #include <windows.h> diff --git a/sys/ximage/Makefile.in b/sys/ximage/Makefile.in index 2b3d7a0fb4b84b6e1d7f57e3bbaf0a4bcc79828d..f9b3e1f4c4cb33e140b5bbac4d2ee586d559caa2 100644 --- a/sys/ximage/Makefile.in +++ b/sys/ximage/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,15 +81,14 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = sys/ximage -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -138,10 +164,23 @@ libgstximagesrc_la_OBJECTS = $(am_libgstximagesrc_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libgstximagesrc_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(libgstximagesrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ $(CCLD) $(libgstximagesrc_la_CFLAGS) $(CFLAGS) \ $(libgstximagesrc_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -154,20 +193,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libgstximagesrc_la_SOURCES) DIST_SOURCES = $(libgstximagesrc_la_SOURCES) am__can_run_installinfo = \ @@ -176,6 +211,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -343,6 +395,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -553,6 +606,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \ @@ -579,12 +633,15 @@ uninstall-pluginLTLIBRARIES: clean-pluginLTLIBRARIES: -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES) - @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(plugin_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + libgstximagesrc.la: $(libgstximagesrc_la_OBJECTS) $(libgstximagesrc_la_DEPENDENCIES) $(EXTRA_libgstximagesrc_la_DEPENDENCIES) $(AM_V_CCLD)$(libgstximagesrc_la_LINK) -rpath $(plugindir) $(libgstximagesrc_la_OBJECTS) $(libgstximagesrc_la_LIBADD) $(LIBS) @@ -598,22 +655,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstximagesrc_la-ximageutil.Plo@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -638,26 +698,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -669,15 +718,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -686,6 +731,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -830,19 +890,20 @@ uninstall-am: uninstall-pluginLTLIBRARIES .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-pluginLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pluginLTLIBRARIES \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pluginLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pluginLTLIBRARIES install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pluginLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/sys/ximage/gstximagesrc.c b/sys/ximage/gstximagesrc.c index ff24de9851489f8857caa5e76678226535dbb3b6..644768d8555e5e114f1a22c09e46a4414eb30a68 100644 --- a/sys/ximage/gstximagesrc.c +++ b/sys/ximage/gstximagesrc.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /** @@ -862,7 +862,8 @@ gst_ximage_src_create (GstPushSrc * bs, GstBuffer ** buf) return GST_FLOW_ERROR; *buf = image; - GST_BUFFER_TIMESTAMP (*buf) = next_capture_ts; + GST_BUFFER_DTS (*buf) = GST_CLOCK_TIME_NONE; + GST_BUFFER_PTS (*buf) = next_capture_ts; GST_BUFFER_DURATION (*buf) = dur; return GST_FLOW_OK; diff --git a/sys/ximage/gstximagesrc.h b/sys/ximage/gstximagesrc.h index 7f5275a85a3bff57fa2fde6d77d0ee0c5cc4da78..76506bffc5cd33622106d9d2db9a7fccef358730 100644 --- a/sys/ximage/gstximagesrc.h +++ b/sys/ximage/gstximagesrc.h @@ -12,8 +12,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_XIMAGE_SRC_H__ diff --git a/sys/ximage/ximageutil.c b/sys/ximage/ximageutil.c index 20b2dc2b7cb872e5d7935ff41a20a1710fe49865..76d2866ac0a2d865d4d5308b930bb93fd96d1849 100644 --- a/sys/ximage/ximageutil.c +++ b/sys/ximage/ximageutil.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/sys/ximage/ximageutil.h b/sys/ximage/ximageutil.h index 12f2c1064241355dff14da33b52db21826ddcf7a..d5e88fac8e06feff5042ebc7039dcc76b2333031 100644 --- a/sys/ximage/ximageutil.h +++ b/sys/ximage/ximageutil.h @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_XIMAGEUTIL_H__ diff --git a/test-driver b/test-driver new file mode 100755 index 0000000000000000000000000000000000000000..32bf39e83779d29b4f6aa91eccb386792afaba49 --- /dev/null +++ b/test-driver @@ -0,0 +1,127 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2012-06-27.10; # UTC + +# Copyright (C) 2011-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 +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# 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. + +# This file is maintained in Automake, please report +# bugs to <bug-automake@gnu.org> or send patches to +# <automake-patches@gnu.org>. + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <<END +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 +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. +expect_failure=no +color_tests=no +enable_hard_errors=yes +while test $# -gt 0; do + case $1 in + --help) print_usage; exit $?;; + --version) echo "test-driver $scriptversion"; exit $?;; + --test-name) test_name=$2; shift;; + --log-file) log_file=$2; shift;; + --trs-file) trs_file=$2; shift;; + --color-tests) color_tests=$2; shift;; + --expect-failure) expect_failure=$2; shift;; + --enable-hard-errors) enable_hard_errors=$2; shift;; + --) shift; break;; + -*) usage_error "invalid option: '$1'";; + esac + shift +done + +if test $color_tests = yes; then + # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'. + red='[0;31m' # Red. + grn='[0;32m' # Green. + lgn='[1;32m' # Light green. + blu='[1;34m' # Blue. + mgn='[0;35m' # Magenta. + std='[m' # No color. +else + red= grn= lgn= blu= mgn= std= +fi + +do_exit='rm -f $log_file $trs_file; (exit $st); exit $st' +trap "st=129; $do_exit" 1 +trap "st=130; $do_exit" 2 +trap "st=141; $do_exit" 13 +trap "st=143; $do_exit" 15 + +# Test script is run here. +"$@" >$log_file 2>&1 +estatus=$? +if test $enable_hard_errors = no && test $estatus -eq 99; then + estatus=1 +fi + +case $estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/tests/Makefile.in b/tests/Makefile.in index 238f73dbead880a205c4bafb8bf3025d936734b6..129747979fac3286c4a4b19ca5cd3381f584775a 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,23 +14,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -52,14 +79,13 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -95,21 +121,28 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -117,9 +150,29 @@ am__can_run_installinfo = \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -312,6 +365,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -521,22 +575,25 @@ clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -551,57 +608,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -617,12 +629,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -634,15 +641,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -651,6 +654,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -811,22 +829,20 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index 7177d860350335c16ce16ddcc13164fe4bff22e7..cee4c1bdb792bd0d7396087ef64858608e47b268 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -4,12 +4,12 @@ CHECK_REGISTRY = $(top_builddir)/tests/check/test-registry.reg TEST_FILES_DIRECTORY = $(top_srcdir)/tests/files REGISTRY_ENVIRONMENT = \ - GST_REGISTRY=$(CHECK_REGISTRY) + GST_REGISTRY_1_0=$(CHECK_REGISTRY) TESTS_ENVIRONMENT = \ $(REGISTRY_ENVIRONMENT) \ - GST_PLUGIN_SYSTEM_PATH= \ - GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/ext:$(top_builddir)/sys:$(GSTPB_PLUGINS_DIR):$(GST_PLUGINS_DIR) \ + GST_PLUGIN_SYSTEM_PATH_1_0= \ + GST_PLUGIN_PATH_1_0=$(top_builddir)/gst:$(top_builddir)/ext:$(top_builddir)/sys:$(GSTPB_PLUGINS_DIR):$(GST_PLUGINS_DIR) \ GST_PLUGIN_LOADING_WHITELIST="gstreamer@$(GST_PLUGINS_DIR):gst-plugins-base@$(GSTPB_PLUGINS_DIR):gst-plugins-good@$(top_builddir)" \ GST_STATE_IGNORE_ELEMENTS="aasink autoaudiosrc autoaudiosink autovideosrc autovideosink \ cacasink cairotextoverlay \ @@ -33,7 +33,8 @@ TESTS_ENVIRONMENT = \ # the core dumps of some machines have PIDs appended CLEANFILES = core.* test-registry.* -clean-local: clean-local-check clean-local-orc +clean-local: clean-local-check +distclean-local: distclean-local-orc if USE_FLAC check_flac = pipelines/flacdec @@ -121,6 +122,7 @@ check_PROGRAMS = \ elements/capssetter \ elements/deinterlace \ elements/deinterleave \ + elements/dtmf \ elements/equalizer \ elements/flacparse \ elements/flvdemux \ @@ -133,6 +135,8 @@ check_PROGRAMS = \ elements/matroskamux \ elements/matroskaparse \ elements/mpegaudioparse \ + elements/mulawdec \ + elements/mulawenc \ elements/multifile \ elements/qtmux \ elements/rganalysis \ @@ -142,6 +146,7 @@ check_PROGRAMS = \ elements/rtpbin \ elements/rtpbin_buffer_list \ elements/rtpjitterbuffer \ + elements/rtpmux \ elements/shapewipe \ elements/spectrum \ elements/udpsink \ @@ -149,7 +154,9 @@ check_PROGRAMS = \ elements/videocrop \ elements/videofilter \ elements/wavpackparse \ + elements/wavparse \ elements/y4menc \ + elements/videomixer \ pipelines/simple-launch-lines \ pipelines/effectv \ pipelines/tagschecking \ @@ -252,6 +259,11 @@ elements_alphacolor_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) elements_deinterlace_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) elements_deinterlace_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(LDADD) +elements_dtmf_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \ + $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS) +elements_dtmf_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-@GST_API_VERSION@ \ + $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) + elements_deinterleave_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) elements_deinterleave_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) $(LDADD) elements_interleave_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) @@ -285,6 +297,9 @@ elements_rtpbin_buffer_list_LDADD = $(GST_PLUGINS_BASE_LIBS) \ $(GST_BASE_LIBS) $(GST_LIBS) $(GST_CHECK_LIBS) elements_rtpbin_buffer_list_SOURCES = elements/rtpbin_buffer_list.c +elements_rtpmux_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS) +elements_rtpmux_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD) + elements_souphttpsrc_CFLAGS = $(SOUP_CFLAGS) $(AM_CFLAGS) elements_souphttpsrc_LDADD = $(SOUP_LIBS) $(LDADD) @@ -304,6 +319,9 @@ elements_videocrop_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(CFLA elements_videofilter_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) elements_videofilter_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(LDADD) +elements_rtpjitterbuffer_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) +elements_rtpjitterbuffer_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-$(GST_API_VERSION) $(LDADD) + # FIXME: configure should check for gdk-pixbuf not gtk # only need video.h header, not the lib elements_gdkpixbufsink_CFLAGS = \ @@ -311,6 +329,8 @@ elements_gdkpixbufsink_CFLAGS = \ elements_gdkpixbufsink_LDADD = \ $(LDADD) $(GDK_PIXBUF_LIBS) +elements_videomixer_LDADD = $(LDADD) $(GST_BASE_LIBS) +elements_videomixer_CFLAGS = $(GST_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) pipelines_flacdec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) pipelines_flacdec_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) $(LDADD) @@ -335,7 +355,7 @@ orc/deinterlace.c: $(top_srcdir)/gst/deinterlace/tvtime.orc $(MKDIR_P) orc/ $(ORCC) --test -o $@ $< -orc/videomixer.c: $(top_srcdir)/gst/videomixer/blendorc.orc +orc/videomixer.c: $(top_srcdir)/gst/videomixer/videomixerorc.orc $(MKDIR_P) orc/ $(ORCC) --test -o $@ $< @@ -343,7 +363,7 @@ orc/videobox.c: $(top_srcdir)/gst/videobox/gstvideoboxorc.orc $(MKDIR_P) orc/ $(ORCC) --test -o $@ $< -clean-local-orc: +distclean-local-orc: rm -rf orc EXTRA_DIST = gst-plugins-good.supp diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in index e5bdabb1864d0eb07dee3fa26a2a25c191729529..d1b0bb22c6cbfa44072874bfc25dd8d1c209decb 100644 --- a/tests/check/Makefile.in +++ b/tests/check/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -52,8 +79,9 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/common/check.mak +DIST_COMMON = $(top_srcdir)/common/check.mak $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/depcomp \ + $(top_srcdir)/test-driver check_PROGRAMS = generic/states$(EXEEXT) elements/aacparse$(EXEEXT) \ elements/ac3parse$(EXEEXT) elements/amrparse$(EXEEXT) \ elements/alphacolor$(EXEEXT) elements/aspectratiocrop$(EXEEXT) \ @@ -67,22 +95,25 @@ check_PROGRAMS = generic/states$(EXEEXT) elements/aacparse$(EXEEXT) \ elements/audiowsinclimit$(EXEEXT) elements/autodetect$(EXEEXT) \ elements/avimux$(EXEEXT) elements/avisubtitle$(EXEEXT) \ elements/capssetter$(EXEEXT) elements/deinterlace$(EXEEXT) \ - elements/deinterleave$(EXEEXT) elements/equalizer$(EXEEXT) \ - elements/flacparse$(EXEEXT) elements/flvdemux$(EXEEXT) \ - elements/flvmux$(EXEEXT) elements/icydemux$(EXEEXT) \ - elements/id3demux$(EXEEXT) elements/imagefreeze$(EXEEXT) \ - elements/interleave$(EXEEXT) elements/level$(EXEEXT) \ - elements/matroskamux$(EXEEXT) elements/matroskaparse$(EXEEXT) \ - elements/mpegaudioparse$(EXEEXT) elements/multifile$(EXEEXT) \ + elements/deinterleave$(EXEEXT) elements/dtmf$(EXEEXT) \ + elements/equalizer$(EXEEXT) elements/flacparse$(EXEEXT) \ + elements/flvdemux$(EXEEXT) elements/flvmux$(EXEEXT) \ + elements/icydemux$(EXEEXT) elements/id3demux$(EXEEXT) \ + elements/imagefreeze$(EXEEXT) elements/interleave$(EXEEXT) \ + elements/level$(EXEEXT) elements/matroskamux$(EXEEXT) \ + elements/matroskaparse$(EXEEXT) \ + elements/mpegaudioparse$(EXEEXT) elements/mulawdec$(EXEEXT) \ + elements/mulawenc$(EXEEXT) elements/multifile$(EXEEXT) \ elements/qtmux$(EXEEXT) elements/rganalysis$(EXEEXT) \ elements/rglimiter$(EXEEXT) elements/rgvolume$(EXEEXT) \ elements/rtp-payloading$(EXEEXT) elements/rtpbin$(EXEEXT) \ elements/rtpbin_buffer_list$(EXEEXT) \ - elements/rtpjitterbuffer$(EXEEXT) elements/shapewipe$(EXEEXT) \ - elements/spectrum$(EXEEXT) elements/udpsink$(EXEEXT) \ - elements/udpsrc$(EXEEXT) elements/videocrop$(EXEEXT) \ - elements/videofilter$(EXEEXT) elements/wavpackparse$(EXEEXT) \ - elements/y4menc$(EXEEXT) \ + elements/rtpjitterbuffer$(EXEEXT) elements/rtpmux$(EXEEXT) \ + elements/shapewipe$(EXEEXT) elements/spectrum$(EXEEXT) \ + elements/udpsink$(EXEEXT) elements/udpsrc$(EXEEXT) \ + elements/videocrop$(EXEEXT) elements/videofilter$(EXEEXT) \ + elements/wavpackparse$(EXEEXT) elements/wavparse$(EXEEXT) \ + elements/y4menc$(EXEEXT) elements/videomixer$(EXEEXT) \ pipelines/simple-launch-lines$(EXEEXT) \ pipelines/effectv$(EXEEXT) pipelines/tagschecking$(EXEEXT) \ pipelines/wavenc$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \ @@ -96,7 +127,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -134,11 +164,13 @@ CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libparser_la_LIBADD = -am_libparser_la_OBJECTS = libparser_la-parser.lo +am__dirstamp = $(am__leading_dot)dirstamp +am_libparser_la_OBJECTS = elements/libparser_la-parser.lo libparser_la_OBJECTS = $(am_libparser_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = libparser_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libparser_la_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ @@ -158,17 +190,16 @@ libparser_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ @HAVE_ORC_TRUE@am__EXEEXT_9 = orc/deinterlace$(EXEEXT) \ @HAVE_ORC_TRUE@ orc/videomixer$(EXEEXT) orc/videobox$(EXEEXT) elements_aacparse_SOURCES = elements/aacparse.c -elements_aacparse_OBJECTS = aacparse.$(OBJEXT) +elements_aacparse_OBJECTS = elements/aacparse.$(OBJEXT) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) elements_aacparse_DEPENDENCIES = libparser.la $(am__DEPENDENCIES_2) -am__dirstamp = $(am__leading_dot)dirstamp elements_ac3parse_SOURCES = elements/ac3parse.c -elements_ac3parse_OBJECTS = ac3parse.$(OBJEXT) +elements_ac3parse_OBJECTS = elements/ac3parse.$(OBJEXT) elements_ac3parse_DEPENDENCIES = libparser.la $(am__DEPENDENCIES_2) elements_alphacolor_SOURCES = elements/alphacolor.c elements_alphacolor_OBJECTS = \ - elements_alphacolor-alphacolor.$(OBJEXT) + elements/elements_alphacolor-alphacolor.$(OBJEXT) elements_alphacolor_LDADD = $(LDADD) elements_alphacolor_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_alphacolor_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -176,15 +207,15 @@ elements_alphacolor_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_alphacolor_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_amrparse_SOURCES = elements/amrparse.c -elements_amrparse_OBJECTS = amrparse.$(OBJEXT) +elements_amrparse_OBJECTS = elements/amrparse.$(OBJEXT) elements_amrparse_DEPENDENCIES = libparser.la $(am__DEPENDENCIES_2) elements_apev2mux_SOURCES = elements/apev2mux.c -elements_apev2mux_OBJECTS = apev2mux.$(OBJEXT) +elements_apev2mux_OBJECTS = elements/apev2mux.$(OBJEXT) elements_apev2mux_LDADD = $(LDADD) elements_apev2mux_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_aspectratiocrop_SOURCES = elements/aspectratiocrop.c elements_aspectratiocrop_OBJECTS = \ - elements_aspectratiocrop-aspectratiocrop.$(OBJEXT) + elements/elements_aspectratiocrop-aspectratiocrop.$(OBJEXT) elements_aspectratiocrop_DEPENDENCIES = $(am__DEPENDENCIES_2) elements_aspectratiocrop_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ @@ -192,7 +223,7 @@ elements_aspectratiocrop_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ elements_audioamplify_SOURCES = elements/audioamplify.c elements_audioamplify_OBJECTS = \ - elements_audioamplify-audioamplify.$(OBJEXT) + elements/elements_audioamplify-audioamplify.$(OBJEXT) elements_audioamplify_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_audioamplify_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -201,7 +232,7 @@ elements_audioamplify_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ elements_audiochebband_SOURCES = elements/audiochebband.c elements_audiochebband_OBJECTS = \ - elements_audiochebband-audiochebband.$(OBJEXT) + elements/elements_audiochebband-audiochebband.$(OBJEXT) elements_audiochebband_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_audiochebband_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -210,7 +241,7 @@ elements_audiochebband_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ elements_audiocheblimit_SOURCES = elements/audiocheblimit.c elements_audiocheblimit_OBJECTS = \ - elements_audiocheblimit-audiocheblimit.$(OBJEXT) + elements/elements_audiocheblimit-audiocheblimit.$(OBJEXT) elements_audiocheblimit_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_audiocheblimit_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -219,7 +250,7 @@ elements_audiocheblimit_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ elements_audiodynamic_SOURCES = elements/audiodynamic.c elements_audiodynamic_OBJECTS = \ - elements_audiodynamic-audiodynamic.$(OBJEXT) + elements/elements_audiodynamic-audiodynamic.$(OBJEXT) elements_audiodynamic_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_audiodynamic_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -227,7 +258,8 @@ elements_audiodynamic_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_audiodynamic_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_audioecho_SOURCES = elements/audioecho.c -elements_audioecho_OBJECTS = elements_audioecho-audioecho.$(OBJEXT) +elements_audioecho_OBJECTS = \ + elements/elements_audioecho-audioecho.$(OBJEXT) elements_audioecho_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_audioecho_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -235,16 +267,16 @@ elements_audioecho_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_audioecho_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_audiofirfilter_SOURCES = elements/audiofirfilter.c -elements_audiofirfilter_OBJECTS = audiofirfilter.$(OBJEXT) +elements_audiofirfilter_OBJECTS = elements/audiofirfilter.$(OBJEXT) elements_audiofirfilter_LDADD = $(LDADD) elements_audiofirfilter_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_audioiirfilter_SOURCES = elements/audioiirfilter.c -elements_audioiirfilter_OBJECTS = audioiirfilter.$(OBJEXT) +elements_audioiirfilter_OBJECTS = elements/audioiirfilter.$(OBJEXT) elements_audioiirfilter_LDADD = $(LDADD) elements_audioiirfilter_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_audioinvert_SOURCES = elements/audioinvert.c elements_audioinvert_OBJECTS = \ - elements_audioinvert-audioinvert.$(OBJEXT) + elements/elements_audioinvert-audioinvert.$(OBJEXT) elements_audioinvert_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_audioinvert_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -253,7 +285,7 @@ elements_audioinvert_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ elements_audiopanorama_SOURCES = elements/audiopanorama.c elements_audiopanorama_OBJECTS = \ - elements_audiopanorama-audiopanorama.$(OBJEXT) + elements/elements_audiopanorama-audiopanorama.$(OBJEXT) elements_audiopanorama_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) @@ -263,7 +295,7 @@ elements_audiopanorama_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ elements_audiowsincband_SOURCES = elements/audiowsincband.c elements_audiowsincband_OBJECTS = \ - elements_audiowsincband-audiowsincband.$(OBJEXT) + elements/elements_audiowsincband-audiowsincband.$(OBJEXT) elements_audiowsincband_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_audiowsincband_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -272,7 +304,7 @@ elements_audiowsincband_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ elements_audiowsinclimit_SOURCES = elements/audiowsinclimit.c elements_audiowsinclimit_OBJECTS = \ - elements_audiowsinclimit-audiowsinclimit.$(OBJEXT) + elements/elements_audiowsinclimit-audiowsinclimit.$(OBJEXT) elements_audiowsinclimit_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_audiowsinclimit_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -280,24 +312,24 @@ elements_audiowsinclimit_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_audiowsinclimit_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_autodetect_SOURCES = elements/autodetect.c -elements_autodetect_OBJECTS = autodetect.$(OBJEXT) +elements_autodetect_OBJECTS = elements/autodetect.$(OBJEXT) elements_autodetect_LDADD = $(LDADD) elements_autodetect_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_avimux_SOURCES = elements/avimux.c -elements_avimux_OBJECTS = avimux.$(OBJEXT) +elements_avimux_OBJECTS = elements/avimux.$(OBJEXT) elements_avimux_LDADD = $(LDADD) elements_avimux_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_avisubtitle_SOURCES = elements/avisubtitle.c -elements_avisubtitle_OBJECTS = avisubtitle.$(OBJEXT) +elements_avisubtitle_OBJECTS = elements/avisubtitle.$(OBJEXT) elements_avisubtitle_LDADD = $(LDADD) elements_avisubtitle_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_capssetter_SOURCES = elements/capssetter.c -elements_capssetter_OBJECTS = capssetter.$(OBJEXT) +elements_capssetter_OBJECTS = elements/capssetter.$(OBJEXT) elements_capssetter_LDADD = $(LDADD) elements_capssetter_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_deinterlace_SOURCES = elements/deinterlace.c elements_deinterlace_OBJECTS = \ - elements_deinterlace-deinterlace.$(OBJEXT) + elements/elements_deinterlace-deinterlace.$(OBJEXT) elements_deinterlace_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_deinterlace_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -306,15 +338,24 @@ elements_deinterlace_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ elements_deinterleave_SOURCES = elements/deinterleave.c elements_deinterleave_OBJECTS = \ - elements_deinterleave-deinterleave.$(OBJEXT) + elements/elements_deinterleave-deinterleave.$(OBJEXT) elements_deinterleave_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_deinterleave_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(elements_deinterleave_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ +elements_dtmf_SOURCES = elements/dtmf.c +elements_dtmf_OBJECTS = elements/elements_dtmf-dtmf.$(OBJEXT) +elements_dtmf_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_2) +elements_dtmf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(elements_dtmf_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ elements_equalizer_SOURCES = elements/equalizer.c -elements_equalizer_OBJECTS = elements_equalizer-equalizer.$(OBJEXT) +elements_equalizer_OBJECTS = \ + elements/elements_equalizer-equalizer.$(OBJEXT) elements_equalizer_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_equalizer_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -322,19 +363,19 @@ elements_equalizer_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_equalizer_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_flacparse_SOURCES = elements/flacparse.c -elements_flacparse_OBJECTS = flacparse.$(OBJEXT) +elements_flacparse_OBJECTS = elements/flacparse.$(OBJEXT) elements_flacparse_DEPENDENCIES = libparser.la $(am__DEPENDENCIES_2) elements_flvdemux_SOURCES = elements/flvdemux.c -elements_flvdemux_OBJECTS = flvdemux.$(OBJEXT) +elements_flvdemux_OBJECTS = elements/flvdemux.$(OBJEXT) elements_flvdemux_LDADD = $(LDADD) elements_flvdemux_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_flvmux_SOURCES = elements/flvmux.c -elements_flvmux_OBJECTS = flvmux.$(OBJEXT) +elements_flvmux_OBJECTS = elements/flvmux.$(OBJEXT) elements_flvmux_LDADD = $(LDADD) elements_flvmux_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_gdkpixbufsink_SOURCES = elements/gdkpixbufsink.c elements_gdkpixbufsink_OBJECTS = \ - elements_gdkpixbufsink-gdkpixbufsink.$(OBJEXT) + elements/elements_gdkpixbufsink-gdkpixbufsink.$(OBJEXT) elements_gdkpixbufsink_DEPENDENCIES = $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_1) elements_gdkpixbufsink_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -342,20 +383,20 @@ elements_gdkpixbufsink_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_gdkpixbufsink_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_icydemux_SOURCES = elements/icydemux.c -elements_icydemux_OBJECTS = icydemux.$(OBJEXT) +elements_icydemux_OBJECTS = elements/icydemux.$(OBJEXT) elements_icydemux_LDADD = $(LDADD) elements_icydemux_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_id3demux_SOURCES = elements/id3demux.c -elements_id3demux_OBJECTS = id3demux.$(OBJEXT) +elements_id3demux_OBJECTS = elements/id3demux.$(OBJEXT) elements_id3demux_LDADD = $(LDADD) elements_id3demux_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_id3v2mux_SOURCES = elements/id3v2mux.c -elements_id3v2mux_OBJECTS = id3v2mux.$(OBJEXT) +elements_id3v2mux_OBJECTS = elements/id3v2mux.$(OBJEXT) elements_id3v2mux_LDADD = $(LDADD) elements_id3v2mux_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_imagefreeze_SOURCES = elements/imagefreeze.c elements_imagefreeze_OBJECTS = \ - elements_imagefreeze-imagefreeze.$(OBJEXT) + elements/elements_imagefreeze-imagefreeze.$(OBJEXT) elements_imagefreeze_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) elements_imagefreeze_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -364,7 +405,7 @@ elements_imagefreeze_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ elements_interleave_SOURCES = elements/interleave.c elements_interleave_OBJECTS = \ - elements_interleave-interleave.$(OBJEXT) + elements/elements_interleave-interleave.$(OBJEXT) elements_interleave_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_interleave_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -372,7 +413,8 @@ elements_interleave_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_interleave_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_jpegdec_SOURCES = elements/jpegdec.c -elements_jpegdec_OBJECTS = elements_jpegdec-jpegdec.$(OBJEXT) +elements_jpegdec_OBJECTS = \ + elements/elements_jpegdec-jpegdec.$(OBJEXT) elements_jpegdec_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) @@ -381,7 +423,8 @@ elements_jpegdec_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_jpegdec_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ elements_jpegenc_SOURCES = elements/jpegenc.c -elements_jpegenc_OBJECTS = elements_jpegenc-jpegenc.$(OBJEXT) +elements_jpegenc_OBJECTS = \ + elements/elements_jpegenc-jpegenc.$(OBJEXT) elements_jpegenc_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) elements_jpegenc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -389,7 +432,7 @@ elements_jpegenc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_jpegenc_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ elements_level_SOURCES = elements/level.c -elements_level_OBJECTS = elements_level-level.$(OBJEXT) +elements_level_OBJECTS = elements/elements_level-level.$(OBJEXT) elements_level_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_level_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -397,19 +440,28 @@ elements_level_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_level_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ elements_matroskamux_SOURCES = elements/matroskamux.c -elements_matroskamux_OBJECTS = matroskamux.$(OBJEXT) +elements_matroskamux_OBJECTS = elements/matroskamux.$(OBJEXT) elements_matroskamux_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) elements_matroskaparse_SOURCES = elements/matroskaparse.c -elements_matroskaparse_OBJECTS = matroskaparse.$(OBJEXT) +elements_matroskaparse_OBJECTS = elements/matroskaparse.$(OBJEXT) elements_matroskaparse_LDADD = $(LDADD) elements_matroskaparse_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_mpegaudioparse_SOURCES = elements/mpegaudioparse.c -elements_mpegaudioparse_OBJECTS = mpegaudioparse.$(OBJEXT) +elements_mpegaudioparse_OBJECTS = elements/mpegaudioparse.$(OBJEXT) elements_mpegaudioparse_DEPENDENCIES = libparser.la \ $(am__DEPENDENCIES_2) +elements_mulawdec_SOURCES = elements/mulawdec.c +elements_mulawdec_OBJECTS = elements/mulawdec.$(OBJEXT) +elements_mulawdec_LDADD = $(LDADD) +elements_mulawdec_DEPENDENCIES = $(am__DEPENDENCIES_1) +elements_mulawenc_SOURCES = elements/mulawenc.c +elements_mulawenc_OBJECTS = elements/mulawenc.$(OBJEXT) +elements_mulawenc_LDADD = $(LDADD) +elements_mulawenc_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_multifile_SOURCES = elements/multifile.c -elements_multifile_OBJECTS = elements_multifile-multifile.$(OBJEXT) +elements_multifile_OBJECTS = \ + elements/elements_multifile-multifile.$(OBJEXT) elements_multifile_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_1) @@ -418,7 +470,7 @@ elements_multifile_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_multifile_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_qtmux_SOURCES = elements/qtmux.c -elements_qtmux_OBJECTS = elements_qtmux-qtmux.$(OBJEXT) +elements_qtmux_OBJECTS = elements/elements_qtmux-qtmux.$(OBJEXT) elements_qtmux_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) @@ -428,7 +480,7 @@ elements_qtmux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $@ elements_rganalysis_SOURCES = elements/rganalysis.c elements_rganalysis_OBJECTS = \ - elements_rganalysis-rganalysis.$(OBJEXT) + elements/elements_rganalysis-rganalysis.$(OBJEXT) elements_rganalysis_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_rganalysis_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -436,7 +488,8 @@ elements_rganalysis_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_rganalysis_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_rglimiter_SOURCES = elements/rglimiter.c -elements_rglimiter_OBJECTS = elements_rglimiter-rglimiter.$(OBJEXT) +elements_rglimiter_OBJECTS = \ + elements/elements_rglimiter-rglimiter.$(OBJEXT) elements_rglimiter_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_rglimiter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -444,7 +497,8 @@ elements_rglimiter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_rglimiter_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_rgvolume_SOURCES = elements/rgvolume.c -elements_rgvolume_OBJECTS = elements_rgvolume-rgvolume.$(OBJEXT) +elements_rgvolume_OBJECTS = \ + elements/elements_rgvolume-rgvolume.$(OBJEXT) elements_rgvolume_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_rgvolume_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -452,15 +506,14 @@ elements_rgvolume_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_rgvolume_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ elements_rtp_payloading_SOURCES = elements/rtp-payloading.c -elements_rtp_payloading_OBJECTS = rtp-payloading.$(OBJEXT) +elements_rtp_payloading_OBJECTS = elements/rtp-payloading.$(OBJEXT) elements_rtp_payloading_LDADD = $(LDADD) elements_rtp_payloading_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_rtpbin_SOURCES = elements/rtpbin.c -elements_rtpbin_OBJECTS = rtpbin.$(OBJEXT) +elements_rtpbin_OBJECTS = elements/rtpbin.$(OBJEXT) elements_rtpbin_LDADD = $(LDADD) elements_rtpbin_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_elements_rtpbin_buffer_list_OBJECTS = \ - elements_rtpbin_buffer_list-rtpbin_buffer_list.$(OBJEXT) +am_elements_rtpbin_buffer_list_OBJECTS = elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.$(OBJEXT) elements_rtpbin_buffer_list_OBJECTS = \ $(am_elements_rtpbin_buffer_list_OBJECTS) elements_rtpbin_buffer_list_DEPENDENCIES = $(am__DEPENDENCIES_1) \ @@ -471,16 +524,29 @@ elements_rtpbin_buffer_list_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_rtpbin_buffer_list_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_rtpjitterbuffer_SOURCES = elements/rtpjitterbuffer.c -elements_rtpjitterbuffer_OBJECTS = rtpjitterbuffer.$(OBJEXT) -elements_rtpjitterbuffer_LDADD = $(LDADD) -elements_rtpjitterbuffer_DEPENDENCIES = $(am__DEPENDENCIES_1) +elements_rtpjitterbuffer_OBJECTS = \ + elements/elements_rtpjitterbuffer-rtpjitterbuffer.$(OBJEXT) +elements_rtpjitterbuffer_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_2) +elements_rtpjitterbuffer_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(elements_rtpjitterbuffer_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +elements_rtpmux_SOURCES = elements/rtpmux.c +elements_rtpmux_OBJECTS = elements/elements_rtpmux-rtpmux.$(OBJEXT) +elements_rtpmux_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) +elements_rtpmux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(elements_rtpmux_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ elements_shapewipe_SOURCES = elements/shapewipe.c -elements_shapewipe_OBJECTS = shapewipe.$(OBJEXT) +elements_shapewipe_OBJECTS = elements/shapewipe.$(OBJEXT) elements_shapewipe_LDADD = $(LDADD) elements_shapewipe_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_souphttpsrc_SOURCES = elements/souphttpsrc.c elements_souphttpsrc_OBJECTS = \ - elements_souphttpsrc-souphttpsrc.$(OBJEXT) + elements/elements_souphttpsrc-souphttpsrc.$(OBJEXT) elements_souphttpsrc_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_souphttpsrc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -488,7 +554,8 @@ elements_souphttpsrc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_souphttpsrc_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ elements_spectrum_SOURCES = elements/spectrum.c -elements_spectrum_OBJECTS = elements_spectrum-spectrum.$(OBJEXT) +elements_spectrum_OBJECTS = \ + elements/elements_spectrum-spectrum.$(OBJEXT) elements_spectrum_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_spectrum_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -496,7 +563,8 @@ elements_spectrum_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_spectrum_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ elements_sunaudio_SOURCES = elements/sunaudio.c -elements_sunaudio_OBJECTS = elements_sunaudio-sunaudio.$(OBJEXT) +elements_sunaudio_OBJECTS = \ + elements/elements_sunaudio-sunaudio.$(OBJEXT) elements_sunaudio_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_sunaudio_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -504,11 +572,11 @@ elements_sunaudio_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_sunaudio_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ elements_udpsink_SOURCES = elements/udpsink.c -elements_udpsink_OBJECTS = udpsink.$(OBJEXT) +elements_udpsink_OBJECTS = elements/udpsink.$(OBJEXT) elements_udpsink_LDADD = $(LDADD) elements_udpsink_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_udpsrc_SOURCES = elements/udpsrc.c -elements_udpsrc_OBJECTS = elements_udpsrc-udpsrc.$(OBJEXT) +elements_udpsrc_OBJECTS = elements/elements_udpsrc-udpsrc.$(OBJEXT) elements_udpsrc_DEPENDENCIES = $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_1) elements_udpsrc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -516,7 +584,8 @@ elements_udpsrc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(elements_udpsrc_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ elements_videocrop_SOURCES = elements/videocrop.c -elements_videocrop_OBJECTS = elements_videocrop-videocrop.$(OBJEXT) +elements_videocrop_OBJECTS = \ + elements/elements_videocrop-videocrop.$(OBJEXT) elements_videocrop_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) elements_videocrop_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -525,56 +594,70 @@ elements_videocrop_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ elements_videofilter_SOURCES = elements/videofilter.c elements_videofilter_OBJECTS = \ - elements_videofilter-videofilter.$(OBJEXT) + elements/elements_videofilter-videofilter.$(OBJEXT) elements_videofilter_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) elements_videofilter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(elements_videofilter_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ +elements_videomixer_SOURCES = elements/videomixer.c +elements_videomixer_OBJECTS = \ + elements/elements_videomixer-videomixer.$(OBJEXT) +elements_videomixer_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +elements_videomixer_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(elements_videomixer_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ elements_vp8dec_SOURCES = elements/vp8dec.c -elements_vp8dec_OBJECTS = vp8dec.$(OBJEXT) +elements_vp8dec_OBJECTS = elements/vp8dec.$(OBJEXT) elements_vp8dec_LDADD = $(LDADD) elements_vp8dec_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_vp8enc_SOURCES = elements/vp8enc.c -elements_vp8enc_OBJECTS = vp8enc.$(OBJEXT) +elements_vp8enc_OBJECTS = elements/vp8enc.$(OBJEXT) elements_vp8enc_LDADD = $(LDADD) elements_vp8enc_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_wavpackdec_SOURCES = elements/wavpackdec.c -elements_wavpackdec_OBJECTS = wavpackdec.$(OBJEXT) +elements_wavpackdec_OBJECTS = elements/wavpackdec.$(OBJEXT) elements_wavpackdec_LDADD = $(LDADD) elements_wavpackdec_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_wavpackenc_SOURCES = elements/wavpackenc.c -elements_wavpackenc_OBJECTS = wavpackenc.$(OBJEXT) +elements_wavpackenc_OBJECTS = elements/wavpackenc.$(OBJEXT) elements_wavpackenc_LDADD = $(LDADD) elements_wavpackenc_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_wavpackparse_SOURCES = elements/wavpackparse.c -elements_wavpackparse_OBJECTS = wavpackparse.$(OBJEXT) +elements_wavpackparse_OBJECTS = elements/wavpackparse.$(OBJEXT) elements_wavpackparse_LDADD = $(LDADD) elements_wavpackparse_DEPENDENCIES = $(am__DEPENDENCIES_1) +elements_wavparse_SOURCES = elements/wavparse.c +elements_wavparse_OBJECTS = elements/wavparse.$(OBJEXT) +elements_wavparse_LDADD = $(LDADD) +elements_wavparse_DEPENDENCIES = $(am__DEPENDENCIES_1) elements_y4menc_SOURCES = elements/y4menc.c -elements_y4menc_OBJECTS = y4menc.$(OBJEXT) +elements_y4menc_OBJECTS = elements/y4menc.$(OBJEXT) elements_y4menc_LDADD = $(LDADD) elements_y4menc_DEPENDENCIES = $(am__DEPENDENCIES_1) generic_states_SOURCES = generic/states.c -generic_states_OBJECTS = states.$(OBJEXT) +generic_states_OBJECTS = generic/states.$(OBJEXT) generic_states_LDADD = $(LDADD) generic_states_DEPENDENCIES = $(am__DEPENDENCIES_1) nodist_orc_deinterlace_OBJECTS = \ - orc_deinterlace-deinterlace.$(OBJEXT) + orc/orc_deinterlace-deinterlace.$(OBJEXT) orc_deinterlace_OBJECTS = $(nodist_orc_deinterlace_OBJECTS) orc_deinterlace_DEPENDENCIES = $(am__DEPENDENCIES_1) orc_deinterlace_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(orc_deinterlace_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ -nodist_orc_videobox_OBJECTS = orc_videobox-videobox.$(OBJEXT) +nodist_orc_videobox_OBJECTS = orc/orc_videobox-videobox.$(OBJEXT) orc_videobox_OBJECTS = $(nodist_orc_videobox_OBJECTS) orc_videobox_DEPENDENCIES = $(am__DEPENDENCIES_1) orc_videobox_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(orc_videobox_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -nodist_orc_videomixer_OBJECTS = orc_videomixer-videomixer.$(OBJEXT) +nodist_orc_videomixer_OBJECTS = \ + orc/orc_videomixer-videomixer.$(OBJEXT) orc_videomixer_OBJECTS = $(nodist_orc_videomixer_OBJECTS) orc_videomixer_DEPENDENCIES = $(am__DEPENDENCIES_1) orc_videomixer_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -582,11 +665,12 @@ orc_videomixer_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(orc_videomixer_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ pipelines_effectv_SOURCES = pipelines/effectv.c -pipelines_effectv_OBJECTS = effectv.$(OBJEXT) +pipelines_effectv_OBJECTS = pipelines/effectv.$(OBJEXT) pipelines_effectv_LDADD = $(LDADD) pipelines_effectv_DEPENDENCIES = $(am__DEPENDENCIES_1) pipelines_flacdec_SOURCES = pipelines/flacdec.c -pipelines_flacdec_OBJECTS = pipelines_flacdec-flacdec.$(OBJEXT) +pipelines_flacdec_OBJECTS = \ + pipelines/pipelines_flacdec-flacdec.$(OBJEXT) pipelines_flacdec_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) pipelines_flacdec_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -595,15 +679,17 @@ pipelines_flacdec_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ -o $@ pipelines_simple_launch_lines_SOURCES = \ pipelines/simple-launch-lines.c -pipelines_simple_launch_lines_OBJECTS = simple-launch-lines.$(OBJEXT) +pipelines_simple_launch_lines_OBJECTS = \ + pipelines/simple-launch-lines.$(OBJEXT) pipelines_simple_launch_lines_LDADD = $(LDADD) pipelines_simple_launch_lines_DEPENDENCIES = $(am__DEPENDENCIES_1) pipelines_tagschecking_SOURCES = pipelines/tagschecking.c -pipelines_tagschecking_OBJECTS = tagschecking.$(OBJEXT) +pipelines_tagschecking_OBJECTS = pipelines/tagschecking.$(OBJEXT) pipelines_tagschecking_LDADD = $(LDADD) pipelines_tagschecking_DEPENDENCIES = $(am__DEPENDENCIES_1) pipelines_wavenc_SOURCES = pipelines/wavenc.c -pipelines_wavenc_OBJECTS = pipelines_wavenc-wavenc.$(OBJEXT) +pipelines_wavenc_OBJECTS = \ + pipelines/pipelines_wavenc-wavenc.$(OBJEXT) pipelines_wavenc_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) pipelines_wavenc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -611,13 +697,26 @@ pipelines_wavenc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(pipelines_wavenc_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ pipelines_wavpack_SOURCES = pipelines/wavpack.c -pipelines_wavpack_OBJECTS = pipelines_wavpack-wavpack.$(OBJEXT) +pipelines_wavpack_OBJECTS = \ + pipelines/pipelines_wavpack-wavpack.$(OBJEXT) pipelines_wavpack_DEPENDENCIES = $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_1) pipelines_wavpack_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(pipelines_wavpack_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -630,20 +729,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libparser_la_SOURCES) elements/aacparse.c \ elements/ac3parse.c elements/alphacolor.c elements/amrparse.c \ elements/apev2mux.c elements/aspectratiocrop.c \ @@ -654,24 +749,25 @@ SOURCES = $(libparser_la_SOURCES) elements/aacparse.c \ elements/audiopanorama.c elements/audiowsincband.c \ elements/audiowsinclimit.c elements/autodetect.c \ elements/avimux.c elements/avisubtitle.c elements/capssetter.c \ - elements/deinterlace.c elements/deinterleave.c \ + elements/deinterlace.c elements/deinterleave.c elements/dtmf.c \ elements/equalizer.c elements/flacparse.c elements/flvdemux.c \ elements/flvmux.c elements/gdkpixbufsink.c elements/icydemux.c \ elements/id3demux.c elements/id3v2mux.c elements/imagefreeze.c \ elements/interleave.c elements/jpegdec.c elements/jpegenc.c \ elements/level.c elements/matroskamux.c \ elements/matroskaparse.c elements/mpegaudioparse.c \ - elements/multifile.c elements/qtmux.c elements/rganalysis.c \ - elements/rglimiter.c elements/rgvolume.c \ - elements/rtp-payloading.c elements/rtpbin.c \ - $(elements_rtpbin_buffer_list_SOURCES) \ - elements/rtpjitterbuffer.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/vp8dec.c elements/vp8enc.c \ + elements/mulawdec.c elements/mulawenc.c elements/multifile.c \ + elements/qtmux.c elements/rganalysis.c elements/rglimiter.c \ + elements/rgvolume.c elements/rtp-payloading.c \ + elements/rtpbin.c $(elements_rtpbin_buffer_list_SOURCES) \ + elements/rtpjitterbuffer.c elements/rtpmux.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/wavpackparse.c elements/y4menc.c generic/states.c \ - $(nodist_orc_deinterlace_SOURCES) \ + elements/wavpackparse.c elements/wavparse.c elements/y4menc.c \ + generic/states.c $(nodist_orc_deinterlace_SOURCES) \ $(nodist_orc_videobox_SOURCES) \ $(nodist_orc_videomixer_SOURCES) pipelines/effectv.c \ pipelines/flacdec.c pipelines/simple-launch-lines.c \ @@ -687,24 +783,25 @@ DIST_SOURCES = $(libparser_la_SOURCES) elements/aacparse.c \ elements/audiopanorama.c elements/audiowsincband.c \ elements/audiowsinclimit.c elements/autodetect.c \ elements/avimux.c elements/avisubtitle.c elements/capssetter.c \ - elements/deinterlace.c elements/deinterleave.c \ + elements/deinterlace.c elements/deinterleave.c elements/dtmf.c \ elements/equalizer.c elements/flacparse.c elements/flvdemux.c \ elements/flvmux.c elements/gdkpixbufsink.c elements/icydemux.c \ elements/id3demux.c elements/id3v2mux.c elements/imagefreeze.c \ elements/interleave.c elements/jpegdec.c elements/jpegenc.c \ elements/level.c elements/matroskamux.c \ elements/matroskaparse.c elements/mpegaudioparse.c \ - elements/multifile.c elements/qtmux.c elements/rganalysis.c \ - elements/rglimiter.c elements/rgvolume.c \ - elements/rtp-payloading.c elements/rtpbin.c \ - $(elements_rtpbin_buffer_list_SOURCES) \ - elements/rtpjitterbuffer.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/vp8dec.c elements/vp8enc.c \ + elements/mulawdec.c elements/mulawenc.c elements/multifile.c \ + elements/qtmux.c elements/rganalysis.c elements/rglimiter.c \ + elements/rgvolume.c elements/rtp-payloading.c \ + elements/rtpbin.c $(elements_rtpbin_buffer_list_SOURCES) \ + elements/rtpjitterbuffer.c elements/rtpmux.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/wavpackparse.c elements/y4menc.c generic/states.c \ - pipelines/effectv.c pipelines/flacdec.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 \ pipelines/wavenc.c pipelines/wavpack.c am__can_run_installinfo = \ @@ -712,10 +809,229 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red='[0;31m'; \ + grn='[0;32m'; \ + lgn='[1;32m'; \ + blu='[1;34m'; \ + mgn='[0;35m'; \ + brg='[1m'; \ + std='[m'; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) AALIB_CFLAGS = @AALIB_CFLAGS@ AALIB_CONFIG = @AALIB_CONFIG@ @@ -881,6 +1197,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -1041,19 +1358,18 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -LOOPS = 10 # inspect every plugin feature GST_INSPECT = $(GST_TOOLS_DIR)/gst-inspect-$(GST_API_VERSION) CHECK_REGISTRY = $(top_builddir)/tests/check/test-registry.reg TEST_FILES_DIRECTORY = $(top_srcdir)/tests/files REGISTRY_ENVIRONMENT = \ - GST_REGISTRY=$(CHECK_REGISTRY) + GST_REGISTRY_1_0=$(CHECK_REGISTRY) TESTS_ENVIRONMENT = \ $(REGISTRY_ENVIRONMENT) \ - GST_PLUGIN_SYSTEM_PATH= \ - GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/ext:$(top_builddir)/sys:$(GSTPB_PLUGINS_DIR):$(GST_PLUGINS_DIR) \ + GST_PLUGIN_SYSTEM_PATH_1_0= \ + GST_PLUGIN_PATH_1_0=$(top_builddir)/gst:$(top_builddir)/ext:$(top_builddir)/sys:$(GSTPB_PLUGINS_DIR):$(GST_PLUGINS_DIR) \ GST_PLUGIN_LOADING_WHITELIST="gstreamer@$(GST_PLUGINS_DIR):gst-plugins-base@$(GSTPB_PLUGINS_DIR):gst-plugins-good@$(top_builddir)" \ GST_STATE_IGNORE_ELEMENTS="aasink autoaudiosrc autoaudiosink autovideosrc autovideosink \ cacasink cairotextoverlay \ @@ -1174,6 +1490,12 @@ elements_spectrum_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) elements_alphacolor_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) elements_deinterlace_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) elements_deinterlace_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(LDADD) +elements_dtmf_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \ + $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS) + +elements_dtmf_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-@GST_API_VERSION@ \ + $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) + elements_deinterleave_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) elements_deinterleave_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) $(LDADD) elements_interleave_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) @@ -1201,6 +1523,8 @@ elements_rtpbin_buffer_list_LDADD = $(GST_PLUGINS_BASE_LIBS) \ $(GST_BASE_LIBS) $(GST_LIBS) $(GST_CHECK_LIBS) elements_rtpbin_buffer_list_SOURCES = elements/rtpbin_buffer_list.c +elements_rtpmux_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS) +elements_rtpmux_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD) elements_souphttpsrc_CFLAGS = $(SOUP_CFLAGS) $(AM_CFLAGS) elements_souphttpsrc_LDADD = $(SOUP_LIBS) $(LDADD) elements_sunaudio_CFLAGS = \ @@ -1217,6 +1541,8 @@ elements_videocrop_LDADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) -lgstvideo- elements_videocrop_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) elements_videofilter_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) elements_videofilter_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(LDADD) +elements_rtpjitterbuffer_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) +elements_rtpjitterbuffer_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-$(GST_API_VERSION) $(LDADD) # FIXME: configure should check for gdk-pixbuf not gtk # only need video.h header, not the lib @@ -1226,6 +1552,8 @@ elements_gdkpixbufsink_CFLAGS = \ elements_gdkpixbufsink_LDADD = \ $(LDADD) $(GDK_PIXBUF_LIBS) +elements_videomixer_LDADD = $(LDADD) $(GST_BASE_LIBS) +elements_videomixer_CFLAGS = $(GST_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) pipelines_flacdec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) pipelines_flacdec_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) $(LDADD) pipelines_wavenc_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS) @@ -1245,7 +1573,7 @@ EXTRA_DIST = gst-plugins-good.supp all: all-am .SUFFIXES: -.SUFFIXES: .c .lo .o .obj +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/check.mak $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -1280,12 +1608,23 @@ $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } +elements/$(am__dirstamp): + @$(MKDIR_P) elements + @: > elements/$(am__dirstamp) +elements/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) elements/$(DEPDIR) + @: > elements/$(DEPDIR)/$(am__dirstamp) +elements/libparser_la-parser.lo: elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + libparser.la: $(libparser_la_OBJECTS) $(libparser_la_DEPENDENCIES) $(EXTRA_libparser_la_DEPENDENCIES) $(AM_V_CCLD)$(libparser_la_LINK) $(libparser_la_OBJECTS) $(libparser_la_LIBADD) $(LIBS) @@ -1297,1350 +1636,1202 @@ clean-checkPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -elements/$(am__dirstamp): - @$(MKDIR_P) elements - @: > elements/$(am__dirstamp) +elements/aacparse.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/aacparse$(EXEEXT): $(elements_aacparse_OBJECTS) $(elements_aacparse_DEPENDENCIES) $(EXTRA_elements_aacparse_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/aacparse$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_aacparse_OBJECTS) $(elements_aacparse_LDADD) $(LIBS) +elements/ac3parse.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/ac3parse$(EXEEXT): $(elements_ac3parse_OBJECTS) $(elements_ac3parse_DEPENDENCIES) $(EXTRA_elements_ac3parse_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/ac3parse$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_ac3parse_OBJECTS) $(elements_ac3parse_LDADD) $(LIBS) +elements/elements_alphacolor-alphacolor.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/alphacolor$(EXEEXT): $(elements_alphacolor_OBJECTS) $(elements_alphacolor_DEPENDENCIES) $(EXTRA_elements_alphacolor_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/alphacolor$(EXEEXT) $(AM_V_CCLD)$(elements_alphacolor_LINK) $(elements_alphacolor_OBJECTS) $(elements_alphacolor_LDADD) $(LIBS) +elements/amrparse.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/amrparse$(EXEEXT): $(elements_amrparse_OBJECTS) $(elements_amrparse_DEPENDENCIES) $(EXTRA_elements_amrparse_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/amrparse$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_amrparse_OBJECTS) $(elements_amrparse_LDADD) $(LIBS) +elements/apev2mux.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/apev2mux$(EXEEXT): $(elements_apev2mux_OBJECTS) $(elements_apev2mux_DEPENDENCIES) $(EXTRA_elements_apev2mux_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/apev2mux$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_apev2mux_OBJECTS) $(elements_apev2mux_LDADD) $(LIBS) +elements/elements_aspectratiocrop-aspectratiocrop.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/aspectratiocrop$(EXEEXT): $(elements_aspectratiocrop_OBJECTS) $(elements_aspectratiocrop_DEPENDENCIES) $(EXTRA_elements_aspectratiocrop_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/aspectratiocrop$(EXEEXT) $(AM_V_CCLD)$(elements_aspectratiocrop_LINK) $(elements_aspectratiocrop_OBJECTS) $(elements_aspectratiocrop_LDADD) $(LIBS) +elements/elements_audioamplify-audioamplify.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/audioamplify$(EXEEXT): $(elements_audioamplify_OBJECTS) $(elements_audioamplify_DEPENDENCIES) $(EXTRA_elements_audioamplify_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audioamplify$(EXEEXT) $(AM_V_CCLD)$(elements_audioamplify_LINK) $(elements_audioamplify_OBJECTS) $(elements_audioamplify_LDADD) $(LIBS) +elements/elements_audiochebband-audiochebband.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/audiochebband$(EXEEXT): $(elements_audiochebband_OBJECTS) $(elements_audiochebband_DEPENDENCIES) $(EXTRA_elements_audiochebband_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audiochebband$(EXEEXT) $(AM_V_CCLD)$(elements_audiochebband_LINK) $(elements_audiochebband_OBJECTS) $(elements_audiochebband_LDADD) $(LIBS) +elements/elements_audiocheblimit-audiocheblimit.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/audiocheblimit$(EXEEXT): $(elements_audiocheblimit_OBJECTS) $(elements_audiocheblimit_DEPENDENCIES) $(EXTRA_elements_audiocheblimit_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audiocheblimit$(EXEEXT) $(AM_V_CCLD)$(elements_audiocheblimit_LINK) $(elements_audiocheblimit_OBJECTS) $(elements_audiocheblimit_LDADD) $(LIBS) +elements/elements_audiodynamic-audiodynamic.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/audiodynamic$(EXEEXT): $(elements_audiodynamic_OBJECTS) $(elements_audiodynamic_DEPENDENCIES) $(EXTRA_elements_audiodynamic_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audiodynamic$(EXEEXT) $(AM_V_CCLD)$(elements_audiodynamic_LINK) $(elements_audiodynamic_OBJECTS) $(elements_audiodynamic_LDADD) $(LIBS) +elements/elements_audioecho-audioecho.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/audioecho$(EXEEXT): $(elements_audioecho_OBJECTS) $(elements_audioecho_DEPENDENCIES) $(EXTRA_elements_audioecho_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audioecho$(EXEEXT) $(AM_V_CCLD)$(elements_audioecho_LINK) $(elements_audioecho_OBJECTS) $(elements_audioecho_LDADD) $(LIBS) +elements/audiofirfilter.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/audiofirfilter$(EXEEXT): $(elements_audiofirfilter_OBJECTS) $(elements_audiofirfilter_DEPENDENCIES) $(EXTRA_elements_audiofirfilter_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audiofirfilter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_audiofirfilter_OBJECTS) $(elements_audiofirfilter_LDADD) $(LIBS) +elements/audioiirfilter.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/audioiirfilter$(EXEEXT): $(elements_audioiirfilter_OBJECTS) $(elements_audioiirfilter_DEPENDENCIES) $(EXTRA_elements_audioiirfilter_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audioiirfilter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_audioiirfilter_OBJECTS) $(elements_audioiirfilter_LDADD) $(LIBS) +elements/elements_audioinvert-audioinvert.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/audioinvert$(EXEEXT): $(elements_audioinvert_OBJECTS) $(elements_audioinvert_DEPENDENCIES) $(EXTRA_elements_audioinvert_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audioinvert$(EXEEXT) $(AM_V_CCLD)$(elements_audioinvert_LINK) $(elements_audioinvert_OBJECTS) $(elements_audioinvert_LDADD) $(LIBS) +elements/elements_audiopanorama-audiopanorama.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/audiopanorama$(EXEEXT): $(elements_audiopanorama_OBJECTS) $(elements_audiopanorama_DEPENDENCIES) $(EXTRA_elements_audiopanorama_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audiopanorama$(EXEEXT) $(AM_V_CCLD)$(elements_audiopanorama_LINK) $(elements_audiopanorama_OBJECTS) $(elements_audiopanorama_LDADD) $(LIBS) +elements/elements_audiowsincband-audiowsincband.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/audiowsincband$(EXEEXT): $(elements_audiowsincband_OBJECTS) $(elements_audiowsincband_DEPENDENCIES) $(EXTRA_elements_audiowsincband_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audiowsincband$(EXEEXT) $(AM_V_CCLD)$(elements_audiowsincband_LINK) $(elements_audiowsincband_OBJECTS) $(elements_audiowsincband_LDADD) $(LIBS) +elements/elements_audiowsinclimit-audiowsinclimit.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/audiowsinclimit$(EXEEXT): $(elements_audiowsinclimit_OBJECTS) $(elements_audiowsinclimit_DEPENDENCIES) $(EXTRA_elements_audiowsinclimit_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/audiowsinclimit$(EXEEXT) $(AM_V_CCLD)$(elements_audiowsinclimit_LINK) $(elements_audiowsinclimit_OBJECTS) $(elements_audiowsinclimit_LDADD) $(LIBS) +elements/autodetect.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/autodetect$(EXEEXT): $(elements_autodetect_OBJECTS) $(elements_autodetect_DEPENDENCIES) $(EXTRA_elements_autodetect_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/autodetect$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_autodetect_OBJECTS) $(elements_autodetect_LDADD) $(LIBS) +elements/avimux.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/avimux$(EXEEXT): $(elements_avimux_OBJECTS) $(elements_avimux_DEPENDENCIES) $(EXTRA_elements_avimux_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/avimux$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_avimux_OBJECTS) $(elements_avimux_LDADD) $(LIBS) +elements/avisubtitle.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/avisubtitle$(EXEEXT): $(elements_avisubtitle_OBJECTS) $(elements_avisubtitle_DEPENDENCIES) $(EXTRA_elements_avisubtitle_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/avisubtitle$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_avisubtitle_OBJECTS) $(elements_avisubtitle_LDADD) $(LIBS) +elements/capssetter.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/capssetter$(EXEEXT): $(elements_capssetter_OBJECTS) $(elements_capssetter_DEPENDENCIES) $(EXTRA_elements_capssetter_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/capssetter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_capssetter_OBJECTS) $(elements_capssetter_LDADD) $(LIBS) +elements/elements_deinterlace-deinterlace.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/deinterlace$(EXEEXT): $(elements_deinterlace_OBJECTS) $(elements_deinterlace_DEPENDENCIES) $(EXTRA_elements_deinterlace_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/deinterlace$(EXEEXT) $(AM_V_CCLD)$(elements_deinterlace_LINK) $(elements_deinterlace_OBJECTS) $(elements_deinterlace_LDADD) $(LIBS) +elements/elements_deinterleave-deinterleave.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/deinterleave$(EXEEXT): $(elements_deinterleave_OBJECTS) $(elements_deinterleave_DEPENDENCIES) $(EXTRA_elements_deinterleave_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/deinterleave$(EXEEXT) $(AM_V_CCLD)$(elements_deinterleave_LINK) $(elements_deinterleave_OBJECTS) $(elements_deinterleave_LDADD) $(LIBS) +elements/elements_dtmf-dtmf.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + +elements/dtmf$(EXEEXT): $(elements_dtmf_OBJECTS) $(elements_dtmf_DEPENDENCIES) $(EXTRA_elements_dtmf_DEPENDENCIES) elements/$(am__dirstamp) + @rm -f elements/dtmf$(EXEEXT) + $(AM_V_CCLD)$(elements_dtmf_LINK) $(elements_dtmf_OBJECTS) $(elements_dtmf_LDADD) $(LIBS) +elements/elements_equalizer-equalizer.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/equalizer$(EXEEXT): $(elements_equalizer_OBJECTS) $(elements_equalizer_DEPENDENCIES) $(EXTRA_elements_equalizer_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/equalizer$(EXEEXT) $(AM_V_CCLD)$(elements_equalizer_LINK) $(elements_equalizer_OBJECTS) $(elements_equalizer_LDADD) $(LIBS) +elements/flacparse.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/flacparse$(EXEEXT): $(elements_flacparse_OBJECTS) $(elements_flacparse_DEPENDENCIES) $(EXTRA_elements_flacparse_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/flacparse$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_flacparse_OBJECTS) $(elements_flacparse_LDADD) $(LIBS) +elements/flvdemux.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/flvdemux$(EXEEXT): $(elements_flvdemux_OBJECTS) $(elements_flvdemux_DEPENDENCIES) $(EXTRA_elements_flvdemux_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/flvdemux$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_flvdemux_OBJECTS) $(elements_flvdemux_LDADD) $(LIBS) +elements/flvmux.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/flvmux$(EXEEXT): $(elements_flvmux_OBJECTS) $(elements_flvmux_DEPENDENCIES) $(EXTRA_elements_flvmux_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/flvmux$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_flvmux_OBJECTS) $(elements_flvmux_LDADD) $(LIBS) +elements/elements_gdkpixbufsink-gdkpixbufsink.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/gdkpixbufsink$(EXEEXT): $(elements_gdkpixbufsink_OBJECTS) $(elements_gdkpixbufsink_DEPENDENCIES) $(EXTRA_elements_gdkpixbufsink_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/gdkpixbufsink$(EXEEXT) $(AM_V_CCLD)$(elements_gdkpixbufsink_LINK) $(elements_gdkpixbufsink_OBJECTS) $(elements_gdkpixbufsink_LDADD) $(LIBS) +elements/icydemux.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/icydemux$(EXEEXT): $(elements_icydemux_OBJECTS) $(elements_icydemux_DEPENDENCIES) $(EXTRA_elements_icydemux_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/icydemux$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_icydemux_OBJECTS) $(elements_icydemux_LDADD) $(LIBS) +elements/id3demux.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/id3demux$(EXEEXT): $(elements_id3demux_OBJECTS) $(elements_id3demux_DEPENDENCIES) $(EXTRA_elements_id3demux_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/id3demux$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_id3demux_OBJECTS) $(elements_id3demux_LDADD) $(LIBS) +elements/id3v2mux.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/id3v2mux$(EXEEXT): $(elements_id3v2mux_OBJECTS) $(elements_id3v2mux_DEPENDENCIES) $(EXTRA_elements_id3v2mux_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/id3v2mux$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_id3v2mux_OBJECTS) $(elements_id3v2mux_LDADD) $(LIBS) +elements/elements_imagefreeze-imagefreeze.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/imagefreeze$(EXEEXT): $(elements_imagefreeze_OBJECTS) $(elements_imagefreeze_DEPENDENCIES) $(EXTRA_elements_imagefreeze_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/imagefreeze$(EXEEXT) $(AM_V_CCLD)$(elements_imagefreeze_LINK) $(elements_imagefreeze_OBJECTS) $(elements_imagefreeze_LDADD) $(LIBS) +elements/elements_interleave-interleave.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/interleave$(EXEEXT): $(elements_interleave_OBJECTS) $(elements_interleave_DEPENDENCIES) $(EXTRA_elements_interleave_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/interleave$(EXEEXT) $(AM_V_CCLD)$(elements_interleave_LINK) $(elements_interleave_OBJECTS) $(elements_interleave_LDADD) $(LIBS) +elements/elements_jpegdec-jpegdec.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/jpegdec$(EXEEXT): $(elements_jpegdec_OBJECTS) $(elements_jpegdec_DEPENDENCIES) $(EXTRA_elements_jpegdec_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/jpegdec$(EXEEXT) $(AM_V_CCLD)$(elements_jpegdec_LINK) $(elements_jpegdec_OBJECTS) $(elements_jpegdec_LDADD) $(LIBS) +elements/elements_jpegenc-jpegenc.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/jpegenc$(EXEEXT): $(elements_jpegenc_OBJECTS) $(elements_jpegenc_DEPENDENCIES) $(EXTRA_elements_jpegenc_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/jpegenc$(EXEEXT) $(AM_V_CCLD)$(elements_jpegenc_LINK) $(elements_jpegenc_OBJECTS) $(elements_jpegenc_LDADD) $(LIBS) +elements/elements_level-level.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/level$(EXEEXT): $(elements_level_OBJECTS) $(elements_level_DEPENDENCIES) $(EXTRA_elements_level_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/level$(EXEEXT) $(AM_V_CCLD)$(elements_level_LINK) $(elements_level_OBJECTS) $(elements_level_LDADD) $(LIBS) +elements/matroskamux.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/matroskamux$(EXEEXT): $(elements_matroskamux_OBJECTS) $(elements_matroskamux_DEPENDENCIES) $(EXTRA_elements_matroskamux_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/matroskamux$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_matroskamux_OBJECTS) $(elements_matroskamux_LDADD) $(LIBS) +elements/matroskaparse.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/matroskaparse$(EXEEXT): $(elements_matroskaparse_OBJECTS) $(elements_matroskaparse_DEPENDENCIES) $(EXTRA_elements_matroskaparse_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/matroskaparse$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_matroskaparse_OBJECTS) $(elements_matroskaparse_LDADD) $(LIBS) +elements/mpegaudioparse.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/mpegaudioparse$(EXEEXT): $(elements_mpegaudioparse_OBJECTS) $(elements_mpegaudioparse_DEPENDENCIES) $(EXTRA_elements_mpegaudioparse_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/mpegaudioparse$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_mpegaudioparse_OBJECTS) $(elements_mpegaudioparse_LDADD) $(LIBS) +elements/mulawdec.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + +elements/mulawdec$(EXEEXT): $(elements_mulawdec_OBJECTS) $(elements_mulawdec_DEPENDENCIES) $(EXTRA_elements_mulawdec_DEPENDENCIES) elements/$(am__dirstamp) + @rm -f elements/mulawdec$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(elements_mulawdec_OBJECTS) $(elements_mulawdec_LDADD) $(LIBS) +elements/mulawenc.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + +elements/mulawenc$(EXEEXT): $(elements_mulawenc_OBJECTS) $(elements_mulawenc_DEPENDENCIES) $(EXTRA_elements_mulawenc_DEPENDENCIES) elements/$(am__dirstamp) + @rm -f elements/mulawenc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(elements_mulawenc_OBJECTS) $(elements_mulawenc_LDADD) $(LIBS) +elements/elements_multifile-multifile.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/multifile$(EXEEXT): $(elements_multifile_OBJECTS) $(elements_multifile_DEPENDENCIES) $(EXTRA_elements_multifile_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/multifile$(EXEEXT) $(AM_V_CCLD)$(elements_multifile_LINK) $(elements_multifile_OBJECTS) $(elements_multifile_LDADD) $(LIBS) +elements/elements_qtmux-qtmux.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/qtmux$(EXEEXT): $(elements_qtmux_OBJECTS) $(elements_qtmux_DEPENDENCIES) $(EXTRA_elements_qtmux_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/qtmux$(EXEEXT) $(AM_V_CCLD)$(elements_qtmux_LINK) $(elements_qtmux_OBJECTS) $(elements_qtmux_LDADD) $(LIBS) +elements/elements_rganalysis-rganalysis.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/rganalysis$(EXEEXT): $(elements_rganalysis_OBJECTS) $(elements_rganalysis_DEPENDENCIES) $(EXTRA_elements_rganalysis_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/rganalysis$(EXEEXT) $(AM_V_CCLD)$(elements_rganalysis_LINK) $(elements_rganalysis_OBJECTS) $(elements_rganalysis_LDADD) $(LIBS) +elements/elements_rglimiter-rglimiter.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/rglimiter$(EXEEXT): $(elements_rglimiter_OBJECTS) $(elements_rglimiter_DEPENDENCIES) $(EXTRA_elements_rglimiter_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/rglimiter$(EXEEXT) $(AM_V_CCLD)$(elements_rglimiter_LINK) $(elements_rglimiter_OBJECTS) $(elements_rglimiter_LDADD) $(LIBS) +elements/elements_rgvolume-rgvolume.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/rgvolume$(EXEEXT): $(elements_rgvolume_OBJECTS) $(elements_rgvolume_DEPENDENCIES) $(EXTRA_elements_rgvolume_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/rgvolume$(EXEEXT) $(AM_V_CCLD)$(elements_rgvolume_LINK) $(elements_rgvolume_OBJECTS) $(elements_rgvolume_LDADD) $(LIBS) +elements/rtp-payloading.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/rtp-payloading$(EXEEXT): $(elements_rtp_payloading_OBJECTS) $(elements_rtp_payloading_DEPENDENCIES) $(EXTRA_elements_rtp_payloading_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/rtp-payloading$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_rtp_payloading_OBJECTS) $(elements_rtp_payloading_LDADD) $(LIBS) +elements/rtpbin.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/rtpbin$(EXEEXT): $(elements_rtpbin_OBJECTS) $(elements_rtpbin_DEPENDENCIES) $(EXTRA_elements_rtpbin_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/rtpbin$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_rtpbin_OBJECTS) $(elements_rtpbin_LDADD) $(LIBS) +elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/rtpbin_buffer_list$(EXEEXT): $(elements_rtpbin_buffer_list_OBJECTS) $(elements_rtpbin_buffer_list_DEPENDENCIES) $(EXTRA_elements_rtpbin_buffer_list_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/rtpbin_buffer_list$(EXEEXT) $(AM_V_CCLD)$(elements_rtpbin_buffer_list_LINK) $(elements_rtpbin_buffer_list_OBJECTS) $(elements_rtpbin_buffer_list_LDADD) $(LIBS) +elements/elements_rtpjitterbuffer-rtpjitterbuffer.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/rtpjitterbuffer$(EXEEXT): $(elements_rtpjitterbuffer_OBJECTS) $(elements_rtpjitterbuffer_DEPENDENCIES) $(EXTRA_elements_rtpjitterbuffer_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/rtpjitterbuffer$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(elements_rtpjitterbuffer_OBJECTS) $(elements_rtpjitterbuffer_LDADD) $(LIBS) + $(AM_V_CCLD)$(elements_rtpjitterbuffer_LINK) $(elements_rtpjitterbuffer_OBJECTS) $(elements_rtpjitterbuffer_LDADD) $(LIBS) +elements/elements_rtpmux-rtpmux.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + +elements/rtpmux$(EXEEXT): $(elements_rtpmux_OBJECTS) $(elements_rtpmux_DEPENDENCIES) $(EXTRA_elements_rtpmux_DEPENDENCIES) elements/$(am__dirstamp) + @rm -f elements/rtpmux$(EXEEXT) + $(AM_V_CCLD)$(elements_rtpmux_LINK) $(elements_rtpmux_OBJECTS) $(elements_rtpmux_LDADD) $(LIBS) +elements/shapewipe.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/shapewipe$(EXEEXT): $(elements_shapewipe_OBJECTS) $(elements_shapewipe_DEPENDENCIES) $(EXTRA_elements_shapewipe_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/shapewipe$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_shapewipe_OBJECTS) $(elements_shapewipe_LDADD) $(LIBS) +elements/elements_souphttpsrc-souphttpsrc.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/souphttpsrc$(EXEEXT): $(elements_souphttpsrc_OBJECTS) $(elements_souphttpsrc_DEPENDENCIES) $(EXTRA_elements_souphttpsrc_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/souphttpsrc$(EXEEXT) $(AM_V_CCLD)$(elements_souphttpsrc_LINK) $(elements_souphttpsrc_OBJECTS) $(elements_souphttpsrc_LDADD) $(LIBS) +elements/elements_spectrum-spectrum.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/spectrum$(EXEEXT): $(elements_spectrum_OBJECTS) $(elements_spectrum_DEPENDENCIES) $(EXTRA_elements_spectrum_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/spectrum$(EXEEXT) $(AM_V_CCLD)$(elements_spectrum_LINK) $(elements_spectrum_OBJECTS) $(elements_spectrum_LDADD) $(LIBS) +elements/elements_sunaudio-sunaudio.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/sunaudio$(EXEEXT): $(elements_sunaudio_OBJECTS) $(elements_sunaudio_DEPENDENCIES) $(EXTRA_elements_sunaudio_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/sunaudio$(EXEEXT) $(AM_V_CCLD)$(elements_sunaudio_LINK) $(elements_sunaudio_OBJECTS) $(elements_sunaudio_LDADD) $(LIBS) +elements/udpsink.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/udpsink$(EXEEXT): $(elements_udpsink_OBJECTS) $(elements_udpsink_DEPENDENCIES) $(EXTRA_elements_udpsink_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/udpsink$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_udpsink_OBJECTS) $(elements_udpsink_LDADD) $(LIBS) +elements/elements_udpsrc-udpsrc.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(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/elements_videocrop-videocrop.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/videocrop$(EXEEXT): $(elements_videocrop_OBJECTS) $(elements_videocrop_DEPENDENCIES) $(EXTRA_elements_videocrop_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/videocrop$(EXEEXT) $(AM_V_CCLD)$(elements_videocrop_LINK) $(elements_videocrop_OBJECTS) $(elements_videocrop_LDADD) $(LIBS) +elements/elements_videofilter-videofilter.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + elements/videofilter$(EXEEXT): $(elements_videofilter_OBJECTS) $(elements_videofilter_DEPENDENCIES) $(EXTRA_elements_videofilter_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/videofilter$(EXEEXT) $(AM_V_CCLD)$(elements_videofilter_LINK) $(elements_videofilter_OBJECTS) $(elements_videofilter_LDADD) $(LIBS) +elements/elements_videomixer-videomixer.$(OBJEXT): \ + elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp) + +elements/videomixer$(EXEEXT): $(elements_videomixer_OBJECTS) $(elements_videomixer_DEPENDENCIES) $(EXTRA_elements_videomixer_DEPENDENCIES) elements/$(am__dirstamp) + @rm -f elements/videomixer$(EXEEXT) + $(AM_V_CCLD)$(elements_videomixer_LINK) $(elements_videomixer_OBJECTS) $(elements_videomixer_LDADD) $(LIBS) +elements/vp8dec.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/vp8dec$(EXEEXT): $(elements_vp8dec_OBJECTS) $(elements_vp8dec_DEPENDENCIES) $(EXTRA_elements_vp8dec_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/vp8dec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_vp8dec_OBJECTS) $(elements_vp8dec_LDADD) $(LIBS) +elements/vp8enc.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/vp8enc$(EXEEXT): $(elements_vp8enc_OBJECTS) $(elements_vp8enc_DEPENDENCIES) $(EXTRA_elements_vp8enc_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/vp8enc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_vp8enc_OBJECTS) $(elements_vp8enc_LDADD) $(LIBS) +elements/wavpackdec.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/wavpackdec$(EXEEXT): $(elements_wavpackdec_OBJECTS) $(elements_wavpackdec_DEPENDENCIES) $(EXTRA_elements_wavpackdec_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/wavpackdec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_wavpackdec_OBJECTS) $(elements_wavpackdec_LDADD) $(LIBS) +elements/wavpackenc.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/wavpackenc$(EXEEXT): $(elements_wavpackenc_OBJECTS) $(elements_wavpackenc_DEPENDENCIES) $(EXTRA_elements_wavpackenc_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/wavpackenc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_wavpackenc_OBJECTS) $(elements_wavpackenc_LDADD) $(LIBS) +elements/wavpackparse.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/wavpackparse$(EXEEXT): $(elements_wavpackparse_OBJECTS) $(elements_wavpackparse_DEPENDENCIES) $(EXTRA_elements_wavpackparse_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/wavpackparse$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_wavpackparse_OBJECTS) $(elements_wavpackparse_LDADD) $(LIBS) +elements/wavparse.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + +elements/wavparse$(EXEEXT): $(elements_wavparse_OBJECTS) $(elements_wavparse_DEPENDENCIES) $(EXTRA_elements_wavparse_DEPENDENCIES) elements/$(am__dirstamp) + @rm -f elements/wavparse$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(elements_wavparse_OBJECTS) $(elements_wavparse_LDADD) $(LIBS) +elements/y4menc.$(OBJEXT): elements/$(am__dirstamp) \ + elements/$(DEPDIR)/$(am__dirstamp) + elements/y4menc$(EXEEXT): $(elements_y4menc_OBJECTS) $(elements_y4menc_DEPENDENCIES) $(EXTRA_elements_y4menc_DEPENDENCIES) elements/$(am__dirstamp) @rm -f elements/y4menc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(elements_y4menc_OBJECTS) $(elements_y4menc_LDADD) $(LIBS) generic/$(am__dirstamp): @$(MKDIR_P) generic @: > generic/$(am__dirstamp) +generic/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) generic/$(DEPDIR) + @: > generic/$(DEPDIR)/$(am__dirstamp) +generic/states.$(OBJEXT): generic/$(am__dirstamp) \ + generic/$(DEPDIR)/$(am__dirstamp) + generic/states$(EXEEXT): $(generic_states_OBJECTS) $(generic_states_DEPENDENCIES) $(EXTRA_generic_states_DEPENDENCIES) generic/$(am__dirstamp) @rm -f generic/states$(EXEEXT) $(AM_V_CCLD)$(LINK) $(generic_states_OBJECTS) $(generic_states_LDADD) $(LIBS) orc/$(am__dirstamp): @$(MKDIR_P) orc @: > orc/$(am__dirstamp) +orc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) orc/$(DEPDIR) + @: > orc/$(DEPDIR)/$(am__dirstamp) +orc/orc_deinterlace-deinterlace.$(OBJEXT): orc/$(am__dirstamp) \ + orc/$(DEPDIR)/$(am__dirstamp) + orc/deinterlace$(EXEEXT): $(orc_deinterlace_OBJECTS) $(orc_deinterlace_DEPENDENCIES) $(EXTRA_orc_deinterlace_DEPENDENCIES) orc/$(am__dirstamp) @rm -f orc/deinterlace$(EXEEXT) $(AM_V_CCLD)$(orc_deinterlace_LINK) $(orc_deinterlace_OBJECTS) $(orc_deinterlace_LDADD) $(LIBS) +orc/orc_videobox-videobox.$(OBJEXT): orc/$(am__dirstamp) \ + orc/$(DEPDIR)/$(am__dirstamp) + orc/videobox$(EXEEXT): $(orc_videobox_OBJECTS) $(orc_videobox_DEPENDENCIES) $(EXTRA_orc_videobox_DEPENDENCIES) orc/$(am__dirstamp) @rm -f orc/videobox$(EXEEXT) $(AM_V_CCLD)$(orc_videobox_LINK) $(orc_videobox_OBJECTS) $(orc_videobox_LDADD) $(LIBS) +orc/orc_videomixer-videomixer.$(OBJEXT): orc/$(am__dirstamp) \ + orc/$(DEPDIR)/$(am__dirstamp) + orc/videomixer$(EXEEXT): $(orc_videomixer_OBJECTS) $(orc_videomixer_DEPENDENCIES) $(EXTRA_orc_videomixer_DEPENDENCIES) orc/$(am__dirstamp) @rm -f orc/videomixer$(EXEEXT) $(AM_V_CCLD)$(orc_videomixer_LINK) $(orc_videomixer_OBJECTS) $(orc_videomixer_LDADD) $(LIBS) pipelines/$(am__dirstamp): @$(MKDIR_P) pipelines @: > pipelines/$(am__dirstamp) +pipelines/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) pipelines/$(DEPDIR) + @: > pipelines/$(DEPDIR)/$(am__dirstamp) +pipelines/effectv.$(OBJEXT): pipelines/$(am__dirstamp) \ + pipelines/$(DEPDIR)/$(am__dirstamp) + pipelines/effectv$(EXEEXT): $(pipelines_effectv_OBJECTS) $(pipelines_effectv_DEPENDENCIES) $(EXTRA_pipelines_effectv_DEPENDENCIES) pipelines/$(am__dirstamp) @rm -f pipelines/effectv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pipelines_effectv_OBJECTS) $(pipelines_effectv_LDADD) $(LIBS) +pipelines/pipelines_flacdec-flacdec.$(OBJEXT): \ + pipelines/$(am__dirstamp) pipelines/$(DEPDIR)/$(am__dirstamp) + pipelines/flacdec$(EXEEXT): $(pipelines_flacdec_OBJECTS) $(pipelines_flacdec_DEPENDENCIES) $(EXTRA_pipelines_flacdec_DEPENDENCIES) pipelines/$(am__dirstamp) @rm -f pipelines/flacdec$(EXEEXT) $(AM_V_CCLD)$(pipelines_flacdec_LINK) $(pipelines_flacdec_OBJECTS) $(pipelines_flacdec_LDADD) $(LIBS) +pipelines/simple-launch-lines.$(OBJEXT): pipelines/$(am__dirstamp) \ + pipelines/$(DEPDIR)/$(am__dirstamp) + pipelines/simple-launch-lines$(EXEEXT): $(pipelines_simple_launch_lines_OBJECTS) $(pipelines_simple_launch_lines_DEPENDENCIES) $(EXTRA_pipelines_simple_launch_lines_DEPENDENCIES) pipelines/$(am__dirstamp) @rm -f pipelines/simple-launch-lines$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pipelines_simple_launch_lines_OBJECTS) $(pipelines_simple_launch_lines_LDADD) $(LIBS) +pipelines/tagschecking.$(OBJEXT): pipelines/$(am__dirstamp) \ + pipelines/$(DEPDIR)/$(am__dirstamp) + pipelines/tagschecking$(EXEEXT): $(pipelines_tagschecking_OBJECTS) $(pipelines_tagschecking_DEPENDENCIES) $(EXTRA_pipelines_tagschecking_DEPENDENCIES) pipelines/$(am__dirstamp) @rm -f pipelines/tagschecking$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pipelines_tagschecking_OBJECTS) $(pipelines_tagschecking_LDADD) $(LIBS) +pipelines/pipelines_wavenc-wavenc.$(OBJEXT): \ + pipelines/$(am__dirstamp) pipelines/$(DEPDIR)/$(am__dirstamp) + pipelines/wavenc$(EXEEXT): $(pipelines_wavenc_OBJECTS) $(pipelines_wavenc_DEPENDENCIES) $(EXTRA_pipelines_wavenc_DEPENDENCIES) pipelines/$(am__dirstamp) @rm -f pipelines/wavenc$(EXEEXT) $(AM_V_CCLD)$(pipelines_wavenc_LINK) $(pipelines_wavenc_OBJECTS) $(pipelines_wavenc_LDADD) $(LIBS) +pipelines/pipelines_wavpack-wavpack.$(OBJEXT): \ + pipelines/$(am__dirstamp) pipelines/$(DEPDIR)/$(am__dirstamp) + pipelines/wavpack$(EXEEXT): $(pipelines_wavpack_OBJECTS) $(pipelines_wavpack_DEPENDENCIES) $(EXTRA_pipelines_wavpack_DEPENDENCIES) pipelines/$(am__dirstamp) @rm -f pipelines/wavpack$(EXEEXT) $(AM_V_CCLD)$(pipelines_wavpack_LINK) $(pipelines_wavpack_OBJECTS) $(pipelines_wavpack_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) + -rm -f elements/*.$(OBJEXT) + -rm -f elements/*.lo + -rm -f generic/*.$(OBJEXT) + -rm -f orc/*.$(OBJEXT) + -rm -f pipelines/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aacparse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ac3parse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amrparse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/apev2mux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audiofirfilter.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audioiirfilter.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/autodetect.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avimux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avisubtitle.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/capssetter.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/effectv.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_alphacolor-alphacolor.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_audioamplify-audioamplify.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_audiochebband-audiochebband.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_audiocheblimit-audiocheblimit.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_audiodynamic-audiodynamic.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_audioecho-audioecho.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_audioinvert-audioinvert.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_audiopanorama-audiopanorama.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_audiowsincband-audiowsincband.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_deinterlace-deinterlace.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_deinterleave-deinterleave.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_equalizer-equalizer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_imagefreeze-imagefreeze.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_interleave-interleave.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_jpegdec-jpegdec.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_jpegenc-jpegenc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_level-level.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_multifile-multifile.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_qtmux-qtmux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_rganalysis-rganalysis.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_rglimiter-rglimiter.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_rgvolume-rgvolume.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_souphttpsrc-souphttpsrc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_spectrum-spectrum.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_sunaudio-sunaudio.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_udpsrc-udpsrc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_videocrop-videocrop.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements_videofilter-videofilter.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flacparse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flvdemux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flvmux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icydemux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id3demux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id3v2mux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libparser_la-parser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matroskamux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matroskaparse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpegaudioparse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orc_deinterlace-deinterlace.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orc_videobox-videobox.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orc_videomixer-videomixer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipelines_flacdec-flacdec.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipelines_wavenc-wavenc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipelines_wavpack-wavpack.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtp-payloading.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtpbin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtpjitterbuffer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shapewipe.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-launch-lines.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/states.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tagschecking.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udpsink.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vp8dec.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vp8enc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavpackdec.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavpackenc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavpackparse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/y4menc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/aacparse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/ac3parse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/amrparse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/apev2mux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/audiofirfilter.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/audioiirfilter.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/autodetect.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/avimux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/avisubtitle.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/capssetter.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_alphacolor-alphacolor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_audioamplify-audioamplify.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_audiochebband-audiochebband.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_audiocheblimit-audiocheblimit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_audiodynamic-audiodynamic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_audioecho-audioecho.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_audioinvert-audioinvert.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_audiopanorama-audiopanorama.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_audiowsincband-audiowsincband.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_deinterlace-deinterlace.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_deinterleave-deinterleave.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_dtmf-dtmf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_equalizer-equalizer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_imagefreeze-imagefreeze.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_interleave-interleave.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_jpegdec-jpegdec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_jpegenc-jpegenc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_level-level.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_multifile-multifile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_qtmux-qtmux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rganalysis-rganalysis.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rglimiter-rglimiter.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rgvolume-rgvolume.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rtpjitterbuffer-rtpjitterbuffer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rtpmux-rtpmux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_souphttpsrc-souphttpsrc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_spectrum-spectrum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_sunaudio-sunaudio.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_udpsrc-udpsrc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_videocrop-videocrop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_videofilter-videofilter.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_videomixer-videomixer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/flacparse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/flvdemux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/flvmux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/icydemux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/id3demux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/id3v2mux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/libparser_la-parser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/matroskamux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/matroskaparse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/mpegaudioparse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/mulawdec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/mulawenc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/rtp-payloading.Po@am__quote@ +@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)/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@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/wavpackenc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/wavpackparse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/wavparse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/y4menc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@generic/$(DEPDIR)/states.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@orc/$(DEPDIR)/orc_deinterlace-deinterlace.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@orc/$(DEPDIR)/orc_videobox-videobox.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@orc/$(DEPDIR)/orc_videomixer-videomixer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/effectv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/pipelines_flacdec-flacdec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/pipelines_wavenc-wavenc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/pipelines_wavpack-wavpack.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/simple-launch-lines.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/tagschecking.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< -libparser_la-parser.lo: elements/parser.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libparser_la_CFLAGS) $(CFLAGS) -MT libparser_la-parser.lo -MD -MP -MF $(DEPDIR)/libparser_la-parser.Tpo -c -o libparser_la-parser.lo `test -f 'elements/parser.c' || echo '$(srcdir)/'`elements/parser.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libparser_la-parser.Tpo $(DEPDIR)/libparser_la-parser.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/parser.c' object='libparser_la-parser.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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libparser_la_CFLAGS) $(CFLAGS) -c -o libparser_la-parser.lo `test -f 'elements/parser.c' || echo '$(srcdir)/'`elements/parser.c - -aacparse.o: elements/aacparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aacparse.o -MD -MP -MF $(DEPDIR)/aacparse.Tpo -c -o aacparse.o `test -f 'elements/aacparse.c' || echo '$(srcdir)/'`elements/aacparse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/aacparse.Tpo $(DEPDIR)/aacparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/aacparse.c' object='aacparse.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aacparse.o `test -f 'elements/aacparse.c' || echo '$(srcdir)/'`elements/aacparse.c - -aacparse.obj: elements/aacparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aacparse.obj -MD -MP -MF $(DEPDIR)/aacparse.Tpo -c -o aacparse.obj `if test -f 'elements/aacparse.c'; then $(CYGPATH_W) 'elements/aacparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/aacparse.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/aacparse.Tpo $(DEPDIR)/aacparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/aacparse.c' object='aacparse.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aacparse.obj `if test -f 'elements/aacparse.c'; then $(CYGPATH_W) 'elements/aacparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/aacparse.c'; fi` - -ac3parse.o: elements/ac3parse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ac3parse.o -MD -MP -MF $(DEPDIR)/ac3parse.Tpo -c -o ac3parse.o `test -f 'elements/ac3parse.c' || echo '$(srcdir)/'`elements/ac3parse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ac3parse.Tpo $(DEPDIR)/ac3parse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/ac3parse.c' object='ac3parse.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ac3parse.o `test -f 'elements/ac3parse.c' || echo '$(srcdir)/'`elements/ac3parse.c - -ac3parse.obj: elements/ac3parse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ac3parse.obj -MD -MP -MF $(DEPDIR)/ac3parse.Tpo -c -o ac3parse.obj `if test -f 'elements/ac3parse.c'; then $(CYGPATH_W) 'elements/ac3parse.c'; else $(CYGPATH_W) '$(srcdir)/elements/ac3parse.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ac3parse.Tpo $(DEPDIR)/ac3parse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/ac3parse.c' object='ac3parse.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ac3parse.obj `if test -f 'elements/ac3parse.c'; then $(CYGPATH_W) 'elements/ac3parse.c'; else $(CYGPATH_W) '$(srcdir)/elements/ac3parse.c'; fi` - -elements_alphacolor-alphacolor.o: elements/alphacolor.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_alphacolor_CFLAGS) $(CFLAGS) -MT elements_alphacolor-alphacolor.o -MD -MP -MF $(DEPDIR)/elements_alphacolor-alphacolor.Tpo -c -o elements_alphacolor-alphacolor.o `test -f 'elements/alphacolor.c' || echo '$(srcdir)/'`elements/alphacolor.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_alphacolor-alphacolor.Tpo $(DEPDIR)/elements_alphacolor-alphacolor.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/alphacolor.c' object='elements_alphacolor-alphacolor.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_alphacolor_CFLAGS) $(CFLAGS) -c -o elements_alphacolor-alphacolor.o `test -f 'elements/alphacolor.c' || echo '$(srcdir)/'`elements/alphacolor.c - -elements_alphacolor-alphacolor.obj: elements/alphacolor.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_alphacolor_CFLAGS) $(CFLAGS) -MT elements_alphacolor-alphacolor.obj -MD -MP -MF $(DEPDIR)/elements_alphacolor-alphacolor.Tpo -c -o elements_alphacolor-alphacolor.obj `if test -f 'elements/alphacolor.c'; then $(CYGPATH_W) 'elements/alphacolor.c'; else $(CYGPATH_W) '$(srcdir)/elements/alphacolor.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_alphacolor-alphacolor.Tpo $(DEPDIR)/elements_alphacolor-alphacolor.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/alphacolor.c' object='elements_alphacolor-alphacolor.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_alphacolor_CFLAGS) $(CFLAGS) -c -o elements_alphacolor-alphacolor.obj `if test -f 'elements/alphacolor.c'; then $(CYGPATH_W) 'elements/alphacolor.c'; else $(CYGPATH_W) '$(srcdir)/elements/alphacolor.c'; fi` - -amrparse.o: elements/amrparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT amrparse.o -MD -MP -MF $(DEPDIR)/amrparse.Tpo -c -o amrparse.o `test -f 'elements/amrparse.c' || echo '$(srcdir)/'`elements/amrparse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/amrparse.Tpo $(DEPDIR)/amrparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/amrparse.c' object='amrparse.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o amrparse.o `test -f 'elements/amrparse.c' || echo '$(srcdir)/'`elements/amrparse.c - -amrparse.obj: elements/amrparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT amrparse.obj -MD -MP -MF $(DEPDIR)/amrparse.Tpo -c -o amrparse.obj `if test -f 'elements/amrparse.c'; then $(CYGPATH_W) 'elements/amrparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/amrparse.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/amrparse.Tpo $(DEPDIR)/amrparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/amrparse.c' object='amrparse.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o amrparse.obj `if test -f 'elements/amrparse.c'; then $(CYGPATH_W) 'elements/amrparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/amrparse.c'; fi` - -apev2mux.o: elements/apev2mux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT apev2mux.o -MD -MP -MF $(DEPDIR)/apev2mux.Tpo -c -o apev2mux.o `test -f 'elements/apev2mux.c' || echo '$(srcdir)/'`elements/apev2mux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/apev2mux.Tpo $(DEPDIR)/apev2mux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/apev2mux.c' object='apev2mux.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o apev2mux.o `test -f 'elements/apev2mux.c' || echo '$(srcdir)/'`elements/apev2mux.c - -apev2mux.obj: elements/apev2mux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT apev2mux.obj -MD -MP -MF $(DEPDIR)/apev2mux.Tpo -c -o apev2mux.obj `if test -f 'elements/apev2mux.c'; then $(CYGPATH_W) 'elements/apev2mux.c'; else $(CYGPATH_W) '$(srcdir)/elements/apev2mux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/apev2mux.Tpo $(DEPDIR)/apev2mux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/apev2mux.c' object='apev2mux.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o apev2mux.obj `if test -f 'elements/apev2mux.c'; then $(CYGPATH_W) 'elements/apev2mux.c'; else $(CYGPATH_W) '$(srcdir)/elements/apev2mux.c'; fi` - -elements_aspectratiocrop-aspectratiocrop.o: elements/aspectratiocrop.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_aspectratiocrop_CFLAGS) $(CFLAGS) -MT elements_aspectratiocrop-aspectratiocrop.o -MD -MP -MF $(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Tpo -c -o elements_aspectratiocrop-aspectratiocrop.o `test -f 'elements/aspectratiocrop.c' || echo '$(srcdir)/'`elements/aspectratiocrop.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Tpo $(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/aspectratiocrop.c' object='elements_aspectratiocrop-aspectratiocrop.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_aspectratiocrop_CFLAGS) $(CFLAGS) -c -o elements_aspectratiocrop-aspectratiocrop.o `test -f 'elements/aspectratiocrop.c' || echo '$(srcdir)/'`elements/aspectratiocrop.c - -elements_aspectratiocrop-aspectratiocrop.obj: elements/aspectratiocrop.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_aspectratiocrop_CFLAGS) $(CFLAGS) -MT elements_aspectratiocrop-aspectratiocrop.obj -MD -MP -MF $(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Tpo -c -o elements_aspectratiocrop-aspectratiocrop.obj `if test -f 'elements/aspectratiocrop.c'; then $(CYGPATH_W) 'elements/aspectratiocrop.c'; else $(CYGPATH_W) '$(srcdir)/elements/aspectratiocrop.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Tpo $(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/aspectratiocrop.c' object='elements_aspectratiocrop-aspectratiocrop.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_aspectratiocrop_CFLAGS) $(CFLAGS) -c -o elements_aspectratiocrop-aspectratiocrop.obj `if test -f 'elements/aspectratiocrop.c'; then $(CYGPATH_W) 'elements/aspectratiocrop.c'; else $(CYGPATH_W) '$(srcdir)/elements/aspectratiocrop.c'; fi` - -elements_audioamplify-audioamplify.o: elements/audioamplify.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioamplify_CFLAGS) $(CFLAGS) -MT elements_audioamplify-audioamplify.o -MD -MP -MF $(DEPDIR)/elements_audioamplify-audioamplify.Tpo -c -o elements_audioamplify-audioamplify.o `test -f 'elements/audioamplify.c' || echo '$(srcdir)/'`elements/audioamplify.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audioamplify-audioamplify.Tpo $(DEPDIR)/elements_audioamplify-audioamplify.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioamplify.c' object='elements_audioamplify-audioamplify.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioamplify_CFLAGS) $(CFLAGS) -c -o elements_audioamplify-audioamplify.o `test -f 'elements/audioamplify.c' || echo '$(srcdir)/'`elements/audioamplify.c - -elements_audioamplify-audioamplify.obj: elements/audioamplify.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioamplify_CFLAGS) $(CFLAGS) -MT elements_audioamplify-audioamplify.obj -MD -MP -MF $(DEPDIR)/elements_audioamplify-audioamplify.Tpo -c -o elements_audioamplify-audioamplify.obj `if test -f 'elements/audioamplify.c'; then $(CYGPATH_W) 'elements/audioamplify.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioamplify.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audioamplify-audioamplify.Tpo $(DEPDIR)/elements_audioamplify-audioamplify.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioamplify.c' object='elements_audioamplify-audioamplify.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioamplify_CFLAGS) $(CFLAGS) -c -o elements_audioamplify-audioamplify.obj `if test -f 'elements/audioamplify.c'; then $(CYGPATH_W) 'elements/audioamplify.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioamplify.c'; fi` - -elements_audiochebband-audiochebband.o: elements/audiochebband.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiochebband_CFLAGS) $(CFLAGS) -MT elements_audiochebband-audiochebband.o -MD -MP -MF $(DEPDIR)/elements_audiochebband-audiochebband.Tpo -c -o elements_audiochebband-audiochebband.o `test -f 'elements/audiochebband.c' || echo '$(srcdir)/'`elements/audiochebband.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiochebband-audiochebband.Tpo $(DEPDIR)/elements_audiochebband-audiochebband.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiochebband.c' object='elements_audiochebband-audiochebband.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiochebband_CFLAGS) $(CFLAGS) -c -o elements_audiochebband-audiochebband.o `test -f 'elements/audiochebband.c' || echo '$(srcdir)/'`elements/audiochebband.c - -elements_audiochebband-audiochebband.obj: elements/audiochebband.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiochebband_CFLAGS) $(CFLAGS) -MT elements_audiochebband-audiochebband.obj -MD -MP -MF $(DEPDIR)/elements_audiochebband-audiochebband.Tpo -c -o elements_audiochebband-audiochebband.obj `if test -f 'elements/audiochebband.c'; then $(CYGPATH_W) 'elements/audiochebband.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiochebband.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiochebband-audiochebband.Tpo $(DEPDIR)/elements_audiochebband-audiochebband.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiochebband.c' object='elements_audiochebband-audiochebband.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiochebband_CFLAGS) $(CFLAGS) -c -o elements_audiochebband-audiochebband.obj `if test -f 'elements/audiochebband.c'; then $(CYGPATH_W) 'elements/audiochebband.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiochebband.c'; fi` - -elements_audiocheblimit-audiocheblimit.o: elements/audiocheblimit.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiocheblimit_CFLAGS) $(CFLAGS) -MT elements_audiocheblimit-audiocheblimit.o -MD -MP -MF $(DEPDIR)/elements_audiocheblimit-audiocheblimit.Tpo -c -o elements_audiocheblimit-audiocheblimit.o `test -f 'elements/audiocheblimit.c' || echo '$(srcdir)/'`elements/audiocheblimit.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiocheblimit-audiocheblimit.Tpo $(DEPDIR)/elements_audiocheblimit-audiocheblimit.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiocheblimit.c' object='elements_audiocheblimit-audiocheblimit.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiocheblimit_CFLAGS) $(CFLAGS) -c -o elements_audiocheblimit-audiocheblimit.o `test -f 'elements/audiocheblimit.c' || echo '$(srcdir)/'`elements/audiocheblimit.c - -elements_audiocheblimit-audiocheblimit.obj: elements/audiocheblimit.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiocheblimit_CFLAGS) $(CFLAGS) -MT elements_audiocheblimit-audiocheblimit.obj -MD -MP -MF $(DEPDIR)/elements_audiocheblimit-audiocheblimit.Tpo -c -o elements_audiocheblimit-audiocheblimit.obj `if test -f 'elements/audiocheblimit.c'; then $(CYGPATH_W) 'elements/audiocheblimit.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiocheblimit.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiocheblimit-audiocheblimit.Tpo $(DEPDIR)/elements_audiocheblimit-audiocheblimit.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiocheblimit.c' object='elements_audiocheblimit-audiocheblimit.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiocheblimit_CFLAGS) $(CFLAGS) -c -o elements_audiocheblimit-audiocheblimit.obj `if test -f 'elements/audiocheblimit.c'; then $(CYGPATH_W) 'elements/audiocheblimit.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiocheblimit.c'; fi` - -elements_audiodynamic-audiodynamic.o: elements/audiodynamic.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiodynamic_CFLAGS) $(CFLAGS) -MT elements_audiodynamic-audiodynamic.o -MD -MP -MF $(DEPDIR)/elements_audiodynamic-audiodynamic.Tpo -c -o elements_audiodynamic-audiodynamic.o `test -f 'elements/audiodynamic.c' || echo '$(srcdir)/'`elements/audiodynamic.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiodynamic-audiodynamic.Tpo $(DEPDIR)/elements_audiodynamic-audiodynamic.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiodynamic.c' object='elements_audiodynamic-audiodynamic.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiodynamic_CFLAGS) $(CFLAGS) -c -o elements_audiodynamic-audiodynamic.o `test -f 'elements/audiodynamic.c' || echo '$(srcdir)/'`elements/audiodynamic.c - -elements_audiodynamic-audiodynamic.obj: elements/audiodynamic.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiodynamic_CFLAGS) $(CFLAGS) -MT elements_audiodynamic-audiodynamic.obj -MD -MP -MF $(DEPDIR)/elements_audiodynamic-audiodynamic.Tpo -c -o elements_audiodynamic-audiodynamic.obj `if test -f 'elements/audiodynamic.c'; then $(CYGPATH_W) 'elements/audiodynamic.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiodynamic.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiodynamic-audiodynamic.Tpo $(DEPDIR)/elements_audiodynamic-audiodynamic.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiodynamic.c' object='elements_audiodynamic-audiodynamic.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiodynamic_CFLAGS) $(CFLAGS) -c -o elements_audiodynamic-audiodynamic.obj `if test -f 'elements/audiodynamic.c'; then $(CYGPATH_W) 'elements/audiodynamic.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiodynamic.c'; fi` - -elements_audioecho-audioecho.o: elements/audioecho.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioecho_CFLAGS) $(CFLAGS) -MT elements_audioecho-audioecho.o -MD -MP -MF $(DEPDIR)/elements_audioecho-audioecho.Tpo -c -o elements_audioecho-audioecho.o `test -f 'elements/audioecho.c' || echo '$(srcdir)/'`elements/audioecho.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audioecho-audioecho.Tpo $(DEPDIR)/elements_audioecho-audioecho.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioecho.c' object='elements_audioecho-audioecho.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioecho_CFLAGS) $(CFLAGS) -c -o elements_audioecho-audioecho.o `test -f 'elements/audioecho.c' || echo '$(srcdir)/'`elements/audioecho.c - -elements_audioecho-audioecho.obj: elements/audioecho.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioecho_CFLAGS) $(CFLAGS) -MT elements_audioecho-audioecho.obj -MD -MP -MF $(DEPDIR)/elements_audioecho-audioecho.Tpo -c -o elements_audioecho-audioecho.obj `if test -f 'elements/audioecho.c'; then $(CYGPATH_W) 'elements/audioecho.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioecho.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audioecho-audioecho.Tpo $(DEPDIR)/elements_audioecho-audioecho.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioecho.c' object='elements_audioecho-audioecho.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioecho_CFLAGS) $(CFLAGS) -c -o elements_audioecho-audioecho.obj `if test -f 'elements/audioecho.c'; then $(CYGPATH_W) 'elements/audioecho.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioecho.c'; fi` - -audiofirfilter.o: elements/audiofirfilter.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT audiofirfilter.o -MD -MP -MF $(DEPDIR)/audiofirfilter.Tpo -c -o audiofirfilter.o `test -f 'elements/audiofirfilter.c' || echo '$(srcdir)/'`elements/audiofirfilter.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/audiofirfilter.Tpo $(DEPDIR)/audiofirfilter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiofirfilter.c' object='audiofirfilter.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o audiofirfilter.o `test -f 'elements/audiofirfilter.c' || echo '$(srcdir)/'`elements/audiofirfilter.c - -audiofirfilter.obj: elements/audiofirfilter.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT audiofirfilter.obj -MD -MP -MF $(DEPDIR)/audiofirfilter.Tpo -c -o audiofirfilter.obj `if test -f 'elements/audiofirfilter.c'; then $(CYGPATH_W) 'elements/audiofirfilter.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiofirfilter.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/audiofirfilter.Tpo $(DEPDIR)/audiofirfilter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiofirfilter.c' object='audiofirfilter.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o audiofirfilter.obj `if test -f 'elements/audiofirfilter.c'; then $(CYGPATH_W) 'elements/audiofirfilter.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiofirfilter.c'; fi` - -audioiirfilter.o: elements/audioiirfilter.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT audioiirfilter.o -MD -MP -MF $(DEPDIR)/audioiirfilter.Tpo -c -o audioiirfilter.o `test -f 'elements/audioiirfilter.c' || echo '$(srcdir)/'`elements/audioiirfilter.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/audioiirfilter.Tpo $(DEPDIR)/audioiirfilter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioiirfilter.c' object='audioiirfilter.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o audioiirfilter.o `test -f 'elements/audioiirfilter.c' || echo '$(srcdir)/'`elements/audioiirfilter.c - -audioiirfilter.obj: elements/audioiirfilter.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT audioiirfilter.obj -MD -MP -MF $(DEPDIR)/audioiirfilter.Tpo -c -o audioiirfilter.obj `if test -f 'elements/audioiirfilter.c'; then $(CYGPATH_W) 'elements/audioiirfilter.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioiirfilter.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/audioiirfilter.Tpo $(DEPDIR)/audioiirfilter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioiirfilter.c' object='audioiirfilter.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o audioiirfilter.obj `if test -f 'elements/audioiirfilter.c'; then $(CYGPATH_W) 'elements/audioiirfilter.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioiirfilter.c'; fi` - -elements_audioinvert-audioinvert.o: elements/audioinvert.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioinvert_CFLAGS) $(CFLAGS) -MT elements_audioinvert-audioinvert.o -MD -MP -MF $(DEPDIR)/elements_audioinvert-audioinvert.Tpo -c -o elements_audioinvert-audioinvert.o `test -f 'elements/audioinvert.c' || echo '$(srcdir)/'`elements/audioinvert.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audioinvert-audioinvert.Tpo $(DEPDIR)/elements_audioinvert-audioinvert.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioinvert.c' object='elements_audioinvert-audioinvert.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioinvert_CFLAGS) $(CFLAGS) -c -o elements_audioinvert-audioinvert.o `test -f 'elements/audioinvert.c' || echo '$(srcdir)/'`elements/audioinvert.c - -elements_audioinvert-audioinvert.obj: elements/audioinvert.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioinvert_CFLAGS) $(CFLAGS) -MT elements_audioinvert-audioinvert.obj -MD -MP -MF $(DEPDIR)/elements_audioinvert-audioinvert.Tpo -c -o elements_audioinvert-audioinvert.obj `if test -f 'elements/audioinvert.c'; then $(CYGPATH_W) 'elements/audioinvert.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioinvert.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audioinvert-audioinvert.Tpo $(DEPDIR)/elements_audioinvert-audioinvert.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioinvert.c' object='elements_audioinvert-audioinvert.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioinvert_CFLAGS) $(CFLAGS) -c -o elements_audioinvert-audioinvert.obj `if test -f 'elements/audioinvert.c'; then $(CYGPATH_W) 'elements/audioinvert.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioinvert.c'; fi` - -elements_audiopanorama-audiopanorama.o: elements/audiopanorama.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiopanorama_CFLAGS) $(CFLAGS) -MT elements_audiopanorama-audiopanorama.o -MD -MP -MF $(DEPDIR)/elements_audiopanorama-audiopanorama.Tpo -c -o elements_audiopanorama-audiopanorama.o `test -f 'elements/audiopanorama.c' || echo '$(srcdir)/'`elements/audiopanorama.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiopanorama-audiopanorama.Tpo $(DEPDIR)/elements_audiopanorama-audiopanorama.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiopanorama.c' object='elements_audiopanorama-audiopanorama.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiopanorama_CFLAGS) $(CFLAGS) -c -o elements_audiopanorama-audiopanorama.o `test -f 'elements/audiopanorama.c' || echo '$(srcdir)/'`elements/audiopanorama.c - -elements_audiopanorama-audiopanorama.obj: elements/audiopanorama.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiopanorama_CFLAGS) $(CFLAGS) -MT elements_audiopanorama-audiopanorama.obj -MD -MP -MF $(DEPDIR)/elements_audiopanorama-audiopanorama.Tpo -c -o elements_audiopanorama-audiopanorama.obj `if test -f 'elements/audiopanorama.c'; then $(CYGPATH_W) 'elements/audiopanorama.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiopanorama.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiopanorama-audiopanorama.Tpo $(DEPDIR)/elements_audiopanorama-audiopanorama.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiopanorama.c' object='elements_audiopanorama-audiopanorama.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiopanorama_CFLAGS) $(CFLAGS) -c -o elements_audiopanorama-audiopanorama.obj `if test -f 'elements/audiopanorama.c'; then $(CYGPATH_W) 'elements/audiopanorama.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiopanorama.c'; fi` - -elements_audiowsincband-audiowsincband.o: elements/audiowsincband.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsincband_CFLAGS) $(CFLAGS) -MT elements_audiowsincband-audiowsincband.o -MD -MP -MF $(DEPDIR)/elements_audiowsincband-audiowsincband.Tpo -c -o elements_audiowsincband-audiowsincband.o `test -f 'elements/audiowsincband.c' || echo '$(srcdir)/'`elements/audiowsincband.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiowsincband-audiowsincband.Tpo $(DEPDIR)/elements_audiowsincband-audiowsincband.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiowsincband.c' object='elements_audiowsincband-audiowsincband.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsincband_CFLAGS) $(CFLAGS) -c -o elements_audiowsincband-audiowsincband.o `test -f 'elements/audiowsincband.c' || echo '$(srcdir)/'`elements/audiowsincband.c - -elements_audiowsincband-audiowsincband.obj: elements/audiowsincband.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsincband_CFLAGS) $(CFLAGS) -MT elements_audiowsincband-audiowsincband.obj -MD -MP -MF $(DEPDIR)/elements_audiowsincband-audiowsincband.Tpo -c -o elements_audiowsincband-audiowsincband.obj `if test -f 'elements/audiowsincband.c'; then $(CYGPATH_W) 'elements/audiowsincband.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiowsincband.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiowsincband-audiowsincband.Tpo $(DEPDIR)/elements_audiowsincband-audiowsincband.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiowsincband.c' object='elements_audiowsincband-audiowsincband.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsincband_CFLAGS) $(CFLAGS) -c -o elements_audiowsincband-audiowsincband.obj `if test -f 'elements/audiowsincband.c'; then $(CYGPATH_W) 'elements/audiowsincband.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiowsincband.c'; fi` - -elements_audiowsinclimit-audiowsinclimit.o: elements/audiowsinclimit.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsinclimit_CFLAGS) $(CFLAGS) -MT elements_audiowsinclimit-audiowsinclimit.o -MD -MP -MF $(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Tpo -c -o elements_audiowsinclimit-audiowsinclimit.o `test -f 'elements/audiowsinclimit.c' || echo '$(srcdir)/'`elements/audiowsinclimit.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Tpo $(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiowsinclimit.c' object='elements_audiowsinclimit-audiowsinclimit.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsinclimit_CFLAGS) $(CFLAGS) -c -o elements_audiowsinclimit-audiowsinclimit.o `test -f 'elements/audiowsinclimit.c' || echo '$(srcdir)/'`elements/audiowsinclimit.c - -elements_audiowsinclimit-audiowsinclimit.obj: elements/audiowsinclimit.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsinclimit_CFLAGS) $(CFLAGS) -MT elements_audiowsinclimit-audiowsinclimit.obj -MD -MP -MF $(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Tpo -c -o elements_audiowsinclimit-audiowsinclimit.obj `if test -f 'elements/audiowsinclimit.c'; then $(CYGPATH_W) 'elements/audiowsinclimit.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiowsinclimit.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Tpo $(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiowsinclimit.c' object='elements_audiowsinclimit-audiowsinclimit.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsinclimit_CFLAGS) $(CFLAGS) -c -o elements_audiowsinclimit-audiowsinclimit.obj `if test -f 'elements/audiowsinclimit.c'; then $(CYGPATH_W) 'elements/audiowsinclimit.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiowsinclimit.c'; fi` - -autodetect.o: elements/autodetect.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT autodetect.o -MD -MP -MF $(DEPDIR)/autodetect.Tpo -c -o autodetect.o `test -f 'elements/autodetect.c' || echo '$(srcdir)/'`elements/autodetect.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/autodetect.Tpo $(DEPDIR)/autodetect.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/autodetect.c' object='autodetect.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o autodetect.o `test -f 'elements/autodetect.c' || echo '$(srcdir)/'`elements/autodetect.c - -autodetect.obj: elements/autodetect.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT autodetect.obj -MD -MP -MF $(DEPDIR)/autodetect.Tpo -c -o autodetect.obj `if test -f 'elements/autodetect.c'; then $(CYGPATH_W) 'elements/autodetect.c'; else $(CYGPATH_W) '$(srcdir)/elements/autodetect.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/autodetect.Tpo $(DEPDIR)/autodetect.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/autodetect.c' object='autodetect.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o autodetect.obj `if test -f 'elements/autodetect.c'; then $(CYGPATH_W) 'elements/autodetect.c'; else $(CYGPATH_W) '$(srcdir)/elements/autodetect.c'; fi` - -avimux.o: elements/avimux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avimux.o -MD -MP -MF $(DEPDIR)/avimux.Tpo -c -o avimux.o `test -f 'elements/avimux.c' || echo '$(srcdir)/'`elements/avimux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avimux.Tpo $(DEPDIR)/avimux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/avimux.c' object='avimux.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avimux.o `test -f 'elements/avimux.c' || echo '$(srcdir)/'`elements/avimux.c - -avimux.obj: elements/avimux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avimux.obj -MD -MP -MF $(DEPDIR)/avimux.Tpo -c -o avimux.obj `if test -f 'elements/avimux.c'; then $(CYGPATH_W) 'elements/avimux.c'; else $(CYGPATH_W) '$(srcdir)/elements/avimux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avimux.Tpo $(DEPDIR)/avimux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/avimux.c' object='avimux.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avimux.obj `if test -f 'elements/avimux.c'; then $(CYGPATH_W) 'elements/avimux.c'; else $(CYGPATH_W) '$(srcdir)/elements/avimux.c'; fi` - -avisubtitle.o: elements/avisubtitle.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avisubtitle.o -MD -MP -MF $(DEPDIR)/avisubtitle.Tpo -c -o avisubtitle.o `test -f 'elements/avisubtitle.c' || echo '$(srcdir)/'`elements/avisubtitle.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avisubtitle.Tpo $(DEPDIR)/avisubtitle.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/avisubtitle.c' object='avisubtitle.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avisubtitle.o `test -f 'elements/avisubtitle.c' || echo '$(srcdir)/'`elements/avisubtitle.c - -avisubtitle.obj: elements/avisubtitle.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT avisubtitle.obj -MD -MP -MF $(DEPDIR)/avisubtitle.Tpo -c -o avisubtitle.obj `if test -f 'elements/avisubtitle.c'; then $(CYGPATH_W) 'elements/avisubtitle.c'; else $(CYGPATH_W) '$(srcdir)/elements/avisubtitle.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/avisubtitle.Tpo $(DEPDIR)/avisubtitle.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/avisubtitle.c' object='avisubtitle.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o avisubtitle.obj `if test -f 'elements/avisubtitle.c'; then $(CYGPATH_W) 'elements/avisubtitle.c'; else $(CYGPATH_W) '$(srcdir)/elements/avisubtitle.c'; fi` - -capssetter.o: elements/capssetter.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT capssetter.o -MD -MP -MF $(DEPDIR)/capssetter.Tpo -c -o capssetter.o `test -f 'elements/capssetter.c' || echo '$(srcdir)/'`elements/capssetter.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/capssetter.Tpo $(DEPDIR)/capssetter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/capssetter.c' object='capssetter.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o capssetter.o `test -f 'elements/capssetter.c' || echo '$(srcdir)/'`elements/capssetter.c - -capssetter.obj: elements/capssetter.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT capssetter.obj -MD -MP -MF $(DEPDIR)/capssetter.Tpo -c -o capssetter.obj `if test -f 'elements/capssetter.c'; then $(CYGPATH_W) 'elements/capssetter.c'; else $(CYGPATH_W) '$(srcdir)/elements/capssetter.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/capssetter.Tpo $(DEPDIR)/capssetter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/capssetter.c' object='capssetter.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o capssetter.obj `if test -f 'elements/capssetter.c'; then $(CYGPATH_W) 'elements/capssetter.c'; else $(CYGPATH_W) '$(srcdir)/elements/capssetter.c'; fi` - -elements_deinterlace-deinterlace.o: elements/deinterlace.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterlace_CFLAGS) $(CFLAGS) -MT elements_deinterlace-deinterlace.o -MD -MP -MF $(DEPDIR)/elements_deinterlace-deinterlace.Tpo -c -o elements_deinterlace-deinterlace.o `test -f 'elements/deinterlace.c' || echo '$(srcdir)/'`elements/deinterlace.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_deinterlace-deinterlace.Tpo $(DEPDIR)/elements_deinterlace-deinterlace.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/deinterlace.c' object='elements_deinterlace-deinterlace.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterlace_CFLAGS) $(CFLAGS) -c -o elements_deinterlace-deinterlace.o `test -f 'elements/deinterlace.c' || echo '$(srcdir)/'`elements/deinterlace.c - -elements_deinterlace-deinterlace.obj: elements/deinterlace.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterlace_CFLAGS) $(CFLAGS) -MT elements_deinterlace-deinterlace.obj -MD -MP -MF $(DEPDIR)/elements_deinterlace-deinterlace.Tpo -c -o elements_deinterlace-deinterlace.obj `if test -f 'elements/deinterlace.c'; then $(CYGPATH_W) 'elements/deinterlace.c'; else $(CYGPATH_W) '$(srcdir)/elements/deinterlace.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_deinterlace-deinterlace.Tpo $(DEPDIR)/elements_deinterlace-deinterlace.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/deinterlace.c' object='elements_deinterlace-deinterlace.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterlace_CFLAGS) $(CFLAGS) -c -o elements_deinterlace-deinterlace.obj `if test -f 'elements/deinterlace.c'; then $(CYGPATH_W) 'elements/deinterlace.c'; else $(CYGPATH_W) '$(srcdir)/elements/deinterlace.c'; fi` - -elements_deinterleave-deinterleave.o: elements/deinterleave.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterleave_CFLAGS) $(CFLAGS) -MT elements_deinterleave-deinterleave.o -MD -MP -MF $(DEPDIR)/elements_deinterleave-deinterleave.Tpo -c -o elements_deinterleave-deinterleave.o `test -f 'elements/deinterleave.c' || echo '$(srcdir)/'`elements/deinterleave.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_deinterleave-deinterleave.Tpo $(DEPDIR)/elements_deinterleave-deinterleave.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/deinterleave.c' object='elements_deinterleave-deinterleave.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterleave_CFLAGS) $(CFLAGS) -c -o elements_deinterleave-deinterleave.o `test -f 'elements/deinterleave.c' || echo '$(srcdir)/'`elements/deinterleave.c - -elements_deinterleave-deinterleave.obj: elements/deinterleave.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterleave_CFLAGS) $(CFLAGS) -MT elements_deinterleave-deinterleave.obj -MD -MP -MF $(DEPDIR)/elements_deinterleave-deinterleave.Tpo -c -o elements_deinterleave-deinterleave.obj `if test -f 'elements/deinterleave.c'; then $(CYGPATH_W) 'elements/deinterleave.c'; else $(CYGPATH_W) '$(srcdir)/elements/deinterleave.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_deinterleave-deinterleave.Tpo $(DEPDIR)/elements_deinterleave-deinterleave.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/deinterleave.c' object='elements_deinterleave-deinterleave.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterleave_CFLAGS) $(CFLAGS) -c -o elements_deinterleave-deinterleave.obj `if test -f 'elements/deinterleave.c'; then $(CYGPATH_W) 'elements/deinterleave.c'; else $(CYGPATH_W) '$(srcdir)/elements/deinterleave.c'; fi` - -elements_equalizer-equalizer.o: elements/equalizer.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_equalizer_CFLAGS) $(CFLAGS) -MT elements_equalizer-equalizer.o -MD -MP -MF $(DEPDIR)/elements_equalizer-equalizer.Tpo -c -o elements_equalizer-equalizer.o `test -f 'elements/equalizer.c' || echo '$(srcdir)/'`elements/equalizer.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_equalizer-equalizer.Tpo $(DEPDIR)/elements_equalizer-equalizer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/equalizer.c' object='elements_equalizer-equalizer.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_equalizer_CFLAGS) $(CFLAGS) -c -o elements_equalizer-equalizer.o `test -f 'elements/equalizer.c' || echo '$(srcdir)/'`elements/equalizer.c - -elements_equalizer-equalizer.obj: elements/equalizer.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_equalizer_CFLAGS) $(CFLAGS) -MT elements_equalizer-equalizer.obj -MD -MP -MF $(DEPDIR)/elements_equalizer-equalizer.Tpo -c -o elements_equalizer-equalizer.obj `if test -f 'elements/equalizer.c'; then $(CYGPATH_W) 'elements/equalizer.c'; else $(CYGPATH_W) '$(srcdir)/elements/equalizer.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_equalizer-equalizer.Tpo $(DEPDIR)/elements_equalizer-equalizer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/equalizer.c' object='elements_equalizer-equalizer.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_equalizer_CFLAGS) $(CFLAGS) -c -o elements_equalizer-equalizer.obj `if test -f 'elements/equalizer.c'; then $(CYGPATH_W) 'elements/equalizer.c'; else $(CYGPATH_W) '$(srcdir)/elements/equalizer.c'; fi` - -flacparse.o: elements/flacparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT flacparse.o -MD -MP -MF $(DEPDIR)/flacparse.Tpo -c -o flacparse.o `test -f 'elements/flacparse.c' || echo '$(srcdir)/'`elements/flacparse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flacparse.Tpo $(DEPDIR)/flacparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/flacparse.c' object='flacparse.o' libtool=no @AMDEPBACKSLASH@ +elements/libparser_la-parser.lo: elements/parser.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libparser_la_CFLAGS) $(CFLAGS) -MT elements/libparser_la-parser.lo -MD -MP -MF elements/$(DEPDIR)/libparser_la-parser.Tpo -c -o elements/libparser_la-parser.lo `test -f 'elements/parser.c' || echo '$(srcdir)/'`elements/parser.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/libparser_la-parser.Tpo elements/$(DEPDIR)/libparser_la-parser.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/parser.c' object='elements/libparser_la-parser.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o flacparse.o `test -f 'elements/flacparse.c' || echo '$(srcdir)/'`elements/flacparse.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libparser_la_CFLAGS) $(CFLAGS) -c -o elements/libparser_la-parser.lo `test -f 'elements/parser.c' || echo '$(srcdir)/'`elements/parser.c -flacparse.obj: elements/flacparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT flacparse.obj -MD -MP -MF $(DEPDIR)/flacparse.Tpo -c -o flacparse.obj `if test -f 'elements/flacparse.c'; then $(CYGPATH_W) 'elements/flacparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/flacparse.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flacparse.Tpo $(DEPDIR)/flacparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/flacparse.c' object='flacparse.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_alphacolor-alphacolor.o: elements/alphacolor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_alphacolor_CFLAGS) $(CFLAGS) -MT elements/elements_alphacolor-alphacolor.o -MD -MP -MF elements/$(DEPDIR)/elements_alphacolor-alphacolor.Tpo -c -o elements/elements_alphacolor-alphacolor.o `test -f 'elements/alphacolor.c' || echo '$(srcdir)/'`elements/alphacolor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_alphacolor-alphacolor.Tpo elements/$(DEPDIR)/elements_alphacolor-alphacolor.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/alphacolor.c' object='elements/elements_alphacolor-alphacolor.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o flacparse.obj `if test -f 'elements/flacparse.c'; then $(CYGPATH_W) 'elements/flacparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/flacparse.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_alphacolor_CFLAGS) $(CFLAGS) -c -o elements/elements_alphacolor-alphacolor.o `test -f 'elements/alphacolor.c' || echo '$(srcdir)/'`elements/alphacolor.c -flvdemux.o: elements/flvdemux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT flvdemux.o -MD -MP -MF $(DEPDIR)/flvdemux.Tpo -c -o flvdemux.o `test -f 'elements/flvdemux.c' || echo '$(srcdir)/'`elements/flvdemux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flvdemux.Tpo $(DEPDIR)/flvdemux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/flvdemux.c' object='flvdemux.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_alphacolor-alphacolor.obj: elements/alphacolor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_alphacolor_CFLAGS) $(CFLAGS) -MT elements/elements_alphacolor-alphacolor.obj -MD -MP -MF elements/$(DEPDIR)/elements_alphacolor-alphacolor.Tpo -c -o elements/elements_alphacolor-alphacolor.obj `if test -f 'elements/alphacolor.c'; then $(CYGPATH_W) 'elements/alphacolor.c'; else $(CYGPATH_W) '$(srcdir)/elements/alphacolor.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_alphacolor-alphacolor.Tpo elements/$(DEPDIR)/elements_alphacolor-alphacolor.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/alphacolor.c' object='elements/elements_alphacolor-alphacolor.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o flvdemux.o `test -f 'elements/flvdemux.c' || echo '$(srcdir)/'`elements/flvdemux.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_alphacolor_CFLAGS) $(CFLAGS) -c -o elements/elements_alphacolor-alphacolor.obj `if test -f 'elements/alphacolor.c'; then $(CYGPATH_W) 'elements/alphacolor.c'; else $(CYGPATH_W) '$(srcdir)/elements/alphacolor.c'; fi` -flvdemux.obj: elements/flvdemux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT flvdemux.obj -MD -MP -MF $(DEPDIR)/flvdemux.Tpo -c -o flvdemux.obj `if test -f 'elements/flvdemux.c'; then $(CYGPATH_W) 'elements/flvdemux.c'; else $(CYGPATH_W) '$(srcdir)/elements/flvdemux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flvdemux.Tpo $(DEPDIR)/flvdemux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/flvdemux.c' object='flvdemux.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_aspectratiocrop-aspectratiocrop.o: elements/aspectratiocrop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_aspectratiocrop_CFLAGS) $(CFLAGS) -MT elements/elements_aspectratiocrop-aspectratiocrop.o -MD -MP -MF elements/$(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Tpo -c -o elements/elements_aspectratiocrop-aspectratiocrop.o `test -f 'elements/aspectratiocrop.c' || echo '$(srcdir)/'`elements/aspectratiocrop.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Tpo elements/$(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/aspectratiocrop.c' object='elements/elements_aspectratiocrop-aspectratiocrop.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o flvdemux.obj `if test -f 'elements/flvdemux.c'; then $(CYGPATH_W) 'elements/flvdemux.c'; else $(CYGPATH_W) '$(srcdir)/elements/flvdemux.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_aspectratiocrop_CFLAGS) $(CFLAGS) -c -o elements/elements_aspectratiocrop-aspectratiocrop.o `test -f 'elements/aspectratiocrop.c' || echo '$(srcdir)/'`elements/aspectratiocrop.c -flvmux.o: elements/flvmux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT flvmux.o -MD -MP -MF $(DEPDIR)/flvmux.Tpo -c -o flvmux.o `test -f 'elements/flvmux.c' || echo '$(srcdir)/'`elements/flvmux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flvmux.Tpo $(DEPDIR)/flvmux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/flvmux.c' object='flvmux.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_aspectratiocrop-aspectratiocrop.obj: elements/aspectratiocrop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_aspectratiocrop_CFLAGS) $(CFLAGS) -MT elements/elements_aspectratiocrop-aspectratiocrop.obj -MD -MP -MF elements/$(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Tpo -c -o elements/elements_aspectratiocrop-aspectratiocrop.obj `if test -f 'elements/aspectratiocrop.c'; then $(CYGPATH_W) 'elements/aspectratiocrop.c'; else $(CYGPATH_W) '$(srcdir)/elements/aspectratiocrop.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Tpo elements/$(DEPDIR)/elements_aspectratiocrop-aspectratiocrop.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/aspectratiocrop.c' object='elements/elements_aspectratiocrop-aspectratiocrop.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o flvmux.o `test -f 'elements/flvmux.c' || echo '$(srcdir)/'`elements/flvmux.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_aspectratiocrop_CFLAGS) $(CFLAGS) -c -o elements/elements_aspectratiocrop-aspectratiocrop.obj `if test -f 'elements/aspectratiocrop.c'; then $(CYGPATH_W) 'elements/aspectratiocrop.c'; else $(CYGPATH_W) '$(srcdir)/elements/aspectratiocrop.c'; fi` -flvmux.obj: elements/flvmux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT flvmux.obj -MD -MP -MF $(DEPDIR)/flvmux.Tpo -c -o flvmux.obj `if test -f 'elements/flvmux.c'; then $(CYGPATH_W) 'elements/flvmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/flvmux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flvmux.Tpo $(DEPDIR)/flvmux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/flvmux.c' object='flvmux.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_audioamplify-audioamplify.o: elements/audioamplify.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioamplify_CFLAGS) $(CFLAGS) -MT elements/elements_audioamplify-audioamplify.o -MD -MP -MF elements/$(DEPDIR)/elements_audioamplify-audioamplify.Tpo -c -o elements/elements_audioamplify-audioamplify.o `test -f 'elements/audioamplify.c' || echo '$(srcdir)/'`elements/audioamplify.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audioamplify-audioamplify.Tpo elements/$(DEPDIR)/elements_audioamplify-audioamplify.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioamplify.c' object='elements/elements_audioamplify-audioamplify.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o flvmux.obj `if test -f 'elements/flvmux.c'; then $(CYGPATH_W) 'elements/flvmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/flvmux.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioamplify_CFLAGS) $(CFLAGS) -c -o elements/elements_audioamplify-audioamplify.o `test -f 'elements/audioamplify.c' || echo '$(srcdir)/'`elements/audioamplify.c -elements_gdkpixbufsink-gdkpixbufsink.o: elements/gdkpixbufsink.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_gdkpixbufsink_CFLAGS) $(CFLAGS) -MT elements_gdkpixbufsink-gdkpixbufsink.o -MD -MP -MF $(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Tpo -c -o elements_gdkpixbufsink-gdkpixbufsink.o `test -f 'elements/gdkpixbufsink.c' || echo '$(srcdir)/'`elements/gdkpixbufsink.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Tpo $(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/gdkpixbufsink.c' object='elements_gdkpixbufsink-gdkpixbufsink.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_audioamplify-audioamplify.obj: elements/audioamplify.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioamplify_CFLAGS) $(CFLAGS) -MT elements/elements_audioamplify-audioamplify.obj -MD -MP -MF elements/$(DEPDIR)/elements_audioamplify-audioamplify.Tpo -c -o elements/elements_audioamplify-audioamplify.obj `if test -f 'elements/audioamplify.c'; then $(CYGPATH_W) 'elements/audioamplify.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioamplify.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audioamplify-audioamplify.Tpo elements/$(DEPDIR)/elements_audioamplify-audioamplify.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioamplify.c' object='elements/elements_audioamplify-audioamplify.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_gdkpixbufsink_CFLAGS) $(CFLAGS) -c -o elements_gdkpixbufsink-gdkpixbufsink.o `test -f 'elements/gdkpixbufsink.c' || echo '$(srcdir)/'`elements/gdkpixbufsink.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioamplify_CFLAGS) $(CFLAGS) -c -o elements/elements_audioamplify-audioamplify.obj `if test -f 'elements/audioamplify.c'; then $(CYGPATH_W) 'elements/audioamplify.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioamplify.c'; fi` -elements_gdkpixbufsink-gdkpixbufsink.obj: elements/gdkpixbufsink.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_gdkpixbufsink_CFLAGS) $(CFLAGS) -MT elements_gdkpixbufsink-gdkpixbufsink.obj -MD -MP -MF $(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Tpo -c -o elements_gdkpixbufsink-gdkpixbufsink.obj `if test -f 'elements/gdkpixbufsink.c'; then $(CYGPATH_W) 'elements/gdkpixbufsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/gdkpixbufsink.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Tpo $(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/gdkpixbufsink.c' object='elements_gdkpixbufsink-gdkpixbufsink.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiochebband-audiochebband.o: elements/audiochebband.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiochebband_CFLAGS) $(CFLAGS) -MT elements/elements_audiochebband-audiochebband.o -MD -MP -MF elements/$(DEPDIR)/elements_audiochebband-audiochebband.Tpo -c -o elements/elements_audiochebband-audiochebband.o `test -f 'elements/audiochebband.c' || echo '$(srcdir)/'`elements/audiochebband.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiochebband-audiochebband.Tpo elements/$(DEPDIR)/elements_audiochebband-audiochebband.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiochebband.c' object='elements/elements_audiochebband-audiochebband.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_gdkpixbufsink_CFLAGS) $(CFLAGS) -c -o elements_gdkpixbufsink-gdkpixbufsink.obj `if test -f 'elements/gdkpixbufsink.c'; then $(CYGPATH_W) 'elements/gdkpixbufsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/gdkpixbufsink.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiochebband_CFLAGS) $(CFLAGS) -c -o elements/elements_audiochebband-audiochebband.o `test -f 'elements/audiochebband.c' || echo '$(srcdir)/'`elements/audiochebband.c -icydemux.o: elements/icydemux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT icydemux.o -MD -MP -MF $(DEPDIR)/icydemux.Tpo -c -o icydemux.o `test -f 'elements/icydemux.c' || echo '$(srcdir)/'`elements/icydemux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/icydemux.Tpo $(DEPDIR)/icydemux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/icydemux.c' object='icydemux.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiochebband-audiochebband.obj: elements/audiochebband.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiochebband_CFLAGS) $(CFLAGS) -MT elements/elements_audiochebband-audiochebband.obj -MD -MP -MF elements/$(DEPDIR)/elements_audiochebband-audiochebband.Tpo -c -o elements/elements_audiochebband-audiochebband.obj `if test -f 'elements/audiochebband.c'; then $(CYGPATH_W) 'elements/audiochebband.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiochebband.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiochebband-audiochebband.Tpo elements/$(DEPDIR)/elements_audiochebband-audiochebband.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiochebband.c' object='elements/elements_audiochebband-audiochebband.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o icydemux.o `test -f 'elements/icydemux.c' || echo '$(srcdir)/'`elements/icydemux.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiochebband_CFLAGS) $(CFLAGS) -c -o elements/elements_audiochebband-audiochebband.obj `if test -f 'elements/audiochebband.c'; then $(CYGPATH_W) 'elements/audiochebband.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiochebband.c'; fi` -icydemux.obj: elements/icydemux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT icydemux.obj -MD -MP -MF $(DEPDIR)/icydemux.Tpo -c -o icydemux.obj `if test -f 'elements/icydemux.c'; then $(CYGPATH_W) 'elements/icydemux.c'; else $(CYGPATH_W) '$(srcdir)/elements/icydemux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/icydemux.Tpo $(DEPDIR)/icydemux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/icydemux.c' object='icydemux.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiocheblimit-audiocheblimit.o: elements/audiocheblimit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiocheblimit_CFLAGS) $(CFLAGS) -MT elements/elements_audiocheblimit-audiocheblimit.o -MD -MP -MF elements/$(DEPDIR)/elements_audiocheblimit-audiocheblimit.Tpo -c -o elements/elements_audiocheblimit-audiocheblimit.o `test -f 'elements/audiocheblimit.c' || echo '$(srcdir)/'`elements/audiocheblimit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiocheblimit-audiocheblimit.Tpo elements/$(DEPDIR)/elements_audiocheblimit-audiocheblimit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiocheblimit.c' object='elements/elements_audiocheblimit-audiocheblimit.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o icydemux.obj `if test -f 'elements/icydemux.c'; then $(CYGPATH_W) 'elements/icydemux.c'; else $(CYGPATH_W) '$(srcdir)/elements/icydemux.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiocheblimit_CFLAGS) $(CFLAGS) -c -o elements/elements_audiocheblimit-audiocheblimit.o `test -f 'elements/audiocheblimit.c' || echo '$(srcdir)/'`elements/audiocheblimit.c -id3demux.o: elements/id3demux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT id3demux.o -MD -MP -MF $(DEPDIR)/id3demux.Tpo -c -o id3demux.o `test -f 'elements/id3demux.c' || echo '$(srcdir)/'`elements/id3demux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/id3demux.Tpo $(DEPDIR)/id3demux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/id3demux.c' object='id3demux.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiocheblimit-audiocheblimit.obj: elements/audiocheblimit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiocheblimit_CFLAGS) $(CFLAGS) -MT elements/elements_audiocheblimit-audiocheblimit.obj -MD -MP -MF elements/$(DEPDIR)/elements_audiocheblimit-audiocheblimit.Tpo -c -o elements/elements_audiocheblimit-audiocheblimit.obj `if test -f 'elements/audiocheblimit.c'; then $(CYGPATH_W) 'elements/audiocheblimit.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiocheblimit.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiocheblimit-audiocheblimit.Tpo elements/$(DEPDIR)/elements_audiocheblimit-audiocheblimit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiocheblimit.c' object='elements/elements_audiocheblimit-audiocheblimit.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o id3demux.o `test -f 'elements/id3demux.c' || echo '$(srcdir)/'`elements/id3demux.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiocheblimit_CFLAGS) $(CFLAGS) -c -o elements/elements_audiocheblimit-audiocheblimit.obj `if test -f 'elements/audiocheblimit.c'; then $(CYGPATH_W) 'elements/audiocheblimit.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiocheblimit.c'; fi` -id3demux.obj: elements/id3demux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT id3demux.obj -MD -MP -MF $(DEPDIR)/id3demux.Tpo -c -o id3demux.obj `if test -f 'elements/id3demux.c'; then $(CYGPATH_W) 'elements/id3demux.c'; else $(CYGPATH_W) '$(srcdir)/elements/id3demux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/id3demux.Tpo $(DEPDIR)/id3demux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/id3demux.c' object='id3demux.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiodynamic-audiodynamic.o: elements/audiodynamic.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiodynamic_CFLAGS) $(CFLAGS) -MT elements/elements_audiodynamic-audiodynamic.o -MD -MP -MF elements/$(DEPDIR)/elements_audiodynamic-audiodynamic.Tpo -c -o elements/elements_audiodynamic-audiodynamic.o `test -f 'elements/audiodynamic.c' || echo '$(srcdir)/'`elements/audiodynamic.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiodynamic-audiodynamic.Tpo elements/$(DEPDIR)/elements_audiodynamic-audiodynamic.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiodynamic.c' object='elements/elements_audiodynamic-audiodynamic.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o id3demux.obj `if test -f 'elements/id3demux.c'; then $(CYGPATH_W) 'elements/id3demux.c'; else $(CYGPATH_W) '$(srcdir)/elements/id3demux.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiodynamic_CFLAGS) $(CFLAGS) -c -o elements/elements_audiodynamic-audiodynamic.o `test -f 'elements/audiodynamic.c' || echo '$(srcdir)/'`elements/audiodynamic.c -id3v2mux.o: elements/id3v2mux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT id3v2mux.o -MD -MP -MF $(DEPDIR)/id3v2mux.Tpo -c -o id3v2mux.o `test -f 'elements/id3v2mux.c' || echo '$(srcdir)/'`elements/id3v2mux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/id3v2mux.Tpo $(DEPDIR)/id3v2mux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/id3v2mux.c' object='id3v2mux.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiodynamic-audiodynamic.obj: elements/audiodynamic.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiodynamic_CFLAGS) $(CFLAGS) -MT elements/elements_audiodynamic-audiodynamic.obj -MD -MP -MF elements/$(DEPDIR)/elements_audiodynamic-audiodynamic.Tpo -c -o elements/elements_audiodynamic-audiodynamic.obj `if test -f 'elements/audiodynamic.c'; then $(CYGPATH_W) 'elements/audiodynamic.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiodynamic.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiodynamic-audiodynamic.Tpo elements/$(DEPDIR)/elements_audiodynamic-audiodynamic.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiodynamic.c' object='elements/elements_audiodynamic-audiodynamic.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o id3v2mux.o `test -f 'elements/id3v2mux.c' || echo '$(srcdir)/'`elements/id3v2mux.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiodynamic_CFLAGS) $(CFLAGS) -c -o elements/elements_audiodynamic-audiodynamic.obj `if test -f 'elements/audiodynamic.c'; then $(CYGPATH_W) 'elements/audiodynamic.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiodynamic.c'; fi` -id3v2mux.obj: elements/id3v2mux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT id3v2mux.obj -MD -MP -MF $(DEPDIR)/id3v2mux.Tpo -c -o id3v2mux.obj `if test -f 'elements/id3v2mux.c'; then $(CYGPATH_W) 'elements/id3v2mux.c'; else $(CYGPATH_W) '$(srcdir)/elements/id3v2mux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/id3v2mux.Tpo $(DEPDIR)/id3v2mux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/id3v2mux.c' object='id3v2mux.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_audioecho-audioecho.o: elements/audioecho.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioecho_CFLAGS) $(CFLAGS) -MT elements/elements_audioecho-audioecho.o -MD -MP -MF elements/$(DEPDIR)/elements_audioecho-audioecho.Tpo -c -o elements/elements_audioecho-audioecho.o `test -f 'elements/audioecho.c' || echo '$(srcdir)/'`elements/audioecho.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audioecho-audioecho.Tpo elements/$(DEPDIR)/elements_audioecho-audioecho.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioecho.c' object='elements/elements_audioecho-audioecho.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o id3v2mux.obj `if test -f 'elements/id3v2mux.c'; then $(CYGPATH_W) 'elements/id3v2mux.c'; else $(CYGPATH_W) '$(srcdir)/elements/id3v2mux.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioecho_CFLAGS) $(CFLAGS) -c -o elements/elements_audioecho-audioecho.o `test -f 'elements/audioecho.c' || echo '$(srcdir)/'`elements/audioecho.c -elements_imagefreeze-imagefreeze.o: elements/imagefreeze.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_imagefreeze_CFLAGS) $(CFLAGS) -MT elements_imagefreeze-imagefreeze.o -MD -MP -MF $(DEPDIR)/elements_imagefreeze-imagefreeze.Tpo -c -o elements_imagefreeze-imagefreeze.o `test -f 'elements/imagefreeze.c' || echo '$(srcdir)/'`elements/imagefreeze.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_imagefreeze-imagefreeze.Tpo $(DEPDIR)/elements_imagefreeze-imagefreeze.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/imagefreeze.c' object='elements_imagefreeze-imagefreeze.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_audioecho-audioecho.obj: elements/audioecho.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioecho_CFLAGS) $(CFLAGS) -MT elements/elements_audioecho-audioecho.obj -MD -MP -MF elements/$(DEPDIR)/elements_audioecho-audioecho.Tpo -c -o elements/elements_audioecho-audioecho.obj `if test -f 'elements/audioecho.c'; then $(CYGPATH_W) 'elements/audioecho.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioecho.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audioecho-audioecho.Tpo elements/$(DEPDIR)/elements_audioecho-audioecho.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioecho.c' object='elements/elements_audioecho-audioecho.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_imagefreeze_CFLAGS) $(CFLAGS) -c -o elements_imagefreeze-imagefreeze.o `test -f 'elements/imagefreeze.c' || echo '$(srcdir)/'`elements/imagefreeze.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioecho_CFLAGS) $(CFLAGS) -c -o elements/elements_audioecho-audioecho.obj `if test -f 'elements/audioecho.c'; then $(CYGPATH_W) 'elements/audioecho.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioecho.c'; fi` -elements_imagefreeze-imagefreeze.obj: elements/imagefreeze.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_imagefreeze_CFLAGS) $(CFLAGS) -MT elements_imagefreeze-imagefreeze.obj -MD -MP -MF $(DEPDIR)/elements_imagefreeze-imagefreeze.Tpo -c -o elements_imagefreeze-imagefreeze.obj `if test -f 'elements/imagefreeze.c'; then $(CYGPATH_W) 'elements/imagefreeze.c'; else $(CYGPATH_W) '$(srcdir)/elements/imagefreeze.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_imagefreeze-imagefreeze.Tpo $(DEPDIR)/elements_imagefreeze-imagefreeze.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/imagefreeze.c' object='elements_imagefreeze-imagefreeze.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_audioinvert-audioinvert.o: elements/audioinvert.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioinvert_CFLAGS) $(CFLAGS) -MT elements/elements_audioinvert-audioinvert.o -MD -MP -MF elements/$(DEPDIR)/elements_audioinvert-audioinvert.Tpo -c -o elements/elements_audioinvert-audioinvert.o `test -f 'elements/audioinvert.c' || echo '$(srcdir)/'`elements/audioinvert.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audioinvert-audioinvert.Tpo elements/$(DEPDIR)/elements_audioinvert-audioinvert.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioinvert.c' object='elements/elements_audioinvert-audioinvert.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_imagefreeze_CFLAGS) $(CFLAGS) -c -o elements_imagefreeze-imagefreeze.obj `if test -f 'elements/imagefreeze.c'; then $(CYGPATH_W) 'elements/imagefreeze.c'; else $(CYGPATH_W) '$(srcdir)/elements/imagefreeze.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioinvert_CFLAGS) $(CFLAGS) -c -o elements/elements_audioinvert-audioinvert.o `test -f 'elements/audioinvert.c' || echo '$(srcdir)/'`elements/audioinvert.c -elements_interleave-interleave.o: elements/interleave.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_interleave_CFLAGS) $(CFLAGS) -MT elements_interleave-interleave.o -MD -MP -MF $(DEPDIR)/elements_interleave-interleave.Tpo -c -o elements_interleave-interleave.o `test -f 'elements/interleave.c' || echo '$(srcdir)/'`elements/interleave.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_interleave-interleave.Tpo $(DEPDIR)/elements_interleave-interleave.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/interleave.c' object='elements_interleave-interleave.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_audioinvert-audioinvert.obj: elements/audioinvert.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioinvert_CFLAGS) $(CFLAGS) -MT elements/elements_audioinvert-audioinvert.obj -MD -MP -MF elements/$(DEPDIR)/elements_audioinvert-audioinvert.Tpo -c -o elements/elements_audioinvert-audioinvert.obj `if test -f 'elements/audioinvert.c'; then $(CYGPATH_W) 'elements/audioinvert.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioinvert.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audioinvert-audioinvert.Tpo elements/$(DEPDIR)/elements_audioinvert-audioinvert.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audioinvert.c' object='elements/elements_audioinvert-audioinvert.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_interleave_CFLAGS) $(CFLAGS) -c -o elements_interleave-interleave.o `test -f 'elements/interleave.c' || echo '$(srcdir)/'`elements/interleave.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audioinvert_CFLAGS) $(CFLAGS) -c -o elements/elements_audioinvert-audioinvert.obj `if test -f 'elements/audioinvert.c'; then $(CYGPATH_W) 'elements/audioinvert.c'; else $(CYGPATH_W) '$(srcdir)/elements/audioinvert.c'; fi` -elements_interleave-interleave.obj: elements/interleave.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_interleave_CFLAGS) $(CFLAGS) -MT elements_interleave-interleave.obj -MD -MP -MF $(DEPDIR)/elements_interleave-interleave.Tpo -c -o elements_interleave-interleave.obj `if test -f 'elements/interleave.c'; then $(CYGPATH_W) 'elements/interleave.c'; else $(CYGPATH_W) '$(srcdir)/elements/interleave.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_interleave-interleave.Tpo $(DEPDIR)/elements_interleave-interleave.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/interleave.c' object='elements_interleave-interleave.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiopanorama-audiopanorama.o: elements/audiopanorama.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiopanorama_CFLAGS) $(CFLAGS) -MT elements/elements_audiopanorama-audiopanorama.o -MD -MP -MF elements/$(DEPDIR)/elements_audiopanorama-audiopanorama.Tpo -c -o elements/elements_audiopanorama-audiopanorama.o `test -f 'elements/audiopanorama.c' || echo '$(srcdir)/'`elements/audiopanorama.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiopanorama-audiopanorama.Tpo elements/$(DEPDIR)/elements_audiopanorama-audiopanorama.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiopanorama.c' object='elements/elements_audiopanorama-audiopanorama.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_interleave_CFLAGS) $(CFLAGS) -c -o elements_interleave-interleave.obj `if test -f 'elements/interleave.c'; then $(CYGPATH_W) 'elements/interleave.c'; else $(CYGPATH_W) '$(srcdir)/elements/interleave.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiopanorama_CFLAGS) $(CFLAGS) -c -o elements/elements_audiopanorama-audiopanorama.o `test -f 'elements/audiopanorama.c' || echo '$(srcdir)/'`elements/audiopanorama.c -elements_jpegdec-jpegdec.o: elements/jpegdec.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegdec_CFLAGS) $(CFLAGS) -MT elements_jpegdec-jpegdec.o -MD -MP -MF $(DEPDIR)/elements_jpegdec-jpegdec.Tpo -c -o elements_jpegdec-jpegdec.o `test -f 'elements/jpegdec.c' || echo '$(srcdir)/'`elements/jpegdec.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_jpegdec-jpegdec.Tpo $(DEPDIR)/elements_jpegdec-jpegdec.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/jpegdec.c' object='elements_jpegdec-jpegdec.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiopanorama-audiopanorama.obj: elements/audiopanorama.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiopanorama_CFLAGS) $(CFLAGS) -MT elements/elements_audiopanorama-audiopanorama.obj -MD -MP -MF elements/$(DEPDIR)/elements_audiopanorama-audiopanorama.Tpo -c -o elements/elements_audiopanorama-audiopanorama.obj `if test -f 'elements/audiopanorama.c'; then $(CYGPATH_W) 'elements/audiopanorama.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiopanorama.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiopanorama-audiopanorama.Tpo elements/$(DEPDIR)/elements_audiopanorama-audiopanorama.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiopanorama.c' object='elements/elements_audiopanorama-audiopanorama.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegdec_CFLAGS) $(CFLAGS) -c -o elements_jpegdec-jpegdec.o `test -f 'elements/jpegdec.c' || echo '$(srcdir)/'`elements/jpegdec.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiopanorama_CFLAGS) $(CFLAGS) -c -o elements/elements_audiopanorama-audiopanorama.obj `if test -f 'elements/audiopanorama.c'; then $(CYGPATH_W) 'elements/audiopanorama.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiopanorama.c'; fi` -elements_jpegdec-jpegdec.obj: elements/jpegdec.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegdec_CFLAGS) $(CFLAGS) -MT elements_jpegdec-jpegdec.obj -MD -MP -MF $(DEPDIR)/elements_jpegdec-jpegdec.Tpo -c -o elements_jpegdec-jpegdec.obj `if test -f 'elements/jpegdec.c'; then $(CYGPATH_W) 'elements/jpegdec.c'; else $(CYGPATH_W) '$(srcdir)/elements/jpegdec.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_jpegdec-jpegdec.Tpo $(DEPDIR)/elements_jpegdec-jpegdec.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/jpegdec.c' object='elements_jpegdec-jpegdec.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiowsincband-audiowsincband.o: elements/audiowsincband.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsincband_CFLAGS) $(CFLAGS) -MT elements/elements_audiowsincband-audiowsincband.o -MD -MP -MF elements/$(DEPDIR)/elements_audiowsincband-audiowsincband.Tpo -c -o elements/elements_audiowsincband-audiowsincband.o `test -f 'elements/audiowsincband.c' || echo '$(srcdir)/'`elements/audiowsincband.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiowsincband-audiowsincband.Tpo elements/$(DEPDIR)/elements_audiowsincband-audiowsincband.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiowsincband.c' object='elements/elements_audiowsincband-audiowsincband.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegdec_CFLAGS) $(CFLAGS) -c -o elements_jpegdec-jpegdec.obj `if test -f 'elements/jpegdec.c'; then $(CYGPATH_W) 'elements/jpegdec.c'; else $(CYGPATH_W) '$(srcdir)/elements/jpegdec.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsincband_CFLAGS) $(CFLAGS) -c -o elements/elements_audiowsincband-audiowsincband.o `test -f 'elements/audiowsincband.c' || echo '$(srcdir)/'`elements/audiowsincband.c -elements_jpegenc-jpegenc.o: elements/jpegenc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegenc_CFLAGS) $(CFLAGS) -MT elements_jpegenc-jpegenc.o -MD -MP -MF $(DEPDIR)/elements_jpegenc-jpegenc.Tpo -c -o elements_jpegenc-jpegenc.o `test -f 'elements/jpegenc.c' || echo '$(srcdir)/'`elements/jpegenc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_jpegenc-jpegenc.Tpo $(DEPDIR)/elements_jpegenc-jpegenc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/jpegenc.c' object='elements_jpegenc-jpegenc.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiowsincband-audiowsincband.obj: elements/audiowsincband.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsincband_CFLAGS) $(CFLAGS) -MT elements/elements_audiowsincband-audiowsincband.obj -MD -MP -MF elements/$(DEPDIR)/elements_audiowsincband-audiowsincband.Tpo -c -o elements/elements_audiowsincband-audiowsincband.obj `if test -f 'elements/audiowsincband.c'; then $(CYGPATH_W) 'elements/audiowsincband.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiowsincband.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiowsincband-audiowsincband.Tpo elements/$(DEPDIR)/elements_audiowsincband-audiowsincband.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiowsincband.c' object='elements/elements_audiowsincband-audiowsincband.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegenc_CFLAGS) $(CFLAGS) -c -o elements_jpegenc-jpegenc.o `test -f 'elements/jpegenc.c' || echo '$(srcdir)/'`elements/jpegenc.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsincband_CFLAGS) $(CFLAGS) -c -o elements/elements_audiowsincband-audiowsincband.obj `if test -f 'elements/audiowsincband.c'; then $(CYGPATH_W) 'elements/audiowsincband.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiowsincband.c'; fi` -elements_jpegenc-jpegenc.obj: elements/jpegenc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegenc_CFLAGS) $(CFLAGS) -MT elements_jpegenc-jpegenc.obj -MD -MP -MF $(DEPDIR)/elements_jpegenc-jpegenc.Tpo -c -o elements_jpegenc-jpegenc.obj `if test -f 'elements/jpegenc.c'; then $(CYGPATH_W) 'elements/jpegenc.c'; else $(CYGPATH_W) '$(srcdir)/elements/jpegenc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_jpegenc-jpegenc.Tpo $(DEPDIR)/elements_jpegenc-jpegenc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/jpegenc.c' object='elements_jpegenc-jpegenc.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiowsinclimit-audiowsinclimit.o: elements/audiowsinclimit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsinclimit_CFLAGS) $(CFLAGS) -MT elements/elements_audiowsinclimit-audiowsinclimit.o -MD -MP -MF elements/$(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Tpo -c -o elements/elements_audiowsinclimit-audiowsinclimit.o `test -f 'elements/audiowsinclimit.c' || echo '$(srcdir)/'`elements/audiowsinclimit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Tpo elements/$(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiowsinclimit.c' object='elements/elements_audiowsinclimit-audiowsinclimit.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegenc_CFLAGS) $(CFLAGS) -c -o elements_jpegenc-jpegenc.obj `if test -f 'elements/jpegenc.c'; then $(CYGPATH_W) 'elements/jpegenc.c'; else $(CYGPATH_W) '$(srcdir)/elements/jpegenc.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsinclimit_CFLAGS) $(CFLAGS) -c -o elements/elements_audiowsinclimit-audiowsinclimit.o `test -f 'elements/audiowsinclimit.c' || echo '$(srcdir)/'`elements/audiowsinclimit.c -elements_level-level.o: elements/level.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_level_CFLAGS) $(CFLAGS) -MT elements_level-level.o -MD -MP -MF $(DEPDIR)/elements_level-level.Tpo -c -o elements_level-level.o `test -f 'elements/level.c' || echo '$(srcdir)/'`elements/level.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_level-level.Tpo $(DEPDIR)/elements_level-level.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/level.c' object='elements_level-level.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_audiowsinclimit-audiowsinclimit.obj: elements/audiowsinclimit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsinclimit_CFLAGS) $(CFLAGS) -MT elements/elements_audiowsinclimit-audiowsinclimit.obj -MD -MP -MF elements/$(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Tpo -c -o elements/elements_audiowsinclimit-audiowsinclimit.obj `if test -f 'elements/audiowsinclimit.c'; then $(CYGPATH_W) 'elements/audiowsinclimit.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiowsinclimit.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Tpo elements/$(DEPDIR)/elements_audiowsinclimit-audiowsinclimit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/audiowsinclimit.c' object='elements/elements_audiowsinclimit-audiowsinclimit.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_level_CFLAGS) $(CFLAGS) -c -o elements_level-level.o `test -f 'elements/level.c' || echo '$(srcdir)/'`elements/level.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_audiowsinclimit_CFLAGS) $(CFLAGS) -c -o elements/elements_audiowsinclimit-audiowsinclimit.obj `if test -f 'elements/audiowsinclimit.c'; then $(CYGPATH_W) 'elements/audiowsinclimit.c'; else $(CYGPATH_W) '$(srcdir)/elements/audiowsinclimit.c'; fi` -elements_level-level.obj: elements/level.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_level_CFLAGS) $(CFLAGS) -MT elements_level-level.obj -MD -MP -MF $(DEPDIR)/elements_level-level.Tpo -c -o elements_level-level.obj `if test -f 'elements/level.c'; then $(CYGPATH_W) 'elements/level.c'; else $(CYGPATH_W) '$(srcdir)/elements/level.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_level-level.Tpo $(DEPDIR)/elements_level-level.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/level.c' object='elements_level-level.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_deinterlace-deinterlace.o: elements/deinterlace.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterlace_CFLAGS) $(CFLAGS) -MT elements/elements_deinterlace-deinterlace.o -MD -MP -MF elements/$(DEPDIR)/elements_deinterlace-deinterlace.Tpo -c -o elements/elements_deinterlace-deinterlace.o `test -f 'elements/deinterlace.c' || echo '$(srcdir)/'`elements/deinterlace.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_deinterlace-deinterlace.Tpo elements/$(DEPDIR)/elements_deinterlace-deinterlace.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/deinterlace.c' object='elements/elements_deinterlace-deinterlace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_level_CFLAGS) $(CFLAGS) -c -o elements_level-level.obj `if test -f 'elements/level.c'; then $(CYGPATH_W) 'elements/level.c'; else $(CYGPATH_W) '$(srcdir)/elements/level.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterlace_CFLAGS) $(CFLAGS) -c -o elements/elements_deinterlace-deinterlace.o `test -f 'elements/deinterlace.c' || echo '$(srcdir)/'`elements/deinterlace.c -matroskamux.o: elements/matroskamux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT matroskamux.o -MD -MP -MF $(DEPDIR)/matroskamux.Tpo -c -o matroskamux.o `test -f 'elements/matroskamux.c' || echo '$(srcdir)/'`elements/matroskamux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/matroskamux.Tpo $(DEPDIR)/matroskamux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/matroskamux.c' object='matroskamux.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_deinterlace-deinterlace.obj: elements/deinterlace.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterlace_CFLAGS) $(CFLAGS) -MT elements/elements_deinterlace-deinterlace.obj -MD -MP -MF elements/$(DEPDIR)/elements_deinterlace-deinterlace.Tpo -c -o elements/elements_deinterlace-deinterlace.obj `if test -f 'elements/deinterlace.c'; then $(CYGPATH_W) 'elements/deinterlace.c'; else $(CYGPATH_W) '$(srcdir)/elements/deinterlace.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_deinterlace-deinterlace.Tpo elements/$(DEPDIR)/elements_deinterlace-deinterlace.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/deinterlace.c' object='elements/elements_deinterlace-deinterlace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o matroskamux.o `test -f 'elements/matroskamux.c' || echo '$(srcdir)/'`elements/matroskamux.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterlace_CFLAGS) $(CFLAGS) -c -o elements/elements_deinterlace-deinterlace.obj `if test -f 'elements/deinterlace.c'; then $(CYGPATH_W) 'elements/deinterlace.c'; else $(CYGPATH_W) '$(srcdir)/elements/deinterlace.c'; fi` -matroskamux.obj: elements/matroskamux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT matroskamux.obj -MD -MP -MF $(DEPDIR)/matroskamux.Tpo -c -o matroskamux.obj `if test -f 'elements/matroskamux.c'; then $(CYGPATH_W) 'elements/matroskamux.c'; else $(CYGPATH_W) '$(srcdir)/elements/matroskamux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/matroskamux.Tpo $(DEPDIR)/matroskamux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/matroskamux.c' object='matroskamux.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_deinterleave-deinterleave.o: elements/deinterleave.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterleave_CFLAGS) $(CFLAGS) -MT elements/elements_deinterleave-deinterleave.o -MD -MP -MF elements/$(DEPDIR)/elements_deinterleave-deinterleave.Tpo -c -o elements/elements_deinterleave-deinterleave.o `test -f 'elements/deinterleave.c' || echo '$(srcdir)/'`elements/deinterleave.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_deinterleave-deinterleave.Tpo elements/$(DEPDIR)/elements_deinterleave-deinterleave.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/deinterleave.c' object='elements/elements_deinterleave-deinterleave.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o matroskamux.obj `if test -f 'elements/matroskamux.c'; then $(CYGPATH_W) 'elements/matroskamux.c'; else $(CYGPATH_W) '$(srcdir)/elements/matroskamux.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterleave_CFLAGS) $(CFLAGS) -c -o elements/elements_deinterleave-deinterleave.o `test -f 'elements/deinterleave.c' || echo '$(srcdir)/'`elements/deinterleave.c -matroskaparse.o: elements/matroskaparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT matroskaparse.o -MD -MP -MF $(DEPDIR)/matroskaparse.Tpo -c -o matroskaparse.o `test -f 'elements/matroskaparse.c' || echo '$(srcdir)/'`elements/matroskaparse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/matroskaparse.Tpo $(DEPDIR)/matroskaparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/matroskaparse.c' object='matroskaparse.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_deinterleave-deinterleave.obj: elements/deinterleave.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterleave_CFLAGS) $(CFLAGS) -MT elements/elements_deinterleave-deinterleave.obj -MD -MP -MF elements/$(DEPDIR)/elements_deinterleave-deinterleave.Tpo -c -o elements/elements_deinterleave-deinterleave.obj `if test -f 'elements/deinterleave.c'; then $(CYGPATH_W) 'elements/deinterleave.c'; else $(CYGPATH_W) '$(srcdir)/elements/deinterleave.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_deinterleave-deinterleave.Tpo elements/$(DEPDIR)/elements_deinterleave-deinterleave.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/deinterleave.c' object='elements/elements_deinterleave-deinterleave.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o matroskaparse.o `test -f 'elements/matroskaparse.c' || echo '$(srcdir)/'`elements/matroskaparse.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_deinterleave_CFLAGS) $(CFLAGS) -c -o elements/elements_deinterleave-deinterleave.obj `if test -f 'elements/deinterleave.c'; then $(CYGPATH_W) 'elements/deinterleave.c'; else $(CYGPATH_W) '$(srcdir)/elements/deinterleave.c'; fi` -matroskaparse.obj: elements/matroskaparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT matroskaparse.obj -MD -MP -MF $(DEPDIR)/matroskaparse.Tpo -c -o matroskaparse.obj `if test -f 'elements/matroskaparse.c'; then $(CYGPATH_W) 'elements/matroskaparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/matroskaparse.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/matroskaparse.Tpo $(DEPDIR)/matroskaparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/matroskaparse.c' object='matroskaparse.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_dtmf-dtmf.o: elements/dtmf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_dtmf_CFLAGS) $(CFLAGS) -MT elements/elements_dtmf-dtmf.o -MD -MP -MF elements/$(DEPDIR)/elements_dtmf-dtmf.Tpo -c -o elements/elements_dtmf-dtmf.o `test -f 'elements/dtmf.c' || echo '$(srcdir)/'`elements/dtmf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_dtmf-dtmf.Tpo elements/$(DEPDIR)/elements_dtmf-dtmf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/dtmf.c' object='elements/elements_dtmf-dtmf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o matroskaparse.obj `if test -f 'elements/matroskaparse.c'; then $(CYGPATH_W) 'elements/matroskaparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/matroskaparse.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_dtmf_CFLAGS) $(CFLAGS) -c -o elements/elements_dtmf-dtmf.o `test -f 'elements/dtmf.c' || echo '$(srcdir)/'`elements/dtmf.c -mpegaudioparse.o: elements/mpegaudioparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpegaudioparse.o -MD -MP -MF $(DEPDIR)/mpegaudioparse.Tpo -c -o mpegaudioparse.o `test -f 'elements/mpegaudioparse.c' || echo '$(srcdir)/'`elements/mpegaudioparse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mpegaudioparse.Tpo $(DEPDIR)/mpegaudioparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/mpegaudioparse.c' object='mpegaudioparse.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_dtmf-dtmf.obj: elements/dtmf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_dtmf_CFLAGS) $(CFLAGS) -MT elements/elements_dtmf-dtmf.obj -MD -MP -MF elements/$(DEPDIR)/elements_dtmf-dtmf.Tpo -c -o elements/elements_dtmf-dtmf.obj `if test -f 'elements/dtmf.c'; then $(CYGPATH_W) 'elements/dtmf.c'; else $(CYGPATH_W) '$(srcdir)/elements/dtmf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_dtmf-dtmf.Tpo elements/$(DEPDIR)/elements_dtmf-dtmf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/dtmf.c' object='elements/elements_dtmf-dtmf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpegaudioparse.o `test -f 'elements/mpegaudioparse.c' || echo '$(srcdir)/'`elements/mpegaudioparse.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_dtmf_CFLAGS) $(CFLAGS) -c -o elements/elements_dtmf-dtmf.obj `if test -f 'elements/dtmf.c'; then $(CYGPATH_W) 'elements/dtmf.c'; else $(CYGPATH_W) '$(srcdir)/elements/dtmf.c'; fi` -mpegaudioparse.obj: elements/mpegaudioparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpegaudioparse.obj -MD -MP -MF $(DEPDIR)/mpegaudioparse.Tpo -c -o mpegaudioparse.obj `if test -f 'elements/mpegaudioparse.c'; then $(CYGPATH_W) 'elements/mpegaudioparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/mpegaudioparse.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mpegaudioparse.Tpo $(DEPDIR)/mpegaudioparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/mpegaudioparse.c' object='mpegaudioparse.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_equalizer-equalizer.o: elements/equalizer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_equalizer_CFLAGS) $(CFLAGS) -MT elements/elements_equalizer-equalizer.o -MD -MP -MF elements/$(DEPDIR)/elements_equalizer-equalizer.Tpo -c -o elements/elements_equalizer-equalizer.o `test -f 'elements/equalizer.c' || echo '$(srcdir)/'`elements/equalizer.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_equalizer-equalizer.Tpo elements/$(DEPDIR)/elements_equalizer-equalizer.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/equalizer.c' object='elements/elements_equalizer-equalizer.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpegaudioparse.obj `if test -f 'elements/mpegaudioparse.c'; then $(CYGPATH_W) 'elements/mpegaudioparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/mpegaudioparse.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_equalizer_CFLAGS) $(CFLAGS) -c -o elements/elements_equalizer-equalizer.o `test -f 'elements/equalizer.c' || echo '$(srcdir)/'`elements/equalizer.c -elements_multifile-multifile.o: elements/multifile.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_multifile_CFLAGS) $(CFLAGS) -MT elements_multifile-multifile.o -MD -MP -MF $(DEPDIR)/elements_multifile-multifile.Tpo -c -o elements_multifile-multifile.o `test -f 'elements/multifile.c' || echo '$(srcdir)/'`elements/multifile.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_multifile-multifile.Tpo $(DEPDIR)/elements_multifile-multifile.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/multifile.c' object='elements_multifile-multifile.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_equalizer-equalizer.obj: elements/equalizer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_equalizer_CFLAGS) $(CFLAGS) -MT elements/elements_equalizer-equalizer.obj -MD -MP -MF elements/$(DEPDIR)/elements_equalizer-equalizer.Tpo -c -o elements/elements_equalizer-equalizer.obj `if test -f 'elements/equalizer.c'; then $(CYGPATH_W) 'elements/equalizer.c'; else $(CYGPATH_W) '$(srcdir)/elements/equalizer.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_equalizer-equalizer.Tpo elements/$(DEPDIR)/elements_equalizer-equalizer.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/equalizer.c' object='elements/elements_equalizer-equalizer.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_multifile_CFLAGS) $(CFLAGS) -c -o elements_multifile-multifile.o `test -f 'elements/multifile.c' || echo '$(srcdir)/'`elements/multifile.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_equalizer_CFLAGS) $(CFLAGS) -c -o elements/elements_equalizer-equalizer.obj `if test -f 'elements/equalizer.c'; then $(CYGPATH_W) 'elements/equalizer.c'; else $(CYGPATH_W) '$(srcdir)/elements/equalizer.c'; fi` -elements_multifile-multifile.obj: elements/multifile.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_multifile_CFLAGS) $(CFLAGS) -MT elements_multifile-multifile.obj -MD -MP -MF $(DEPDIR)/elements_multifile-multifile.Tpo -c -o elements_multifile-multifile.obj `if test -f 'elements/multifile.c'; then $(CYGPATH_W) 'elements/multifile.c'; else $(CYGPATH_W) '$(srcdir)/elements/multifile.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_multifile-multifile.Tpo $(DEPDIR)/elements_multifile-multifile.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/multifile.c' object='elements_multifile-multifile.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_gdkpixbufsink-gdkpixbufsink.o: elements/gdkpixbufsink.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_gdkpixbufsink_CFLAGS) $(CFLAGS) -MT elements/elements_gdkpixbufsink-gdkpixbufsink.o -MD -MP -MF elements/$(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Tpo -c -o elements/elements_gdkpixbufsink-gdkpixbufsink.o `test -f 'elements/gdkpixbufsink.c' || echo '$(srcdir)/'`elements/gdkpixbufsink.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Tpo elements/$(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/gdkpixbufsink.c' object='elements/elements_gdkpixbufsink-gdkpixbufsink.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_multifile_CFLAGS) $(CFLAGS) -c -o elements_multifile-multifile.obj `if test -f 'elements/multifile.c'; then $(CYGPATH_W) 'elements/multifile.c'; else $(CYGPATH_W) '$(srcdir)/elements/multifile.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_gdkpixbufsink_CFLAGS) $(CFLAGS) -c -o elements/elements_gdkpixbufsink-gdkpixbufsink.o `test -f 'elements/gdkpixbufsink.c' || echo '$(srcdir)/'`elements/gdkpixbufsink.c -elements_qtmux-qtmux.o: elements/qtmux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_qtmux_CFLAGS) $(CFLAGS) -MT elements_qtmux-qtmux.o -MD -MP -MF $(DEPDIR)/elements_qtmux-qtmux.Tpo -c -o elements_qtmux-qtmux.o `test -f 'elements/qtmux.c' || echo '$(srcdir)/'`elements/qtmux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_qtmux-qtmux.Tpo $(DEPDIR)/elements_qtmux-qtmux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/qtmux.c' object='elements_qtmux-qtmux.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_gdkpixbufsink-gdkpixbufsink.obj: elements/gdkpixbufsink.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_gdkpixbufsink_CFLAGS) $(CFLAGS) -MT elements/elements_gdkpixbufsink-gdkpixbufsink.obj -MD -MP -MF elements/$(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Tpo -c -o elements/elements_gdkpixbufsink-gdkpixbufsink.obj `if test -f 'elements/gdkpixbufsink.c'; then $(CYGPATH_W) 'elements/gdkpixbufsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/gdkpixbufsink.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Tpo elements/$(DEPDIR)/elements_gdkpixbufsink-gdkpixbufsink.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/gdkpixbufsink.c' object='elements/elements_gdkpixbufsink-gdkpixbufsink.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_qtmux_CFLAGS) $(CFLAGS) -c -o elements_qtmux-qtmux.o `test -f 'elements/qtmux.c' || echo '$(srcdir)/'`elements/qtmux.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_gdkpixbufsink_CFLAGS) $(CFLAGS) -c -o elements/elements_gdkpixbufsink-gdkpixbufsink.obj `if test -f 'elements/gdkpixbufsink.c'; then $(CYGPATH_W) 'elements/gdkpixbufsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/gdkpixbufsink.c'; fi` -elements_qtmux-qtmux.obj: elements/qtmux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_qtmux_CFLAGS) $(CFLAGS) -MT elements_qtmux-qtmux.obj -MD -MP -MF $(DEPDIR)/elements_qtmux-qtmux.Tpo -c -o elements_qtmux-qtmux.obj `if test -f 'elements/qtmux.c'; then $(CYGPATH_W) 'elements/qtmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/qtmux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_qtmux-qtmux.Tpo $(DEPDIR)/elements_qtmux-qtmux.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/qtmux.c' object='elements_qtmux-qtmux.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_imagefreeze-imagefreeze.o: elements/imagefreeze.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_imagefreeze_CFLAGS) $(CFLAGS) -MT elements/elements_imagefreeze-imagefreeze.o -MD -MP -MF elements/$(DEPDIR)/elements_imagefreeze-imagefreeze.Tpo -c -o elements/elements_imagefreeze-imagefreeze.o `test -f 'elements/imagefreeze.c' || echo '$(srcdir)/'`elements/imagefreeze.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_imagefreeze-imagefreeze.Tpo elements/$(DEPDIR)/elements_imagefreeze-imagefreeze.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/imagefreeze.c' object='elements/elements_imagefreeze-imagefreeze.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_qtmux_CFLAGS) $(CFLAGS) -c -o elements_qtmux-qtmux.obj `if test -f 'elements/qtmux.c'; then $(CYGPATH_W) 'elements/qtmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/qtmux.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_imagefreeze_CFLAGS) $(CFLAGS) -c -o elements/elements_imagefreeze-imagefreeze.o `test -f 'elements/imagefreeze.c' || echo '$(srcdir)/'`elements/imagefreeze.c -elements_rganalysis-rganalysis.o: elements/rganalysis.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rganalysis_CFLAGS) $(CFLAGS) -MT elements_rganalysis-rganalysis.o -MD -MP -MF $(DEPDIR)/elements_rganalysis-rganalysis.Tpo -c -o elements_rganalysis-rganalysis.o `test -f 'elements/rganalysis.c' || echo '$(srcdir)/'`elements/rganalysis.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_rganalysis-rganalysis.Tpo $(DEPDIR)/elements_rganalysis-rganalysis.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rganalysis.c' object='elements_rganalysis-rganalysis.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_imagefreeze-imagefreeze.obj: elements/imagefreeze.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_imagefreeze_CFLAGS) $(CFLAGS) -MT elements/elements_imagefreeze-imagefreeze.obj -MD -MP -MF elements/$(DEPDIR)/elements_imagefreeze-imagefreeze.Tpo -c -o elements/elements_imagefreeze-imagefreeze.obj `if test -f 'elements/imagefreeze.c'; then $(CYGPATH_W) 'elements/imagefreeze.c'; else $(CYGPATH_W) '$(srcdir)/elements/imagefreeze.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_imagefreeze-imagefreeze.Tpo elements/$(DEPDIR)/elements_imagefreeze-imagefreeze.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/imagefreeze.c' object='elements/elements_imagefreeze-imagefreeze.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rganalysis_CFLAGS) $(CFLAGS) -c -o elements_rganalysis-rganalysis.o `test -f 'elements/rganalysis.c' || echo '$(srcdir)/'`elements/rganalysis.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_imagefreeze_CFLAGS) $(CFLAGS) -c -o elements/elements_imagefreeze-imagefreeze.obj `if test -f 'elements/imagefreeze.c'; then $(CYGPATH_W) 'elements/imagefreeze.c'; else $(CYGPATH_W) '$(srcdir)/elements/imagefreeze.c'; fi` -elements_rganalysis-rganalysis.obj: elements/rganalysis.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rganalysis_CFLAGS) $(CFLAGS) -MT elements_rganalysis-rganalysis.obj -MD -MP -MF $(DEPDIR)/elements_rganalysis-rganalysis.Tpo -c -o elements_rganalysis-rganalysis.obj `if test -f 'elements/rganalysis.c'; then $(CYGPATH_W) 'elements/rganalysis.c'; else $(CYGPATH_W) '$(srcdir)/elements/rganalysis.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_rganalysis-rganalysis.Tpo $(DEPDIR)/elements_rganalysis-rganalysis.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rganalysis.c' object='elements_rganalysis-rganalysis.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_interleave-interleave.o: elements/interleave.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_interleave_CFLAGS) $(CFLAGS) -MT elements/elements_interleave-interleave.o -MD -MP -MF elements/$(DEPDIR)/elements_interleave-interleave.Tpo -c -o elements/elements_interleave-interleave.o `test -f 'elements/interleave.c' || echo '$(srcdir)/'`elements/interleave.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_interleave-interleave.Tpo elements/$(DEPDIR)/elements_interleave-interleave.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/interleave.c' object='elements/elements_interleave-interleave.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rganalysis_CFLAGS) $(CFLAGS) -c -o elements_rganalysis-rganalysis.obj `if test -f 'elements/rganalysis.c'; then $(CYGPATH_W) 'elements/rganalysis.c'; else $(CYGPATH_W) '$(srcdir)/elements/rganalysis.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_interleave_CFLAGS) $(CFLAGS) -c -o elements/elements_interleave-interleave.o `test -f 'elements/interleave.c' || echo '$(srcdir)/'`elements/interleave.c -elements_rglimiter-rglimiter.o: elements/rglimiter.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rglimiter_CFLAGS) $(CFLAGS) -MT elements_rglimiter-rglimiter.o -MD -MP -MF $(DEPDIR)/elements_rglimiter-rglimiter.Tpo -c -o elements_rglimiter-rglimiter.o `test -f 'elements/rglimiter.c' || echo '$(srcdir)/'`elements/rglimiter.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_rglimiter-rglimiter.Tpo $(DEPDIR)/elements_rglimiter-rglimiter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rglimiter.c' object='elements_rglimiter-rglimiter.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_interleave-interleave.obj: elements/interleave.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_interleave_CFLAGS) $(CFLAGS) -MT elements/elements_interleave-interleave.obj -MD -MP -MF elements/$(DEPDIR)/elements_interleave-interleave.Tpo -c -o elements/elements_interleave-interleave.obj `if test -f 'elements/interleave.c'; then $(CYGPATH_W) 'elements/interleave.c'; else $(CYGPATH_W) '$(srcdir)/elements/interleave.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_interleave-interleave.Tpo elements/$(DEPDIR)/elements_interleave-interleave.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/interleave.c' object='elements/elements_interleave-interleave.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rglimiter_CFLAGS) $(CFLAGS) -c -o elements_rglimiter-rglimiter.o `test -f 'elements/rglimiter.c' || echo '$(srcdir)/'`elements/rglimiter.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_interleave_CFLAGS) $(CFLAGS) -c -o elements/elements_interleave-interleave.obj `if test -f 'elements/interleave.c'; then $(CYGPATH_W) 'elements/interleave.c'; else $(CYGPATH_W) '$(srcdir)/elements/interleave.c'; fi` -elements_rglimiter-rglimiter.obj: elements/rglimiter.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rglimiter_CFLAGS) $(CFLAGS) -MT elements_rglimiter-rglimiter.obj -MD -MP -MF $(DEPDIR)/elements_rglimiter-rglimiter.Tpo -c -o elements_rglimiter-rglimiter.obj `if test -f 'elements/rglimiter.c'; then $(CYGPATH_W) 'elements/rglimiter.c'; else $(CYGPATH_W) '$(srcdir)/elements/rglimiter.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_rglimiter-rglimiter.Tpo $(DEPDIR)/elements_rglimiter-rglimiter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rglimiter.c' object='elements_rglimiter-rglimiter.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_jpegdec-jpegdec.o: elements/jpegdec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegdec_CFLAGS) $(CFLAGS) -MT elements/elements_jpegdec-jpegdec.o -MD -MP -MF elements/$(DEPDIR)/elements_jpegdec-jpegdec.Tpo -c -o elements/elements_jpegdec-jpegdec.o `test -f 'elements/jpegdec.c' || echo '$(srcdir)/'`elements/jpegdec.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_jpegdec-jpegdec.Tpo elements/$(DEPDIR)/elements_jpegdec-jpegdec.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/jpegdec.c' object='elements/elements_jpegdec-jpegdec.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rglimiter_CFLAGS) $(CFLAGS) -c -o elements_rglimiter-rglimiter.obj `if test -f 'elements/rglimiter.c'; then $(CYGPATH_W) 'elements/rglimiter.c'; else $(CYGPATH_W) '$(srcdir)/elements/rglimiter.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegdec_CFLAGS) $(CFLAGS) -c -o elements/elements_jpegdec-jpegdec.o `test -f 'elements/jpegdec.c' || echo '$(srcdir)/'`elements/jpegdec.c -elements_rgvolume-rgvolume.o: elements/rgvolume.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rgvolume_CFLAGS) $(CFLAGS) -MT elements_rgvolume-rgvolume.o -MD -MP -MF $(DEPDIR)/elements_rgvolume-rgvolume.Tpo -c -o elements_rgvolume-rgvolume.o `test -f 'elements/rgvolume.c' || echo '$(srcdir)/'`elements/rgvolume.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_rgvolume-rgvolume.Tpo $(DEPDIR)/elements_rgvolume-rgvolume.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rgvolume.c' object='elements_rgvolume-rgvolume.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_jpegdec-jpegdec.obj: elements/jpegdec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegdec_CFLAGS) $(CFLAGS) -MT elements/elements_jpegdec-jpegdec.obj -MD -MP -MF elements/$(DEPDIR)/elements_jpegdec-jpegdec.Tpo -c -o elements/elements_jpegdec-jpegdec.obj `if test -f 'elements/jpegdec.c'; then $(CYGPATH_W) 'elements/jpegdec.c'; else $(CYGPATH_W) '$(srcdir)/elements/jpegdec.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_jpegdec-jpegdec.Tpo elements/$(DEPDIR)/elements_jpegdec-jpegdec.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/jpegdec.c' object='elements/elements_jpegdec-jpegdec.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rgvolume_CFLAGS) $(CFLAGS) -c -o elements_rgvolume-rgvolume.o `test -f 'elements/rgvolume.c' || echo '$(srcdir)/'`elements/rgvolume.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegdec_CFLAGS) $(CFLAGS) -c -o elements/elements_jpegdec-jpegdec.obj `if test -f 'elements/jpegdec.c'; then $(CYGPATH_W) 'elements/jpegdec.c'; else $(CYGPATH_W) '$(srcdir)/elements/jpegdec.c'; fi` -elements_rgvolume-rgvolume.obj: elements/rgvolume.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rgvolume_CFLAGS) $(CFLAGS) -MT elements_rgvolume-rgvolume.obj -MD -MP -MF $(DEPDIR)/elements_rgvolume-rgvolume.Tpo -c -o elements_rgvolume-rgvolume.obj `if test -f 'elements/rgvolume.c'; then $(CYGPATH_W) 'elements/rgvolume.c'; else $(CYGPATH_W) '$(srcdir)/elements/rgvolume.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_rgvolume-rgvolume.Tpo $(DEPDIR)/elements_rgvolume-rgvolume.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rgvolume.c' object='elements_rgvolume-rgvolume.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_jpegenc-jpegenc.o: elements/jpegenc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegenc_CFLAGS) $(CFLAGS) -MT elements/elements_jpegenc-jpegenc.o -MD -MP -MF elements/$(DEPDIR)/elements_jpegenc-jpegenc.Tpo -c -o elements/elements_jpegenc-jpegenc.o `test -f 'elements/jpegenc.c' || echo '$(srcdir)/'`elements/jpegenc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_jpegenc-jpegenc.Tpo elements/$(DEPDIR)/elements_jpegenc-jpegenc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/jpegenc.c' object='elements/elements_jpegenc-jpegenc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rgvolume_CFLAGS) $(CFLAGS) -c -o elements_rgvolume-rgvolume.obj `if test -f 'elements/rgvolume.c'; then $(CYGPATH_W) 'elements/rgvolume.c'; else $(CYGPATH_W) '$(srcdir)/elements/rgvolume.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegenc_CFLAGS) $(CFLAGS) -c -o elements/elements_jpegenc-jpegenc.o `test -f 'elements/jpegenc.c' || echo '$(srcdir)/'`elements/jpegenc.c -rtp-payloading.o: elements/rtp-payloading.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT rtp-payloading.o -MD -MP -MF $(DEPDIR)/rtp-payloading.Tpo -c -o rtp-payloading.o `test -f 'elements/rtp-payloading.c' || echo '$(srcdir)/'`elements/rtp-payloading.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/rtp-payloading.Tpo $(DEPDIR)/rtp-payloading.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtp-payloading.c' object='rtp-payloading.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_jpegenc-jpegenc.obj: elements/jpegenc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegenc_CFLAGS) $(CFLAGS) -MT elements/elements_jpegenc-jpegenc.obj -MD -MP -MF elements/$(DEPDIR)/elements_jpegenc-jpegenc.Tpo -c -o elements/elements_jpegenc-jpegenc.obj `if test -f 'elements/jpegenc.c'; then $(CYGPATH_W) 'elements/jpegenc.c'; else $(CYGPATH_W) '$(srcdir)/elements/jpegenc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_jpegenc-jpegenc.Tpo elements/$(DEPDIR)/elements_jpegenc-jpegenc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/jpegenc.c' object='elements/elements_jpegenc-jpegenc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rtp-payloading.o `test -f 'elements/rtp-payloading.c' || echo '$(srcdir)/'`elements/rtp-payloading.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_jpegenc_CFLAGS) $(CFLAGS) -c -o elements/elements_jpegenc-jpegenc.obj `if test -f 'elements/jpegenc.c'; then $(CYGPATH_W) 'elements/jpegenc.c'; else $(CYGPATH_W) '$(srcdir)/elements/jpegenc.c'; fi` -rtp-payloading.obj: elements/rtp-payloading.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT rtp-payloading.obj -MD -MP -MF $(DEPDIR)/rtp-payloading.Tpo -c -o rtp-payloading.obj `if test -f 'elements/rtp-payloading.c'; then $(CYGPATH_W) 'elements/rtp-payloading.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtp-payloading.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/rtp-payloading.Tpo $(DEPDIR)/rtp-payloading.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtp-payloading.c' object='rtp-payloading.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_level-level.o: elements/level.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_level_CFLAGS) $(CFLAGS) -MT elements/elements_level-level.o -MD -MP -MF elements/$(DEPDIR)/elements_level-level.Tpo -c -o elements/elements_level-level.o `test -f 'elements/level.c' || echo '$(srcdir)/'`elements/level.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_level-level.Tpo elements/$(DEPDIR)/elements_level-level.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/level.c' object='elements/elements_level-level.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rtp-payloading.obj `if test -f 'elements/rtp-payloading.c'; then $(CYGPATH_W) 'elements/rtp-payloading.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtp-payloading.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_level_CFLAGS) $(CFLAGS) -c -o elements/elements_level-level.o `test -f 'elements/level.c' || echo '$(srcdir)/'`elements/level.c -rtpbin.o: elements/rtpbin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT rtpbin.o -MD -MP -MF $(DEPDIR)/rtpbin.Tpo -c -o rtpbin.o `test -f 'elements/rtpbin.c' || echo '$(srcdir)/'`elements/rtpbin.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/rtpbin.Tpo $(DEPDIR)/rtpbin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpbin.c' object='rtpbin.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_level-level.obj: elements/level.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_level_CFLAGS) $(CFLAGS) -MT elements/elements_level-level.obj -MD -MP -MF elements/$(DEPDIR)/elements_level-level.Tpo -c -o elements/elements_level-level.obj `if test -f 'elements/level.c'; then $(CYGPATH_W) 'elements/level.c'; else $(CYGPATH_W) '$(srcdir)/elements/level.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_level-level.Tpo elements/$(DEPDIR)/elements_level-level.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/level.c' object='elements/elements_level-level.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rtpbin.o `test -f 'elements/rtpbin.c' || echo '$(srcdir)/'`elements/rtpbin.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_level_CFLAGS) $(CFLAGS) -c -o elements/elements_level-level.obj `if test -f 'elements/level.c'; then $(CYGPATH_W) 'elements/level.c'; else $(CYGPATH_W) '$(srcdir)/elements/level.c'; fi` -rtpbin.obj: elements/rtpbin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT rtpbin.obj -MD -MP -MF $(DEPDIR)/rtpbin.Tpo -c -o rtpbin.obj `if test -f 'elements/rtpbin.c'; then $(CYGPATH_W) 'elements/rtpbin.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpbin.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/rtpbin.Tpo $(DEPDIR)/rtpbin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpbin.c' object='rtpbin.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_multifile-multifile.o: elements/multifile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_multifile_CFLAGS) $(CFLAGS) -MT elements/elements_multifile-multifile.o -MD -MP -MF elements/$(DEPDIR)/elements_multifile-multifile.Tpo -c -o elements/elements_multifile-multifile.o `test -f 'elements/multifile.c' || echo '$(srcdir)/'`elements/multifile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_multifile-multifile.Tpo elements/$(DEPDIR)/elements_multifile-multifile.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/multifile.c' object='elements/elements_multifile-multifile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rtpbin.obj `if test -f 'elements/rtpbin.c'; then $(CYGPATH_W) 'elements/rtpbin.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpbin.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_multifile_CFLAGS) $(CFLAGS) -c -o elements/elements_multifile-multifile.o `test -f 'elements/multifile.c' || echo '$(srcdir)/'`elements/multifile.c -elements_rtpbin_buffer_list-rtpbin_buffer_list.o: elements/rtpbin_buffer_list.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpbin_buffer_list_CFLAGS) $(CFLAGS) -MT elements_rtpbin_buffer_list-rtpbin_buffer_list.o -MD -MP -MF $(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Tpo -c -o elements_rtpbin_buffer_list-rtpbin_buffer_list.o `test -f 'elements/rtpbin_buffer_list.c' || echo '$(srcdir)/'`elements/rtpbin_buffer_list.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Tpo $(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpbin_buffer_list.c' object='elements_rtpbin_buffer_list-rtpbin_buffer_list.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_multifile-multifile.obj: elements/multifile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_multifile_CFLAGS) $(CFLAGS) -MT elements/elements_multifile-multifile.obj -MD -MP -MF elements/$(DEPDIR)/elements_multifile-multifile.Tpo -c -o elements/elements_multifile-multifile.obj `if test -f 'elements/multifile.c'; then $(CYGPATH_W) 'elements/multifile.c'; else $(CYGPATH_W) '$(srcdir)/elements/multifile.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_multifile-multifile.Tpo elements/$(DEPDIR)/elements_multifile-multifile.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/multifile.c' object='elements/elements_multifile-multifile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpbin_buffer_list_CFLAGS) $(CFLAGS) -c -o elements_rtpbin_buffer_list-rtpbin_buffer_list.o `test -f 'elements/rtpbin_buffer_list.c' || echo '$(srcdir)/'`elements/rtpbin_buffer_list.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_multifile_CFLAGS) $(CFLAGS) -c -o elements/elements_multifile-multifile.obj `if test -f 'elements/multifile.c'; then $(CYGPATH_W) 'elements/multifile.c'; else $(CYGPATH_W) '$(srcdir)/elements/multifile.c'; fi` -elements_rtpbin_buffer_list-rtpbin_buffer_list.obj: elements/rtpbin_buffer_list.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpbin_buffer_list_CFLAGS) $(CFLAGS) -MT elements_rtpbin_buffer_list-rtpbin_buffer_list.obj -MD -MP -MF $(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Tpo -c -o elements_rtpbin_buffer_list-rtpbin_buffer_list.obj `if test -f 'elements/rtpbin_buffer_list.c'; then $(CYGPATH_W) 'elements/rtpbin_buffer_list.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpbin_buffer_list.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Tpo $(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpbin_buffer_list.c' object='elements_rtpbin_buffer_list-rtpbin_buffer_list.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_qtmux-qtmux.o: elements/qtmux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_qtmux_CFLAGS) $(CFLAGS) -MT elements/elements_qtmux-qtmux.o -MD -MP -MF elements/$(DEPDIR)/elements_qtmux-qtmux.Tpo -c -o elements/elements_qtmux-qtmux.o `test -f 'elements/qtmux.c' || echo '$(srcdir)/'`elements/qtmux.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_qtmux-qtmux.Tpo elements/$(DEPDIR)/elements_qtmux-qtmux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/qtmux.c' object='elements/elements_qtmux-qtmux.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpbin_buffer_list_CFLAGS) $(CFLAGS) -c -o elements_rtpbin_buffer_list-rtpbin_buffer_list.obj `if test -f 'elements/rtpbin_buffer_list.c'; then $(CYGPATH_W) 'elements/rtpbin_buffer_list.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpbin_buffer_list.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_qtmux_CFLAGS) $(CFLAGS) -c -o elements/elements_qtmux-qtmux.o `test -f 'elements/qtmux.c' || echo '$(srcdir)/'`elements/qtmux.c -rtpjitterbuffer.o: elements/rtpjitterbuffer.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT rtpjitterbuffer.o -MD -MP -MF $(DEPDIR)/rtpjitterbuffer.Tpo -c -o rtpjitterbuffer.o `test -f 'elements/rtpjitterbuffer.c' || echo '$(srcdir)/'`elements/rtpjitterbuffer.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/rtpjitterbuffer.Tpo $(DEPDIR)/rtpjitterbuffer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpjitterbuffer.c' object='rtpjitterbuffer.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_qtmux-qtmux.obj: elements/qtmux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_qtmux_CFLAGS) $(CFLAGS) -MT elements/elements_qtmux-qtmux.obj -MD -MP -MF elements/$(DEPDIR)/elements_qtmux-qtmux.Tpo -c -o elements/elements_qtmux-qtmux.obj `if test -f 'elements/qtmux.c'; then $(CYGPATH_W) 'elements/qtmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/qtmux.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_qtmux-qtmux.Tpo elements/$(DEPDIR)/elements_qtmux-qtmux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/qtmux.c' object='elements/elements_qtmux-qtmux.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rtpjitterbuffer.o `test -f 'elements/rtpjitterbuffer.c' || echo '$(srcdir)/'`elements/rtpjitterbuffer.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_qtmux_CFLAGS) $(CFLAGS) -c -o elements/elements_qtmux-qtmux.obj `if test -f 'elements/qtmux.c'; then $(CYGPATH_W) 'elements/qtmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/qtmux.c'; fi` -rtpjitterbuffer.obj: elements/rtpjitterbuffer.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT rtpjitterbuffer.obj -MD -MP -MF $(DEPDIR)/rtpjitterbuffer.Tpo -c -o rtpjitterbuffer.obj `if test -f 'elements/rtpjitterbuffer.c'; then $(CYGPATH_W) 'elements/rtpjitterbuffer.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpjitterbuffer.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/rtpjitterbuffer.Tpo $(DEPDIR)/rtpjitterbuffer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpjitterbuffer.c' object='rtpjitterbuffer.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_rganalysis-rganalysis.o: elements/rganalysis.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rganalysis_CFLAGS) $(CFLAGS) -MT elements/elements_rganalysis-rganalysis.o -MD -MP -MF elements/$(DEPDIR)/elements_rganalysis-rganalysis.Tpo -c -o elements/elements_rganalysis-rganalysis.o `test -f 'elements/rganalysis.c' || echo '$(srcdir)/'`elements/rganalysis.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rganalysis-rganalysis.Tpo elements/$(DEPDIR)/elements_rganalysis-rganalysis.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rganalysis.c' object='elements/elements_rganalysis-rganalysis.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rtpjitterbuffer.obj `if test -f 'elements/rtpjitterbuffer.c'; then $(CYGPATH_W) 'elements/rtpjitterbuffer.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpjitterbuffer.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rganalysis_CFLAGS) $(CFLAGS) -c -o elements/elements_rganalysis-rganalysis.o `test -f 'elements/rganalysis.c' || echo '$(srcdir)/'`elements/rganalysis.c -shapewipe.o: elements/shapewipe.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shapewipe.o -MD -MP -MF $(DEPDIR)/shapewipe.Tpo -c -o shapewipe.o `test -f 'elements/shapewipe.c' || echo '$(srcdir)/'`elements/shapewipe.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shapewipe.Tpo $(DEPDIR)/shapewipe.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/shapewipe.c' object='shapewipe.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_rganalysis-rganalysis.obj: elements/rganalysis.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rganalysis_CFLAGS) $(CFLAGS) -MT elements/elements_rganalysis-rganalysis.obj -MD -MP -MF elements/$(DEPDIR)/elements_rganalysis-rganalysis.Tpo -c -o elements/elements_rganalysis-rganalysis.obj `if test -f 'elements/rganalysis.c'; then $(CYGPATH_W) 'elements/rganalysis.c'; else $(CYGPATH_W) '$(srcdir)/elements/rganalysis.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rganalysis-rganalysis.Tpo elements/$(DEPDIR)/elements_rganalysis-rganalysis.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rganalysis.c' object='elements/elements_rganalysis-rganalysis.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shapewipe.o `test -f 'elements/shapewipe.c' || echo '$(srcdir)/'`elements/shapewipe.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rganalysis_CFLAGS) $(CFLAGS) -c -o elements/elements_rganalysis-rganalysis.obj `if test -f 'elements/rganalysis.c'; then $(CYGPATH_W) 'elements/rganalysis.c'; else $(CYGPATH_W) '$(srcdir)/elements/rganalysis.c'; fi` -shapewipe.obj: elements/shapewipe.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shapewipe.obj -MD -MP -MF $(DEPDIR)/shapewipe.Tpo -c -o shapewipe.obj `if test -f 'elements/shapewipe.c'; then $(CYGPATH_W) 'elements/shapewipe.c'; else $(CYGPATH_W) '$(srcdir)/elements/shapewipe.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shapewipe.Tpo $(DEPDIR)/shapewipe.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/shapewipe.c' object='shapewipe.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_rglimiter-rglimiter.o: elements/rglimiter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rglimiter_CFLAGS) $(CFLAGS) -MT elements/elements_rglimiter-rglimiter.o -MD -MP -MF elements/$(DEPDIR)/elements_rglimiter-rglimiter.Tpo -c -o elements/elements_rglimiter-rglimiter.o `test -f 'elements/rglimiter.c' || echo '$(srcdir)/'`elements/rglimiter.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rglimiter-rglimiter.Tpo elements/$(DEPDIR)/elements_rglimiter-rglimiter.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rglimiter.c' object='elements/elements_rglimiter-rglimiter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shapewipe.obj `if test -f 'elements/shapewipe.c'; then $(CYGPATH_W) 'elements/shapewipe.c'; else $(CYGPATH_W) '$(srcdir)/elements/shapewipe.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rglimiter_CFLAGS) $(CFLAGS) -c -o elements/elements_rglimiter-rglimiter.o `test -f 'elements/rglimiter.c' || echo '$(srcdir)/'`elements/rglimiter.c -elements_souphttpsrc-souphttpsrc.o: elements/souphttpsrc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_souphttpsrc_CFLAGS) $(CFLAGS) -MT elements_souphttpsrc-souphttpsrc.o -MD -MP -MF $(DEPDIR)/elements_souphttpsrc-souphttpsrc.Tpo -c -o elements_souphttpsrc-souphttpsrc.o `test -f 'elements/souphttpsrc.c' || echo '$(srcdir)/'`elements/souphttpsrc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_souphttpsrc-souphttpsrc.Tpo $(DEPDIR)/elements_souphttpsrc-souphttpsrc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/souphttpsrc.c' object='elements_souphttpsrc-souphttpsrc.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_rglimiter-rglimiter.obj: elements/rglimiter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rglimiter_CFLAGS) $(CFLAGS) -MT elements/elements_rglimiter-rglimiter.obj -MD -MP -MF elements/$(DEPDIR)/elements_rglimiter-rglimiter.Tpo -c -o elements/elements_rglimiter-rglimiter.obj `if test -f 'elements/rglimiter.c'; then $(CYGPATH_W) 'elements/rglimiter.c'; else $(CYGPATH_W) '$(srcdir)/elements/rglimiter.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rglimiter-rglimiter.Tpo elements/$(DEPDIR)/elements_rglimiter-rglimiter.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rglimiter.c' object='elements/elements_rglimiter-rglimiter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_souphttpsrc_CFLAGS) $(CFLAGS) -c -o elements_souphttpsrc-souphttpsrc.o `test -f 'elements/souphttpsrc.c' || echo '$(srcdir)/'`elements/souphttpsrc.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rglimiter_CFLAGS) $(CFLAGS) -c -o elements/elements_rglimiter-rglimiter.obj `if test -f 'elements/rglimiter.c'; then $(CYGPATH_W) 'elements/rglimiter.c'; else $(CYGPATH_W) '$(srcdir)/elements/rglimiter.c'; fi` -elements_souphttpsrc-souphttpsrc.obj: elements/souphttpsrc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_souphttpsrc_CFLAGS) $(CFLAGS) -MT elements_souphttpsrc-souphttpsrc.obj -MD -MP -MF $(DEPDIR)/elements_souphttpsrc-souphttpsrc.Tpo -c -o elements_souphttpsrc-souphttpsrc.obj `if test -f 'elements/souphttpsrc.c'; then $(CYGPATH_W) 'elements/souphttpsrc.c'; else $(CYGPATH_W) '$(srcdir)/elements/souphttpsrc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_souphttpsrc-souphttpsrc.Tpo $(DEPDIR)/elements_souphttpsrc-souphttpsrc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/souphttpsrc.c' object='elements_souphttpsrc-souphttpsrc.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_rgvolume-rgvolume.o: elements/rgvolume.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rgvolume_CFLAGS) $(CFLAGS) -MT elements/elements_rgvolume-rgvolume.o -MD -MP -MF elements/$(DEPDIR)/elements_rgvolume-rgvolume.Tpo -c -o elements/elements_rgvolume-rgvolume.o `test -f 'elements/rgvolume.c' || echo '$(srcdir)/'`elements/rgvolume.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rgvolume-rgvolume.Tpo elements/$(DEPDIR)/elements_rgvolume-rgvolume.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rgvolume.c' object='elements/elements_rgvolume-rgvolume.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_souphttpsrc_CFLAGS) $(CFLAGS) -c -o elements_souphttpsrc-souphttpsrc.obj `if test -f 'elements/souphttpsrc.c'; then $(CYGPATH_W) 'elements/souphttpsrc.c'; else $(CYGPATH_W) '$(srcdir)/elements/souphttpsrc.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rgvolume_CFLAGS) $(CFLAGS) -c -o elements/elements_rgvolume-rgvolume.o `test -f 'elements/rgvolume.c' || echo '$(srcdir)/'`elements/rgvolume.c -elements_spectrum-spectrum.o: elements/spectrum.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_spectrum_CFLAGS) $(CFLAGS) -MT elements_spectrum-spectrum.o -MD -MP -MF $(DEPDIR)/elements_spectrum-spectrum.Tpo -c -o elements_spectrum-spectrum.o `test -f 'elements/spectrum.c' || echo '$(srcdir)/'`elements/spectrum.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_spectrum-spectrum.Tpo $(DEPDIR)/elements_spectrum-spectrum.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/spectrum.c' object='elements_spectrum-spectrum.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_rgvolume-rgvolume.obj: elements/rgvolume.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rgvolume_CFLAGS) $(CFLAGS) -MT elements/elements_rgvolume-rgvolume.obj -MD -MP -MF elements/$(DEPDIR)/elements_rgvolume-rgvolume.Tpo -c -o elements/elements_rgvolume-rgvolume.obj `if test -f 'elements/rgvolume.c'; then $(CYGPATH_W) 'elements/rgvolume.c'; else $(CYGPATH_W) '$(srcdir)/elements/rgvolume.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rgvolume-rgvolume.Tpo elements/$(DEPDIR)/elements_rgvolume-rgvolume.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rgvolume.c' object='elements/elements_rgvolume-rgvolume.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_spectrum_CFLAGS) $(CFLAGS) -c -o elements_spectrum-spectrum.o `test -f 'elements/spectrum.c' || echo '$(srcdir)/'`elements/spectrum.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rgvolume_CFLAGS) $(CFLAGS) -c -o elements/elements_rgvolume-rgvolume.obj `if test -f 'elements/rgvolume.c'; then $(CYGPATH_W) 'elements/rgvolume.c'; else $(CYGPATH_W) '$(srcdir)/elements/rgvolume.c'; fi` -elements_spectrum-spectrum.obj: elements/spectrum.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_spectrum_CFLAGS) $(CFLAGS) -MT elements_spectrum-spectrum.obj -MD -MP -MF $(DEPDIR)/elements_spectrum-spectrum.Tpo -c -o elements_spectrum-spectrum.obj `if test -f 'elements/spectrum.c'; then $(CYGPATH_W) 'elements/spectrum.c'; else $(CYGPATH_W) '$(srcdir)/elements/spectrum.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_spectrum-spectrum.Tpo $(DEPDIR)/elements_spectrum-spectrum.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/spectrum.c' object='elements_spectrum-spectrum.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.o: elements/rtpbin_buffer_list.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpbin_buffer_list_CFLAGS) $(CFLAGS) -MT elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.o -MD -MP -MF elements/$(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Tpo -c -o elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.o `test -f 'elements/rtpbin_buffer_list.c' || echo '$(srcdir)/'`elements/rtpbin_buffer_list.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Tpo elements/$(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpbin_buffer_list.c' object='elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_spectrum_CFLAGS) $(CFLAGS) -c -o elements_spectrum-spectrum.obj `if test -f 'elements/spectrum.c'; then $(CYGPATH_W) 'elements/spectrum.c'; else $(CYGPATH_W) '$(srcdir)/elements/spectrum.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpbin_buffer_list_CFLAGS) $(CFLAGS) -c -o elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.o `test -f 'elements/rtpbin_buffer_list.c' || echo '$(srcdir)/'`elements/rtpbin_buffer_list.c -elements_sunaudio-sunaudio.o: elements/sunaudio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_sunaudio_CFLAGS) $(CFLAGS) -MT elements_sunaudio-sunaudio.o -MD -MP -MF $(DEPDIR)/elements_sunaudio-sunaudio.Tpo -c -o elements_sunaudio-sunaudio.o `test -f 'elements/sunaudio.c' || echo '$(srcdir)/'`elements/sunaudio.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_sunaudio-sunaudio.Tpo $(DEPDIR)/elements_sunaudio-sunaudio.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/sunaudio.c' object='elements_sunaudio-sunaudio.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.obj: elements/rtpbin_buffer_list.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpbin_buffer_list_CFLAGS) $(CFLAGS) -MT elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.obj -MD -MP -MF elements/$(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Tpo -c -o elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.obj `if test -f 'elements/rtpbin_buffer_list.c'; then $(CYGPATH_W) 'elements/rtpbin_buffer_list.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpbin_buffer_list.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Tpo elements/$(DEPDIR)/elements_rtpbin_buffer_list-rtpbin_buffer_list.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpbin_buffer_list.c' object='elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_sunaudio_CFLAGS) $(CFLAGS) -c -o elements_sunaudio-sunaudio.o `test -f 'elements/sunaudio.c' || echo '$(srcdir)/'`elements/sunaudio.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpbin_buffer_list_CFLAGS) $(CFLAGS) -c -o elements/elements_rtpbin_buffer_list-rtpbin_buffer_list.obj `if test -f 'elements/rtpbin_buffer_list.c'; then $(CYGPATH_W) 'elements/rtpbin_buffer_list.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpbin_buffer_list.c'; fi` -elements_sunaudio-sunaudio.obj: elements/sunaudio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_sunaudio_CFLAGS) $(CFLAGS) -MT elements_sunaudio-sunaudio.obj -MD -MP -MF $(DEPDIR)/elements_sunaudio-sunaudio.Tpo -c -o elements_sunaudio-sunaudio.obj `if test -f 'elements/sunaudio.c'; then $(CYGPATH_W) 'elements/sunaudio.c'; else $(CYGPATH_W) '$(srcdir)/elements/sunaudio.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_sunaudio-sunaudio.Tpo $(DEPDIR)/elements_sunaudio-sunaudio.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/sunaudio.c' object='elements_sunaudio-sunaudio.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_rtpjitterbuffer-rtpjitterbuffer.o: elements/rtpjitterbuffer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpjitterbuffer_CFLAGS) $(CFLAGS) -MT elements/elements_rtpjitterbuffer-rtpjitterbuffer.o -MD -MP -MF elements/$(DEPDIR)/elements_rtpjitterbuffer-rtpjitterbuffer.Tpo -c -o elements/elements_rtpjitterbuffer-rtpjitterbuffer.o `test -f 'elements/rtpjitterbuffer.c' || echo '$(srcdir)/'`elements/rtpjitterbuffer.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rtpjitterbuffer-rtpjitterbuffer.Tpo elements/$(DEPDIR)/elements_rtpjitterbuffer-rtpjitterbuffer.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpjitterbuffer.c' object='elements/elements_rtpjitterbuffer-rtpjitterbuffer.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_sunaudio_CFLAGS) $(CFLAGS) -c -o elements_sunaudio-sunaudio.obj `if test -f 'elements/sunaudio.c'; then $(CYGPATH_W) 'elements/sunaudio.c'; else $(CYGPATH_W) '$(srcdir)/elements/sunaudio.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpjitterbuffer_CFLAGS) $(CFLAGS) -c -o elements/elements_rtpjitterbuffer-rtpjitterbuffer.o `test -f 'elements/rtpjitterbuffer.c' || echo '$(srcdir)/'`elements/rtpjitterbuffer.c -udpsink.o: elements/udpsink.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT udpsink.o -MD -MP -MF $(DEPDIR)/udpsink.Tpo -c -o udpsink.o `test -f 'elements/udpsink.c' || echo '$(srcdir)/'`elements/udpsink.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/udpsink.Tpo $(DEPDIR)/udpsink.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/udpsink.c' object='udpsink.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_rtpjitterbuffer-rtpjitterbuffer.obj: elements/rtpjitterbuffer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpjitterbuffer_CFLAGS) $(CFLAGS) -MT elements/elements_rtpjitterbuffer-rtpjitterbuffer.obj -MD -MP -MF elements/$(DEPDIR)/elements_rtpjitterbuffer-rtpjitterbuffer.Tpo -c -o elements/elements_rtpjitterbuffer-rtpjitterbuffer.obj `if test -f 'elements/rtpjitterbuffer.c'; then $(CYGPATH_W) 'elements/rtpjitterbuffer.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpjitterbuffer.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rtpjitterbuffer-rtpjitterbuffer.Tpo elements/$(DEPDIR)/elements_rtpjitterbuffer-rtpjitterbuffer.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpjitterbuffer.c' object='elements/elements_rtpjitterbuffer-rtpjitterbuffer.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o udpsink.o `test -f 'elements/udpsink.c' || echo '$(srcdir)/'`elements/udpsink.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpjitterbuffer_CFLAGS) $(CFLAGS) -c -o elements/elements_rtpjitterbuffer-rtpjitterbuffer.obj `if test -f 'elements/rtpjitterbuffer.c'; then $(CYGPATH_W) 'elements/rtpjitterbuffer.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpjitterbuffer.c'; fi` -udpsink.obj: elements/udpsink.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT udpsink.obj -MD -MP -MF $(DEPDIR)/udpsink.Tpo -c -o udpsink.obj `if test -f 'elements/udpsink.c'; then $(CYGPATH_W) 'elements/udpsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/udpsink.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/udpsink.Tpo $(DEPDIR)/udpsink.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/udpsink.c' object='udpsink.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_rtpmux-rtpmux.o: elements/rtpmux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpmux_CFLAGS) $(CFLAGS) -MT elements/elements_rtpmux-rtpmux.o -MD -MP -MF elements/$(DEPDIR)/elements_rtpmux-rtpmux.Tpo -c -o elements/elements_rtpmux-rtpmux.o `test -f 'elements/rtpmux.c' || echo '$(srcdir)/'`elements/rtpmux.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rtpmux-rtpmux.Tpo elements/$(DEPDIR)/elements_rtpmux-rtpmux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpmux.c' object='elements/elements_rtpmux-rtpmux.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o udpsink.obj `if test -f 'elements/udpsink.c'; then $(CYGPATH_W) 'elements/udpsink.c'; else $(CYGPATH_W) '$(srcdir)/elements/udpsink.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpmux_CFLAGS) $(CFLAGS) -c -o elements/elements_rtpmux-rtpmux.o `test -f 'elements/rtpmux.c' || echo '$(srcdir)/'`elements/rtpmux.c -elements_udpsrc-udpsrc.o: elements/udpsrc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_udpsrc_CFLAGS) $(CFLAGS) -MT elements_udpsrc-udpsrc.o -MD -MP -MF $(DEPDIR)/elements_udpsrc-udpsrc.Tpo -c -o elements_udpsrc-udpsrc.o `test -f 'elements/udpsrc.c' || echo '$(srcdir)/'`elements/udpsrc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_udpsrc-udpsrc.Tpo $(DEPDIR)/elements_udpsrc-udpsrc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/udpsrc.c' object='elements_udpsrc-udpsrc.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_rtpmux-rtpmux.obj: elements/rtpmux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpmux_CFLAGS) $(CFLAGS) -MT elements/elements_rtpmux-rtpmux.obj -MD -MP -MF elements/$(DEPDIR)/elements_rtpmux-rtpmux.Tpo -c -o elements/elements_rtpmux-rtpmux.obj `if test -f 'elements/rtpmux.c'; then $(CYGPATH_W) 'elements/rtpmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpmux.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rtpmux-rtpmux.Tpo elements/$(DEPDIR)/elements_rtpmux-rtpmux.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/rtpmux.c' object='elements/elements_rtpmux-rtpmux.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_udpsrc_CFLAGS) $(CFLAGS) -c -o elements_udpsrc-udpsrc.o `test -f 'elements/udpsrc.c' || echo '$(srcdir)/'`elements/udpsrc.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtpmux_CFLAGS) $(CFLAGS) -c -o elements/elements_rtpmux-rtpmux.obj `if test -f 'elements/rtpmux.c'; then $(CYGPATH_W) 'elements/rtpmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/rtpmux.c'; fi` -elements_udpsrc-udpsrc.obj: elements/udpsrc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_udpsrc_CFLAGS) $(CFLAGS) -MT elements_udpsrc-udpsrc.obj -MD -MP -MF $(DEPDIR)/elements_udpsrc-udpsrc.Tpo -c -o elements_udpsrc-udpsrc.obj `if test -f 'elements/udpsrc.c'; then $(CYGPATH_W) 'elements/udpsrc.c'; else $(CYGPATH_W) '$(srcdir)/elements/udpsrc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_udpsrc-udpsrc.Tpo $(DEPDIR)/elements_udpsrc-udpsrc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/udpsrc.c' object='elements_udpsrc-udpsrc.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_souphttpsrc-souphttpsrc.o: elements/souphttpsrc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_souphttpsrc_CFLAGS) $(CFLAGS) -MT elements/elements_souphttpsrc-souphttpsrc.o -MD -MP -MF elements/$(DEPDIR)/elements_souphttpsrc-souphttpsrc.Tpo -c -o elements/elements_souphttpsrc-souphttpsrc.o `test -f 'elements/souphttpsrc.c' || echo '$(srcdir)/'`elements/souphttpsrc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_souphttpsrc-souphttpsrc.Tpo elements/$(DEPDIR)/elements_souphttpsrc-souphttpsrc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/souphttpsrc.c' object='elements/elements_souphttpsrc-souphttpsrc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_udpsrc_CFLAGS) $(CFLAGS) -c -o elements_udpsrc-udpsrc.obj `if test -f 'elements/udpsrc.c'; then $(CYGPATH_W) 'elements/udpsrc.c'; else $(CYGPATH_W) '$(srcdir)/elements/udpsrc.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_souphttpsrc_CFLAGS) $(CFLAGS) -c -o elements/elements_souphttpsrc-souphttpsrc.o `test -f 'elements/souphttpsrc.c' || echo '$(srcdir)/'`elements/souphttpsrc.c -elements_videocrop-videocrop.o: elements/videocrop.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videocrop_CFLAGS) $(CFLAGS) -MT elements_videocrop-videocrop.o -MD -MP -MF $(DEPDIR)/elements_videocrop-videocrop.Tpo -c -o elements_videocrop-videocrop.o `test -f 'elements/videocrop.c' || echo '$(srcdir)/'`elements/videocrop.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_videocrop-videocrop.Tpo $(DEPDIR)/elements_videocrop-videocrop.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/videocrop.c' object='elements_videocrop-videocrop.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_souphttpsrc-souphttpsrc.obj: elements/souphttpsrc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_souphttpsrc_CFLAGS) $(CFLAGS) -MT elements/elements_souphttpsrc-souphttpsrc.obj -MD -MP -MF elements/$(DEPDIR)/elements_souphttpsrc-souphttpsrc.Tpo -c -o elements/elements_souphttpsrc-souphttpsrc.obj `if test -f 'elements/souphttpsrc.c'; then $(CYGPATH_W) 'elements/souphttpsrc.c'; else $(CYGPATH_W) '$(srcdir)/elements/souphttpsrc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_souphttpsrc-souphttpsrc.Tpo elements/$(DEPDIR)/elements_souphttpsrc-souphttpsrc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/souphttpsrc.c' object='elements/elements_souphttpsrc-souphttpsrc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videocrop_CFLAGS) $(CFLAGS) -c -o elements_videocrop-videocrop.o `test -f 'elements/videocrop.c' || echo '$(srcdir)/'`elements/videocrop.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_souphttpsrc_CFLAGS) $(CFLAGS) -c -o elements/elements_souphttpsrc-souphttpsrc.obj `if test -f 'elements/souphttpsrc.c'; then $(CYGPATH_W) 'elements/souphttpsrc.c'; else $(CYGPATH_W) '$(srcdir)/elements/souphttpsrc.c'; fi` -elements_videocrop-videocrop.obj: elements/videocrop.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videocrop_CFLAGS) $(CFLAGS) -MT elements_videocrop-videocrop.obj -MD -MP -MF $(DEPDIR)/elements_videocrop-videocrop.Tpo -c -o elements_videocrop-videocrop.obj `if test -f 'elements/videocrop.c'; then $(CYGPATH_W) 'elements/videocrop.c'; else $(CYGPATH_W) '$(srcdir)/elements/videocrop.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_videocrop-videocrop.Tpo $(DEPDIR)/elements_videocrop-videocrop.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/videocrop.c' object='elements_videocrop-videocrop.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_spectrum-spectrum.o: elements/spectrum.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_spectrum_CFLAGS) $(CFLAGS) -MT elements/elements_spectrum-spectrum.o -MD -MP -MF elements/$(DEPDIR)/elements_spectrum-spectrum.Tpo -c -o elements/elements_spectrum-spectrum.o `test -f 'elements/spectrum.c' || echo '$(srcdir)/'`elements/spectrum.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_spectrum-spectrum.Tpo elements/$(DEPDIR)/elements_spectrum-spectrum.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/spectrum.c' object='elements/elements_spectrum-spectrum.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videocrop_CFLAGS) $(CFLAGS) -c -o elements_videocrop-videocrop.obj `if test -f 'elements/videocrop.c'; then $(CYGPATH_W) 'elements/videocrop.c'; else $(CYGPATH_W) '$(srcdir)/elements/videocrop.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_spectrum_CFLAGS) $(CFLAGS) -c -o elements/elements_spectrum-spectrum.o `test -f 'elements/spectrum.c' || echo '$(srcdir)/'`elements/spectrum.c -elements_videofilter-videofilter.o: elements/videofilter.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videofilter_CFLAGS) $(CFLAGS) -MT elements_videofilter-videofilter.o -MD -MP -MF $(DEPDIR)/elements_videofilter-videofilter.Tpo -c -o elements_videofilter-videofilter.o `test -f 'elements/videofilter.c' || echo '$(srcdir)/'`elements/videofilter.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_videofilter-videofilter.Tpo $(DEPDIR)/elements_videofilter-videofilter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/videofilter.c' object='elements_videofilter-videofilter.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_spectrum-spectrum.obj: elements/spectrum.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_spectrum_CFLAGS) $(CFLAGS) -MT elements/elements_spectrum-spectrum.obj -MD -MP -MF elements/$(DEPDIR)/elements_spectrum-spectrum.Tpo -c -o elements/elements_spectrum-spectrum.obj `if test -f 'elements/spectrum.c'; then $(CYGPATH_W) 'elements/spectrum.c'; else $(CYGPATH_W) '$(srcdir)/elements/spectrum.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_spectrum-spectrum.Tpo elements/$(DEPDIR)/elements_spectrum-spectrum.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/spectrum.c' object='elements/elements_spectrum-spectrum.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videofilter_CFLAGS) $(CFLAGS) -c -o elements_videofilter-videofilter.o `test -f 'elements/videofilter.c' || echo '$(srcdir)/'`elements/videofilter.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_spectrum_CFLAGS) $(CFLAGS) -c -o elements/elements_spectrum-spectrum.obj `if test -f 'elements/spectrum.c'; then $(CYGPATH_W) 'elements/spectrum.c'; else $(CYGPATH_W) '$(srcdir)/elements/spectrum.c'; fi` -elements_videofilter-videofilter.obj: elements/videofilter.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videofilter_CFLAGS) $(CFLAGS) -MT elements_videofilter-videofilter.obj -MD -MP -MF $(DEPDIR)/elements_videofilter-videofilter.Tpo -c -o elements_videofilter-videofilter.obj `if test -f 'elements/videofilter.c'; then $(CYGPATH_W) 'elements/videofilter.c'; else $(CYGPATH_W) '$(srcdir)/elements/videofilter.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/elements_videofilter-videofilter.Tpo $(DEPDIR)/elements_videofilter-videofilter.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/videofilter.c' object='elements_videofilter-videofilter.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_sunaudio-sunaudio.o: elements/sunaudio.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_sunaudio_CFLAGS) $(CFLAGS) -MT elements/elements_sunaudio-sunaudio.o -MD -MP -MF elements/$(DEPDIR)/elements_sunaudio-sunaudio.Tpo -c -o elements/elements_sunaudio-sunaudio.o `test -f 'elements/sunaudio.c' || echo '$(srcdir)/'`elements/sunaudio.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_sunaudio-sunaudio.Tpo elements/$(DEPDIR)/elements_sunaudio-sunaudio.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/sunaudio.c' object='elements/elements_sunaudio-sunaudio.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videofilter_CFLAGS) $(CFLAGS) -c -o elements_videofilter-videofilter.obj `if test -f 'elements/videofilter.c'; then $(CYGPATH_W) 'elements/videofilter.c'; else $(CYGPATH_W) '$(srcdir)/elements/videofilter.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_sunaudio_CFLAGS) $(CFLAGS) -c -o elements/elements_sunaudio-sunaudio.o `test -f 'elements/sunaudio.c' || echo '$(srcdir)/'`elements/sunaudio.c -vp8dec.o: elements/vp8dec.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vp8dec.o -MD -MP -MF $(DEPDIR)/vp8dec.Tpo -c -o vp8dec.o `test -f 'elements/vp8dec.c' || echo '$(srcdir)/'`elements/vp8dec.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/vp8dec.Tpo $(DEPDIR)/vp8dec.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/vp8dec.c' object='vp8dec.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_sunaudio-sunaudio.obj: elements/sunaudio.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_sunaudio_CFLAGS) $(CFLAGS) -MT elements/elements_sunaudio-sunaudio.obj -MD -MP -MF elements/$(DEPDIR)/elements_sunaudio-sunaudio.Tpo -c -o elements/elements_sunaudio-sunaudio.obj `if test -f 'elements/sunaudio.c'; then $(CYGPATH_W) 'elements/sunaudio.c'; else $(CYGPATH_W) '$(srcdir)/elements/sunaudio.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_sunaudio-sunaudio.Tpo elements/$(DEPDIR)/elements_sunaudio-sunaudio.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/sunaudio.c' object='elements/elements_sunaudio-sunaudio.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vp8dec.o `test -f 'elements/vp8dec.c' || echo '$(srcdir)/'`elements/vp8dec.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_sunaudio_CFLAGS) $(CFLAGS) -c -o elements/elements_sunaudio-sunaudio.obj `if test -f 'elements/sunaudio.c'; then $(CYGPATH_W) 'elements/sunaudio.c'; else $(CYGPATH_W) '$(srcdir)/elements/sunaudio.c'; fi` -vp8dec.obj: elements/vp8dec.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vp8dec.obj -MD -MP -MF $(DEPDIR)/vp8dec.Tpo -c -o vp8dec.obj `if test -f 'elements/vp8dec.c'; then $(CYGPATH_W) 'elements/vp8dec.c'; else $(CYGPATH_W) '$(srcdir)/elements/vp8dec.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/vp8dec.Tpo $(DEPDIR)/vp8dec.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/vp8dec.c' object='vp8dec.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_udpsrc-udpsrc.o: elements/udpsrc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_udpsrc_CFLAGS) $(CFLAGS) -MT elements/elements_udpsrc-udpsrc.o -MD -MP -MF elements/$(DEPDIR)/elements_udpsrc-udpsrc.Tpo -c -o elements/elements_udpsrc-udpsrc.o `test -f 'elements/udpsrc.c' || echo '$(srcdir)/'`elements/udpsrc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_udpsrc-udpsrc.Tpo elements/$(DEPDIR)/elements_udpsrc-udpsrc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/udpsrc.c' object='elements/elements_udpsrc-udpsrc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vp8dec.obj `if test -f 'elements/vp8dec.c'; then $(CYGPATH_W) 'elements/vp8dec.c'; else $(CYGPATH_W) '$(srcdir)/elements/vp8dec.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_udpsrc_CFLAGS) $(CFLAGS) -c -o elements/elements_udpsrc-udpsrc.o `test -f 'elements/udpsrc.c' || echo '$(srcdir)/'`elements/udpsrc.c -vp8enc.o: elements/vp8enc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vp8enc.o -MD -MP -MF $(DEPDIR)/vp8enc.Tpo -c -o vp8enc.o `test -f 'elements/vp8enc.c' || echo '$(srcdir)/'`elements/vp8enc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/vp8enc.Tpo $(DEPDIR)/vp8enc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/vp8enc.c' object='vp8enc.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_udpsrc-udpsrc.obj: elements/udpsrc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_udpsrc_CFLAGS) $(CFLAGS) -MT elements/elements_udpsrc-udpsrc.obj -MD -MP -MF elements/$(DEPDIR)/elements_udpsrc-udpsrc.Tpo -c -o elements/elements_udpsrc-udpsrc.obj `if test -f 'elements/udpsrc.c'; then $(CYGPATH_W) 'elements/udpsrc.c'; else $(CYGPATH_W) '$(srcdir)/elements/udpsrc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_udpsrc-udpsrc.Tpo elements/$(DEPDIR)/elements_udpsrc-udpsrc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/udpsrc.c' object='elements/elements_udpsrc-udpsrc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vp8enc.o `test -f 'elements/vp8enc.c' || echo '$(srcdir)/'`elements/vp8enc.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_udpsrc_CFLAGS) $(CFLAGS) -c -o elements/elements_udpsrc-udpsrc.obj `if test -f 'elements/udpsrc.c'; then $(CYGPATH_W) 'elements/udpsrc.c'; else $(CYGPATH_W) '$(srcdir)/elements/udpsrc.c'; fi` -vp8enc.obj: elements/vp8enc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vp8enc.obj -MD -MP -MF $(DEPDIR)/vp8enc.Tpo -c -o vp8enc.obj `if test -f 'elements/vp8enc.c'; then $(CYGPATH_W) 'elements/vp8enc.c'; else $(CYGPATH_W) '$(srcdir)/elements/vp8enc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/vp8enc.Tpo $(DEPDIR)/vp8enc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/vp8enc.c' object='vp8enc.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_videocrop-videocrop.o: elements/videocrop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videocrop_CFLAGS) $(CFLAGS) -MT elements/elements_videocrop-videocrop.o -MD -MP -MF elements/$(DEPDIR)/elements_videocrop-videocrop.Tpo -c -o elements/elements_videocrop-videocrop.o `test -f 'elements/videocrop.c' || echo '$(srcdir)/'`elements/videocrop.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_videocrop-videocrop.Tpo elements/$(DEPDIR)/elements_videocrop-videocrop.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/videocrop.c' object='elements/elements_videocrop-videocrop.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vp8enc.obj `if test -f 'elements/vp8enc.c'; then $(CYGPATH_W) 'elements/vp8enc.c'; else $(CYGPATH_W) '$(srcdir)/elements/vp8enc.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videocrop_CFLAGS) $(CFLAGS) -c -o elements/elements_videocrop-videocrop.o `test -f 'elements/videocrop.c' || echo '$(srcdir)/'`elements/videocrop.c -wavpackdec.o: elements/wavpackdec.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wavpackdec.o -MD -MP -MF $(DEPDIR)/wavpackdec.Tpo -c -o wavpackdec.o `test -f 'elements/wavpackdec.c' || echo '$(srcdir)/'`elements/wavpackdec.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wavpackdec.Tpo $(DEPDIR)/wavpackdec.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/wavpackdec.c' object='wavpackdec.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_videocrop-videocrop.obj: elements/videocrop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videocrop_CFLAGS) $(CFLAGS) -MT elements/elements_videocrop-videocrop.obj -MD -MP -MF elements/$(DEPDIR)/elements_videocrop-videocrop.Tpo -c -o elements/elements_videocrop-videocrop.obj `if test -f 'elements/videocrop.c'; then $(CYGPATH_W) 'elements/videocrop.c'; else $(CYGPATH_W) '$(srcdir)/elements/videocrop.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_videocrop-videocrop.Tpo elements/$(DEPDIR)/elements_videocrop-videocrop.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/videocrop.c' object='elements/elements_videocrop-videocrop.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wavpackdec.o `test -f 'elements/wavpackdec.c' || echo '$(srcdir)/'`elements/wavpackdec.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videocrop_CFLAGS) $(CFLAGS) -c -o elements/elements_videocrop-videocrop.obj `if test -f 'elements/videocrop.c'; then $(CYGPATH_W) 'elements/videocrop.c'; else $(CYGPATH_W) '$(srcdir)/elements/videocrop.c'; fi` -wavpackdec.obj: elements/wavpackdec.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wavpackdec.obj -MD -MP -MF $(DEPDIR)/wavpackdec.Tpo -c -o wavpackdec.obj `if test -f 'elements/wavpackdec.c'; then $(CYGPATH_W) 'elements/wavpackdec.c'; else $(CYGPATH_W) '$(srcdir)/elements/wavpackdec.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wavpackdec.Tpo $(DEPDIR)/wavpackdec.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/wavpackdec.c' object='wavpackdec.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_videofilter-videofilter.o: elements/videofilter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videofilter_CFLAGS) $(CFLAGS) -MT elements/elements_videofilter-videofilter.o -MD -MP -MF elements/$(DEPDIR)/elements_videofilter-videofilter.Tpo -c -o elements/elements_videofilter-videofilter.o `test -f 'elements/videofilter.c' || echo '$(srcdir)/'`elements/videofilter.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_videofilter-videofilter.Tpo elements/$(DEPDIR)/elements_videofilter-videofilter.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/videofilter.c' object='elements/elements_videofilter-videofilter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wavpackdec.obj `if test -f 'elements/wavpackdec.c'; then $(CYGPATH_W) 'elements/wavpackdec.c'; else $(CYGPATH_W) '$(srcdir)/elements/wavpackdec.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videofilter_CFLAGS) $(CFLAGS) -c -o elements/elements_videofilter-videofilter.o `test -f 'elements/videofilter.c' || echo '$(srcdir)/'`elements/videofilter.c -wavpackenc.o: elements/wavpackenc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wavpackenc.o -MD -MP -MF $(DEPDIR)/wavpackenc.Tpo -c -o wavpackenc.o `test -f 'elements/wavpackenc.c' || echo '$(srcdir)/'`elements/wavpackenc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wavpackenc.Tpo $(DEPDIR)/wavpackenc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/wavpackenc.c' object='wavpackenc.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_videofilter-videofilter.obj: elements/videofilter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videofilter_CFLAGS) $(CFLAGS) -MT elements/elements_videofilter-videofilter.obj -MD -MP -MF elements/$(DEPDIR)/elements_videofilter-videofilter.Tpo -c -o elements/elements_videofilter-videofilter.obj `if test -f 'elements/videofilter.c'; then $(CYGPATH_W) 'elements/videofilter.c'; else $(CYGPATH_W) '$(srcdir)/elements/videofilter.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_videofilter-videofilter.Tpo elements/$(DEPDIR)/elements_videofilter-videofilter.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/videofilter.c' object='elements/elements_videofilter-videofilter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wavpackenc.o `test -f 'elements/wavpackenc.c' || echo '$(srcdir)/'`elements/wavpackenc.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videofilter_CFLAGS) $(CFLAGS) -c -o elements/elements_videofilter-videofilter.obj `if test -f 'elements/videofilter.c'; then $(CYGPATH_W) 'elements/videofilter.c'; else $(CYGPATH_W) '$(srcdir)/elements/videofilter.c'; fi` -wavpackenc.obj: elements/wavpackenc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wavpackenc.obj -MD -MP -MF $(DEPDIR)/wavpackenc.Tpo -c -o wavpackenc.obj `if test -f 'elements/wavpackenc.c'; then $(CYGPATH_W) 'elements/wavpackenc.c'; else $(CYGPATH_W) '$(srcdir)/elements/wavpackenc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wavpackenc.Tpo $(DEPDIR)/wavpackenc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/wavpackenc.c' object='wavpackenc.obj' libtool=no @AMDEPBACKSLASH@ +elements/elements_videomixer-videomixer.o: elements/videomixer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videomixer_CFLAGS) $(CFLAGS) -MT elements/elements_videomixer-videomixer.o -MD -MP -MF elements/$(DEPDIR)/elements_videomixer-videomixer.Tpo -c -o elements/elements_videomixer-videomixer.o `test -f 'elements/videomixer.c' || echo '$(srcdir)/'`elements/videomixer.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_videomixer-videomixer.Tpo elements/$(DEPDIR)/elements_videomixer-videomixer.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/videomixer.c' object='elements/elements_videomixer-videomixer.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wavpackenc.obj `if test -f 'elements/wavpackenc.c'; then $(CYGPATH_W) 'elements/wavpackenc.c'; else $(CYGPATH_W) '$(srcdir)/elements/wavpackenc.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videomixer_CFLAGS) $(CFLAGS) -c -o elements/elements_videomixer-videomixer.o `test -f 'elements/videomixer.c' || echo '$(srcdir)/'`elements/videomixer.c -wavpackparse.o: elements/wavpackparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wavpackparse.o -MD -MP -MF $(DEPDIR)/wavpackparse.Tpo -c -o wavpackparse.o `test -f 'elements/wavpackparse.c' || echo '$(srcdir)/'`elements/wavpackparse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wavpackparse.Tpo $(DEPDIR)/wavpackparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/wavpackparse.c' object='wavpackparse.o' libtool=no @AMDEPBACKSLASH@ +elements/elements_videomixer-videomixer.obj: elements/videomixer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videomixer_CFLAGS) $(CFLAGS) -MT elements/elements_videomixer-videomixer.obj -MD -MP -MF elements/$(DEPDIR)/elements_videomixer-videomixer.Tpo -c -o elements/elements_videomixer-videomixer.obj `if test -f 'elements/videomixer.c'; then $(CYGPATH_W) 'elements/videomixer.c'; else $(CYGPATH_W) '$(srcdir)/elements/videomixer.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_videomixer-videomixer.Tpo elements/$(DEPDIR)/elements_videomixer-videomixer.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/videomixer.c' object='elements/elements_videomixer-videomixer.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wavpackparse.o `test -f 'elements/wavpackparse.c' || echo '$(srcdir)/'`elements/wavpackparse.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_videomixer_CFLAGS) $(CFLAGS) -c -o elements/elements_videomixer-videomixer.obj `if test -f 'elements/videomixer.c'; then $(CYGPATH_W) 'elements/videomixer.c'; else $(CYGPATH_W) '$(srcdir)/elements/videomixer.c'; fi` -wavpackparse.obj: elements/wavpackparse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wavpackparse.obj -MD -MP -MF $(DEPDIR)/wavpackparse.Tpo -c -o wavpackparse.obj `if test -f 'elements/wavpackparse.c'; then $(CYGPATH_W) 'elements/wavpackparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/wavpackparse.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wavpackparse.Tpo $(DEPDIR)/wavpackparse.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/wavpackparse.c' object='wavpackparse.obj' libtool=no @AMDEPBACKSLASH@ +orc/orc_deinterlace-deinterlace.o: orc/deinterlace.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_deinterlace_CFLAGS) $(CFLAGS) -MT orc/orc_deinterlace-deinterlace.o -MD -MP -MF orc/$(DEPDIR)/orc_deinterlace-deinterlace.Tpo -c -o orc/orc_deinterlace-deinterlace.o `test -f 'orc/deinterlace.c' || echo '$(srcdir)/'`orc/deinterlace.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) orc/$(DEPDIR)/orc_deinterlace-deinterlace.Tpo orc/$(DEPDIR)/orc_deinterlace-deinterlace.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/deinterlace.c' object='orc/orc_deinterlace-deinterlace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wavpackparse.obj `if test -f 'elements/wavpackparse.c'; then $(CYGPATH_W) 'elements/wavpackparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/wavpackparse.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_deinterlace_CFLAGS) $(CFLAGS) -c -o orc/orc_deinterlace-deinterlace.o `test -f 'orc/deinterlace.c' || echo '$(srcdir)/'`orc/deinterlace.c -y4menc.o: elements/y4menc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT y4menc.o -MD -MP -MF $(DEPDIR)/y4menc.Tpo -c -o y4menc.o `test -f 'elements/y4menc.c' || echo '$(srcdir)/'`elements/y4menc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/y4menc.Tpo $(DEPDIR)/y4menc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/y4menc.c' object='y4menc.o' libtool=no @AMDEPBACKSLASH@ +orc/orc_deinterlace-deinterlace.obj: orc/deinterlace.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_deinterlace_CFLAGS) $(CFLAGS) -MT orc/orc_deinterlace-deinterlace.obj -MD -MP -MF orc/$(DEPDIR)/orc_deinterlace-deinterlace.Tpo -c -o orc/orc_deinterlace-deinterlace.obj `if test -f 'orc/deinterlace.c'; then $(CYGPATH_W) 'orc/deinterlace.c'; else $(CYGPATH_W) '$(srcdir)/orc/deinterlace.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) orc/$(DEPDIR)/orc_deinterlace-deinterlace.Tpo orc/$(DEPDIR)/orc_deinterlace-deinterlace.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/deinterlace.c' object='orc/orc_deinterlace-deinterlace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o y4menc.o `test -f 'elements/y4menc.c' || echo '$(srcdir)/'`elements/y4menc.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_deinterlace_CFLAGS) $(CFLAGS) -c -o orc/orc_deinterlace-deinterlace.obj `if test -f 'orc/deinterlace.c'; then $(CYGPATH_W) 'orc/deinterlace.c'; else $(CYGPATH_W) '$(srcdir)/orc/deinterlace.c'; fi` -y4menc.obj: elements/y4menc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT y4menc.obj -MD -MP -MF $(DEPDIR)/y4menc.Tpo -c -o y4menc.obj `if test -f 'elements/y4menc.c'; then $(CYGPATH_W) 'elements/y4menc.c'; else $(CYGPATH_W) '$(srcdir)/elements/y4menc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/y4menc.Tpo $(DEPDIR)/y4menc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/y4menc.c' object='y4menc.obj' libtool=no @AMDEPBACKSLASH@ +orc/orc_videobox-videobox.o: orc/videobox.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videobox_CFLAGS) $(CFLAGS) -MT orc/orc_videobox-videobox.o -MD -MP -MF orc/$(DEPDIR)/orc_videobox-videobox.Tpo -c -o orc/orc_videobox-videobox.o `test -f 'orc/videobox.c' || echo '$(srcdir)/'`orc/videobox.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) orc/$(DEPDIR)/orc_videobox-videobox.Tpo orc/$(DEPDIR)/orc_videobox-videobox.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/videobox.c' object='orc/orc_videobox-videobox.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o y4menc.obj `if test -f 'elements/y4menc.c'; then $(CYGPATH_W) 'elements/y4menc.c'; else $(CYGPATH_W) '$(srcdir)/elements/y4menc.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videobox_CFLAGS) $(CFLAGS) -c -o orc/orc_videobox-videobox.o `test -f 'orc/videobox.c' || echo '$(srcdir)/'`orc/videobox.c -states.o: generic/states.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT states.o -MD -MP -MF $(DEPDIR)/states.Tpo -c -o states.o `test -f 'generic/states.c' || echo '$(srcdir)/'`generic/states.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/states.Tpo $(DEPDIR)/states.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='generic/states.c' object='states.o' libtool=no @AMDEPBACKSLASH@ +orc/orc_videobox-videobox.obj: orc/videobox.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videobox_CFLAGS) $(CFLAGS) -MT orc/orc_videobox-videobox.obj -MD -MP -MF orc/$(DEPDIR)/orc_videobox-videobox.Tpo -c -o orc/orc_videobox-videobox.obj `if test -f 'orc/videobox.c'; then $(CYGPATH_W) 'orc/videobox.c'; else $(CYGPATH_W) '$(srcdir)/orc/videobox.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) orc/$(DEPDIR)/orc_videobox-videobox.Tpo orc/$(DEPDIR)/orc_videobox-videobox.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/videobox.c' object='orc/orc_videobox-videobox.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o states.o `test -f 'generic/states.c' || echo '$(srcdir)/'`generic/states.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videobox_CFLAGS) $(CFLAGS) -c -o orc/orc_videobox-videobox.obj `if test -f 'orc/videobox.c'; then $(CYGPATH_W) 'orc/videobox.c'; else $(CYGPATH_W) '$(srcdir)/orc/videobox.c'; fi` -states.obj: generic/states.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT states.obj -MD -MP -MF $(DEPDIR)/states.Tpo -c -o states.obj `if test -f 'generic/states.c'; then $(CYGPATH_W) 'generic/states.c'; else $(CYGPATH_W) '$(srcdir)/generic/states.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/states.Tpo $(DEPDIR)/states.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='generic/states.c' object='states.obj' libtool=no @AMDEPBACKSLASH@ +orc/orc_videomixer-videomixer.o: orc/videomixer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videomixer_CFLAGS) $(CFLAGS) -MT orc/orc_videomixer-videomixer.o -MD -MP -MF orc/$(DEPDIR)/orc_videomixer-videomixer.Tpo -c -o orc/orc_videomixer-videomixer.o `test -f 'orc/videomixer.c' || echo '$(srcdir)/'`orc/videomixer.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) orc/$(DEPDIR)/orc_videomixer-videomixer.Tpo orc/$(DEPDIR)/orc_videomixer-videomixer.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/videomixer.c' object='orc/orc_videomixer-videomixer.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o states.obj `if test -f 'generic/states.c'; then $(CYGPATH_W) 'generic/states.c'; else $(CYGPATH_W) '$(srcdir)/generic/states.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videomixer_CFLAGS) $(CFLAGS) -c -o orc/orc_videomixer-videomixer.o `test -f 'orc/videomixer.c' || echo '$(srcdir)/'`orc/videomixer.c -orc_deinterlace-deinterlace.o: orc/deinterlace.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_deinterlace_CFLAGS) $(CFLAGS) -MT orc_deinterlace-deinterlace.o -MD -MP -MF $(DEPDIR)/orc_deinterlace-deinterlace.Tpo -c -o orc_deinterlace-deinterlace.o `test -f 'orc/deinterlace.c' || echo '$(srcdir)/'`orc/deinterlace.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orc_deinterlace-deinterlace.Tpo $(DEPDIR)/orc_deinterlace-deinterlace.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/deinterlace.c' object='orc_deinterlace-deinterlace.o' libtool=no @AMDEPBACKSLASH@ +orc/orc_videomixer-videomixer.obj: orc/videomixer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videomixer_CFLAGS) $(CFLAGS) -MT orc/orc_videomixer-videomixer.obj -MD -MP -MF orc/$(DEPDIR)/orc_videomixer-videomixer.Tpo -c -o orc/orc_videomixer-videomixer.obj `if test -f 'orc/videomixer.c'; then $(CYGPATH_W) 'orc/videomixer.c'; else $(CYGPATH_W) '$(srcdir)/orc/videomixer.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) orc/$(DEPDIR)/orc_videomixer-videomixer.Tpo orc/$(DEPDIR)/orc_videomixer-videomixer.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/videomixer.c' object='orc/orc_videomixer-videomixer.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_deinterlace_CFLAGS) $(CFLAGS) -c -o orc_deinterlace-deinterlace.o `test -f 'orc/deinterlace.c' || echo '$(srcdir)/'`orc/deinterlace.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videomixer_CFLAGS) $(CFLAGS) -c -o orc/orc_videomixer-videomixer.obj `if test -f 'orc/videomixer.c'; then $(CYGPATH_W) 'orc/videomixer.c'; else $(CYGPATH_W) '$(srcdir)/orc/videomixer.c'; fi` -orc_deinterlace-deinterlace.obj: orc/deinterlace.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_deinterlace_CFLAGS) $(CFLAGS) -MT orc_deinterlace-deinterlace.obj -MD -MP -MF $(DEPDIR)/orc_deinterlace-deinterlace.Tpo -c -o orc_deinterlace-deinterlace.obj `if test -f 'orc/deinterlace.c'; then $(CYGPATH_W) 'orc/deinterlace.c'; else $(CYGPATH_W) '$(srcdir)/orc/deinterlace.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orc_deinterlace-deinterlace.Tpo $(DEPDIR)/orc_deinterlace-deinterlace.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/deinterlace.c' object='orc_deinterlace-deinterlace.obj' libtool=no @AMDEPBACKSLASH@ +pipelines/pipelines_flacdec-flacdec.o: pipelines/flacdec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_flacdec_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_flacdec-flacdec.o -MD -MP -MF pipelines/$(DEPDIR)/pipelines_flacdec-flacdec.Tpo -c -o pipelines/pipelines_flacdec-flacdec.o `test -f 'pipelines/flacdec.c' || echo '$(srcdir)/'`pipelines/flacdec.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_flacdec-flacdec.Tpo pipelines/$(DEPDIR)/pipelines_flacdec-flacdec.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/flacdec.c' object='pipelines/pipelines_flacdec-flacdec.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_deinterlace_CFLAGS) $(CFLAGS) -c -o orc_deinterlace-deinterlace.obj `if test -f 'orc/deinterlace.c'; then $(CYGPATH_W) 'orc/deinterlace.c'; else $(CYGPATH_W) '$(srcdir)/orc/deinterlace.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_flacdec_CFLAGS) $(CFLAGS) -c -o pipelines/pipelines_flacdec-flacdec.o `test -f 'pipelines/flacdec.c' || echo '$(srcdir)/'`pipelines/flacdec.c -orc_videobox-videobox.o: orc/videobox.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videobox_CFLAGS) $(CFLAGS) -MT orc_videobox-videobox.o -MD -MP -MF $(DEPDIR)/orc_videobox-videobox.Tpo -c -o orc_videobox-videobox.o `test -f 'orc/videobox.c' || echo '$(srcdir)/'`orc/videobox.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orc_videobox-videobox.Tpo $(DEPDIR)/orc_videobox-videobox.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/videobox.c' object='orc_videobox-videobox.o' libtool=no @AMDEPBACKSLASH@ +pipelines/pipelines_flacdec-flacdec.obj: pipelines/flacdec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_flacdec_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_flacdec-flacdec.obj -MD -MP -MF pipelines/$(DEPDIR)/pipelines_flacdec-flacdec.Tpo -c -o pipelines/pipelines_flacdec-flacdec.obj `if test -f 'pipelines/flacdec.c'; then $(CYGPATH_W) 'pipelines/flacdec.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/flacdec.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_flacdec-flacdec.Tpo pipelines/$(DEPDIR)/pipelines_flacdec-flacdec.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/flacdec.c' object='pipelines/pipelines_flacdec-flacdec.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videobox_CFLAGS) $(CFLAGS) -c -o orc_videobox-videobox.o `test -f 'orc/videobox.c' || echo '$(srcdir)/'`orc/videobox.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_flacdec_CFLAGS) $(CFLAGS) -c -o pipelines/pipelines_flacdec-flacdec.obj `if test -f 'pipelines/flacdec.c'; then $(CYGPATH_W) 'pipelines/flacdec.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/flacdec.c'; fi` -orc_videobox-videobox.obj: orc/videobox.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videobox_CFLAGS) $(CFLAGS) -MT orc_videobox-videobox.obj -MD -MP -MF $(DEPDIR)/orc_videobox-videobox.Tpo -c -o orc_videobox-videobox.obj `if test -f 'orc/videobox.c'; then $(CYGPATH_W) 'orc/videobox.c'; else $(CYGPATH_W) '$(srcdir)/orc/videobox.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orc_videobox-videobox.Tpo $(DEPDIR)/orc_videobox-videobox.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/videobox.c' object='orc_videobox-videobox.obj' libtool=no @AMDEPBACKSLASH@ +pipelines/pipelines_wavenc-wavenc.o: pipelines/wavenc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavenc_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_wavenc-wavenc.o -MD -MP -MF pipelines/$(DEPDIR)/pipelines_wavenc-wavenc.Tpo -c -o pipelines/pipelines_wavenc-wavenc.o `test -f 'pipelines/wavenc.c' || echo '$(srcdir)/'`pipelines/wavenc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_wavenc-wavenc.Tpo pipelines/$(DEPDIR)/pipelines_wavenc-wavenc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/wavenc.c' object='pipelines/pipelines_wavenc-wavenc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videobox_CFLAGS) $(CFLAGS) -c -o orc_videobox-videobox.obj `if test -f 'orc/videobox.c'; then $(CYGPATH_W) 'orc/videobox.c'; else $(CYGPATH_W) '$(srcdir)/orc/videobox.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavenc_CFLAGS) $(CFLAGS) -c -o pipelines/pipelines_wavenc-wavenc.o `test -f 'pipelines/wavenc.c' || echo '$(srcdir)/'`pipelines/wavenc.c -orc_videomixer-videomixer.o: orc/videomixer.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videomixer_CFLAGS) $(CFLAGS) -MT orc_videomixer-videomixer.o -MD -MP -MF $(DEPDIR)/orc_videomixer-videomixer.Tpo -c -o orc_videomixer-videomixer.o `test -f 'orc/videomixer.c' || echo '$(srcdir)/'`orc/videomixer.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orc_videomixer-videomixer.Tpo $(DEPDIR)/orc_videomixer-videomixer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/videomixer.c' object='orc_videomixer-videomixer.o' libtool=no @AMDEPBACKSLASH@ +pipelines/pipelines_wavenc-wavenc.obj: pipelines/wavenc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavenc_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_wavenc-wavenc.obj -MD -MP -MF pipelines/$(DEPDIR)/pipelines_wavenc-wavenc.Tpo -c -o pipelines/pipelines_wavenc-wavenc.obj `if test -f 'pipelines/wavenc.c'; then $(CYGPATH_W) 'pipelines/wavenc.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/wavenc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_wavenc-wavenc.Tpo pipelines/$(DEPDIR)/pipelines_wavenc-wavenc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/wavenc.c' object='pipelines/pipelines_wavenc-wavenc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videomixer_CFLAGS) $(CFLAGS) -c -o orc_videomixer-videomixer.o `test -f 'orc/videomixer.c' || echo '$(srcdir)/'`orc/videomixer.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavenc_CFLAGS) $(CFLAGS) -c -o pipelines/pipelines_wavenc-wavenc.obj `if test -f 'pipelines/wavenc.c'; then $(CYGPATH_W) 'pipelines/wavenc.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/wavenc.c'; fi` -orc_videomixer-videomixer.obj: orc/videomixer.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videomixer_CFLAGS) $(CFLAGS) -MT orc_videomixer-videomixer.obj -MD -MP -MF $(DEPDIR)/orc_videomixer-videomixer.Tpo -c -o orc_videomixer-videomixer.obj `if test -f 'orc/videomixer.c'; then $(CYGPATH_W) 'orc/videomixer.c'; else $(CYGPATH_W) '$(srcdir)/orc/videomixer.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/orc_videomixer-videomixer.Tpo $(DEPDIR)/orc_videomixer-videomixer.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/videomixer.c' object='orc_videomixer-videomixer.obj' libtool=no @AMDEPBACKSLASH@ +pipelines/pipelines_wavpack-wavpack.o: pipelines/wavpack.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavpack_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_wavpack-wavpack.o -MD -MP -MF pipelines/$(DEPDIR)/pipelines_wavpack-wavpack.Tpo -c -o pipelines/pipelines_wavpack-wavpack.o `test -f 'pipelines/wavpack.c' || echo '$(srcdir)/'`pipelines/wavpack.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_wavpack-wavpack.Tpo pipelines/$(DEPDIR)/pipelines_wavpack-wavpack.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/wavpack.c' object='pipelines/pipelines_wavpack-wavpack.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_videomixer_CFLAGS) $(CFLAGS) -c -o orc_videomixer-videomixer.obj `if test -f 'orc/videomixer.c'; then $(CYGPATH_W) 'orc/videomixer.c'; else $(CYGPATH_W) '$(srcdir)/orc/videomixer.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavpack_CFLAGS) $(CFLAGS) -c -o pipelines/pipelines_wavpack-wavpack.o `test -f 'pipelines/wavpack.c' || echo '$(srcdir)/'`pipelines/wavpack.c -effectv.o: pipelines/effectv.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT effectv.o -MD -MP -MF $(DEPDIR)/effectv.Tpo -c -o effectv.o `test -f 'pipelines/effectv.c' || echo '$(srcdir)/'`pipelines/effectv.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/effectv.Tpo $(DEPDIR)/effectv.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/effectv.c' object='effectv.o' libtool=no @AMDEPBACKSLASH@ +pipelines/pipelines_wavpack-wavpack.obj: pipelines/wavpack.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavpack_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_wavpack-wavpack.obj -MD -MP -MF pipelines/$(DEPDIR)/pipelines_wavpack-wavpack.Tpo -c -o pipelines/pipelines_wavpack-wavpack.obj `if test -f 'pipelines/wavpack.c'; then $(CYGPATH_W) 'pipelines/wavpack.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/wavpack.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_wavpack-wavpack.Tpo pipelines/$(DEPDIR)/pipelines_wavpack-wavpack.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/wavpack.c' object='pipelines/pipelines_wavpack-wavpack.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o effectv.o `test -f 'pipelines/effectv.c' || echo '$(srcdir)/'`pipelines/effectv.c - -effectv.obj: pipelines/effectv.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT effectv.obj -MD -MP -MF $(DEPDIR)/effectv.Tpo -c -o effectv.obj `if test -f 'pipelines/effectv.c'; then $(CYGPATH_W) 'pipelines/effectv.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/effectv.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/effectv.Tpo $(DEPDIR)/effectv.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/effectv.c' object='effectv.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o effectv.obj `if test -f 'pipelines/effectv.c'; then $(CYGPATH_W) 'pipelines/effectv.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/effectv.c'; fi` - -pipelines_flacdec-flacdec.o: pipelines/flacdec.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_flacdec_CFLAGS) $(CFLAGS) -MT pipelines_flacdec-flacdec.o -MD -MP -MF $(DEPDIR)/pipelines_flacdec-flacdec.Tpo -c -o pipelines_flacdec-flacdec.o `test -f 'pipelines/flacdec.c' || echo '$(srcdir)/'`pipelines/flacdec.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pipelines_flacdec-flacdec.Tpo $(DEPDIR)/pipelines_flacdec-flacdec.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/flacdec.c' object='pipelines_flacdec-flacdec.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_flacdec_CFLAGS) $(CFLAGS) -c -o pipelines_flacdec-flacdec.o `test -f 'pipelines/flacdec.c' || echo '$(srcdir)/'`pipelines/flacdec.c - -pipelines_flacdec-flacdec.obj: pipelines/flacdec.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_flacdec_CFLAGS) $(CFLAGS) -MT pipelines_flacdec-flacdec.obj -MD -MP -MF $(DEPDIR)/pipelines_flacdec-flacdec.Tpo -c -o pipelines_flacdec-flacdec.obj `if test -f 'pipelines/flacdec.c'; then $(CYGPATH_W) 'pipelines/flacdec.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/flacdec.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pipelines_flacdec-flacdec.Tpo $(DEPDIR)/pipelines_flacdec-flacdec.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/flacdec.c' object='pipelines_flacdec-flacdec.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_flacdec_CFLAGS) $(CFLAGS) -c -o pipelines_flacdec-flacdec.obj `if test -f 'pipelines/flacdec.c'; then $(CYGPATH_W) 'pipelines/flacdec.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/flacdec.c'; fi` - -simple-launch-lines.o: pipelines/simple-launch-lines.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT simple-launch-lines.o -MD -MP -MF $(DEPDIR)/simple-launch-lines.Tpo -c -o simple-launch-lines.o `test -f 'pipelines/simple-launch-lines.c' || echo '$(srcdir)/'`pipelines/simple-launch-lines.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple-launch-lines.Tpo $(DEPDIR)/simple-launch-lines.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/simple-launch-lines.c' object='simple-launch-lines.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o simple-launch-lines.o `test -f 'pipelines/simple-launch-lines.c' || echo '$(srcdir)/'`pipelines/simple-launch-lines.c - -simple-launch-lines.obj: pipelines/simple-launch-lines.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT simple-launch-lines.obj -MD -MP -MF $(DEPDIR)/simple-launch-lines.Tpo -c -o simple-launch-lines.obj `if test -f 'pipelines/simple-launch-lines.c'; then $(CYGPATH_W) 'pipelines/simple-launch-lines.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/simple-launch-lines.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/simple-launch-lines.Tpo $(DEPDIR)/simple-launch-lines.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/simple-launch-lines.c' object='simple-launch-lines.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o simple-launch-lines.obj `if test -f 'pipelines/simple-launch-lines.c'; then $(CYGPATH_W) 'pipelines/simple-launch-lines.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/simple-launch-lines.c'; fi` - -tagschecking.o: pipelines/tagschecking.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tagschecking.o -MD -MP -MF $(DEPDIR)/tagschecking.Tpo -c -o tagschecking.o `test -f 'pipelines/tagschecking.c' || echo '$(srcdir)/'`pipelines/tagschecking.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tagschecking.Tpo $(DEPDIR)/tagschecking.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/tagschecking.c' object='tagschecking.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tagschecking.o `test -f 'pipelines/tagschecking.c' || echo '$(srcdir)/'`pipelines/tagschecking.c - -tagschecking.obj: pipelines/tagschecking.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tagschecking.obj -MD -MP -MF $(DEPDIR)/tagschecking.Tpo -c -o tagschecking.obj `if test -f 'pipelines/tagschecking.c'; then $(CYGPATH_W) 'pipelines/tagschecking.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/tagschecking.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tagschecking.Tpo $(DEPDIR)/tagschecking.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/tagschecking.c' object='tagschecking.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tagschecking.obj `if test -f 'pipelines/tagschecking.c'; then $(CYGPATH_W) 'pipelines/tagschecking.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/tagschecking.c'; fi` - -pipelines_wavenc-wavenc.o: pipelines/wavenc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavenc_CFLAGS) $(CFLAGS) -MT pipelines_wavenc-wavenc.o -MD -MP -MF $(DEPDIR)/pipelines_wavenc-wavenc.Tpo -c -o pipelines_wavenc-wavenc.o `test -f 'pipelines/wavenc.c' || echo '$(srcdir)/'`pipelines/wavenc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pipelines_wavenc-wavenc.Tpo $(DEPDIR)/pipelines_wavenc-wavenc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/wavenc.c' object='pipelines_wavenc-wavenc.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavenc_CFLAGS) $(CFLAGS) -c -o pipelines_wavenc-wavenc.o `test -f 'pipelines/wavenc.c' || echo '$(srcdir)/'`pipelines/wavenc.c - -pipelines_wavenc-wavenc.obj: pipelines/wavenc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavenc_CFLAGS) $(CFLAGS) -MT pipelines_wavenc-wavenc.obj -MD -MP -MF $(DEPDIR)/pipelines_wavenc-wavenc.Tpo -c -o pipelines_wavenc-wavenc.obj `if test -f 'pipelines/wavenc.c'; then $(CYGPATH_W) 'pipelines/wavenc.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/wavenc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pipelines_wavenc-wavenc.Tpo $(DEPDIR)/pipelines_wavenc-wavenc.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/wavenc.c' object='pipelines_wavenc-wavenc.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavenc_CFLAGS) $(CFLAGS) -c -o pipelines_wavenc-wavenc.obj `if test -f 'pipelines/wavenc.c'; then $(CYGPATH_W) 'pipelines/wavenc.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/wavenc.c'; fi` - -pipelines_wavpack-wavpack.o: pipelines/wavpack.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavpack_CFLAGS) $(CFLAGS) -MT pipelines_wavpack-wavpack.o -MD -MP -MF $(DEPDIR)/pipelines_wavpack-wavpack.Tpo -c -o pipelines_wavpack-wavpack.o `test -f 'pipelines/wavpack.c' || echo '$(srcdir)/'`pipelines/wavpack.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pipelines_wavpack-wavpack.Tpo $(DEPDIR)/pipelines_wavpack-wavpack.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/wavpack.c' object='pipelines_wavpack-wavpack.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavpack_CFLAGS) $(CFLAGS) -c -o pipelines_wavpack-wavpack.o `test -f 'pipelines/wavpack.c' || echo '$(srcdir)/'`pipelines/wavpack.c - -pipelines_wavpack-wavpack.obj: pipelines/wavpack.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavpack_CFLAGS) $(CFLAGS) -MT pipelines_wavpack-wavpack.obj -MD -MP -MF $(DEPDIR)/pipelines_wavpack-wavpack.Tpo -c -o pipelines_wavpack-wavpack.obj `if test -f 'pipelines/wavpack.c'; then $(CYGPATH_W) 'pipelines/wavpack.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/wavpack.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pipelines_wavpack-wavpack.Tpo $(DEPDIR)/pipelines_wavpack-wavpack.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/wavpack.c' object='pipelines_wavpack-wavpack.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavpack_CFLAGS) $(CFLAGS) -c -o pipelines_wavpack-wavpack.obj `if test -f 'pipelines/wavpack.c'; then $(CYGPATH_W) 'pipelines/wavpack.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/wavpack.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_wavpack_CFLAGS) $(CFLAGS) -c -o pipelines/pipelines_wavpack-wavpack.obj `if test -f 'pipelines/wavpack.c'; then $(CYGPATH_W) 'pipelines/wavpack.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/wavpack.c'; fi` mostlyclean-libtool: -rm -f *.lo @@ -2652,26 +2843,15 @@ clean-libtool: -rm -rf orc/.libs orc/_libs -rm -rf pipelines/.libs pipelines/_libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -2683,15 +2863,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -2700,102 +2876,726 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ else \ - skipped="($$skip tests were not run)"; \ + color_start= color_end=; \ fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +generic/states.log: generic/states$(EXEEXT) + @p='generic/states$(EXEEXT)'; \ + b='generic/states'; \ + $(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/aacparse.log: elements/aacparse$(EXEEXT) + @p='elements/aacparse$(EXEEXT)'; \ + b='elements/aacparse'; \ + $(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/ac3parse.log: elements/ac3parse$(EXEEXT) + @p='elements/ac3parse$(EXEEXT)'; \ + b='elements/ac3parse'; \ + $(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/amrparse.log: elements/amrparse$(EXEEXT) + @p='elements/amrparse$(EXEEXT)'; \ + b='elements/amrparse'; \ + $(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/alphacolor.log: elements/alphacolor$(EXEEXT) + @p='elements/alphacolor$(EXEEXT)'; \ + b='elements/alphacolor'; \ + $(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'; \ + $(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/audioamplify.log: elements/audioamplify$(EXEEXT) + @p='elements/audioamplify$(EXEEXT)'; \ + b='elements/audioamplify'; \ + $(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/audiochebband.log: elements/audiochebband$(EXEEXT) + @p='elements/audiochebband$(EXEEXT)'; \ + b='elements/audiochebband'; \ + $(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/audiocheblimit.log: elements/audiocheblimit$(EXEEXT) + @p='elements/audiocheblimit$(EXEEXT)'; \ + b='elements/audiocheblimit'; \ + $(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/audiodynamic.log: elements/audiodynamic$(EXEEXT) + @p='elements/audiodynamic$(EXEEXT)'; \ + b='elements/audiodynamic'; \ + $(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/audioecho.log: elements/audioecho$(EXEEXT) + @p='elements/audioecho$(EXEEXT)'; \ + b='elements/audioecho'; \ + $(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/audiofirfilter.log: elements/audiofirfilter$(EXEEXT) + @p='elements/audiofirfilter$(EXEEXT)'; \ + b='elements/audiofirfilter'; \ + $(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/audioiirfilter.log: elements/audioiirfilter$(EXEEXT) + @p='elements/audioiirfilter$(EXEEXT)'; \ + b='elements/audioiirfilter'; \ + $(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/audioinvert.log: elements/audioinvert$(EXEEXT) + @p='elements/audioinvert$(EXEEXT)'; \ + b='elements/audioinvert'; \ + $(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/audiopanorama.log: elements/audiopanorama$(EXEEXT) + @p='elements/audiopanorama$(EXEEXT)'; \ + b='elements/audiopanorama'; \ + $(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/audiowsincband.log: elements/audiowsincband$(EXEEXT) + @p='elements/audiowsincband$(EXEEXT)'; \ + b='elements/audiowsincband'; \ + $(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/audiowsinclimit.log: elements/audiowsinclimit$(EXEEXT) + @p='elements/audiowsinclimit$(EXEEXT)'; \ + b='elements/audiowsinclimit'; \ + $(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/autodetect.log: elements/autodetect$(EXEEXT) + @p='elements/autodetect$(EXEEXT)'; \ + b='elements/autodetect'; \ + $(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/avimux.log: elements/avimux$(EXEEXT) + @p='elements/avimux$(EXEEXT)'; \ + b='elements/avimux'; \ + $(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/avisubtitle.log: elements/avisubtitle$(EXEEXT) + @p='elements/avisubtitle$(EXEEXT)'; \ + b='elements/avisubtitle'; \ + $(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/capssetter.log: elements/capssetter$(EXEEXT) + @p='elements/capssetter$(EXEEXT)'; \ + b='elements/capssetter'; \ + $(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/deinterlace.log: elements/deinterlace$(EXEEXT) + @p='elements/deinterlace$(EXEEXT)'; \ + b='elements/deinterlace'; \ + $(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/deinterleave.log: elements/deinterleave$(EXEEXT) + @p='elements/deinterleave$(EXEEXT)'; \ + b='elements/deinterleave'; \ + $(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/dtmf.log: elements/dtmf$(EXEEXT) + @p='elements/dtmf$(EXEEXT)'; \ + b='elements/dtmf'; \ + $(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/equalizer.log: elements/equalizer$(EXEEXT) + @p='elements/equalizer$(EXEEXT)'; \ + b='elements/equalizer'; \ + $(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/flacparse.log: elements/flacparse$(EXEEXT) + @p='elements/flacparse$(EXEEXT)'; \ + b='elements/flacparse'; \ + $(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/flvdemux.log: elements/flvdemux$(EXEEXT) + @p='elements/flvdemux$(EXEEXT)'; \ + b='elements/flvdemux'; \ + $(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/flvmux.log: elements/flvmux$(EXEEXT) + @p='elements/flvmux$(EXEEXT)'; \ + b='elements/flvmux'; \ + $(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/icydemux.log: elements/icydemux$(EXEEXT) + @p='elements/icydemux$(EXEEXT)'; \ + b='elements/icydemux'; \ + $(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/id3demux.log: elements/id3demux$(EXEEXT) + @p='elements/id3demux$(EXEEXT)'; \ + b='elements/id3demux'; \ + $(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/imagefreeze.log: elements/imagefreeze$(EXEEXT) + @p='elements/imagefreeze$(EXEEXT)'; \ + b='elements/imagefreeze'; \ + $(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/interleave.log: elements/interleave$(EXEEXT) + @p='elements/interleave$(EXEEXT)'; \ + b='elements/interleave'; \ + $(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/level.log: elements/level$(EXEEXT) + @p='elements/level$(EXEEXT)'; \ + b='elements/level'; \ + $(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/matroskamux.log: elements/matroskamux$(EXEEXT) + @p='elements/matroskamux$(EXEEXT)'; \ + b='elements/matroskamux'; \ + $(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/matroskaparse.log: elements/matroskaparse$(EXEEXT) + @p='elements/matroskaparse$(EXEEXT)'; \ + b='elements/matroskaparse'; \ + $(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/mpegaudioparse.log: elements/mpegaudioparse$(EXEEXT) + @p='elements/mpegaudioparse$(EXEEXT)'; \ + b='elements/mpegaudioparse'; \ + $(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/mulawdec.log: elements/mulawdec$(EXEEXT) + @p='elements/mulawdec$(EXEEXT)'; \ + b='elements/mulawdec'; \ + $(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/mulawenc.log: elements/mulawenc$(EXEEXT) + @p='elements/mulawenc$(EXEEXT)'; \ + b='elements/mulawenc'; \ + $(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/multifile.log: elements/multifile$(EXEEXT) + @p='elements/multifile$(EXEEXT)'; \ + b='elements/multifile'; \ + $(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/qtmux.log: elements/qtmux$(EXEEXT) + @p='elements/qtmux$(EXEEXT)'; \ + b='elements/qtmux'; \ + $(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/rganalysis.log: elements/rganalysis$(EXEEXT) + @p='elements/rganalysis$(EXEEXT)'; \ + b='elements/rganalysis'; \ + $(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/rglimiter.log: elements/rglimiter$(EXEEXT) + @p='elements/rglimiter$(EXEEXT)'; \ + b='elements/rglimiter'; \ + $(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/rgvolume.log: elements/rgvolume$(EXEEXT) + @p='elements/rgvolume$(EXEEXT)'; \ + b='elements/rgvolume'; \ + $(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/rtp-payloading.log: elements/rtp-payloading$(EXEEXT) + @p='elements/rtp-payloading$(EXEEXT)'; \ + b='elements/rtp-payloading'; \ + $(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/rtpbin.log: elements/rtpbin$(EXEEXT) + @p='elements/rtpbin$(EXEEXT)'; \ + b='elements/rtpbin'; \ + $(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/rtpbin_buffer_list.log: elements/rtpbin_buffer_list$(EXEEXT) + @p='elements/rtpbin_buffer_list$(EXEEXT)'; \ + b='elements/rtpbin_buffer_list'; \ + $(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/rtpjitterbuffer.log: elements/rtpjitterbuffer$(EXEEXT) + @p='elements/rtpjitterbuffer$(EXEEXT)'; \ + b='elements/rtpjitterbuffer'; \ + $(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/rtpmux.log: elements/rtpmux$(EXEEXT) + @p='elements/rtpmux$(EXEEXT)'; \ + b='elements/rtpmux'; \ + $(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/shapewipe.log: elements/shapewipe$(EXEEXT) + @p='elements/shapewipe$(EXEEXT)'; \ + b='elements/shapewipe'; \ + $(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/spectrum.log: elements/spectrum$(EXEEXT) + @p='elements/spectrum$(EXEEXT)'; \ + b='elements/spectrum'; \ + $(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/udpsink.log: elements/udpsink$(EXEEXT) + @p='elements/udpsink$(EXEEXT)'; \ + b='elements/udpsink'; \ + $(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/udpsrc.log: elements/udpsrc$(EXEEXT) + @p='elements/udpsrc$(EXEEXT)'; \ + b='elements/udpsrc'; \ + $(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/videocrop.log: elements/videocrop$(EXEEXT) + @p='elements/videocrop$(EXEEXT)'; \ + b='elements/videocrop'; \ + $(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/videofilter.log: elements/videofilter$(EXEEXT) + @p='elements/videofilter$(EXEEXT)'; \ + b='elements/videofilter'; \ + $(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/wavpackparse.log: elements/wavpackparse$(EXEEXT) + @p='elements/wavpackparse$(EXEEXT)'; \ + b='elements/wavpackparse'; \ + $(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/wavparse.log: elements/wavparse$(EXEEXT) + @p='elements/wavparse$(EXEEXT)'; \ + b='elements/wavparse'; \ + $(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/y4menc.log: elements/y4menc$(EXEEXT) + @p='elements/y4menc$(EXEEXT)'; \ + b='elements/y4menc'; \ + $(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/videomixer.log: elements/videomixer$(EXEEXT) + @p='elements/videomixer$(EXEEXT)'; \ + b='elements/videomixer'; \ + $(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) +pipelines/simple-launch-lines.log: pipelines/simple-launch-lines$(EXEEXT) + @p='pipelines/simple-launch-lines$(EXEEXT)'; \ + b='pipelines/simple-launch-lines'; \ + $(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) +pipelines/effectv.log: pipelines/effectv$(EXEEXT) + @p='pipelines/effectv$(EXEEXT)'; \ + b='pipelines/effectv'; \ + $(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) +pipelines/tagschecking.log: pipelines/tagschecking$(EXEEXT) + @p='pipelines/tagschecking$(EXEEXT)'; \ + b='pipelines/tagschecking'; \ + $(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) +pipelines/wavenc.log: pipelines/wavenc$(EXEEXT) + @p='pipelines/wavenc$(EXEEXT)'; \ + b='pipelines/wavenc'; \ + $(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) +pipelines/flacdec.log: pipelines/flacdec$(EXEEXT) + @p='pipelines/flacdec$(EXEEXT)'; \ + b='pipelines/flacdec'; \ + $(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/gdkpixbufsink.log: elements/gdkpixbufsink$(EXEEXT) + @p='elements/gdkpixbufsink$(EXEEXT)'; \ + b='elements/gdkpixbufsink'; \ + $(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/jpegdec.log: elements/jpegdec$(EXEEXT) + @p='elements/jpegdec$(EXEEXT)'; \ + b='elements/jpegdec'; \ + $(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/jpegenc.log: elements/jpegenc$(EXEEXT) + @p='elements/jpegenc$(EXEEXT)'; \ + b='elements/jpegenc'; \ + $(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/souphttpsrc.log: elements/souphttpsrc$(EXEEXT) + @p='elements/souphttpsrc$(EXEEXT)'; \ + b='elements/souphttpsrc'; \ + $(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/sunaudio.log: elements/sunaudio$(EXEEXT) + @p='elements/sunaudio$(EXEEXT)'; \ + b='elements/sunaudio'; \ + $(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/id3v2mux.log: elements/id3v2mux$(EXEEXT) + @p='elements/id3v2mux$(EXEEXT)'; \ + b='elements/id3v2mux'; \ + $(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/apev2mux.log: elements/apev2mux$(EXEEXT) + @p='elements/apev2mux$(EXEEXT)'; \ + b='elements/apev2mux'; \ + $(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/vp8enc.log: elements/vp8enc$(EXEEXT) + @p='elements/vp8enc$(EXEEXT)'; \ + b='elements/vp8enc'; \ + $(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/vp8dec.log: elements/vp8dec$(EXEEXT) + @p='elements/vp8dec$(EXEEXT)'; \ + b='elements/vp8dec'; \ + $(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/wavpackdec.log: elements/wavpackdec$(EXEEXT) + @p='elements/wavpackdec$(EXEEXT)'; \ + b='elements/wavpackdec'; \ + $(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/wavpackenc.log: elements/wavpackenc$(EXEEXT) + @p='elements/wavpackenc$(EXEEXT)'; \ + b='elements/wavpackenc'; \ + $(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) +pipelines/wavpack.log: pipelines/wavpack$(EXEEXT) + @p='pipelines/wavpack$(EXEEXT)'; \ + b='pipelines/wavpack'; \ + $(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) +orc/deinterlace.log: orc/deinterlace$(EXEEXT) + @p='orc/deinterlace$(EXEEXT)'; \ + b='orc/deinterlace'; \ + $(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) +orc/videomixer.log: orc/videomixer$(EXEEXT) + @p='orc/videomixer$(EXEEXT)'; \ + b='orc/videomixer'; \ + $(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) +orc/videobox.log: orc/videobox$(EXEEXT) + @p='orc/videobox$(EXEEXT)'; \ + b='orc/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) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -2853,6 +3653,9 @@ install-strip: "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) @@ -2860,9 +3663,13 @@ clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f elements/$(DEPDIR)/$(am__dirstamp) -rm -f elements/$(am__dirstamp) + -rm -f generic/$(DEPDIR)/$(am__dirstamp) -rm -f generic/$(am__dirstamp) + -rm -f orc/$(DEPDIR)/$(am__dirstamp) -rm -f orc/$(am__dirstamp) + -rm -f pipelines/$(DEPDIR)/$(am__dirstamp) -rm -f pipelines/$(am__dirstamp) maintainer-clean-generic: @@ -2874,10 +3681,10 @@ clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ clean-noinstLTLIBRARIES mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -rf elements/$(DEPDIR) generic/$(DEPDIR) orc/$(DEPDIR) pipelines/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags + distclean-local distclean-tags dvi: dvi-am @@ -2920,7 +3727,7 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -rf elements/$(DEPDIR) generic/$(DEPDIR) orc/$(DEPDIR) pipelines/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -2941,19 +3748,20 @@ uninstall-am: .MAKE: check-am install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool clean-local \ - clean-noinstLTLIBRARIES ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-local distclean-tags distdir dvi dvi-am html html-am \ + info info-am install install-am install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ + uninstall uninstall-am # keep target around, since it's referenced in the modules' Makefiles @@ -2966,6 +3774,8 @@ clean-local-check: @HAVE_VALGRIND_FALSE@check-valgrind: @HAVE_VALGRIND_FALSE@ @true +LOOPS ?= 10 + # run any given test by running make test.check # if the test fails, run it again at at least debug level 2 %.check: % @@ -3027,6 +3837,17 @@ clean-local-check: --gen-suppressions=all \ ./$* 2>&1 | tee suppressions.log +# valgrind torture any given test +%.valgrind-torture: % + @for i in `seq 1 $(LOOPS)`; do \ + $(MAKE) $*.valgrind || \ + (echo "Failure after $$i runs"; exit 1) || \ + exit 1; \ + done + @banner="All $(LOOPS) loops passed"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo $$dashes; echo $$banner; echo $$dashes + # valgrind any given test until failure by running make test.valgrind-forever %.valgrind-forever: % @while $(MAKE) $*.valgrind; do \ @@ -3039,9 +3860,31 @@ clean-local-check: $(LIBTOOL) --mode=execute \ gdb $* +%.lcov-reset: + $(MAKE) $*.lcov-run + $(MAKE) $*.lcov-report + +%.lcov: % + $(MAKE) $*.lcov-reset + +@GST_GCOV_ENABLED_TRUE@%.lcov-clean: +@GST_GCOV_ENABLED_TRUE@ $(MAKE) -C $(top_builddir) lcov-clean + +@GST_GCOV_ENABLED_TRUE@%.lcov-run: +@GST_GCOV_ENABLED_TRUE@ $(MAKE) $*.lcov-clean +@GST_GCOV_ENABLED_TRUE@ $(MAKE) $*.check + +@GST_GCOV_ENABLED_TRUE@%.lcov-report: +@GST_GCOV_ENABLED_TRUE@ $(MAKE) -C $(top_builddir) lcov-report +@GST_GCOV_ENABLED_FALSE@%.lcov-run: +@GST_GCOV_ENABLED_FALSE@ echo "Need to reconfigure with --enable-gcov" + +@GST_GCOV_ENABLED_FALSE@%.lcov-report: +@GST_GCOV_ENABLED_FALSE@ echo "Need to reconfigure with --enable-gcov" + # torture tests torture: $(TESTS) - -rm test-registry.xml + -rm test-registry.* @echo "Torturing tests ..." @for i in `seq 1 $(LOOPS)`; do \ $(MAKE) check || \ @@ -3054,7 +3897,7 @@ torture: $(TESTS) # forever tests forever: $(TESTS) - -rm test-registry.xml + -rm test-registry.* @echo "Forever tests ..." @while true; do \ $(MAKE) check || \ @@ -3080,6 +3923,29 @@ valgrind: $(TESTS) false; \ fi +# valgrind all tests until failure +valgrind-forever: $(TESTS) + -rm test-registry.* + @echo "Forever valgrinding tests ..." + @while true; do \ + $(MAKE) valgrind || \ + (echo "Failure"; exit 1) || \ + exit 1; \ + done + +# valgrind torture all tests +valgrind-torture: $(TESTS) + -rm test-registry.* + @echo "Torturing and valgrinding tests ..." + @for i in `seq 1 $(LOOPS)`; do \ + $(MAKE) valgrind || \ + (echo "Failure after $$i runs"; exit 1) || \ + exit 1; \ + done + @banner="All $(LOOPS) loops passed"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo $$dashes; echo $$banner; echo $$dashes + # valgrind all tests and generate suppressions valgrind.gen-suppressions: $(TESTS) @echo "Valgrinding tests ..." @@ -3116,10 +3982,13 @@ help: @echo "make (dir)/(test).gdb -- start up gdb for the given test" @echo @echo "make valgrind -- valgrind all tests" + @echo "make valgrind-forever -- valgrind all tests forever" + @echo "make valgrind-torture -- valgrind all tests $(LOOPS) times" @echo "make valgrind.gen-suppressions -- generate suppressions for all tests" @echo " and save to suppressions.log" @echo "make (dir)/(test).valgrind -- valgrind the given test" @echo "make (dir)/(test).valgrind-forever -- valgrind the given test forever" + @echo "make (dir)/(test).valgrind-torture -- valgrind the given test $(LOOPS) times" @echo "make (dir)/(test).valgrind.gen-suppressions -- generate suppressions" @echo " and save to suppressions.log" @echo "make inspect -- inspect all plugin features" @@ -3136,13 +4005,14 @@ help: @echo " GST_CHECKS=test_many_threads make element/foobar.forever" @echo -clean-local: clean-local-check clean-local-orc +clean-local: clean-local-check +distclean-local: distclean-local-orc orc/deinterlace.c: $(top_srcdir)/gst/deinterlace/tvtime.orc $(MKDIR_P) orc/ $(ORCC) --test -o $@ $< -orc/videomixer.c: $(top_srcdir)/gst/videomixer/blendorc.orc +orc/videomixer.c: $(top_srcdir)/gst/videomixer/videomixerorc.orc $(MKDIR_P) orc/ $(ORCC) --test -o $@ $< @@ -3150,7 +4020,7 @@ orc/videobox.c: $(top_srcdir)/gst/videobox/gstvideoboxorc.orc $(MKDIR_P) orc/ $(ORCC) --test -o $@ $< -clean-local-orc: +distclean-local-orc: rm -rf orc # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/check/elements/aacparse.c b/tests/check/elements/aacparse.c index 1b72479deab01fcb8e8e0eaf10c747b7d269da7b..b6112971a5596c04ccb3d7763c1cd933910baec1 100644 --- a/tests/check/elements/aacparse.c +++ b/tests/check/elements/aacparse.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/ac3parse.c b/tests/check/elements/ac3parse.c index eb25004971356fd90255f53ed2fcdba1950aa4c5..7877cd08facc1d0c4a327f077dca4e4b7ab26ff3 100644 --- a/tests/check/elements/ac3parse.c +++ b/tests/check/elements/ac3parse.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/alphacolor.c b/tests/check/elements/alphacolor.c index ff2cc93ab8a8bb21f267c27338e1dfe09d073736..15496d81bbe94da6640f2509f48f601d30daa502 100644 --- a/tests/check/elements/alphacolor.c +++ b/tests/check/elements/alphacolor.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -95,13 +95,6 @@ create_caps_rgba32 (void) return caps; } -static void -push_caps (GstCaps * caps) -{ - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); -} - static GstBuffer * create_buffer_rgb24_3x4 (void) { @@ -167,7 +160,7 @@ GST_START_TEST (test_rgb24) fail_unless_equals_int (gst_element_set_state (alphacolor, GST_STATE_PLAYING), GST_STATE_CHANGE_SUCCESS); - push_caps (create_caps_rgb24 ()); + gst_check_setup_events (mysrcpad, alphacolor, incaps, GST_FORMAT_TIME); inbuffer = create_buffer_rgb24_3x4 (); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -218,10 +211,11 @@ GST_START_TEST (test_rgba32) fail_unless_equals_int (gst_element_set_state (alphacolor, GST_STATE_PLAYING), GST_STATE_CHANGE_SUCCESS); - push_caps (create_caps_rgba32 ()); + gst_check_setup_events (mysrcpad, alphacolor, incaps, GST_FORMAT_TIME); inbuffer = create_buffer_rgba32_3x4 (); - GST_DEBUG ("Created buffer of %d bytes", gst_buffer_get_size (inbuffer)); + GST_DEBUG ("Created buffer of %" G_GSIZE_FORMAT " bytes", + gst_buffer_get_size (inbuffer)); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); /* pushing gives away reference */ diff --git a/tests/check/elements/amrparse.c b/tests/check/elements/amrparse.c index e5d64ca57c3c7061e5a5f5b2950b075224fdfdc3..ee5b4551649728ce1a8dd8ec115b65bb7e393a91 100644 --- a/tests/check/elements/amrparse.c +++ b/tests/check/elements/amrparse.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/apev2mux.c b/tests/check/elements/apev2mux.c index 8fecc664bff74ff51ca6e58731831e6525411083..88f9e3ecb03f1b81c47a5ea1651d655574675dd5 100644 --- a/tests/check/elements/apev2mux.c +++ b/tests/check/elements/apev2mux.c @@ -17,8 +17,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -209,7 +209,7 @@ got_buffer (GstElement * fakesink, GstBuffer * buf, GstPad * pad, gst_buffer_map (buf, &map, GST_MAP_READ); - GST_LOG ("got buffer, size=%u, offset=%" G_GINT64_FORMAT, map.size, off); + GST_LOG ("size=%" G_GSIZE_FORMAT ", offset=%" G_GINT64_FORMAT, map.size, off); fail_unless (GST_BUFFER_OFFSET_IS_VALID (buf)); diff --git a/tests/check/elements/aspectratiocrop.c b/tests/check/elements/aspectratiocrop.c index f02c6f9ba1c9979950a498621444fe574a9706c7..1728afd6e9e388673ec6e7010bcba0cba65bb516 100644 --- a/tests/check/elements/aspectratiocrop.c +++ b/tests/check/elements/aspectratiocrop.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -69,8 +69,7 @@ check_aspectratiocrop (const gchar * in_string, const gchar * out_string, src_pad = gst_pad_new (NULL, GST_PAD_SRC); gst_pad_set_active (src_pad, TRUE); GST_DEBUG ("setting caps %s %" GST_PTR_FORMAT, in_string, incaps); - fail_unless (gst_pad_set_caps (src_pad, incaps), - "Couldn't set input caps %" GST_PTR_FORMAT, incaps); + gst_check_setup_events (src_pad, element, incaps, GST_FORMAT_TIME); pad_peer = gst_element_get_static_pad (element, "sink"); fail_if (pad_peer == NULL); diff --git a/tests/check/elements/audioamplify.c b/tests/check/elements/audioamplify.c index ed3e15e086c98c207f7a11a8fd0d6fbab501489c..bebb004508ddfe7ff23d9120f17512f40a1c5091 100644 --- a/tests/check/elements/audioamplify.c +++ b/tests/check/elements/audioamplify.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -106,7 +106,7 @@ GST_START_TEST (test_passthrough) "could not set to playing"); caps = gst_caps_from_string (AMPLIFY_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, amplify, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = @@ -150,7 +150,7 @@ GST_START_TEST (test_zero) "could not set to playing"); caps = gst_caps_from_string (AMPLIFY_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, amplify, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = @@ -194,7 +194,7 @@ GST_START_TEST (test_050_clip) "could not set to playing"); caps = gst_caps_from_string (AMPLIFY_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, amplify, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = @@ -238,7 +238,7 @@ GST_START_TEST (test_200_clip) "could not set to playing"); caps = gst_caps_from_string (AMPLIFY_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, amplify, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = @@ -283,7 +283,7 @@ GST_START_TEST (test_050_wrap_negative) "could not set to playing"); caps = gst_caps_from_string (AMPLIFY_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, amplify, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = @@ -328,7 +328,7 @@ GST_START_TEST (test_200_wrap_negative) "could not set to playing"); caps = gst_caps_from_string (AMPLIFY_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, amplify, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = @@ -373,7 +373,7 @@ GST_START_TEST (test_050_wrap_positive) "could not set to playing"); caps = gst_caps_from_string (AMPLIFY_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, amplify, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = @@ -418,7 +418,7 @@ GST_START_TEST (test_200_wrap_positive) "could not set to playing"); caps = gst_caps_from_string (AMPLIFY_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, amplify, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = diff --git a/tests/check/elements/audiochebband.c b/tests/check/elements/audiochebband.c index 5f6148514c96cde184f196ece65a90b1bb41ee4e..70218223aa91e0e6b1b8477a9333cd16285ffeec 100644 --- a/tests/check/elements/audiochebband.c +++ b/tests/check/elements/audiochebband.c @@ -131,7 +131,7 @@ GST_START_TEST (test_type1_32_bp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -197,7 +197,7 @@ GST_START_TEST (test_type1_32_bp_11025hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -261,7 +261,7 @@ GST_START_TEST (test_type1_32_bp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -323,7 +323,7 @@ GST_START_TEST (test_type1_32_br_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -389,7 +389,7 @@ GST_START_TEST (test_type1_32_br_11025hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -453,7 +453,7 @@ GST_START_TEST (test_type1_32_br_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -515,7 +515,7 @@ GST_START_TEST (test_type1_64_bp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -581,7 +581,7 @@ GST_START_TEST (test_type1_64_bp_11025hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -645,7 +645,7 @@ GST_START_TEST (test_type1_64_bp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -707,7 +707,7 @@ GST_START_TEST (test_type1_64_br_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -773,7 +773,7 @@ GST_START_TEST (test_type1_64_br_11025hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -837,7 +837,7 @@ GST_START_TEST (test_type1_64_br_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -899,7 +899,7 @@ GST_START_TEST (test_type2_32_bp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -965,7 +965,7 @@ GST_START_TEST (test_type2_32_bp_11025hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1029,7 +1029,7 @@ GST_START_TEST (test_type2_32_bp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1091,7 +1091,7 @@ GST_START_TEST (test_type2_32_br_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1157,7 +1157,7 @@ GST_START_TEST (test_type2_32_br_11025hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1221,7 +1221,7 @@ GST_START_TEST (test_type2_32_br_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1283,7 +1283,7 @@ GST_START_TEST (test_type2_64_bp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1349,7 +1349,7 @@ GST_START_TEST (test_type2_64_bp_11025hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1413,7 +1413,7 @@ GST_START_TEST (test_type2_64_bp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1475,7 +1475,7 @@ GST_START_TEST (test_type2_64_br_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1541,7 +1541,7 @@ GST_START_TEST (test_type2_64_br_11025hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1605,7 +1605,7 @@ GST_START_TEST (test_type2_64_br_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); diff --git a/tests/check/elements/audiocheblimit.c b/tests/check/elements/audiocheblimit.c index 0a137f46c6e42933b5d3d3fb9f528847e7222c0d..c155b202fc4168b208f5e3007ce2646e8396f485 100644 --- a/tests/check/elements/audiocheblimit.c +++ b/tests/check/elements/audiocheblimit.c @@ -128,7 +128,7 @@ GST_START_TEST (test_type1_32_lp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -189,7 +189,7 @@ GST_START_TEST (test_type1_32_lp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -248,7 +248,7 @@ GST_START_TEST (test_type1_32_hp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -309,7 +309,7 @@ GST_START_TEST (test_type1_32_hp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -368,7 +368,7 @@ GST_START_TEST (test_type1_64_lp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -429,7 +429,7 @@ GST_START_TEST (test_type1_64_lp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -488,7 +488,7 @@ GST_START_TEST (test_type1_64_hp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -549,7 +549,7 @@ GST_START_TEST (test_type1_64_hp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -608,7 +608,7 @@ GST_START_TEST (test_type2_32_lp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -669,7 +669,7 @@ GST_START_TEST (test_type2_32_lp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -728,7 +728,7 @@ GST_START_TEST (test_type2_32_hp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -789,7 +789,7 @@ GST_START_TEST (test_type2_32_hp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -848,7 +848,7 @@ GST_START_TEST (test_type2_64_lp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -909,7 +909,7 @@ GST_START_TEST (test_type2_64_lp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -968,7 +968,7 @@ GST_START_TEST (test_type2_64_hp_0hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -1029,7 +1029,7 @@ GST_START_TEST (test_type2_64_hp_22050hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (BUFFER_CAPS_STRING_64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, audiocheblimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); diff --git a/tests/check/elements/audiodynamic.c b/tests/check/elements/audiodynamic.c index 63602b05a6e22dd1bc51363b651d0c537f7471cf..779f8e94715dc194b0875deeaa94a3ca1ebd625e 100644 --- a/tests/check/elements/audiodynamic.c +++ b/tests/check/elements/audiodynamic.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -110,7 +110,7 @@ GST_START_TEST (test_passthrough) NULL, NULL); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 12) == 0); caps = gst_caps_from_string (DYNAMIC_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, dynamic, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -154,7 +154,7 @@ GST_START_TEST (test_compress_hard_50_50) gst_buffer_fill (inbuffer, 0, in, 16); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 16) == 0); caps = gst_caps_from_string (DYNAMIC_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, dynamic, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -202,7 +202,7 @@ GST_START_TEST (test_compress_soft_50_50) gst_buffer_fill (inbuffer, 0, in, 16); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 16) == 0); caps = gst_caps_from_string (DYNAMIC_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, dynamic, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -250,7 +250,7 @@ GST_START_TEST (test_compress_hard_100_50) gst_buffer_fill (inbuffer, 0, in, 16); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 16) == 0); caps = gst_caps_from_string (DYNAMIC_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, dynamic, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -299,7 +299,7 @@ GST_START_TEST (test_expand_hard_50_200) gst_buffer_fill (inbuffer, 0, in, 16); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 16) == 0); caps = gst_caps_from_string (DYNAMIC_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, dynamic, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -347,7 +347,7 @@ GST_START_TEST (test_expand_soft_50_200) gst_buffer_fill (inbuffer, 0, in, 16); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 16) == 0); caps = gst_caps_from_string (DYNAMIC_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, dynamic, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -395,7 +395,7 @@ GST_START_TEST (test_expand_hard_0_200) gst_buffer_fill (inbuffer, 0, in, 16); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 16) == 0); caps = gst_caps_from_string (DYNAMIC_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, dynamic, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); diff --git a/tests/check/elements/audioecho.c b/tests/check/elements/audioecho.c index 3c39a9910dfa0ab8f7a143c519ce3a0be6e033f9..025b710c09446c3a5526a18a8569ad8005f91ecb 100644 --- a/tests/check/elements/audioecho.c +++ b/tests/check/elements/audioecho.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -100,7 +100,7 @@ GST_START_TEST (test_passthrough) "could not set to playing"); caps = gst_caps_from_string (ECHO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, echo, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = @@ -146,7 +146,7 @@ GST_START_TEST (test_echo) "could not set to playing"); caps = gst_caps_from_string (ECHO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, echo, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = @@ -193,7 +193,7 @@ GST_START_TEST (test_feedback) "could not set to playing"); caps = gst_caps_from_string (ECHO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, echo, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = diff --git a/tests/check/elements/audioinvert.c b/tests/check/elements/audioinvert.c index 9d80baad7f0a27a6c8d340bd92920438c323cf2d..50981d7af250e516751c5d570a19d759a7f129d2 100644 --- a/tests/check/elements/audioinvert.c +++ b/tests/check/elements/audioinvert.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -110,7 +110,7 @@ GST_START_TEST (test_passthrough) gst_buffer_fill (inbuffer, 0, in, 8); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 8) == 0); caps = gst_caps_from_string (INVERT_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, invert, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -154,7 +154,7 @@ GST_START_TEST (test_zero) gst_buffer_fill (inbuffer, 0, in, 8); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 8) == 0); caps = gst_caps_from_string (INVERT_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, invert, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -198,7 +198,7 @@ GST_START_TEST (test_full_inverse) gst_buffer_fill (inbuffer, 0, in, 8); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 8) == 0); caps = gst_caps_from_string (INVERT_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, invert, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -242,7 +242,7 @@ GST_START_TEST (test_25_inverse) gst_buffer_fill (inbuffer, 0, in, 8); fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 8) == 0); caps = gst_caps_from_string (INVERT_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, invert, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); diff --git a/tests/check/elements/audiopanorama.c b/tests/check/elements/audiopanorama.c index 7f80ce8bb45633aa6fd8af78768ad2b02f670bdd..3857119b058504a4a12da3adcdf8c4820f96f4d6 100644 --- a/tests/check/elements/audiopanorama.c +++ b/tests/check/elements/audiopanorama.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -34,14 +34,14 @@ gboolean have_eos = FALSE; GstPad *mysrcpad, *mysinkpad; -#define PANORAMA_MONO_CAPS_STRING \ +#define PANORAMA_S16_MONO_CAPS_STRING \ "audio/x-raw, " \ "channels = (int) 1, " \ "rate = (int) 44100, " \ "layout = (string) interleaved, " \ "format = (string) " GST_AUDIO_NE(S16) -#define PANORAMA_STEREO_CAPS_STRING \ +#define PANORAMA_S16_STEREO_CAPS_STRING \ "audio/x-raw, " \ "channels = (int) 2, " \ "channel-mask = (bitmask) 3, " \ @@ -49,6 +49,21 @@ GstPad *mysrcpad, *mysinkpad; "layout = (string) interleaved, " \ "format = (string) " GST_AUDIO_NE(S16) +#define PANORAMA_F32_MONO_CAPS_STRING \ + "audio/x-raw, " \ + "channels = (int) 1, " \ + "rate = (int) 44100, " \ + "layout = (string) interleaved, " \ + "format = (string) " GST_AUDIO_NE(F32) + +#define PANORAMA_F32_STEREO_CAPS_STRING \ + "audio/x-raw, " \ + "channels = (int) 2, " \ + "channel-mask = (bitmask) 3, " \ + "rate = (int) 44100, " \ + "layout = (string) interleaved, " \ + "format = (string) " GST_AUDIO_NE(F32) + #define PANORAMA_WRONG_CAPS_STRING \ "audio/x-raw, " \ "channels = (int) 5, " \ @@ -57,60 +72,134 @@ GstPad *mysrcpad, *mysinkpad; "format = (string) " GST_AUDIO_NE(U16) -static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-raw, " - "channels = (int) 2, " - "rate = (int) [ 1, MAX ], " - "layout = (string) interleaved, " - "format = (string) " GST_AUDIO_NE (S16)) - ); -static GstStaticPadTemplate msrctemplate = GST_STATIC_PAD_TEMPLATE ("src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-raw, " - "channels = (int) 1, " - "rate = (int) [ 1, MAX ], " - "layout = (string) interleaved, " - "format = (string) " GST_AUDIO_NE (S16)) - ); -static GstStaticPadTemplate ssrctemplate = GST_STATIC_PAD_TEMPLATE ("src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-raw, " - "channels = (int) 2, " - "rate = (int) [ 1, MAX ], " - "layout = (string) interleaved, " - "format = (string) " GST_AUDIO_NE (S16)) - ); +static GstStaticPadTemplate sinktemplate[2] = { + GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "channels = (int) 2, " + "rate = (int) [ 1, MAX ], " + "layout = (string) interleaved, " + "format = (string) " GST_AUDIO_NE (S16)) + ), + GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "channels = (int) 2, " + "rate = (int) [ 1, MAX ], " + "layout = (string) interleaved, " + "format = (string) " GST_AUDIO_NE (F32)) + ), +}; + +static GstStaticPadTemplate msrctemplate[2] = { + GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "channels = (int) 1, " + "rate = (int) [ 1, MAX ], " + "layout = (string) interleaved, " + "format = (string) " GST_AUDIO_NE (S16)) + ), + GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "channels = (int) 1, " + "rate = (int) [ 1, MAX ], " + "layout = (string) interleaved, " + "format = (string) " GST_AUDIO_NE (F32)) + ), +}; + +static GstStaticPadTemplate ssrctemplate[2] = { + GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "channels = (int) 2, " + "rate = (int) [ 1, MAX ], " + "layout = (string) interleaved, " + "format = (string) " GST_AUDIO_NE (S16)) + ), + GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "channels = (int) 2, " + "rate = (int) [ 1, MAX ], " + "layout = (string) interleaved, " + "format = (string) " GST_AUDIO_NE (F32)) + ), +}; static GstElement * -setup_panorama_m (void) +setup_panorama (GstStaticPadTemplate * srctemplate, gint fmt, + const gchar * caps_str) { GstElement *panorama; GST_DEBUG ("setup_panorama"); panorama = gst_check_setup_element ("audiopanorama"); - mysrcpad = gst_check_setup_src_pad (panorama, &msrctemplate); - mysinkpad = gst_check_setup_sink_pad (panorama, &sinktemplate); + mysrcpad = gst_check_setup_src_pad (panorama, &srctemplate[fmt]); + mysinkpad = gst_check_setup_sink_pad (panorama, &sinktemplate[fmt]); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); + if (caps_str) { + GstCaps *caps = gst_caps_from_string (caps_str); + gst_check_setup_events (mysrcpad, panorama, caps, GST_FORMAT_TIME); + gst_caps_unref (caps); + } return panorama; } static GstElement * -setup_panorama_s (void) +setup_panorama_s16_m (gint method, gfloat pan) { GstElement *panorama; + panorama = setup_panorama (msrctemplate, 0, PANORAMA_S16_MONO_CAPS_STRING); + g_object_set (G_OBJECT (panorama), "method", method, "panorama", pan, NULL); + gst_element_set_state (panorama, GST_STATE_PLAYING); + GST_DEBUG ("panorama(mono) ready"); - GST_DEBUG ("setup_panorama"); - panorama = gst_check_setup_element ("audiopanorama"); - mysrcpad = gst_check_setup_src_pad (panorama, &ssrctemplate); - mysinkpad = gst_check_setup_sink_pad (panorama, &sinktemplate); - gst_pad_set_active (mysrcpad, TRUE); - gst_pad_set_active (mysinkpad, TRUE); + return panorama; +} + +static GstElement * +setup_panorama_f32_m (gint method, gfloat pan) +{ + GstElement *panorama; + panorama = setup_panorama (msrctemplate, 1, PANORAMA_F32_MONO_CAPS_STRING); + g_object_set (G_OBJECT (panorama), "method", method, "panorama", pan, NULL); + gst_element_set_state (panorama, GST_STATE_PLAYING); + GST_DEBUG ("panorama(mono) ready"); + + return panorama; +} + +static GstElement * +setup_panorama_s16_s (gint method, gfloat pan) +{ + GstElement *panorama; + panorama = setup_panorama (ssrctemplate, 0, PANORAMA_S16_STEREO_CAPS_STRING); + g_object_set (G_OBJECT (panorama), "method", method, "panorama", pan, NULL); + gst_element_set_state (panorama, GST_STATE_PLAYING); + GST_DEBUG ("panorama(stereo) ready"); + + return panorama; +} + +static GstElement * +setup_panorama_f32_s (gint method, gfloat pan) +{ + GstElement *panorama; + panorama = setup_panorama (ssrctemplate, 1, PANORAMA_F32_STEREO_CAPS_STRING); + g_object_set (G_OBJECT (panorama), "method", method, "panorama", pan, NULL); + gst_element_set_state (panorama, GST_STATE_PLAYING); + GST_DEBUG ("panorama(stereo) ready"); return panorama; } @@ -118,7 +207,8 @@ setup_panorama_s (void) static void cleanup_panorama (GstElement * panorama) { - GST_DEBUG ("cleanup_panorama"); + GST_DEBUG ("cleaning up"); + gst_element_set_state (panorama, GST_STATE_NULL); g_list_foreach (buffers, (GFunc) gst_mini_object_unref, NULL); g_list_free (buffers); @@ -131,27 +221,39 @@ cleanup_panorama (GstElement * panorama) gst_check_teardown_element (panorama); } -GST_START_TEST (test_mono_middle) +static GstBuffer * +setup_buffer (gpointer data, gsize size) +{ + return gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, data, size, 0, + size, NULL, NULL); +} + +static void +do_panorama (gpointer in_data, gsize in_size, gpointer out_data, gsize out_size) +{ + GstBuffer *in, *out; + + in = setup_buffer (in_data, in_size); + fail_unless (gst_pad_push (mysrcpad, in) == GST_FLOW_OK); + fail_unless_equals_int (g_list_length (buffers), 1); + fail_if ((out = (GstBuffer *) buffers->data) == NULL); + fail_unless (gst_buffer_extract (out, 0, out_data, out_size) == out_size); +} + +/* the tests */ + +GST_START_TEST (test_ref_counts) { GstElement *panorama; GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; gint16 in[2] = { 16384, -256 }; - gint16 out[4] = { 8192, 8192, -128, -128 }; - gint16 res[4]; - panorama = setup_panorama_m (); + panorama = setup_panorama (msrctemplate, 0, PANORAMA_S16_MONO_CAPS_STRING); fail_unless (gst_element_set_state (panorama, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); - caps = gst_caps_from_string (PANORAMA_MONO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); - - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); + inbuffer = setup_buffer (in, sizeof (in)); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); /* pushing gives away my reference ... */ @@ -159,517 +261,515 @@ GST_START_TEST (test_mono_middle) /* ... but it ends up being collected on the global buffer list */ fail_unless_equals_int (g_list_length (buffers), 1); fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); - - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - out[0], out[1], out[2], out[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, out, 8) == 0); + fail_if (inbuffer == outbuffer); /* cleanup */ + fail_unless (gst_element_set_state (panorama, + GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS, "could not set to null"); + ASSERT_OBJECT_REFCOUNT (panorama, "panorama", 1); cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_mono_left) +GST_START_TEST (test_wrong_caps) { GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; + GstBuffer *inbuffer; gint16 in[2] = { 16384, -256 }; - gint16 out[4] = { 16384, 0, -256, 0 }; - gint16 res[4]; + GstBus *bus; + GstMessage *message; + GstCaps *caps; - panorama = setup_panorama_m (); - g_object_set (G_OBJECT (panorama), "panorama", -1.0, NULL); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); + panorama = setup_panorama (msrctemplate, 0, NULL); + bus = gst_bus_new (); + gst_element_set_state (panorama, GST_STATE_PLAYING); + + inbuffer = setup_buffer (in, sizeof (in)); + gst_buffer_ref (inbuffer); - caps = gst_caps_from_string (PANORAMA_MONO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + /* set a bus here so we avoid getting state change messages */ + gst_element_set_bus (panorama, bus); + + caps = gst_caps_from_string (PANORAMA_WRONG_CAPS_STRING); + /* this actually succeeds, because the caps event is sticky */ + gst_check_setup_events (mysrcpad, panorama, caps, GST_FORMAT_TIME); gst_caps_unref (caps); - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 4) == 0); + /* pushing gives an error because it can't negotiate with wrong caps */ + fail_unless_equals_int (gst_pad_push (mysrcpad, inbuffer), + GST_FLOW_NOT_NEGOTIATED); + /* ... and the buffer would have been lost if we didn't ref it ourselves */ ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + gst_buffer_unref (inbuffer); + fail_unless_equals_int (g_list_length (buffers), 0); - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... and puts a new buffer on the global list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); - - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - out[0], out[1], out[2], out[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, out, 8) == 0); + /* panorama_set_caps should not have been called since basetransform caught + * the negotiation problem */ + fail_if ((message = gst_bus_pop (bus)) != NULL); /* cleanup */ + gst_element_set_bus (panorama, NULL); + gst_object_unref (GST_OBJECT (bus)); + gst_element_set_state (panorama, GST_STATE_NULL); cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_mono_right) +/* processing for method=psy */ + +GST_START_TEST (test_s16_mono_middle) { - GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; gint16 in[2] = { 16384, -256 }; - gint16 out[4] = { 0, 16384, 0, -256 }; + gint16 out[4] = { 8192, 8192, -128, -128 }; gint16 res[4]; + GstElement *panorama = setup_panorama_s16_m (0, 0.0); - panorama = setup_panorama_m (); - g_object_set (G_OBJECT (panorama), "panorama", 1.0, NULL); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); + do_panorama (in, sizeof (in), res, sizeof (res)); - caps = gst_caps_from_string (PANORAMA_MONO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); + GST_INFO ("exp. %+5d %+5d %+5d %+5d", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, out, sizeof (res)) == 0); - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 4) == 0); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + cleanup_panorama (panorama); +} - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... and puts a new buffer on the global list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); +GST_END_TEST; + +GST_START_TEST (test_s16_mono_left) +{ + gint16 in[2] = { 16384, -256 }; + gint16 out[4] = { 16384, 0, -256, 0 }; + gint16 res[4]; + GstElement *panorama = setup_panorama_s16_m (0, -1.0); - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - out[0], out[1], out[2], out[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, out, 8) == 0); + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+5d %+5d %+5d %+5d", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, out, sizeof (res)) == 0); - /* cleanup */ cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_stereo_middle) +GST_START_TEST (test_s16_mono_right) { - GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; - gint16 in[4] = { 16384, -256, 8192, 128 }; + gint16 in[2] = { 16384, -256 }; + gint16 out[4] = { 0, 16384, 0, -256 }; gint16 res[4]; + GstElement *panorama = setup_panorama_s16_m (0, 1.0); - panorama = setup_panorama_s (); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); + do_panorama (in, sizeof (in), res, sizeof (res)); - caps = gst_caps_from_string (PANORAMA_STEREO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); + GST_INFO ("exp. %+5d %+5d %+5d %+5d", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, out, sizeof (res)) == 0); - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + cleanup_panorama (panorama); +} - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... but it ends up being collected on the global buffer list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); +GST_END_TEST; + +GST_START_TEST (test_s16_stereo_middle) +{ + gint16 in[4] = { 16384, -256, 8192, 128 }; + gint16 res[4]; + GstElement *panorama = setup_panorama_s16_s (0, 0.0); - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - in[0], in[1], in[2], in[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, in, 8) == 0); + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+5d %+5d %+5d %+5d", in[0], in[1], in[2], in[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, in, sizeof (res)) == 0); - /* cleanup */ cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_stereo_left) +GST_START_TEST (test_s16_stereo_left) { - GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; gint16 in[4] = { 16384, -256, 8192, 128 }; gint16 out[4] = { 16384 - 256, 0, 8192 + 128, 0 }; gint16 res[4]; + GstElement *panorama = setup_panorama_s16_s (0, -1.0); - panorama = setup_panorama_s (); - g_object_set (G_OBJECT (panorama), "panorama", -1.0, NULL); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - caps = gst_caps_from_string (PANORAMA_STEREO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); - - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 8) == 0); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... and puts a new buffer on the global list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); + do_panorama (in, sizeof (in), res, sizeof (res)); - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - out[0], out[1], out[2], out[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, out, 8) == 0); + GST_INFO ("exp. %+5d %+5d %+5d %+5d", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, out, sizeof (res)) == 0); - /* cleanup */ cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_stereo_right) +GST_START_TEST (test_s16_stereo_right) { - GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; gint16 in[4] = { 16384, -256, 8192, 128 }; gint16 out[4] = { 0, -256 + 16384, 0, 128 + 8192 }; gint16 res[4]; + GstElement *panorama = setup_panorama_s16_s (0, 1.0); - panorama = setup_panorama_s (); - g_object_set (G_OBJECT (panorama), "panorama", 1.0, NULL); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); + do_panorama (in, sizeof (in), res, sizeof (res)); - caps = gst_caps_from_string (PANORAMA_STEREO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); + GST_INFO ("exp. %+5d %+5d %+5d %+5d", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, out, sizeof (res)) == 0); - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 8) == 0); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + cleanup_panorama (panorama); +} - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... and puts a new buffer on the global list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); +GST_END_TEST; - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8)); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - out[0], out[1], out[2], out[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, out, 8) == 0); +GST_START_TEST (test_f32_mono_middle) +{ + gfloat in[2] = { 0.5, -0.2 }; + gfloat out[4] = { 0.25, 0.25, -0.1, -0.1 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_m (0, 0.0); + gint i; + + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == out[i], "difference at pos=%d", i); - /* cleanup */ cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_mono_middle_simple) +GST_START_TEST (test_f32_mono_left) { - GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; - gint16 in[2] = { 16384, -256 }; - gint16 out[4] = { 16384, 16384, -256, -256 }; - gint16 res[4]; + gfloat in[2] = { 0.5, -0.2 }; + gfloat out[4] = { 0.5, 0.0, -0.2, 0.0 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_m (0, -1.0); + gint i; - panorama = setup_panorama_m (); - g_object_set (G_OBJECT (panorama), "method", 1, NULL); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); + do_panorama (in, sizeof (in), res, sizeof (res)); - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - caps = gst_caps_from_string (PANORAMA_MONO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == out[i], "difference at pos=%d", i); - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... but it ends up being collected on the global buffer list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); + cleanup_panorama (panorama); +} - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - out[0], out[1], out[2], out[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, out, 8) == 0); +GST_END_TEST; + +GST_START_TEST (test_f32_mono_right) +{ + gfloat in[2] = { 0.5, -0.2 }; + gfloat out[4] = { 0.0, 0.5, 0.0, -0.2 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_m (0, 1.0); + gint i; + + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == out[i], "difference at pos=%d", i); - /* cleanup */ cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_mono_left_simple) +GST_START_TEST (test_f32_stereo_middle) { - GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; - gint16 in[2] = { 16384, -256 }; - gint16 out[4] = { 16384, 0, -256, 0 }; - gint16 res[4]; + gfloat in[4] = { 0.5, -0.2, 0.25, 0.1 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_s (0, 0.0); + gint i; - panorama = setup_panorama_m (); - g_object_set (G_OBJECT (panorama), "method", 1, NULL); - g_object_set (G_OBJECT (panorama), "panorama", -1.0, NULL); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); + do_panorama (in, sizeof (in), res, sizeof (res)); - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 4) == 0); - caps = gst_caps_from_string (PANORAMA_MONO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", in[0], in[1], in[2], in[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == in[i], "difference at pos=%d", i); - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... and puts a new buffer on the global list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); + cleanup_panorama (panorama); +} - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - out[0], out[1], out[2], out[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, out, 8) == 0); +GST_END_TEST; + +GST_START_TEST (test_f32_stereo_left) +{ + gfloat in[4] = { 0.5, -0.2, 0.25, 0.1 }; + gfloat out[4] = { 0.5 - 0.2, 0.0, 0.25 + 0.1, 0.0 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_s (0, -1.0); + gint i; + + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == out[i], "difference at pos=%d", i); - /* cleanup */ cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_mono_right_simple) +GST_START_TEST (test_f32_stereo_right) +{ + gfloat in[4] = { 0.5, -0.2, 0.25, 0.1 }; + gfloat out[4] = { 0.0, -0.2 + 0.5, 0.0, 0.1 + 0.25 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_s (0, 1.0); + gint i; + + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == out[i], "difference at pos=%d", i); + + cleanup_panorama (panorama); +} + +GST_END_TEST; + +/* processing for method=simple */ + +GST_START_TEST (test_s16_mono_middle_simple) { - GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; gint16 in[2] = { 16384, -256 }; - gint16 out[4] = { 0, 16384, 0, -256 }; + gint16 out[4] = { 16384, 16384, -256, -256 }; gint16 res[4]; + GstElement *panorama = setup_panorama_s16_m (1, 0.0); - panorama = setup_panorama_m (); - g_object_set (G_OBJECT (panorama), "method", 1, NULL); - g_object_set (G_OBJECT (panorama), "panorama", 1.0, NULL); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); + do_panorama (in, sizeof (in), res, sizeof (res)); - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 4) == 0); - caps = gst_caps_from_string (PANORAMA_MONO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + GST_INFO ("exp. %+5d %+5d %+5d %+5d", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, out, sizeof (res)) == 0); - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... and puts a new buffer on the global list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); + cleanup_panorama (panorama); +} + +GST_END_TEST; - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - out[0], out[1], out[2], out[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, out, 8) == 0); +GST_START_TEST (test_s16_mono_left_simple) +{ + gint16 in[2] = { 16384, -256 }; + gint16 out[4] = { 16384, 0, -256, 0 }; + gint16 res[4]; + GstElement *panorama = setup_panorama_s16_m (1, -1.0); + + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+5d %+5d %+5d %+5d", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, out, sizeof (res)) == 0); - /* cleanup */ cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_stereo_middle_simple) +GST_START_TEST (test_s16_mono_right_simple) { - GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; - gint16 in[4] = { 16384, -256, 8192, 128 }; + gint16 in[2] = { 16384, -256 }; + gint16 out[4] = { 0, 16384, 0, -256 }; gint16 res[4]; + GstElement *panorama = setup_panorama_s16_m (1, 1.0); - panorama = setup_panorama_s (); - g_object_set (G_OBJECT (panorama), "method", 1, NULL); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); + do_panorama (in, sizeof (in), res, sizeof (res)); - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - caps = gst_caps_from_string (PANORAMA_STEREO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + GST_INFO ("exp. %+5d %+5d %+5d %+5d", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, out, sizeof (res)) == 0); - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... but it ends up being collected on the global buffer list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); + cleanup_panorama (panorama); +} - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - in[0], in[1], in[2], in[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, in, 8) == 0); +GST_END_TEST; + +GST_START_TEST (test_s16_stereo_middle_simple) +{ + gint16 in[4] = { 16384, -256, 8192, 128 }; + gint16 res[4]; + GstElement *panorama = setup_panorama_s16_s (1, 0.0); + + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+5d %+5d %+5d %+5d", in[0], in[1], in[2], in[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, in, sizeof (res)) == 0); - /* cleanup */ cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_stereo_left_simple) +GST_START_TEST (test_s16_stereo_left_simple) { - GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; gint16 in[4] = { 16384, -256, 8192, 128 }; gint16 out[4] = { 16384, 0, 8192, 0 }; gint16 res[4]; + GstElement *panorama = setup_panorama_s16_s (1, -1.0); - panorama = setup_panorama_s (); - g_object_set (G_OBJECT (panorama), "method", 1, NULL); - g_object_set (G_OBJECT (panorama), "panorama", -1.0, NULL); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 8) == 0); - caps = gst_caps_from_string (PANORAMA_STEREO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... and puts a new buffer on the global list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); + do_panorama (in, sizeof (in), res, sizeof (res)); - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - out[0], out[1], out[2], out[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, out, 8) == 0); + GST_INFO ("exp. %+5d %+5d %+5d %+5d", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, out, sizeof (res)) == 0); - /* cleanup */ cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_stereo_right_simple) +GST_START_TEST (test_s16_stereo_right_simple) { - GstElement *panorama; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; gint16 in[4] = { 16384, -256, 8192, 128 }; gint16 out[4] = { 0, -256, 0, 128 }; gint16 res[4]; + GstElement *panorama = setup_panorama_s16_s (1, 1.0); - panorama = setup_panorama_s (); - g_object_set (G_OBJECT (panorama), "method", 1, NULL); - g_object_set (G_OBJECT (panorama), "panorama", 1.0, NULL); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); + do_panorama (in, sizeof (in), res, sizeof (res)); - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - fail_unless (gst_buffer_memcmp (inbuffer, 0, in, 8) == 0); - caps = gst_caps_from_string (PANORAMA_STEREO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + GST_INFO ("exp. %+5d %+5d %+5d %+5d", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+5d %+5d %+5d %+5d", res[0], res[1], res[2], res[3]); + fail_unless (memcmp (res, out, sizeof (res)) == 0); - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... and puts a new buffer on the global list */ - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); + cleanup_panorama (panorama); +} - fail_unless (gst_buffer_extract (outbuffer, 0, res, 8) == 8); - GST_INFO ("expected %+5d %+5d %+5d %+5d real %+5d %+5d %+5d %+5d", - out[0], out[1], out[2], out[3], res[0], res[1], res[2], res[3]); - fail_unless (gst_buffer_memcmp (outbuffer, 0, out, 8) == 0); +GST_END_TEST; + +//----------------------------------------------------------------------------- + +GST_START_TEST (test_f32_mono_middle_simple) +{ + gfloat in[2] = { 0.5, -0.2 }; + gfloat out[4] = { 0.5, 0.5, -0.2, -0.2 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_m (1, 0.0); + gint i; + + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == out[i], "difference at pos=%d", i); - /* cleanup */ cleanup_panorama (panorama); } GST_END_TEST; -GST_START_TEST (test_wrong_caps) +GST_START_TEST (test_f32_mono_left_simple) { - GstElement *panorama; - GstBuffer *inbuffer; - gint16 in[2] = { 16384, -256 }; - GstBus *bus; - GstMessage *message; - GstCaps *caps; + gfloat in[2] = { 0.5, -0.2 }; + gfloat out[4] = { 0.5, 0.0, -0.2, 0.0 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_m (1, -1.0); + gint i; - panorama = setup_panorama_m (); - bus = gst_bus_new (); + do_panorama (in, sizeof (in), res, sizeof (res)); - fail_unless (gst_element_set_state (panorama, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == out[i], "difference at pos=%d", i); - inbuffer = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, in, sizeof (in), 0, - sizeof (in), NULL, NULL); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - gst_buffer_ref (inbuffer); + cleanup_panorama (panorama); +} - /* set a bus here so we avoid getting state change messages */ - gst_element_set_bus (panorama, bus); +GST_END_TEST; - caps = gst_caps_from_string (PANORAMA_WRONG_CAPS_STRING); - /* this actually succeeds, because the caps event is sticky */ - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); +GST_START_TEST (test_f32_mono_right_simple) +{ + gfloat in[2] = { 0.5, -0.2 }; + gfloat out[4] = { 0.0, 0.5, 0.0, -0.2 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_m (1, 1.0); + gint i; - /* pushing gives an error because it can't negotiate with wrong caps */ - fail_unless_equals_int (gst_pad_push (mysrcpad, inbuffer), - GST_FLOW_NOT_NEGOTIATED); - /* ... and the buffer would have been lost if we didn't ref it ourselves */ - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - gst_buffer_unref (inbuffer); - fail_unless_equals_int (g_list_length (buffers), 0); + do_panorama (in, sizeof (in), res, sizeof (res)); - /* panorama_set_caps should not have been called since basetransform caught - * the negotiation problem */ - fail_if ((message = gst_bus_pop (bus)) != NULL); + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == out[i], "difference at pos=%d", i); + + cleanup_panorama (panorama); +} + +GST_END_TEST; + +GST_START_TEST (test_f32_stereo_middle_simple) +{ + gfloat in[4] = { 0.5, -0.2, 0.25, 0.1 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_s (1, 0.0); + gint i; + + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", in[0], in[1], in[2], in[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == in[i], "difference at pos=%d", i); + + cleanup_panorama (panorama); +} + +GST_END_TEST; + +GST_START_TEST (test_f32_stereo_left_simple) +{ + gfloat in[4] = { 0.5, -0.2, 0.25, 0.1 }; + gfloat out[4] = { 0.5, 0.0, 0.25, 0.0 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_s (1, -1.0); + gint i; + + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == out[i], "difference at pos=%d", i); + + cleanup_panorama (panorama); +} + +GST_END_TEST; + +GST_START_TEST (test_f32_stereo_right_simple) +{ + gfloat in[4] = { 0.5, -0.2, 0.25, 0.1 }; + gfloat out[4] = { 0.0, -0.2, 0.0, 0.1 }; + gfloat res[4]; + GstElement *panorama = setup_panorama_f32_s (1, 1.0); + gint i; + + do_panorama (in, sizeof (in), res, sizeof (res)); + + GST_INFO ("exp. %+4.2f %+4.2f %+4.2f %+4.2f", out[0], out[1], out[2], out[3]); + GST_INFO ("real %+4.2f %+4.2f %+4.2f %+4.2f", res[0], res[1], res[2], res[3]); + for (i = 0; i < 4; i++) + fail_unless (res[i] == out[i], "difference at pos=%d", i); - /* cleanup */ - gst_element_set_bus (panorama, NULL); - gst_object_unref (GST_OBJECT (bus)); cleanup_panorama (panorama); } @@ -683,36 +783,36 @@ panorama_suite (void) TCase *tc_chain = tcase_create ("general"); suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_mono_middle); - tcase_add_test (tc_chain, test_mono_left); - tcase_add_test (tc_chain, test_mono_right); - tcase_add_test (tc_chain, test_stereo_middle); - tcase_add_test (tc_chain, test_stereo_left); - tcase_add_test (tc_chain, test_stereo_right); - tcase_add_test (tc_chain, test_mono_middle_simple); - tcase_add_test (tc_chain, test_mono_left_simple); - tcase_add_test (tc_chain, test_mono_right_simple); - tcase_add_test (tc_chain, test_stereo_middle_simple); - tcase_add_test (tc_chain, test_stereo_left_simple); - tcase_add_test (tc_chain, test_stereo_right_simple); + tcase_add_test (tc_chain, test_ref_counts); tcase_add_test (tc_chain, test_wrong_caps); + /* processing for method=psy */ + tcase_add_test (tc_chain, test_s16_mono_middle); + tcase_add_test (tc_chain, test_s16_mono_left); + tcase_add_test (tc_chain, test_s16_mono_right); + tcase_add_test (tc_chain, test_s16_stereo_middle); + tcase_add_test (tc_chain, test_s16_stereo_left); + tcase_add_test (tc_chain, test_s16_stereo_right); + tcase_add_test (tc_chain, test_f32_mono_middle); + tcase_add_test (tc_chain, test_f32_mono_left); + tcase_add_test (tc_chain, test_f32_mono_right); + tcase_add_test (tc_chain, test_f32_stereo_middle); + tcase_add_test (tc_chain, test_f32_stereo_left); + tcase_add_test (tc_chain, test_f32_stereo_right); + /* processing for method=simple */ + tcase_add_test (tc_chain, test_s16_mono_middle_simple); + tcase_add_test (tc_chain, test_s16_mono_left_simple); + tcase_add_test (tc_chain, test_s16_mono_right_simple); + tcase_add_test (tc_chain, test_s16_stereo_middle_simple); + tcase_add_test (tc_chain, test_s16_stereo_left_simple); + tcase_add_test (tc_chain, test_s16_stereo_right_simple); + tcase_add_test (tc_chain, test_f32_mono_middle_simple); + tcase_add_test (tc_chain, test_f32_mono_left_simple); + tcase_add_test (tc_chain, test_f32_mono_right_simple); + tcase_add_test (tc_chain, test_f32_stereo_middle_simple); + tcase_add_test (tc_chain, test_f32_stereo_left_simple); + tcase_add_test (tc_chain, test_f32_stereo_right_simple); return s; } -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = panorama_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; -} +GST_CHECK_MAIN (panorama); diff --git a/tests/check/elements/audiowsincband.c b/tests/check/elements/audiowsincband.c index 76c8664aa7404e9dd182ba090de98a51dff2ffd1..0a5b9c1282ed32ea68801e8a9a2cde5611ca882f 100644 --- a/tests/check/elements/audiowsincband.c +++ b/tests/check/elements/audiowsincband.c @@ -132,15 +132,15 @@ GST_START_TEST (test_32_bp_0hz) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -211,7 +211,7 @@ GST_START_TEST (test_32_bp_11025hz) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -285,15 +285,15 @@ GST_START_TEST (test_32_bp_22050hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -357,15 +357,15 @@ GST_START_TEST (test_32_br_0hz) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -434,15 +434,15 @@ GST_START_TEST (test_32_br_11025hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -509,15 +509,15 @@ GST_START_TEST (test_32_br_22050hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -579,15 +579,15 @@ GST_START_TEST (test_32_small_buffer) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -643,15 +643,15 @@ GST_START_TEST (test_64_bp_0hz) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -719,15 +719,15 @@ GST_START_TEST (test_64_bp_11025hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -794,15 +794,15 @@ GST_START_TEST (test_64_bp_22050hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -866,15 +866,15 @@ GST_START_TEST (test_64_br_0hz) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -943,15 +943,15 @@ GST_START_TEST (test_64_br_11025hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -1018,15 +1018,15 @@ GST_START_TEST (test_64_br_22050hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -1088,15 +1088,15 @@ GST_START_TEST (test_64_small_buffer) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_BAND_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsincband, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); diff --git a/tests/check/elements/audiowsinclimit.c b/tests/check/elements/audiowsinclimit.c index bee834c175b6928f5879a87e6e5709ebb2dcb213..de80451a5309939dc75ad35944cd836c6169f18a 100644 --- a/tests/check/elements/audiowsinclimit.c +++ b/tests/check/elements/audiowsinclimit.c @@ -129,15 +129,15 @@ GST_START_TEST (test_32_lp_0hz) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_LIMIT_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsinclimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -200,15 +200,15 @@ GST_START_TEST (test_32_lp_22050hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_LIMIT_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsinclimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -269,15 +269,15 @@ GST_START_TEST (test_32_hp_0hz) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_LIMIT_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsinclimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -340,15 +340,15 @@ GST_START_TEST (test_32_hp_22050hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_LIMIT_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsinclimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -408,15 +408,15 @@ GST_START_TEST (test_32_small_buffer) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_LIMIT_CAPS_STRING_32); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsinclimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -463,15 +463,15 @@ GST_START_TEST (test_64_lp_0hz) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_LIMIT_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsinclimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -534,15 +534,15 @@ GST_START_TEST (test_64_lp_22050hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_LIMIT_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsinclimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -603,15 +603,15 @@ GST_START_TEST (test_64_hp_0hz) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_LIMIT_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsinclimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -674,15 +674,15 @@ GST_START_TEST (test_64_hp_22050hz) } gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_LIMIT_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsinclimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); @@ -742,15 +742,15 @@ GST_START_TEST (test_64_small_buffer) in[i] = 1.0; gst_buffer_unmap (inbuffer, &map); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - caps = gst_caps_from_string (AUDIO_WSINC_LIMIT_CAPS_STRING_64); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, audiowsinclimit, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* ensure segment (format) properly setup */ + gst_segment_init (&segment, GST_FORMAT_TIME); + fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ())); diff --git a/tests/check/elements/autodetect.c b/tests/check/elements/autodetect.c index 03a7ee95bf4af6659cc4d6bb79b7dab6118b0302..c1ee314dd8648ac5aef5daa47ca007cdfbe21a1b 100644 --- a/tests/check/elements/autodetect.c +++ b/tests/check/elements/autodetect.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -29,6 +29,7 @@ GST_START_TEST (test_autovideosink_ghostpad_error_case) GstStateChangeReturn state_ret; GstElement *pipeline, *src, *filter, *sink; GstCaps *caps; + GstElement *fakesink; pipeline = gst_pipeline_new ("pipeline"); src = gst_element_factory_make ("fakesrc", NULL); @@ -55,12 +56,21 @@ GST_START_TEST (test_autovideosink_ghostpad_error_case) state_ret = gst_element_get_state (pipeline, &state, &state, GST_CLOCK_TIME_NONE); } - fail_unless (state_ret == GST_STATE_CHANGE_FAILURE, - "pipeline _set_state() to PAUSED succeeded but should have failed"); - - /* so, we hit an error and try to shut down the pipeline; this shouldn't - * deadlock or block anywhere when autovideosink resets the ghostpad - * targets etc. */ + fakesink = gst_bin_get_by_name (GST_BIN (sink), "fake-video-sink"); + if (fakesink != NULL) { + /* no real video sink available */ + fail_unless (state_ret == GST_STATE_CHANGE_SUCCESS, + "pipeline _set_state() to PAUSED failed"); + gst_object_unref (fakesink); + } else { + /* autovideosink contains a real video sink */ + fail_unless (state_ret == GST_STATE_CHANGE_FAILURE, + "pipeline _set_state() to PAUSED succeeded but should have failed"); + + /* so, we hit an error and try to shut down the pipeline; this shouldn't + * deadlock or block anywhere when autovideosink resets the ghostpad + * targets etc. */ + } state_ret = gst_element_set_state (pipeline, GST_STATE_NULL); fail_unless (state_ret == GST_STATE_CHANGE_SUCCESS, "State change on pipeline failed"); diff --git a/tests/check/elements/avimux.c b/tests/check/elements/avimux.c index 77441258f9f4551855d576d3d7a62aeef00f4c87..47c155fd9b24bba01ebd40064b4dc06986fd6b5e 100644 --- a/tests/check/elements/avimux.c +++ b/tests/check/elements/avimux.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -161,21 +161,17 @@ check_avimux_pad (GstStaticPadTemplate * srctemplate, guint8 data5[4] = "strf"; guint8 data6[4] = "LIST"; guint8 data7[4] = "movi"; - GstSegment segment; avimux = setup_avimux (srctemplate, sinkname); fail_unless (gst_element_set_state (avimux, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); - /* ensure segment (format) properly setup */ - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - inbuffer = gst_buffer_new_and_alloc (1); caps = gst_caps_from_string (src_caps_string); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, avimux, caps, GST_FORMAT_TIME); gst_caps_unref (caps); + GST_BUFFER_TIMESTAMP (inbuffer) = 0; ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); diff --git a/tests/check/elements/avisubtitle.c b/tests/check/elements/avisubtitle.c index 781c0e6d12d6062aeaa0401358c822307c3079dd..1b00b15e402fd4d1a271bc19fc455a520583875e 100644 --- a/tests/check/elements/avisubtitle.c +++ b/tests/check/elements/avisubtitle.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* Element-Checklist-Version: 5 */ @@ -70,19 +70,16 @@ static GstElement * setup_avisubtitle (void) { GstElement *avisubtitle; - GstCaps *sinkcaps, *srccaps; + GstCaps *srccaps; GST_DEBUG ("setup_avisubtitle"); avisubtitle = gst_check_setup_element ("avisubtitle"); - sinkcaps = gst_caps_new_empty_simple ("application/x-subtitle"); mysinkpad = gst_check_setup_sink_pad (avisubtitle, &sink_template); - srccaps = gst_caps_new_empty_simple ("application/x-subtitle-avi"); mysrcpad = gst_check_setup_src_pad (avisubtitle, &src_template); gst_pad_set_active (mysinkpad, TRUE); gst_pad_set_active (mysrcpad, TRUE); - fail_unless (gst_pad_set_caps (mysinkpad, sinkcaps)); - fail_unless (gst_pad_set_caps (mysrcpad, srccaps)); - gst_caps_unref (sinkcaps); + srccaps = gst_caps_new_empty_simple ("application/x-subtitle-avi"); + gst_check_setup_events (mysrcpad, avisubtitle, srccaps, GST_FORMAT_TIME); gst_caps_unref (srccaps); return avisubtitle; } diff --git a/tests/check/elements/capssetter.c b/tests/check/elements/capssetter.c index e1eec8d8ee1c3893004e8097f56aed0599594246..17e563b513e2ceb47046af2c728bb879e166b0ab 100644 --- a/tests/check/elements/capssetter.c +++ b/tests/check/elements/capssetter.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -90,7 +90,7 @@ push_and_test (GstCaps * prop_caps, gboolean join, gboolean replace, ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1); gst_buffer_fill (buffer, 0, "data", 4); - gst_pad_set_caps (mysrcpad, in_caps); + gst_check_setup_events (mysrcpad, capssetter, in_caps, GST_FORMAT_TIME); gst_caps_unref (in_caps); /* pushing gives away my reference ... */ diff --git a/tests/check/elements/deinterlace.c b/tests/check/elements/deinterlace.c index cc5634d20ddf92d3381dbd4fec8c8b4fec7b44a6..c9da2dd823fadbf7538c063f96b642af2535ee67 100644 --- a/tests/check/elements/deinterlace.c +++ b/tests/check/elements/deinterlace.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -276,8 +276,13 @@ static void deinterlace_set_caps_and_check (GstCaps * input, gboolean must_deinterlace) { GstCaps *othercaps = NULL; + GstSegment segment; + gst_pad_send_event (sinkpad, gst_event_new_stream_start ("test")); fail_unless (gst_pad_set_caps (sinkpad, input)); + gst_segment_init (&segment, GST_FORMAT_TIME); + gst_pad_send_event (sinkpad, gst_event_new_segment (&segment)); + g_object_get (srcpad, "caps", &othercaps, NULL); if (must_deinterlace) { diff --git a/tests/check/elements/deinterleave.c b/tests/check/elements/deinterleave.c index a76024a97160f7d3278ae964f323cb7204e182de..2ad17b3ac3646911816b2979ef73f2b5bc8a9672 100644 --- a/tests/check/elements/deinterleave.c +++ b/tests/check/elements/deinterleave.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -154,8 +154,7 @@ GST_START_TEST (test_2_channels) gst_caps_set_simple (caps, "channel-mask", GST_TYPE_BITMASK, channel_mask, NULL); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_pad_use_fixed_caps (mysrcpad); + gst_check_setup_events (mysrcpad, deinterleave, caps, GST_FORMAT_TIME); sinkpad = gst_element_get_static_pad (deinterleave, "sink"); fail_unless (sinkpad != NULL); @@ -180,7 +179,6 @@ GST_START_TEST (test_2_channels) indata[i + 1] = 1.0; } gst_buffer_unmap (inbuf, &map); - gst_pad_set_caps (mysrcpad, caps); fail_unless (gst_pad_push (mysrcpad, inbuf) == GST_FLOW_OK); @@ -227,8 +225,7 @@ GST_START_TEST (test_2_channels_1_linked) gst_caps_set_simple (caps, "channel-mask", GST_TYPE_BITMASK, channel_mask, NULL); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_pad_use_fixed_caps (mysrcpad); + gst_check_setup_events (mysrcpad, deinterleave, caps, GST_FORMAT_TIME); sinkpad = gst_element_get_static_pad (deinterleave, "sink"); fail_unless (sinkpad != NULL); @@ -253,7 +250,6 @@ GST_START_TEST (test_2_channels_1_linked) indata[i + 1] = 1.0; } gst_buffer_unmap (inbuf, &map); - gst_pad_set_caps (mysrcpad, caps); fail_unless (gst_pad_push (mysrcpad, inbuf) == GST_FLOW_OK); @@ -301,8 +297,7 @@ GST_START_TEST (test_2_channels_caps_change) G_GUINT64_CONSTANT (1) << GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT; gst_caps_set_simple (caps, "channel-mask", GST_TYPE_BITMASK, channel_mask, NULL); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_pad_use_fixed_caps (mysrcpad); + gst_check_setup_events (mysrcpad, deinterleave, caps, GST_FORMAT_TIME); sinkpad = gst_element_get_static_pad (deinterleave, "sink"); fail_unless (sinkpad != NULL); @@ -327,7 +322,6 @@ GST_START_TEST (test_2_channels_caps_change) indata[i + 1] = 1.0; } gst_buffer_unmap (inbuf, &map); - gst_pad_set_caps (mysrcpad, caps); fail_unless (gst_pad_push (mysrcpad, inbuf) == GST_FLOW_OK); @@ -350,7 +344,6 @@ GST_START_TEST (test_2_channels_caps_change) indata[i + 1] = 1.0; } gst_buffer_unmap (inbuf, &map); - gst_pad_set_caps (mysrcpad, caps2); /* Should work fine because the caps changed in a compatible way */ fail_unless (gst_pad_push (mysrcpad, inbuf) == GST_FLOW_OK); @@ -379,7 +372,6 @@ GST_START_TEST (test_2_channels_caps_change) indata[i + 2] = 0.0; } gst_buffer_unmap (inbuf, &map); - gst_pad_set_caps (mysrcpad, caps2); /* Should break because the caps changed in an incompatible way */ fail_if (gst_pad_push (mysrcpad, inbuf) == GST_FLOW_OK); @@ -427,21 +419,6 @@ src_handoff_float32_8ch (GstElement * src, GstBuffer * buf, GstPad * pad, { gfloat *data, *p; guint size, i, c; - GstAudioChannelPosition layout[NUM_CHANNELS]; - GstCaps *caps; - - caps = gst_caps_new_simple ("audio/x-raw", - "format", G_TYPE_STRING, GST_AUDIO_NE (F32), - "channels", G_TYPE_INT, NUM_CHANNELS, - "layout", G_TYPE_STRING, "interleaved", - "rate", G_TYPE_INT, SAMPLE_RATE, NULL); - - for (i = 0; i < NUM_CHANNELS; ++i) - layout[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT + i; - - set_channel_positions (caps, NUM_CHANNELS, layout); - gst_pad_set_caps (pad, caps); - gst_caps_unref (caps); size = sizeof (gfloat) * SAMPLES_PER_BUFFER * NUM_CHANNELS; data = p = (gfloat *) g_malloc (size); @@ -464,6 +441,34 @@ src_handoff_float32_8ch (GstElement * src, GstBuffer * buf, GstPad * pad, GST_BUFFER_TIMESTAMP (buf) = 0; } +static GstPadProbeReturn +src_event_probe (GstPad * pad, GstPadProbeInfo * info, gpointer userdata) +{ + GstAudioChannelPosition layout[NUM_CHANNELS]; + GstCaps *caps; + guint i; + + if ((info->type & GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) + && GST_EVENT_TYPE (info->data) == GST_EVENT_STREAM_START) { + gst_pad_remove_probe (pad, info->id); + + caps = gst_caps_new_simple ("audio/x-raw", + "format", G_TYPE_STRING, GST_AUDIO_NE (F32), + "channels", G_TYPE_INT, NUM_CHANNELS, + "layout", G_TYPE_STRING, "interleaved", + "rate", G_TYPE_INT, SAMPLE_RATE, NULL); + + for (i = 0; i < NUM_CHANNELS; ++i) + layout[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT + i; + + set_channel_positions (caps, NUM_CHANNELS, layout); + gst_pad_set_caps (pad, caps); + gst_caps_unref (caps); + } + + return GST_PAD_PROBE_OK; +} + static GstPadProbeReturn float_buffer_check_probe (GstPad * pad, GstPadProbeInfo * info, gpointer userdata) @@ -543,7 +548,6 @@ pad_added_setup_data_check_float32_8ch_cb (GstElement * deinterleave, fail_unless_equals_int (gst_pad_link (pad, sinkpad), GST_PAD_LINK_OK); gst_object_unref (sinkpad); - gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER, float_buffer_check_probe, GUINT_TO_POINTER (pads_created), NULL); @@ -558,6 +562,7 @@ static GstElement * make_fake_src_8chans_float32 (void) { GstElement *src; + GstPad *pad; src = gst_element_factory_make ("fakesrc", "src"); fail_unless (src != NULL, "failed to create fakesrc element"); @@ -567,6 +572,11 @@ make_fake_src_8chans_float32 (void) g_signal_connect (src, "handoff", G_CALLBACK (src_handoff_float32_8ch), NULL); + pad = gst_element_get_static_pad (src, "src"); + gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM, src_event_probe, + NULL, NULL); + gst_object_unref (pad); + return src; } diff --git a/tests/check/elements/dtmf.c b/tests/check/elements/dtmf.c new file mode 100644 index 0000000000000000000000000000000000000000..8b295da0674dcc51b64d5ad050e2a90fdfc6bc36 --- /dev/null +++ b/tests/check/elements/dtmf.c @@ -0,0 +1,588 @@ +/* GStreamer + * + * unit test for dtmf elements + * Copyright (C) 2013 Collabora Ltd + * @author: Olivier Crete <olivier.crete@collabora.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <gst/gst.h> +#include <gst/audio/audio.h> +#include <gst/check/gstcheck.h> +#include <gst/check/gsttestclock.h> +#include <gst/rtp/gstrtpbuffer.h> + + +/* Include this from the plugin to get the defines */ + +#include "../../gst/dtmf/gstdtmfcommon.h" + +#define END_BIT (1<<7) + +static GstStaticPadTemplate audio_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "format = (string) \"" GST_AUDIO_NE (S16) "\", " + "rate = " GST_AUDIO_RATE_RANGE ", " "channels = (int) 1") + ); + +static GstStaticPadTemplate rtp_dtmf_src_template = +GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp, " + "media = (string) \"audio\", " + "payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING ", " + "clock-rate = (int) [ 0, MAX ], " + "encoding-name = (string) \"TELEPHONE-EVENT\"") + ); + + +static void +check_get_dtmf_event_message (GstBus * bus, gint number, gint volume) +{ + GstMessage *message; + gboolean have_message = FALSE; + + while (!have_message && + (message = gst_bus_pop_filtered (bus, GST_MESSAGE_ELEMENT)) != NULL) { + if (gst_message_has_name (message, "dtmf-event")) { + const GstStructure *s = gst_message_get_structure (message); + gint stype, snumber, smethod, svolume; + + fail_unless (gst_structure_get (s, + "type", G_TYPE_INT, &stype, + "number", G_TYPE_INT, &snumber, + "method", G_TYPE_INT, &smethod, + "volume", G_TYPE_INT, &svolume, NULL)); + + fail_unless (stype == 1); + fail_unless (smethod == 1); + fail_unless (snumber == number); + fail_unless (svolume == volume); + have_message = TRUE; + } + gst_message_unref (message); + } + + fail_unless (have_message); +} + +static void +check_no_dtmf_event_message (GstBus * bus) +{ + GstMessage *message; + gboolean have_message = FALSE; + + while (!have_message && + (message = gst_bus_pop_filtered (bus, GST_MESSAGE_ELEMENT)) != NULL) { + if (gst_message_has_name (message, "dtmf-event") || + gst_message_has_name (message, "dtmf-event-processed") || + gst_message_has_name (message, "dtmf-event-dropped")) { + have_message = TRUE; + } + gst_message_unref (message); + } + + fail_unless (!have_message); +} + +static void +check_buffers_duration (GstClockTime expected_duration) +{ + GstClockTime duration = 0; + + while (buffers) { + GstBuffer *buf = buffers->data; + + buffers = g_list_delete_link (buffers, buffers); + + fail_unless (GST_BUFFER_DURATION_IS_VALID (buf)); + duration += GST_BUFFER_DURATION (buf); + gst_buffer_unref (buf); + } + + fail_unless (duration == expected_duration); +} + +static void +send_rtp_packet (GstPad * src, guint timestamp, gboolean marker, gboolean end, + guint number, guint volume, guint duration) +{ + GstBuffer *buf; + GstRTPBuffer rtpbuf = GST_RTP_BUFFER_INIT; + gchar *payload; + static guint seqnum = 1; + + buf = gst_rtp_buffer_new_allocate (4, 0, 0); + fail_unless (gst_rtp_buffer_map (buf, GST_MAP_READWRITE, &rtpbuf)); + gst_rtp_buffer_set_seq (&rtpbuf, seqnum++); + gst_rtp_buffer_set_timestamp (&rtpbuf, timestamp); + gst_rtp_buffer_set_marker (&rtpbuf, marker); + payload = gst_rtp_buffer_get_payload (&rtpbuf); + payload[0] = number; + payload[1] = volume | (end ? END_BIT : 0); + GST_WRITE_UINT16_BE (payload + 2, duration); + gst_rtp_buffer_unmap (&rtpbuf); + fail_unless (gst_pad_push (src, buf) == GST_FLOW_OK); +} + +GST_START_TEST (test_rtpdtmfdepay) +{ + GstElement *dtmfdepay; + GstPad *src, *sink; + GstBus *bus; + GstCaps *caps_in; + GstCaps *expected_caps_out; + GstCaps *caps_out; + + dtmfdepay = gst_check_setup_element ("rtpdtmfdepay"); + sink = gst_check_setup_sink_pad (dtmfdepay, &audio_sink_template); + src = gst_check_setup_src_pad (dtmfdepay, &rtp_dtmf_src_template); + + bus = gst_bus_new (); + gst_element_set_bus (dtmfdepay, bus); + + gst_pad_set_active (src, TRUE); + gst_pad_set_active (sink, TRUE); + gst_element_set_state (dtmfdepay, GST_STATE_PLAYING); + + + caps_in = gst_caps_new_simple ("application/x-rtp", + "encoding-name", G_TYPE_STRING, "TELEPHONE-EVENT", + "media", G_TYPE_STRING, "audio", + "clock-rate", G_TYPE_INT, 1000, "payload", G_TYPE_INT, 99, NULL); + gst_check_setup_events (src, dtmfdepay, caps_in, GST_FORMAT_TIME); + gst_caps_unref (caps_in); + + caps_out = gst_pad_get_current_caps (sink); + expected_caps_out = gst_caps_new_simple ("audio/x-raw", + "format", G_TYPE_STRING, GST_AUDIO_NE (S16), + "rate", G_TYPE_INT, 1000, "channels", G_TYPE_INT, 1, NULL); + fail_unless (gst_caps_is_equal_fixed (caps_out, expected_caps_out)); + gst_caps_unref (expected_caps_out); + gst_caps_unref (caps_out); + + /* Single packet DTMF */ + send_rtp_packet (src, 200, TRUE, TRUE, 1, 5, 250); + check_get_dtmf_event_message (bus, 1, 5); + check_buffers_duration (250 * GST_MSECOND); + + /* Two packet DTMF */ + send_rtp_packet (src, 800, TRUE, FALSE, 1, 5, 200); + send_rtp_packet (src, 800, FALSE, TRUE, 1, 5, 400); + check_buffers_duration (400 * GST_MSECOND); + check_get_dtmf_event_message (bus, 1, 5); + + /* Long DTMF */ + send_rtp_packet (src, 3000, TRUE, FALSE, 1, 5, 200); + check_get_dtmf_event_message (bus, 1, 5); + check_buffers_duration (200 * GST_MSECOND); + send_rtp_packet (src, 3000, FALSE, FALSE, 1, 5, 400); + check_no_dtmf_event_message (bus); + check_buffers_duration (200 * GST_MSECOND); + send_rtp_packet (src, 3000, FALSE, FALSE, 1, 5, 600); + check_no_dtmf_event_message (bus); + check_buffers_duration (200 * GST_MSECOND); + + /* New without end to last */ + send_rtp_packet (src, 4000, TRUE, TRUE, 1, 5, 250); + check_get_dtmf_event_message (bus, 1, 5); + check_buffers_duration (250 * GST_MSECOND); + + check_no_dtmf_event_message (bus); + fail_unless (buffers == NULL); + gst_element_set_bus (dtmfdepay, NULL); + gst_object_unref (bus); + + gst_pad_set_active (src, FALSE); + gst_pad_set_active (sink, FALSE); + gst_check_teardown_sink_pad (dtmfdepay); + gst_check_teardown_src_pad (dtmfdepay); + gst_check_teardown_element (dtmfdepay); +} + +GST_END_TEST; + + +static GstStaticPadTemplate rtp_dtmf_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp, " + "media = (string) \"audio\", " + "payload = (int) 99, " + "clock-rate = (int) 1000, " + "seqnum-base = (uint) 333, " + "clock-base = (uint) 666, " + "ssrc = (uint) 999, " + "maxptime = (uint) 20, encoding-name = (string) \"TELEPHONE-EVENT\"") + ); + +GstElement *dtmfsrc; +GstPad *sink; +GstClock *testclock; +GstBus *bus; + +static void +check_message_structure (GstStructure * expected_s) +{ + GstMessage *message; + gboolean have_message = FALSE; + + while (!have_message && + (message = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, + GST_MESSAGE_ELEMENT)) != NULL) { + if (gst_message_has_name (message, gst_structure_get_name (expected_s))) { + const GstStructure *s = gst_message_get_structure (message); + + fail_unless (gst_structure_is_equal (s, expected_s)); + have_message = TRUE; + } + gst_message_unref (message); + } + + fail_unless (have_message); + + gst_structure_free (expected_s); +} + +static void +check_rtp_buffer (GstClockTime ts, GstClockTime duration, gboolean start, + gboolean end, guint rtpts, guint ssrc, guint volume, guint number, + guint rtpduration) +{ + GstBuffer *buffer; + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + gchar *payload; + + g_mutex_lock (&check_mutex); + while (buffers == NULL) + g_cond_wait (&check_cond, &check_mutex); + g_mutex_unlock (&check_mutex); + fail_unless (buffers != NULL); + + buffer = buffers->data; + buffers = g_list_delete_link (buffers, buffers); + + fail_unless (GST_BUFFER_PTS (buffer) == ts); + fail_unless (GST_BUFFER_DURATION (buffer) == duration); + + fail_unless (gst_rtp_buffer_map (buffer, GST_MAP_READ, &rtpbuffer)); + fail_unless (gst_rtp_buffer_get_marker (&rtpbuffer) == start); + fail_unless (gst_rtp_buffer_get_timestamp (&rtpbuffer) == rtpts); + payload = gst_rtp_buffer_get_payload (&rtpbuffer); + + fail_unless (payload[0] == number); + fail_unless ((payload[1] & 0x7F) == volume); + fail_unless (! !(payload[1] & 0x80) == end); + fail_unless (GST_READ_UINT16_BE (payload + 2) == rtpduration); + + gst_rtp_buffer_unmap (&rtpbuffer); + gst_buffer_unref (buffer); +} + +gint method; + +static void +setup_rtpdtmfsrc (void) +{ + testclock = gst_test_clock_new (); + bus = gst_bus_new (); + + method = 1; + dtmfsrc = gst_check_setup_element ("rtpdtmfsrc"); + sink = gst_check_setup_sink_pad (dtmfsrc, &rtp_dtmf_sink_template); + gst_element_set_bus (dtmfsrc, bus); + fail_unless (gst_element_set_clock (dtmfsrc, testclock)); + + gst_pad_set_active (sink, TRUE); + fail_unless (gst_element_set_state (dtmfsrc, GST_STATE_PLAYING) == + GST_STATE_CHANGE_SUCCESS); +} + +static void +teardown_dtmfsrc (void) +{ + gst_object_unref (testclock); + gst_pad_set_active (sink, FALSE); + gst_element_set_bus (dtmfsrc, NULL); + gst_object_unref (bus); + gst_check_teardown_sink_pad (dtmfsrc); + gst_check_teardown_element (dtmfsrc); +} + +GST_START_TEST (test_dtmfsrc_invalid_events) +{ + GstStructure *s; + + /* Missing start */ + s = gst_structure_new ("dtmf-event", + "type", G_TYPE_INT, 1, "number", G_TYPE_INT, 3, + "method", G_TYPE_INT, method, "volume", G_TYPE_INT, 8, NULL); + fail_unless (gst_pad_push_event (sink, + gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, s)) == FALSE); + + /* Missing volume */ + s = gst_structure_new ("dtmf-event", + "type", G_TYPE_INT, 1, "number", G_TYPE_INT, 3, + "method", G_TYPE_INT, method, "start", G_TYPE_BOOLEAN, TRUE, NULL); + fail_unless (gst_pad_push_event (sink, + gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, s)) == FALSE); + + /* Missing number */ + s = gst_structure_new ("dtmf-event", + "type", G_TYPE_INT, 1, "method", G_TYPE_INT, method, + "volume", G_TYPE_INT, 8, "start", G_TYPE_BOOLEAN, TRUE, NULL); + fail_unless (gst_pad_push_event (sink, + gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, s)) == FALSE); + + /* Missing type */ + s = gst_structure_new ("dtmf-event", + "number", G_TYPE_INT, 3, "method", G_TYPE_INT, method, + "volume", G_TYPE_INT, 8, "start", G_TYPE_BOOLEAN, TRUE, NULL); + fail_unless (gst_pad_push_event (sink, + gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, s)) == FALSE); + + /* Stop before start */ + s = gst_structure_new ("dtmf-event", + "type", G_TYPE_INT, 1, "number", G_TYPE_INT, 3, + "method", G_TYPE_INT, method, "volume", G_TYPE_INT, 8, + "start", G_TYPE_BOOLEAN, FALSE, NULL); + fail_unless (gst_pad_push_event (sink, + gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, s)) == FALSE); + + gst_element_set_state (dtmfsrc, GST_STATE_NULL); +} + +GST_END_TEST; + +GST_START_TEST (test_rtpdtmfsrc_min_duration) +{ + GstStructure *s; + GstClockID id; + guint timestamp = 0; + GstCaps *expected_caps, *caps; + + /* Minimum duration dtmf */ + + s = gst_structure_new ("dtmf-event", + "type", G_TYPE_INT, 1, "number", G_TYPE_INT, 3, + "method", G_TYPE_INT, 1, "volume", G_TYPE_INT, 8, + "start", G_TYPE_BOOLEAN, TRUE, NULL); + fail_unless (gst_pad_push_event (sink, + gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, + gst_structure_copy (s)))); + check_no_dtmf_event_message (bus); + gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (testclock), NULL); + fail_unless (buffers == NULL); + id = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (testclock)); + fail_unless (gst_clock_id_get_time (id) == 0); + gst_clock_id_unref (id); + gst_structure_set_name (s, "dtmf-event-processed"); + check_message_structure (s); + + s = gst_structure_new ("dtmf-event", + "type", G_TYPE_INT, 1, "method", G_TYPE_INT, 1, + "start", G_TYPE_BOOLEAN, FALSE, NULL); + fail_unless (gst_pad_push_event (sink, + gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, + gst_structure_copy (s)))); + + check_rtp_buffer (0, 20 * GST_MSECOND, TRUE, FALSE, 666, 999, 8, 3, 20); + + for (timestamp = 20; timestamp < MIN_PULSE_DURATION + 20; timestamp += 20) { + gst_test_clock_advance_time (GST_TEST_CLOCK (testclock), + 20 * GST_MSECOND + 1); + gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (testclock), NULL); + fail_unless (buffers == NULL); + id = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (testclock)); + fail_unless (gst_clock_id_get_time (id) == timestamp * GST_MSECOND); + gst_clock_id_unref (id); + + if (timestamp < MIN_PULSE_DURATION) { + check_rtp_buffer (timestamp * GST_MSECOND, 20 * GST_MSECOND, FALSE, + FALSE, 666, 999, 8, 3, timestamp + 20); + check_no_dtmf_event_message (bus); + } else { + gst_structure_set_name (s, "dtmf-event-processed"); + check_message_structure (s); + check_rtp_buffer (timestamp * GST_MSECOND, + (20 + MIN_INTER_DIGIT_INTERVAL) * GST_MSECOND, FALSE, TRUE, 666, + 999, 8, 3, timestamp + 20); + } + + fail_unless (buffers == NULL); + } + + + fail_unless (gst_test_clock_peek_id_count (GST_TEST_CLOCK (testclock)) == 0); + + /* caps check */ + + expected_caps = gst_caps_new_simple ("application/x-rtp", + "encoding-name", G_TYPE_STRING, "TELEPHONE-EVENT", + "media", G_TYPE_STRING, "audio", + "clock-rate", G_TYPE_INT, 1000, "payload", G_TYPE_INT, 99, + "seqnum-base", G_TYPE_UINT, 333, + "clock-base", G_TYPE_UINT, 666, + "ssrc", G_TYPE_UINT, 999, "ptime", G_TYPE_UINT, 20, NULL); + caps = gst_pad_get_current_caps (sink); + fail_unless (gst_caps_can_intersect (caps, expected_caps)); + gst_caps_unref (caps); + gst_caps_unref (expected_caps); + + gst_element_set_state (dtmfsrc, GST_STATE_NULL); + + check_no_dtmf_event_message (bus); +} + +GST_END_TEST; + +static GstStaticPadTemplate audio_dtmfsrc_sink_template = +GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw, " + "format = (string) \"" GST_AUDIO_NE (S16) "\", " + "rate = (int) 8003, " "channels = (int) 1") + ); +static void +setup_dtmfsrc (void) +{ + testclock = gst_test_clock_new (); + bus = gst_bus_new (); + + method = 2; + dtmfsrc = gst_check_setup_element ("dtmfsrc"); + sink = gst_check_setup_sink_pad (dtmfsrc, &audio_dtmfsrc_sink_template); + gst_element_set_bus (dtmfsrc, bus); + fail_unless (gst_element_set_clock (dtmfsrc, testclock)); + + gst_pad_set_active (sink, TRUE); + fail_unless (gst_element_set_state (dtmfsrc, GST_STATE_PLAYING) == + GST_STATE_CHANGE_SUCCESS); +} + + +GST_START_TEST (test_dtmfsrc_min_duration) +{ + GstStructure *s; + GstClockID id; + GstClockTime timestamp = 0; + GstCaps *expected_caps, *caps; + guint interval; + + g_object_get (dtmfsrc, "interval", &interval, NULL); + fail_unless (interval == 50); + + /* Minimum duration dtmf */ + gst_test_clock_set_time (GST_TEST_CLOCK (testclock), 0); + + s = gst_structure_new ("dtmf-event", + "type", G_TYPE_INT, 1, "number", G_TYPE_INT, 3, + "method", G_TYPE_INT, 2, "volume", G_TYPE_INT, 8, + "start", G_TYPE_BOOLEAN, TRUE, NULL); + fail_unless (gst_pad_push_event (sink, + gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, + gst_structure_copy (s)))); + + gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (testclock), NULL); + id = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (testclock)); + fail_unless (gst_clock_id_get_time (id) == 0); + gst_clock_id_unref (id); + + gst_structure_set_name (s, "dtmf-event-processed"); + check_message_structure (s); + + s = gst_structure_new ("dtmf-event", + "type", G_TYPE_INT, 1, "method", G_TYPE_INT, 2, + "start", G_TYPE_BOOLEAN, FALSE, NULL); + fail_unless (gst_pad_push_event (sink, + gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, + gst_structure_copy (s)))); + + for (timestamp = interval * GST_MSECOND; + timestamp < (MIN_PULSE_DURATION + MIN_INTER_DIGIT_INTERVAL) * + GST_MSECOND; timestamp += GST_MSECOND * interval) { + gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (testclock), NULL); + gst_test_clock_advance_time (GST_TEST_CLOCK (testclock), + interval * GST_MSECOND); + + id = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (testclock)); + fail_unless (gst_clock_id_get_time (id) == timestamp); + gst_clock_id_unref (id); + } + + gst_structure_set_name (s, "dtmf-event-processed"); + check_message_structure (s); + + check_buffers_duration ((MIN_PULSE_DURATION + MIN_INTER_DIGIT_INTERVAL) * + GST_MSECOND); + + fail_unless (gst_test_clock_peek_id_count (GST_TEST_CLOCK (testclock)) == 0); + + /* caps check */ + + expected_caps = gst_caps_new_simple ("audio/x-raw", + "format", G_TYPE_STRING, GST_AUDIO_NE (S16), + "rate", G_TYPE_INT, 8003, "channels", G_TYPE_INT, 1, NULL); + caps = gst_pad_get_current_caps (sink); + fail_unless (gst_caps_can_intersect (caps, expected_caps)); + gst_caps_unref (caps); + gst_caps_unref (expected_caps); + + gst_element_set_state (dtmfsrc, GST_STATE_NULL); + + check_no_dtmf_event_message (bus); +} + +GST_END_TEST; + +static Suite * +dtmf_suite (void) +{ + Suite *s = suite_create ("dtmf"); + TCase *tc; + + tc = tcase_create ("rtpdtmfdepay"); + tcase_add_test (tc, test_rtpdtmfdepay); + suite_add_tcase (s, tc); + + tc = tcase_create ("rtpdtmfsrc"); + tcase_add_checked_fixture (tc, setup_rtpdtmfsrc, teardown_dtmfsrc); + tcase_add_test (tc, test_dtmfsrc_invalid_events); + tcase_add_test (tc, test_rtpdtmfsrc_min_duration); + suite_add_tcase (s, tc); + + tc = tcase_create ("dtmfsrc"); + tcase_add_checked_fixture (tc, setup_dtmfsrc, teardown_dtmfsrc); + tcase_add_test (tc, test_dtmfsrc_invalid_events); + tcase_add_test (tc, test_dtmfsrc_min_duration); + suite_add_tcase (s, tc); + + return s; +} + + +GST_CHECK_MAIN (dtmf); diff --git a/tests/check/elements/equalizer.c b/tests/check/elements/equalizer.c index a43268e7d24de9f4740578f3b382dcd23926b9f7..491e0394d9519ab7dc780889a83eac7d50243dfa 100644 --- a/tests/check/elements/equalizer.c +++ b/tests/check/elements/equalizer.c @@ -114,7 +114,7 @@ GST_START_TEST (test_equalizer_5bands_passthrough) gst_buffer_unmap (inbuffer, &map); caps = gst_caps_from_string (EQUALIZER_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, equalizer, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -178,7 +178,7 @@ GST_START_TEST (test_equalizer_5bands_minus_24) rms_in = sqrt (rms_in / 1024); caps = gst_caps_from_string (EQUALIZER_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, equalizer, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -246,7 +246,7 @@ GST_START_TEST (test_equalizer_5bands_plus_12) rms_in = sqrt (rms_in / 1024); caps = gst_caps_from_string (EQUALIZER_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, equalizer, caps, GST_FORMAT_TIME); gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); diff --git a/tests/check/elements/flacparse.c b/tests/check/elements/flacparse.c index 497a98a68ba2e08b649dc8abf765e1f9cd37417c..306f0109b1d40502f830a9086c42e7db9997d90e 100644 --- a/tests/check/elements/flacparse.c +++ b/tests/check/elements/flacparse.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/flvdemux.c b/tests/check/elements/flvdemux.c index efc30618515ab0fb378fca7b6daf779c216b2e14..c9d156dda71ebe81244dd79ecbac77e7de592f3d 100644 --- a/tests/check/elements/flvdemux.c +++ b/tests/check/elements/flvdemux.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/flvmux.c b/tests/check/elements/flvmux.c index e6085359a990979d48f559ac8b855c7260eedd8e..1df2efe423c3b071b4459992ca3a3f40136933a2 100644 --- a/tests/check/elements/flvmux.c +++ b/tests/check/elements/flvmux.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/tests/check/elements/gdkpixbufsink.c b/tests/check/elements/gdkpixbufsink.c index 6f8018ba4111fd210111c308256532605e0ab14d..1183ccb4636fc7557274b6b694ff9b73e354c473 100644 --- a/tests/check/elements/gdkpixbufsink.c +++ b/tests/check/elements/gdkpixbufsink.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/tests/check/elements/icydemux.c b/tests/check/elements/icydemux.c index ae63a80a68133c90f833167554d89f69081c44e9..525e309fc8263eb1fd36543d66f525baa6a877ff 100644 --- a/tests/check/elements/icydemux.c +++ b/tests/check/elements/icydemux.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -159,7 +159,7 @@ cleanup_icydemux (void) } static void -push_data (const guint8 * data, int len, GstCaps * caps, gint64 offset) +push_data (const guint8 * data, int len, gint64 offset) { GstFlowReturn res; GstBuffer *buffer = gst_buffer_new_and_alloc (len); @@ -168,7 +168,6 @@ push_data (const guint8 * data, int len, GstCaps * caps, gint64 offset) GST_BUFFER_OFFSET (buffer) = offset; - gst_pad_set_caps (srcpad, caps); res = gst_pad_push (srcpad, buffer); fail_unless (res == GST_FLOW_OK, "Failed pushing buffer: %d", res); @@ -191,8 +190,9 @@ GST_START_TEST (test_demux) caps = gst_caps_from_string (ICYCAPS); create_icydemux (); + gst_check_setup_events (srcpad, icydemux, caps, GST_FORMAT_TIME); - push_data ((guint8 *) ICY_DATA, sizeof (ICY_DATA), caps, -1); + push_data ((guint8 *) ICY_DATA, sizeof (ICY_DATA), -1); message = gst_bus_poll (bus, GST_MESSAGE_TAG, -1); fail_unless (message != NULL); @@ -235,12 +235,14 @@ GST_START_TEST (test_first_buf_offset_when_merged_for_typefinding) icy_caps = gst_caps_from_string (ICYCAPS); - push_data (buf1, G_N_ELEMENTS (buf1), icy_caps, 0); + gst_check_setup_events (srcpad, icydemux, icy_caps, GST_FORMAT_TIME); + + push_data (buf1, G_N_ELEMENTS (buf1), 0); /* one byte isn't really enough for typefinding, can't have a srcpad yet */ fail_unless (gst_element_get_static_pad (icydemux, "src") == NULL); - push_data (buf2, G_N_ELEMENTS (buf2), icy_caps, -1); + push_data (buf2, G_N_ELEMENTS (buf2), -1); /* should have been enough to create a audio/x-musepack source pad .. */ icy_srcpad = gst_element_get_static_pad (icydemux, "src"); @@ -262,9 +264,14 @@ GST_END_TEST; GST_START_TEST (test_not_negotiated) { GstBuffer *buf; + GstSegment segment; create_icydemux (); + gst_segment_init (&segment, GST_FORMAT_BYTES); + gst_pad_push_event (srcpad, gst_event_new_stream_start ("test")); + gst_pad_push_event (srcpad, gst_event_new_segment (&segment)); + buf = gst_buffer_new_and_alloc (0); GST_BUFFER_OFFSET (buf) = 0; diff --git a/tests/check/elements/id3demux.c b/tests/check/elements/id3demux.c index bb0cb85ada15c1fc9e6e9f042159cebd98e68264..17b524d0c96fa1d00465704a231efd9180e1d166 100644 --- a/tests/check/elements/id3demux.c +++ b/tests/check/elements/id3demux.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/id3v2mux.c b/tests/check/elements/id3v2mux.c index 9c9beeaefc6f249072a2585041baf78ab08a1c0e..21869e6b719266add5c8a799d57226b9d6c587a0 100644 --- a/tests/check/elements/id3v2mux.c +++ b/tests/check/elements/id3v2mux.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -294,7 +294,7 @@ got_buffer (GstElement * fakesink, GstBuffer * buf, GstPad * pad, gst_buffer_map (buf, &map, GST_MAP_READ); - GST_LOG ("got buffer, size=%u, offset=%" G_GINT64_FORMAT, map.size, off); + GST_LOG ("size=%" G_GSIZE_FORMAT ", offset=%" G_GINT64_FORMAT, map.size, off); fail_unless (GST_BUFFER_OFFSET_IS_VALID (buf)); diff --git a/tests/check/elements/imagefreeze.c b/tests/check/elements/imagefreeze.c index a5f172e3b53f94722f7e86e4dd2a61651614af03..cfeff37340a35ff5880c140678725a487548e9e7 100644 --- a/tests/check/elements/imagefreeze.c +++ b/tests/check/elements/imagefreeze.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <string.h> diff --git a/tests/check/elements/interleave.c b/tests/check/elements/interleave.c index 1c8c71fe7df5cbb39d582c912ad2a14e1b0d7dde..be0a4b6badbf0e9a6492e83a1827b0c183feecf7 100644 --- a/tests/check/elements/interleave.c +++ b/tests/check/elements/interleave.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* FIXME 0.11: suppress warnings for deprecated API such as GValueArray @@ -34,6 +34,21 @@ #include <gst/audio/audio.h> #include <gst/audio/audio-enumtypes.h> +static void +gst_check_setup_events_interleave (GstPad * srcpad, GstElement * element, + GstCaps * caps, GstFormat format, const gchar * stream_id) +{ + GstSegment segment; + + gst_segment_init (&segment, format); + + fail_unless (gst_pad_push_event (srcpad, + gst_event_new_stream_start (stream_id))); + if (caps) + fail_unless (gst_pad_push_event (srcpad, gst_event_new_caps (caps))); + fail_unless (gst_pad_push_event (srcpad, gst_event_new_segment (&segment))); +} + GST_START_TEST (test_create_and_unref) { GstElement *interleave; @@ -161,14 +176,16 @@ GST_START_TEST (test_interleave_2ch) caps = gst_caps_from_string (CAPS_48khz); gst_pad_set_active (mysrcpads[0], TRUE); - fail_unless (gst_pad_set_caps (mysrcpads[0], caps)); + gst_check_setup_events_interleave (mysrcpads[0], interleave, caps, + GST_FORMAT_TIME, "0"); gst_pad_use_fixed_caps (mysrcpads[0]); mysrcpads[1] = gst_pad_new_from_static_template (&srctemplate, "src1"); fail_unless (mysrcpads[1] != NULL); gst_pad_set_active (mysrcpads[1], TRUE); - fail_unless (gst_pad_set_caps (mysrcpads[1], caps)); + gst_check_setup_events_interleave (mysrcpads[1], interleave, caps, + GST_FORMAT_TIME, "1"); gst_pad_use_fixed_caps (mysrcpads[1]); tmp = gst_element_get_static_pad (queue, "sink"); @@ -205,7 +222,6 @@ GST_START_TEST (test_interleave_2ch) for (i = 0; i < 48000; i++) indata[i] = -1.0; gst_buffer_unmap (inbuf, &map); - gst_pad_set_caps (mysrcpads[0], caps); fail_unless (gst_pad_push (mysrcpads[0], inbuf) == GST_FLOW_OK); input[1] = 1.0; @@ -215,7 +231,6 @@ GST_START_TEST (test_interleave_2ch) for (i = 0; i < 48000; i++) indata[i] = 1.0; gst_buffer_unmap (inbuf, &map); - gst_pad_set_caps (mysrcpads[1], caps); fail_unless (gst_pad_push (mysrcpads[1], inbuf) == GST_FLOW_OK); inbuf = gst_buffer_new_and_alloc (48000 * sizeof (gfloat)); @@ -291,14 +306,16 @@ GST_START_TEST (test_interleave_2ch_1eos) caps = gst_caps_from_string (CAPS_48khz); gst_pad_set_active (mysrcpads[0], TRUE); - fail_unless (gst_pad_set_caps (mysrcpads[0], caps)); + gst_check_setup_events_interleave (mysrcpads[0], interleave, caps, + GST_FORMAT_TIME, "0"); gst_pad_use_fixed_caps (mysrcpads[0]); mysrcpads[1] = gst_pad_new_from_static_template (&srctemplate, "src1"); fail_unless (mysrcpads[1] != NULL); gst_pad_set_active (mysrcpads[1], TRUE); - fail_unless (gst_pad_set_caps (mysrcpads[1], caps)); + gst_check_setup_events_interleave (mysrcpads[1], interleave, caps, + GST_FORMAT_TIME, "1"); gst_pad_use_fixed_caps (mysrcpads[1]); tmp = gst_element_get_static_pad (queue, "sink"); @@ -335,7 +352,6 @@ GST_START_TEST (test_interleave_2ch_1eos) for (i = 0; i < 48000; i++) indata[i] = -1.0; gst_buffer_unmap (inbuf, &map); - gst_pad_set_caps (mysrcpads[0], caps); fail_unless (gst_pad_push (mysrcpads[0], inbuf) == GST_FLOW_OK); input[1] = 1.0; @@ -345,7 +361,6 @@ GST_START_TEST (test_interleave_2ch_1eos) for (i = 0; i < 48000; i++) indata[i] = 1.0; gst_buffer_unmap (inbuf, &map); - gst_pad_set_caps (mysrcpads[1], caps); fail_unless (gst_pad_push (mysrcpads[1], inbuf) == GST_FLOW_OK); input[0] = 0.0; diff --git a/tests/check/elements/jpegdec.c b/tests/check/elements/jpegdec.c index 070ccdd3da0431a9e7c91fe1bf98602846c8431c..81b8b910596f050c3f2f01fc0ac122b6bc54b17f 100644 --- a/tests/check/elements/jpegdec.c +++ b/tests/check/elements/jpegdec.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> diff --git a/tests/check/elements/jpegenc.c b/tests/check/elements/jpegenc.c index 1044b4e209026c11be88e9d4e95d6752e08d05fb..fe55fb29141b65bf2986a2699a853c96ce53225f 100644 --- a/tests/check/elements/jpegenc.c +++ b/tests/check/elements/jpegenc.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -195,7 +195,7 @@ GST_START_TEST (test_jpegenc_different_caps) caps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT, 800, "height", G_TYPE_INT, 600, "framerate", GST_TYPE_FRACTION, 1, 1, "format", G_TYPE_STRING, "I420", NULL); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, jpegenc, caps, GST_FORMAT_TIME); fail_unless ((buffer = create_video_buffer (caps)) != NULL); gst_caps_unref (caps); fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK); diff --git a/tests/check/elements/level.c b/tests/check/elements/level.c index 6b721b140cfe68716efa467ff64b808cdb5e89ec..73f0340913865c906d1b2c9b34526cb49e5760b8 100644 --- a/tests/check/elements/level.c +++ b/tests/check/elements/level.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -33,22 +33,31 @@ /* For ease of programming we use globals to keep refs for our floating * src and sink pads we create; otherwise we always have to do get_pad, * get_peer, and then remove references in every test function */ -GstPad *mysrcpad, *mysinkpad; +static GstPad *mysrcpad, *mysinkpad; #define LEVEL_CAPS_TEMPLATE_STRING \ "audio/x-raw, " \ - "format = (string) { S8, "GST_AUDIO_NE(S16)" }, " \ + "format = (string) { "GST_AUDIO_NE(S16)", "GST_AUDIO_NE(F32)" }, " \ "layout = (string) interleaved, " \ "rate = (int) [ 1, MAX ], " \ "channels = (int) [ 1, 8 ]" -#define LEVEL_CAPS_STRING \ +/* we use rate = 1000 here for easy buffer size calculations */ +#define LEVEL_S16_CAPS_STRING \ "audio/x-raw, " \ "format = (string) "GST_AUDIO_NE(S16)", " \ "layout = (string) interleaved, " \ "rate = (int) 1000, " \ "channels = (int) 2, " \ - "channel-mask = (bitmask) 3" \ + "channel-mask = (bitmask) 3" + +#define LEVEL_F32_CAPS_STRING \ + "audio/x-raw, " \ + "format = (string) "GST_AUDIO_NE(F32)", " \ + "layout = (string) interleaved, " \ + "rate = (int) 1000, " \ + "channels = (int) 2, " \ + "channel-mask = (bitmask) 3" static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, @@ -63,9 +72,10 @@ static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", /* takes over reference for outcaps */ static GstElement * -setup_level (void) +setup_level (const gchar * caps_str) { GstElement *level; + GstCaps *caps; GST_DEBUG ("setup_level"); level = gst_check_setup_element ("level"); @@ -74,6 +84,10 @@ setup_level (void) gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); + caps = gst_caps_from_string (caps_str); + gst_check_setup_events (mysrcpad, level, caps, GST_FORMAT_TIME); + gst_caps_unref (caps); + return level; } @@ -89,49 +103,69 @@ cleanup_level (GstElement * level) gst_check_teardown_element (level); } +/* create a 0.1 sec buffer stereo buffer */ +static GstBuffer * +create_s16_buffer (gint16 val_l, gint16 val_r) +{ + GstBuffer *buf = gst_buffer_new_and_alloc (2 * 100 * sizeof (gint16)); + GstMapInfo map; + gint j; + gint16 *data; -GST_START_TEST (test_int16) + gst_buffer_map (buf, &map, GST_MAP_WRITE); + data = (gint16 *) map.data; + for (j = 0; j < 100; ++j) { + *(data++) = val_l; + *(data++) = val_r; + } + gst_buffer_unmap (buf, &map); + GST_BUFFER_TIMESTAMP (buf) = G_GUINT64_CONSTANT (0); + return buf; +} + +static GstBuffer * +create_f32_buffer (gfloat val_l, gfloat val_r) +{ + GstBuffer *buf = gst_buffer_new_and_alloc (2 * 100 * sizeof (gfloat)); + GstMapInfo map; + gint j; + gfloat *data; + + gst_buffer_map (buf, &map, GST_MAP_WRITE); + data = (gfloat *) map.data; + for (j = 0; j < 100; ++j) { + *(data++) = val_l; + *(data++) = val_r; + } + gst_buffer_unmap (buf, &map); + GST_BUFFER_TIMESTAMP (buf) = G_GUINT64_CONSTANT (0); + return buf; +} + +/* tests */ + +GST_START_TEST (test_ref_counts) { GstElement *level; GstBuffer *inbuffer, *outbuffer; GstBus *bus; - GstCaps *caps; GstMessage *message; - const GstStructure *structure; - int i, j; - GstMapInfo map; - gint16 *data; - const GValue *list, *value; - GstClockTime endtime; - gdouble dB; - level = setup_level (); + level = setup_level (LEVEL_S16_CAPS_STRING); g_object_set (level, "message", TRUE, "interval", GST_SECOND / 10, NULL); - fail_unless (gst_element_set_state (level, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); - - /* create a fake 0.1 sec buffer with a half-amplitude block signal */ - inbuffer = gst_buffer_new_and_alloc (400); - gst_buffer_map (inbuffer, &map, GST_MAP_WRITE); - data = (gint16 *) map.data; - for (j = 0; j < 200; ++j) { - *data = 16536; - ++data; - } - gst_buffer_unmap (inbuffer, &map); - caps = gst_caps_from_string (LEVEL_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - /* create a bus to get the level message on */ bus = gst_bus_new (); ASSERT_OBJECT_REFCOUNT (bus, "bus", 1); gst_element_set_bus (level, bus); ASSERT_OBJECT_REFCOUNT (bus, "bus", 2); + /* create a fake 0.1 sec buffer with a half-amplitude block signal */ + inbuffer = create_s16_buffer (16536, 16536); + ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); + /* pushing gives away my reference ... */ fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); /* ... but it ends up being collected on the global buffer list */ @@ -146,15 +180,101 @@ GST_START_TEST (test_int16) fail_unless (message != NULL); fail_unless (GST_MESSAGE_SRC (message) == GST_OBJECT (level)); fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT); + + /* clean up */ + /* flush current messages,and future state change messages */ + gst_bus_set_flushing (bus, TRUE); + + /* message has a ref to the element */ + ASSERT_OBJECT_REFCOUNT (level, "level", 2); + gst_message_unref (message); + ASSERT_OBJECT_REFCOUNT (level, "level", 1); + + gst_element_set_bus (level, NULL); + ASSERT_OBJECT_REFCOUNT (bus, "bus", 1); + gst_object_unref (bus); + gst_buffer_unref (outbuffer); + fail_unless (gst_element_set_state (level, + GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS, "could not set to null"); + ASSERT_OBJECT_REFCOUNT (level, "level", 1); + cleanup_level (level); +} + +GST_END_TEST; + +GST_START_TEST (test_message_is_valid) +{ + GstElement *level; + GstBuffer *inbuffer; + GstBus *bus; + GstMessage *message; + const GstStructure *structure; + GstClockTime endtime, ts, duration; + + level = setup_level (LEVEL_S16_CAPS_STRING); + g_object_set (level, "message", TRUE, "interval", GST_SECOND / 10, NULL); + gst_element_set_state (level, GST_STATE_PLAYING); + /* create a bus to get the level message on */ + bus = gst_bus_new (); + gst_element_set_bus (level, bus); + + /* create a fake 0.1 sec buffer with a half-amplitude block signal and push */ + inbuffer = create_s16_buffer (16536, 16536); + fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); + + message = gst_bus_poll (bus, GST_MESSAGE_ELEMENT, -1); + fail_unless (message != NULL); structure = gst_message_get_structure (message); fail_if (structure == NULL); - fail_unless_equals_string ((char *) gst_structure_get_name (structure), - "level"); + fail_unless_equals_string (gst_structure_get_name (structure), "level"); fail_unless (gst_structure_get_clock_time (structure, "endtime", &endtime)); + fail_unless (gst_structure_get_clock_time (structure, "timestamp", &ts)); + fail_unless (gst_structure_get_clock_time (structure, "duration", &duration)); + + /* clean up */ + /* flush current messages,and future state change messages */ + gst_bus_set_flushing (bus, TRUE); + gst_message_unref (message); + gst_element_set_bus (level, NULL); + gst_object_unref (bus); + gst_element_set_state (level, GST_STATE_NULL); + cleanup_level (level); +} + +GST_END_TEST; + +GST_START_TEST (test_int16) +{ + GstElement *level; + GstBuffer *inbuffer, *outbuffer; + GstBus *bus; + GstMessage *message; + const GstStructure *structure; + gint i, j; + const GValue *list, *value; + gdouble dB; + const gchar *fields[3] = { "rms", "peak", "decay" }; + + level = setup_level (LEVEL_S16_CAPS_STRING); + g_object_set (level, "message", TRUE, "interval", GST_SECOND / 10, NULL); + gst_element_set_state (level, GST_STATE_PLAYING); + /* create a bus to get the level message on */ + bus = gst_bus_new (); + gst_element_set_bus (level, bus); + + /* create a fake 0.1 sec buffer with a half-amplitude block signal */ + inbuffer = create_s16_buffer (16536, 16536); + + fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); + fail_unless_equals_int (g_list_length (buffers), 1); + fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); + fail_unless (inbuffer == outbuffer); + + message = gst_bus_poll (bus, GST_MESSAGE_ELEMENT, -1); + structure = gst_message_get_structure (message); /* block wave of half amplitude has -5.94 dB for rms, peak and decay */ for (i = 0; i < 2; ++i) { - const gchar *fields[3] = { "rms", "peak", "decay" }; for (j = 0; j < 3; ++j) { GValueArray *arr; @@ -163,30 +283,19 @@ GST_START_TEST (test_int16) value = g_value_array_get_nth (arr, i); dB = g_value_get_double (value); GST_DEBUG ("%s is %lf", fields[j], dB); - fail_if (dB < -6.0); + fail_if (dB < -6.1); fail_if (dB > -5.9); } } - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); - fail_unless (inbuffer == outbuffer); /* clean up */ /* flush current messages,and future state change messages */ gst_bus_set_flushing (bus, TRUE); - - /* message has a ref to the element */ - ASSERT_OBJECT_REFCOUNT (level, "level", 2); gst_message_unref (message); - ASSERT_OBJECT_REFCOUNT (level, "level", 1); - gst_element_set_bus (level, NULL); - ASSERT_OBJECT_REFCOUNT (bus, "bus", 1); gst_object_unref (bus); gst_buffer_unref (outbuffer); - fail_unless (gst_element_set_state (level, - GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS, "could not set to null"); - ASSERT_OBJECT_REFCOUNT (level, "level", 1); + gst_element_set_state (level, GST_STATE_NULL); cleanup_level (level); } @@ -197,65 +306,30 @@ GST_START_TEST (test_int16_panned) GstElement *level; GstBuffer *inbuffer, *outbuffer; GstBus *bus; - GstCaps *caps; GstMessage *message; const GstStructure *structure; - int j; - gint16 *data; - GstMapInfo map; + gint j; const GValue *list, *value; - GstClockTime endtime; gdouble dB; const gchar *fields[3] = { "rms", "peak", "decay" }; - level = setup_level (); + level = setup_level (LEVEL_S16_CAPS_STRING); g_object_set (level, "message", TRUE, "interval", GST_SECOND / 10, NULL); - - fail_unless (gst_element_set_state (level, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - /* create a fake 0.1 sec buffer with a half-amplitude block signal */ - inbuffer = gst_buffer_new_and_alloc (400); - gst_buffer_map (inbuffer, &map, GST_MAP_WRITE); - data = (gint16 *) map.data; - for (j = 0; j < 100; ++j) { - *data = 0; - ++data; - *data = 16536; - ++data; - } - gst_buffer_unmap (inbuffer, &map); - caps = gst_caps_from_string (LEVEL_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - + gst_element_set_state (level, GST_STATE_PLAYING); /* create a bus to get the level message on */ bus = gst_bus_new (); - ASSERT_OBJECT_REFCOUNT (bus, "bus", 1); gst_element_set_bus (level, bus); - ASSERT_OBJECT_REFCOUNT (bus, "bus", 2); - /* pushing gives away my reference ... */ + /* create a fake 0.1 sec buffer with a half-amplitude block signal */ + inbuffer = create_s16_buffer (0, 16536); + fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... but it ends up being collected on the global buffer list */ - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); fail_unless_equals_int (g_list_length (buffers), 1); fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); fail_unless (inbuffer == outbuffer); message = gst_bus_poll (bus, GST_MESSAGE_ELEMENT, -1); - ASSERT_OBJECT_REFCOUNT (message, "message", 1); - - fail_unless (message != NULL); - fail_unless (GST_MESSAGE_SRC (message) == GST_OBJECT (level)); - fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT); structure = gst_message_get_structure (message); - fail_if (structure == NULL); - fail_unless_equals_string ((char *) gst_structure_get_name (structure), - "level"); - fail_unless (gst_structure_get_clock_time (structure, "endtime", &endtime)); /* silence has 0 dB for rms, peak and decay */ for (j = 0; j < 3; ++j) { @@ -281,29 +355,76 @@ GST_START_TEST (test_int16_panned) value = g_value_array_get_nth (arr, 1); dB = g_value_get_double (value); GST_DEBUG ("%s[1] is %lf", fields[j], dB); - fail_if (dB < -6.0); + fail_if (dB < -6.1); fail_if (dB > -5.9); } + + /* clean up */ + /* flush current messages,and future state change messages */ + gst_bus_set_flushing (bus, TRUE); + gst_message_unref (message); + gst_element_set_bus (level, NULL); + gst_object_unref (bus); + gst_buffer_unref (outbuffer); + gst_element_set_state (level, GST_STATE_NULL); + cleanup_level (level); +} + +GST_END_TEST; + +GST_START_TEST (test_float) +{ + GstElement *level; + GstBuffer *inbuffer, *outbuffer; + GstBus *bus; + GstMessage *message; + const GstStructure *structure; + gint i, j; + const GValue *list, *value; + gdouble dB; + const gchar *fields[3] = { "rms", "peak", "decay" }; + + level = setup_level (LEVEL_F32_CAPS_STRING); + g_object_set (level, "message", TRUE, "interval", GST_SECOND / 10, NULL); + gst_element_set_state (level, GST_STATE_PLAYING); + /* create a bus to get the level message on */ + bus = gst_bus_new (); + gst_element_set_bus (level, bus); + + /* create a fake 0.1 sec buffer with a half-amplitude block signal */ + inbuffer = create_f32_buffer (0.5, 0.5); + + fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); fail_unless_equals_int (g_list_length (buffers), 1); fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); fail_unless (inbuffer == outbuffer); + message = gst_bus_poll (bus, GST_MESSAGE_ELEMENT, -1); + structure = gst_message_get_structure (message); + + /* block wave of half amplitude has -5.94 dB for rms, peak and decay */ + for (i = 0; i < 2; ++i) { + for (j = 0; j < 3; ++j) { + GValueArray *arr; + + list = gst_structure_get_value (structure, fields[j]); + arr = g_value_get_boxed (list); + value = g_value_array_get_nth (arr, i); + dB = g_value_get_double (value); + GST_DEBUG ("%s is %lf", fields[j], dB); + fail_if (dB < -6.1); + fail_if (dB > -5.9); + } + } + /* clean up */ /* flush current messages,and future state change messages */ gst_bus_set_flushing (bus, TRUE); - - /* message has a ref to the element */ - ASSERT_OBJECT_REFCOUNT (level, "level", 2); gst_message_unref (message); - ASSERT_OBJECT_REFCOUNT (level, "level", 1); - gst_element_set_bus (level, NULL); - ASSERT_OBJECT_REFCOUNT (bus, "bus", 1); gst_object_unref (bus); gst_buffer_unref (outbuffer); - fail_unless (gst_element_set_state (level, - GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS, "could not set to null"); - ASSERT_OBJECT_REFCOUNT (level, "level", 1); + gst_element_set_state (level, GST_STATE_NULL); cleanup_level (level); } @@ -315,70 +436,36 @@ GST_START_TEST (test_message_on_eos) GstBuffer *inbuffer, *outbuffer; GstEvent *event; GstBus *bus; - GstCaps *caps; GstMessage *message; const GstStructure *structure; - int i, j; - GstMapInfo map; - gint16 *data; + gint i, j; const GValue *list, *value; - GstClockTime endtime; gdouble dB; - level = setup_level (); + level = setup_level (LEVEL_S16_CAPS_STRING); g_object_set (level, "message", TRUE, "interval", GST_SECOND / 5, NULL); - - fail_unless (gst_element_set_state (level, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - /* create a fake 0.1 sec buffer with a half-amplitude block signal */ - inbuffer = gst_buffer_new_and_alloc (400); - gst_buffer_map (inbuffer, &map, GST_MAP_WRITE); - data = (gint16 *) map.data; - for (j = 0; j < 200; ++j) { - *data = 16536; - ++data; - } - gst_buffer_unmap (inbuffer, &map); - caps = gst_caps_from_string (LEVEL_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - + gst_element_set_state (level, GST_STATE_PLAYING); /* create a bus to get the level message on */ bus = gst_bus_new (); - ASSERT_OBJECT_REFCOUNT (bus, "bus", 1); gst_element_set_bus (level, bus); - ASSERT_OBJECT_REFCOUNT (bus, "bus", 2); - /* pushing gives away my reference ... */ + /* create a fake 0.1 sec buffer with a half-amplitude block signal */ + inbuffer = create_s16_buffer (16536, 16536); + fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... but it ends up being collected on the global buffer list */ - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); fail_unless_equals_int (g_list_length (buffers), 1); fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); fail_unless (inbuffer == outbuffer); message = gst_bus_poll (bus, GST_MESSAGE_ELEMENT, 0); - fail_unless (message == NULL); event = gst_event_new_eos (); fail_unless (gst_pad_push_event (mysrcpad, event) == TRUE); message = gst_bus_poll (bus, GST_MESSAGE_ELEMENT, 0); - fail_if (message == NULL); - - ASSERT_OBJECT_REFCOUNT (message, "message", 1); - fail_unless (message != NULL); - fail_unless (GST_MESSAGE_SRC (message) == GST_OBJECT (level)); - fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ELEMENT); structure = gst_message_get_structure (message); - fail_if (structure == NULL); - fail_unless_equals_string ((char *) gst_structure_get_name (structure), - "level"); - fail_unless (gst_structure_get_clock_time (structure, "endtime", &endtime)); + fail_unless_equals_string (gst_structure_get_name (structure), "level"); /* block wave of half amplitude has -5.94 dB for rms, peak and decay */ for (i = 0; i < 2; ++i) { @@ -391,35 +478,109 @@ GST_START_TEST (test_message_on_eos) value = g_value_array_get_nth (arr, i); dB = g_value_get_double (value); GST_DEBUG ("%s is %lf", fields[j], dB); - fail_if (dB < -6.0); + fail_if (dB < -6.1); fail_if (dB > -5.9); } } - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); - fail_unless (inbuffer == outbuffer); /* clean up */ /* flush current messages,and future state change messages */ gst_bus_set_flushing (bus, TRUE); + gst_message_unref (message); + gst_element_set_bus (level, NULL); + gst_object_unref (bus); + gst_buffer_unref (outbuffer); + gst_element_set_state (level, GST_STATE_NULL); + cleanup_level (level); +} - /* message has a ref to the element */ - ASSERT_OBJECT_REFCOUNT (level, "level", 2); +GST_END_TEST; + +GST_START_TEST (test_message_count) +{ + GstElement *level; + GstBuffer *inbuffer, *outbuffer; + GstBus *bus; + GstMessage *message; + + level = setup_level (LEVEL_S16_CAPS_STRING); + g_object_set (level, "message", TRUE, "interval", GST_SECOND / 20, NULL); + gst_element_set_state (level, GST_STATE_PLAYING); + /* create a bus to get the level message on */ + bus = gst_bus_new (); + gst_element_set_bus (level, bus); + + /* create a fake 0.1 sec buffer with a half-amplitude block signal */ + inbuffer = create_s16_buffer (16536, 16536); + + fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); + fail_unless_equals_int (g_list_length (buffers), 1); + fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); + fail_unless (inbuffer == outbuffer); + + /* we should get two messages per buffer */ + message = gst_bus_poll (bus, GST_MESSAGE_ELEMENT, -1); + fail_unless (message != NULL); + gst_message_unref (message); + message = gst_bus_poll (bus, GST_MESSAGE_ELEMENT, -1); + fail_unless (message != NULL); gst_message_unref (message); - ASSERT_OBJECT_REFCOUNT (level, "level", 1); gst_element_set_bus (level, NULL); - ASSERT_OBJECT_REFCOUNT (bus, "bus", 1); gst_object_unref (bus); gst_buffer_unref (outbuffer); - fail_unless (gst_element_set_state (level, - GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS, "could not set to null"); - ASSERT_OBJECT_REFCOUNT (level, "level", 1); + gst_element_set_state (level, GST_STATE_NULL); cleanup_level (level); } GST_END_TEST; +GST_START_TEST (test_message_timestamps) +{ + GstElement *level; + GstBuffer *inbuffer, *outbuffer; + GstBus *bus; + GstMessage *message; + const GstStructure *structure; + GstClockTime ts1, dur1, ts2; + + level = setup_level (LEVEL_S16_CAPS_STRING); + g_object_set (level, "message", TRUE, "interval", GST_SECOND / 20, NULL); + gst_element_set_state (level, GST_STATE_PLAYING); + /* create a bus to get the level message on */ + bus = gst_bus_new (); + gst_element_set_bus (level, bus); + + /* create a fake 0.1 sec buffer with a half-amplitude block signal */ + inbuffer = create_s16_buffer (16536, 16536); + + fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); + fail_unless_equals_int (g_list_length (buffers), 1); + fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); + fail_unless (inbuffer == outbuffer); + + /* check that timestamp + duration is contigous to the next timestamp */ + message = gst_bus_poll (bus, GST_MESSAGE_ELEMENT, -1); + structure = gst_message_get_structure (message); + gst_structure_get_clock_time (structure, "timestamp", &ts1); + gst_structure_get_clock_time (structure, "duration", &dur1); + gst_message_unref (message); + + message = gst_bus_poll (bus, GST_MESSAGE_ELEMENT, -1); + structure = gst_message_get_structure (message); + gst_structure_get_clock_time (structure, "timestamp", &ts2); + gst_message_unref (message); + + fail_unless_equals_int64 (ts1 + dur1, ts2); + + gst_element_set_bus (level, NULL); + gst_object_unref (bus); + gst_buffer_unref (outbuffer); + gst_element_set_state (level, GST_STATE_NULL); + cleanup_level (level); +} + +GST_END_TEST; static Suite * level_suite (void) @@ -428,26 +589,16 @@ level_suite (void) TCase *tc_chain = tcase_create ("general"); suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_ref_counts); + tcase_add_test (tc_chain, test_message_is_valid); tcase_add_test (tc_chain, test_int16); tcase_add_test (tc_chain, test_int16_panned); + tcase_add_test (tc_chain, test_float); tcase_add_test (tc_chain, test_message_on_eos); + tcase_add_test (tc_chain, test_message_count); + tcase_add_test (tc_chain, test_message_timestamps); return s; } -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = level_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; -} +GST_CHECK_MAIN (level); diff --git a/tests/check/elements/matroskamux.c b/tests/check/elements/matroskamux.c index 26ed7f0f18786aa6b9a4989fe1cc759209eb63c0..1c18e75ecc1d5b71989e8883acc5f52f9cd7b277 100644 --- a/tests/check/elements/matroskamux.c +++ b/tests/check/elements/matroskamux.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -54,8 +54,7 @@ static GstStaticPadTemplate srcac3template = GST_STATIC_PAD_TEMPLATE ("src", static GstPad * -setup_src_pad (GstElement * element, - GstStaticPadTemplate * template, GstCaps * caps) +setup_src_pad (GstElement * element, GstStaticPadTemplate * template) { GstPad *srcpad, *sinkpad; @@ -72,8 +71,6 @@ setup_src_pad (GstElement * element, GST_ELEMENT_NAME (element)); /* references are owned by: 1) us, 2) matroskamux, 3) collect pads */ ASSERT_OBJECT_REFCOUNT (sinkpad, "sinkpad", 3); - if (caps) - fail_unless (gst_pad_set_caps (srcpad, caps)); fail_unless (gst_pad_link (srcpad, sinkpad) == GST_PAD_LINK_OK, "Could not link source and %s sink pads", GST_ELEMENT_NAME (element)); gst_object_unref (sinkpad); /* because we got it higher up */ @@ -110,8 +107,7 @@ teardown_src_pad (GstElement * element) } static GstPad * -setup_sink_pad (GstElement * element, GstStaticPadTemplate * template, - GstCaps * caps) +setup_sink_pad (GstElement * element, GstStaticPadTemplate * template) { GstPad *srcpad, *sinkpad; @@ -125,8 +121,6 @@ setup_sink_pad (GstElement * element, GstStaticPadTemplate * template, srcpad = gst_element_get_static_pad (element, "src"); fail_if (srcpad == NULL, "Could not get source pad from %s", GST_ELEMENT_NAME (element)); - if (caps) - fail_unless (gst_pad_set_caps (sinkpad, caps)); gst_pad_set_chain_function (sinkpad, gst_check_chain_func); fail_unless (gst_pad_link (srcpad, sinkpad) == GST_PAD_LINK_OK, @@ -163,22 +157,17 @@ static GstElement * setup_matroskamux (GstStaticPadTemplate * srctemplate) { GstElement *matroskamux; - GstSegment segment; GST_DEBUG ("setup_matroskamux"); matroskamux = gst_check_setup_element ("matroskamux"); g_object_set (matroskamux, "version", 1, NULL); - mysrcpad = setup_src_pad (matroskamux, srctemplate, NULL); - mysinkpad = setup_sink_pad (matroskamux, &sinktemplate, NULL); + mysrcpad = setup_src_pad (matroskamux, srctemplate); + mysinkpad = setup_sink_pad (matroskamux, &sinktemplate); fail_unless (gst_element_set_state (matroskamux, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); - gst_segment_init (&segment, GST_FORMAT_TIME); - fail_unless (gst_pad_push_event (mysrcpad, - gst_event_new_segment (&segment)), "Segment event rejected"); - return matroskamux; } @@ -208,6 +197,7 @@ GST_START_TEST (test_ebml_header) int num_buffers; int i; gint available; + GstCaps *caps; guint8 data[] = { 0x1a, 0x45, 0xdf, 0xa3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x42, 0x82, 0x89, 0x6d, 0x61, 0x74, 0x72, 0x6f, 0x73, 0x6b, 0x61, 0x00, @@ -217,6 +207,10 @@ GST_START_TEST (test_ebml_header) matroskamux = setup_matroskamux (&srcac3template); + caps = gst_caps_from_string (srcac3template.static_caps.string); + gst_check_setup_events (mysrcpad, matroskamux, caps, GST_FORMAT_TIME); + gst_caps_unref (caps); + inbuffer = gst_buffer_new_allocate (NULL, 1, 0); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); @@ -267,7 +261,7 @@ GST_START_TEST (test_vorbis_header) matroskamux = setup_matroskamux (&srcvorbistemplate); caps = gst_caps_from_string (VORBIS_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, matroskamux, caps, GST_FORMAT_TIME); gst_caps_unref (caps); inbuffer = gst_buffer_new_allocate (NULL, 1, 0); @@ -326,7 +320,7 @@ GST_START_TEST (test_block_group) matroskamux = setup_matroskamux (&srcac3template); caps = gst_caps_from_string (AC3_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, matroskamux, caps, GST_FORMAT_TIME); gst_caps_unref (caps); /* Generate the header */ @@ -397,9 +391,14 @@ GST_START_TEST (test_reset) GstBuffer *outbuffer; int num_buffers; int i; + GstCaps *caps; matroskamux = setup_matroskamux (&srcac3template); + caps = gst_caps_from_string (srcac3template.static_caps.string); + gst_check_setup_events (mysrcpad, matroskamux, caps, GST_FORMAT_TIME); + gst_caps_unref (caps); + inbuffer = gst_buffer_new_allocate (NULL, 1, 0); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); @@ -447,7 +446,7 @@ GST_START_TEST (test_link_webmmux_webm_sink) GstElement *mux; mux = gst_check_setup_element ("webmmux"); - mysinkpad = setup_sink_pad (mux, &webm_sinktemplate, NULL); + mysinkpad = setup_sink_pad (mux, &webm_sinktemplate); fail_unless (mysinkpad != NULL); fail_unless (gst_element_set_state (mux, diff --git a/tests/check/elements/matroskaparse.c b/tests/check/elements/matroskaparse.c index e1d5e411ac12086ede03f75abe746d8c977770bb..8c2482c4f7a73eb269e5370814878251798d4902 100644 --- a/tests/check/elements/matroskaparse.c +++ b/tests/check/elements/matroskaparse.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/mpegaudioparse.c b/tests/check/elements/mpegaudioparse.c index 2bb26991eb48acb23fbc5ebacc7da8dd6268e9eb..dfe4735c14bdbceaf30293468342fb7bbe813114 100644 --- a/tests/check/elements/mpegaudioparse.c +++ b/tests/check/elements/mpegaudioparse.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/mulawdec.c b/tests/check/elements/mulawdec.c new file mode 100644 index 0000000000000000000000000000000000000000..94c6339a53864c4b665675d453a77b0302fc5138 --- /dev/null +++ b/tests/check/elements/mulawdec.c @@ -0,0 +1,125 @@ +/* GStreamer MulawDec unit tests + * + * 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 <gst/check/gstcheck.h> +#include <string.h> + +static GstPad *mysrcpad, *mysinkpad; +static GstElement *mulawdec = NULL; + +static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw," + "format = (string) S16LE, " + "rate = (int) 8000, " + "channels = (int) 1, " "layout = (string)interleaved") + ); + +static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-mulaw," "rate = (int) 8000," "channels = (int) 1") + ); + +static void +mulawdec_setup (void) +{ + GstCaps *src_caps; + + src_caps = + gst_caps_from_string ("audio/x-mulaw," "rate = (int) 8000," + "channels = (int) 1"); + + GST_DEBUG ("%s", __FUNCTION__); + + mulawdec = gst_check_setup_element ("mulawdec"); + + mysrcpad = gst_check_setup_src_pad (mulawdec, &srctemplate); + mysinkpad = gst_check_setup_sink_pad (mulawdec, &sinktemplate); + + gst_pad_set_active (mysrcpad, TRUE); + gst_pad_set_active (mysinkpad, TRUE); + + gst_check_setup_events (mysrcpad, mulawdec, src_caps, GST_FORMAT_TIME); + + gst_caps_unref (src_caps); +} + +static void +buffer_unref (void *buffer, void *user_data) +{ + gst_buffer_unref (GST_BUFFER (buffer)); +} + +static void +mulawdec_teardown (void) +{ + /* free decoded buffers */ + g_list_foreach (buffers, buffer_unref, NULL); + g_list_free (buffers); + buffers = NULL; + + gst_pad_set_active (mysrcpad, FALSE); + gst_pad_set_active (mysinkpad, FALSE); + gst_check_teardown_src_pad (mulawdec); + gst_check_teardown_sink_pad (mulawdec); + gst_check_teardown_element (mulawdec); + mulawdec = NULL; +} + +GST_START_TEST (test_one_buffer) +{ + GstBuffer *buffer; + gint buf_size = 4096; + guint8 *dp; + + fail_unless (gst_element_set_state (mulawdec, GST_STATE_PLAYING) == + GST_STATE_CHANGE_SUCCESS, "could not change state to playing"); + + buffer = gst_buffer_new (); + dp = g_malloc0 (buf_size); + gst_buffer_append_memory (buffer, + gst_memory_new_wrapped (0, dp, buf_size, 0, buf_size, dp, g_free)); + ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1); + + fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK); + + fail_unless (g_list_length (buffers) == 1); + fail_unless (gst_buffer_get_size (GST_BUFFER (g_list_first (buffers)->data))); +} + +GST_END_TEST; + +static Suite * +mulawdec_suite (void) +{ + Suite *s = suite_create ("mulawdec"); + TCase *tc_chain = tcase_create ("mulawdec"); + + tcase_add_checked_fixture (tc_chain, mulawdec_setup, mulawdec_teardown); + + suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_one_buffer); + return s; +} + +GST_CHECK_MAIN (mulawdec) diff --git a/tests/check/elements/mulawenc.c b/tests/check/elements/mulawenc.c new file mode 100644 index 0000000000000000000000000000000000000000..372218647f1c5b4f8eeb6dae96e83451cdfb1a94 --- /dev/null +++ b/tests/check/elements/mulawenc.c @@ -0,0 +1,175 @@ +/* GStreamer MulawEnc unit tests + * + * 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 <gst/check/gstcheck.h> +#include <string.h> + +static GstPad *mysrcpad, *mysinkpad; +static GstElement *mulawenc = NULL; + +static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-mulaw," "rate = (int) 8000," "channels = (int) 1") + ); + +static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-raw," + "format = (string) S16LE, " + "rate = (int) 8000, " + "channels = (int) 1, " "layout = (string)interleaved") + ); + +static void +mulawenc_setup (void) +{ + GstCaps *src_caps; + + src_caps = gst_caps_from_string ("audio/x-raw," + "format = (string) S16LE, " + "rate = (int) 8000, " + "channels = (int) 1, " "layout = (string)interleaved"); + + GST_DEBUG ("%s", __FUNCTION__); + + mulawenc = gst_check_setup_element ("mulawenc"); + + mysrcpad = gst_check_setup_src_pad (mulawenc, &srctemplate); + mysinkpad = gst_check_setup_sink_pad (mulawenc, &sinktemplate); + + gst_pad_set_active (mysrcpad, TRUE); + gst_pad_set_active (mysinkpad, TRUE); + + gst_check_setup_events (mysrcpad, mulawenc, src_caps, GST_FORMAT_TIME); + gst_caps_unref (src_caps); +} + +static void +buffer_unref (void *buffer, void *user_data) +{ + gst_buffer_unref (GST_BUFFER (buffer)); +} + +static void +mulawenc_teardown (void) +{ + /* free encoded buffers */ + g_list_foreach (buffers, buffer_unref, NULL); + g_list_free (buffers); + buffers = NULL; + + gst_pad_set_active (mysrcpad, FALSE); + gst_pad_set_active (mysinkpad, FALSE); + gst_check_teardown_src_pad (mulawenc); + gst_check_teardown_sink_pad (mulawenc); + gst_check_teardown_element (mulawenc); + mulawenc = NULL; +} + +static gboolean +check_for_maximum_bitrate (GstPad * pad, GstEvent ** eventp, gpointer user_data) +{ + gboolean *found_maximum_bitrate = (gboolean *) user_data; + GstEvent *event = *eventp; + + if (event->type == GST_EVENT_TAG) { + GstTagList *taglist = NULL; + guint value = 0; + gst_event_parse_tag (event, &taglist); + + fail_unless (taglist != NULL); + + fail_unless (gst_tag_list_get_uint (taglist, GST_TAG_MAXIMUM_BITRATE, + &value)); + + /* bitrate needs to be exactly sample rate * channels * 8 */ + fail_unless (value == 8000 * 1 * 8); + + *found_maximum_bitrate = TRUE; + } + + return TRUE; +} + +GST_START_TEST (test_one_buffer) +{ + GstBuffer *buffer; + gint buf_size = 4096; + guint8 *dp; + + fail_unless (gst_element_set_state (mulawenc, GST_STATE_PLAYING) == + GST_STATE_CHANGE_SUCCESS, "could not change state to playing"); + + buffer = gst_buffer_new (); + dp = g_malloc0 (buf_size); + gst_buffer_append_memory (buffer, + gst_memory_new_wrapped (0, dp, buf_size, 0, buf_size, dp, g_free)); + ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1); + + fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK); + + fail_unless (g_list_length (buffers) == 1); + fail_unless (gst_buffer_get_size (GST_BUFFER (g_list_first (buffers)->data))); +} + +GST_END_TEST; + +GST_START_TEST (test_tags) +{ + GstBuffer *buffer; + gint buf_size = 4096; + guint8 *dp; + gboolean found_maximum_bitrate = FALSE; + + fail_unless (gst_element_set_state (mulawenc, GST_STATE_PLAYING) == + GST_STATE_CHANGE_SUCCESS, "could not change state to playing"); + + buffer = gst_buffer_new (); + dp = g_malloc0 (buf_size); + gst_buffer_append_memory (buffer, + gst_memory_new_wrapped (0, dp, buf_size, 0, buf_size, dp, g_free)); + ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1); + + fail_unless (gst_pad_push (mysrcpad, buffer) == GST_FLOW_OK); + gst_pad_sticky_events_foreach (mysinkpad, check_for_maximum_bitrate, + &found_maximum_bitrate); + fail_unless (found_maximum_bitrate); +} + +GST_END_TEST; + +static Suite * +mulawenc_suite (void) +{ + Suite *s = suite_create ("mulawenc"); + TCase *tc_chain = tcase_create ("mulawenc"); + + tcase_add_checked_fixture (tc_chain, mulawenc_setup, mulawenc_teardown); + + suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_one_buffer); + tcase_add_test (tc_chain, test_tags); + return s; +} + +GST_CHECK_MAIN (mulawenc) diff --git a/tests/check/elements/multifile.c b/tests/check/elements/multifile.c index 9679f93af5b51d7c7954a7efa777cd16f4f0b580..20770bb8fd49ee7959be0cb47dd298415bd4b4f5 100644 --- a/tests/check/elements/multifile.c +++ b/tests/check/elements/multifile.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -144,6 +144,7 @@ GST_START_TEST (test_multifilesink_key_unit) gchar *mfs_pattern; GstBuffer *buf; GstPad *sink; + GstSegment segment; tmpdir = g_get_tmp_dir (); template = g_build_filename (tmpdir, "multifile-test-XXXXXX", NULL); @@ -158,6 +159,11 @@ GST_START_TEST (test_multifilesink_key_unit) GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE); sink = gst_element_get_static_pad (mfs, "sink"); + + gst_pad_send_event (sink, gst_event_new_stream_start ("test")); + gst_segment_init (&segment, GST_FORMAT_TIME); + gst_pad_send_event (sink, gst_event_new_segment (&segment)); + buf = gst_buffer_new_and_alloc (4); gst_buffer_fill (buf, 0, "foo", 4); @@ -250,8 +256,57 @@ GST_START_TEST (test_multifilesrc) GST_END_TEST; +static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS_ANY); + +/* make sure stop_index is honoured even if the next target file exists */ +GST_START_TEST (test_multifilesrc_stop_index) +{ + GstElement *src; + GstEvent *event; + GstPad *sinkpad; + gchar *fn; + + src = gst_check_setup_element ("multifilesrc"); + fail_unless (src != NULL); + + fn = g_build_filename (GST_TEST_FILES_PATH, "image.jpg", NULL); + g_object_set (src, "location", fn, NULL); + g_free (fn); + + g_object_set (src, "stop-index", 5, NULL); + + sinkpad = gst_check_setup_sink_pad_by_name (src, &sinktemplate, "src"); + fail_unless (sinkpad != NULL); + gst_pad_set_active (sinkpad, TRUE); + + gst_element_set_state (src, GST_STATE_PLAYING); + + gst_element_get_state (src, NULL, NULL, -1); + + /* busy-loop for EOS */ + do { + g_usleep (G_USEC_PER_SEC / 10); + event = gst_pad_get_sticky_event (sinkpad, GST_EVENT_EOS, 0); + } while (event == NULL); + gst_event_unref (event); + + /* Range appears to be [ start, stop ] */ + fail_unless_equals_int (g_list_length (buffers), 5 + 1); + + gst_element_set_state (src, GST_STATE_NULL); + + gst_check_teardown_pad_by_name (src, "src"); + gst_check_teardown_element (src); +} + +GST_END_TEST; + + static Suite * -libvisual_suite (void) +multifile_suite (void) { Suite *s = suite_create ("multifile"); TCase *tc_chain = tcase_create ("general"); @@ -262,8 +317,9 @@ libvisual_suite (void) tcase_add_test (tc_chain, test_multifilesink_max_files); tcase_add_test (tc_chain, test_multifilesink_key_unit); tcase_add_test (tc_chain, test_multifilesrc); + tcase_add_test (tc_chain, test_multifilesrc_stop_index); return s; } -GST_CHECK_MAIN (libvisual); +GST_CHECK_MAIN (multifile); diff --git a/tests/check/elements/parser.c b/tests/check/elements/parser.c index 8b2ab42d4663c002865d70c4c5c6af0bdbceaa24..52ffed8aa9536983907bc3a991131379259a53af 100644 --- a/tests/check/elements/parser.c +++ b/tests/check/elements/parser.c @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -147,16 +147,18 @@ setup_element (const gchar * factory, GstStaticPadTemplate * sink_template, { GstElement *element; GstBus *bus; + gchar *caps_str = NULL; element = gst_check_setup_element (factory); srcpad = gst_check_setup_src_pad (element, src_template); + if (sink_caps) { + caps_str = gst_caps_to_string (sink_caps); + sink_template->static_caps.string = caps_str; + } sinkpad = gst_check_setup_sink_pad (element, sink_template); gst_pad_set_active (srcpad, TRUE); + gst_check_setup_events (srcpad, element, src_caps, GST_FORMAT_BYTES); gst_pad_set_active (sinkpad, TRUE); - if (src_caps) - fail_unless (gst_pad_set_caps (srcpad, src_caps)); - if (sink_caps) - fail_unless (gst_pad_set_caps (sinkpad, sink_caps)); bus = gst_bus_new (); gst_element_set_bus (element, bus); @@ -167,6 +169,7 @@ setup_element (const gchar * factory, GstStaticPadTemplate * sink_template, ts_counter = offset_counter = buffer_counter = 0; buffers = NULL; + g_free (caps_str); return element; } diff --git a/tests/check/elements/parser.h b/tests/check/elements/parser.h index 470f59421ac03f519c88cf979a2c270bc9ddd05b..c4867cd10364feb6a4e2260e3c0bdcd373d23729 100644 --- a/tests/check/elements/parser.h +++ b/tests/check/elements/parser.h @@ -19,8 +19,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/qtmux.c b/tests/check/elements/qtmux.c index c32a4c5c685516c36dc8a1ba8e2bdfb3e1a319c1..fe215565193449ace875472f9b0b903b92042df4 100644 --- a/tests/check/elements/qtmux.c +++ b/tests/check/elements/qtmux.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -103,7 +103,7 @@ GST_STATIC_PAD_TEMPLATE ("src", /* setup and teardown needs some special handling for muxer */ static GstPad * setup_src_pad (GstElement * element, - GstStaticPadTemplate * template, GstCaps * caps, const gchar * sinkname) + GstStaticPadTemplate * template, const gchar * sinkname) { GstPad *srcpad, *sinkpad; @@ -119,8 +119,6 @@ setup_src_pad (GstElement * element, GST_ELEMENT_NAME (element)); /* references are owned by: 1) us, 2) qtmux, 3) collect pads */ ASSERT_OBJECT_REFCOUNT (sinkpad, "sinkpad", 3); - if (caps) - fail_unless (gst_pad_set_caps (srcpad, caps)); fail_unless (gst_pad_link (srcpad, sinkpad) == GST_PAD_LINK_OK, "Could not link source and %s sink pads", GST_ELEMENT_NAME (element)); gst_object_unref (sinkpad); /* because we got it higher up */ @@ -162,7 +160,7 @@ setup_qtmux (GstStaticPadTemplate * srctemplate, const gchar * sinkname) GST_DEBUG ("setup_qtmux"); qtmux = gst_check_setup_element ("qtmux"); - mysrcpad = setup_src_pad (qtmux, srctemplate, NULL, sinkname); + mysrcpad = setup_src_pad (qtmux, srctemplate, sinkname); mysinkpad = gst_check_setup_sink_pad (qtmux, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); @@ -203,15 +201,18 @@ check_qtmux_pad (GstStaticPadTemplate * srctemplate, const gchar * sinkname, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); + gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test")); + + caps = gst_pad_get_pad_template_caps (mysrcpad); + gst_pad_set_caps (mysrcpad, caps); + gst_caps_unref (caps); + /* ensure segment (format) properly setup */ gst_segment_init (&segment, GST_FORMAT_TIME); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); inbuffer = gst_buffer_new_and_alloc (1); gst_buffer_memset (inbuffer, 0, 0, 1); - caps = gst_pad_get_pad_template_caps (mysrcpad); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); GST_BUFFER_TIMESTAMP (inbuffer) = 0; GST_BUFFER_DURATION (inbuffer) = 40 * GST_MSECOND; ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -292,15 +293,18 @@ check_qtmux_pad_fragmented (GstStaticPadTemplate * srctemplate, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); + gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test")); + + caps = gst_pad_get_pad_template_caps (mysrcpad); + gst_pad_set_caps (mysrcpad, caps); + gst_caps_unref (caps); + /* ensure segment (format) properly setup */ gst_segment_init (&segment, GST_FORMAT_TIME); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); inbuffer = gst_buffer_new_and_alloc (1); gst_buffer_memset (inbuffer, 0, 0, 1); - caps = gst_pad_get_pad_template_caps (mysrcpad); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); GST_BUFFER_TIMESTAMP (inbuffer) = 0; GST_BUFFER_DURATION (inbuffer) = 40 * GST_MSECOND; ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -522,6 +526,12 @@ GST_START_TEST (test_reuse) gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); + gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test")); + + caps = gst_pad_get_pad_template_caps (mysrcpad); + gst_pad_set_caps (mysrcpad, caps); + gst_caps_unref (caps); + /* ensure segment (format) properly setup */ gst_segment_init (&segment, GST_FORMAT_TIME); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); @@ -529,9 +539,6 @@ GST_START_TEST (test_reuse) inbuffer = gst_buffer_new_and_alloc (1); fail_unless (inbuffer != NULL); gst_buffer_memset (inbuffer, 0, 0, 1); - caps = gst_pad_get_pad_template_caps (mysrcpad); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); GST_BUFFER_TIMESTAMP (inbuffer) = 0; GST_BUFFER_DURATION (inbuffer) = 40 * GST_MSECOND; ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); @@ -803,10 +810,11 @@ test_average_bitrate_custom (const gchar * elementname, filesink = gst_element_factory_make ("filesink", NULL); g_object_set (filesink, "location", location, NULL); gst_element_link (qtmux, filesink); - mysrcpad = setup_src_pad (qtmux, tmpl, NULL, sinkpadname); + mysrcpad = setup_src_pad (qtmux, tmpl, sinkpadname); fail_unless (mysrcpad != NULL); gst_pad_set_active (mysrcpad, TRUE); + fail_unless (gst_element_set_state (filesink, GST_STATE_PLAYING) != GST_STATE_CHANGE_FAILURE, "could not set filesink to playing"); @@ -814,6 +822,12 @@ test_average_bitrate_custom (const gchar * elementname, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); + gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test")); + + caps = gst_pad_get_pad_template_caps (mysrcpad); + gst_pad_set_caps (mysrcpad, caps); + gst_caps_unref (caps); + /* ensure segment (format) properly setup */ gst_segment_init (&segment, GST_FORMAT_TIME); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); @@ -821,9 +835,6 @@ test_average_bitrate_custom (const gchar * elementname, for (i = 0; i < 3; i++) { inbuffer = gst_buffer_new_and_alloc (bytes[i]); gst_buffer_memset (inbuffer, 0, 0, bytes[i]); - caps = gst_pad_get_pad_template_caps (mysrcpad); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); GST_BUFFER_TIMESTAMP (inbuffer) = total_duration; GST_BUFFER_DURATION (inbuffer) = (GstClockTime) durations[i]; ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); diff --git a/tests/check/elements/rganalysis.c b/tests/check/elements/rganalysis.c index 5f19caf140ed06747def7c737b1a871a12eff3a8..1f6f6ee55712b6ea7afd1afe345e8b006e2773ab 100644 --- a/tests/check/elements/rganalysis.c +++ b/tests/check/elements/rganalysis.c @@ -226,12 +226,40 @@ send_flush_events (GstElement * element) gboolean res; GstPad *pad; - pad = gst_element_get_static_pad (element, "sink"); - res = gst_pad_send_event (pad, gst_event_new_flush_start ()); + pad = mysrcpad; + res = gst_pad_push_event (pad, gst_event_new_flush_start ()); fail_unless (res, "flush-start even not handledt"); - res = gst_pad_send_event (pad, gst_event_new_flush_stop (TRUE)); + res = gst_pad_push_event (pad, gst_event_new_flush_stop (TRUE)); fail_unless (res, "flush-stop event not handled"); - gst_object_unref (pad); +} + +static void +send_stream_start_event (GstElement * element) +{ + gboolean res; + GstPad *pad; + + pad = mysrcpad; + res = gst_pad_push_event (pad, gst_event_new_stream_start ("test")); + fail_unless (res, "STREAM_START event not handled"); +} + +static void +send_caps_event (const gchar * format, gint sample_rate, gint channels) +{ + GstCaps *caps; + + caps = gst_caps_new_simple ("audio/x-raw", + "format", G_TYPE_STRING, format, + "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, channels, + "layout", G_TYPE_STRING, "interleaved", NULL); + if (channels == 2) { + gst_caps_set_simple (caps, + "channel-mask", GST_TYPE_BITMASK, + G_GUINT64_CONSTANT (0x0000000000000003), NULL); + } + gst_pad_set_caps (mysrcpad, caps); + gst_caps_unref (caps); } static void @@ -241,21 +269,20 @@ send_segment_event (GstElement * element) gboolean res; GstPad *pad; - pad = gst_element_get_static_pad (element, "sink"); + pad = mysrcpad; gst_segment_init (&segment, GST_FORMAT_TIME); - res = gst_pad_send_event (pad, gst_event_new_segment (&segment)); + res = gst_pad_push_event (pad, gst_event_new_segment (&segment)); fail_unless (res, "SEGMENT event not handled"); - gst_object_unref (pad); } static void send_eos_event (GstElement * element) { GstBus *bus = gst_element_get_bus (element); - GstPad *pad = gst_element_get_static_pad (element, "sink"); + GstPad *pad = mysrcpad; gboolean res; - res = gst_pad_send_event (pad, gst_event_new_eos ()); + res = gst_pad_push_event (pad, gst_event_new_eos ()); fail_unless (res, "EOS event not handled"); /* There is no sink element, so _we_ post the EOS message on the bus here. Of @@ -265,19 +292,16 @@ send_eos_event (GstElement * element) fail_unless (gst_bus_post (bus, gst_message_new_eos (NULL))); gst_object_unref (bus); - gst_object_unref (pad); } static void send_tag_event (GstElement * element, GstTagList * tag_list) { - GstPad *pad = gst_element_get_static_pad (element, "sink"); + GstPad *pad = mysrcpad; GstEvent *event = gst_event_new_tag (tag_list); - fail_unless (gst_pad_send_event (pad, event), + fail_unless (gst_pad_push_event (pad, event), "Cannot send TAG event: Not handled."); - - gst_object_unref (pad); } static void @@ -296,11 +320,8 @@ poll_eos (GstElement * element) gst_object_unref (bus); } -/* This also polls for EOS since the TAG message comes right before the end of - * streams. */ - static GstTagList * -poll_tags (GstElement * element) +poll_tags_only (GstElement * element) { GstBus *bus = gst_element_get_bus (element); GstTagList *tag_list; @@ -313,6 +334,17 @@ poll_tags (GstElement * element) gst_message_unref (message); gst_object_unref (bus); + return tag_list; +} + +/* This also polls for EOS since the TAG message comes right before the end of + * streams. */ + +static GstTagList * +poll_tags_followed_by_eos (GstElement * element) +{ + GstTagList *tag_list = poll_tags_only (element); + poll_eos (element); return tag_list; @@ -407,7 +439,6 @@ test_buffer_const_float_mono (gint sample_rate, gsize n_frames, gfloat value) GstBuffer *buf = gst_buffer_new_and_alloc (n_frames * sizeof (gfloat)); GstMapInfo map; gfloat *data; - GstCaps *caps; gint i; gst_buffer_map (buf, &map, GST_MAP_WRITE); @@ -416,13 +447,6 @@ test_buffer_const_float_mono (gint sample_rate, gsize n_frames, gfloat value) *data++ = value; gst_buffer_unmap (buf, &map); - caps = gst_caps_new_simple ("audio/x-raw", - "format", G_TYPE_STRING, GST_AUDIO_NE (F32), - "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, 1, - "layout", G_TYPE_STRING, "interleaved", NULL); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (buf, "buf", 1); return buf; @@ -435,7 +459,6 @@ test_buffer_const_float_stereo (gint sample_rate, gsize n_frames, GstBuffer *buf = gst_buffer_new_and_alloc (n_frames * sizeof (gfloat) * 2); GstMapInfo map; gfloat *data; - GstCaps *caps; gint i; gst_buffer_map (buf, &map, GST_MAP_WRITE); @@ -446,15 +469,6 @@ test_buffer_const_float_stereo (gint sample_rate, gsize n_frames, } gst_buffer_unmap (buf, &map); - caps = gst_caps_new_simple ("audio/x-raw", - "format", G_TYPE_STRING, GST_AUDIO_NE (F32), - "layout", G_TYPE_STRING, "interleaved", - "rate", G_TYPE_INT, sample_rate, - "channels", G_TYPE_INT, 2, - "channel-mask", GST_TYPE_BITMASK, (gint64) 0x3, NULL); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (buf, "buf", 1); return buf; @@ -467,7 +481,6 @@ test_buffer_const_int16_mono (gint sample_rate, gint depth, gsize n_frames, GstBuffer *buf = gst_buffer_new_and_alloc (n_frames * sizeof (gint16)); gint16 *data; GstMapInfo map; - GstCaps *caps; gint i; gst_buffer_map (buf, &map, GST_MAP_WRITE); @@ -476,13 +489,6 @@ test_buffer_const_int16_mono (gint sample_rate, gint depth, gsize n_frames, *data++ = value; gst_buffer_unmap (buf, &map); - caps = gst_caps_new_simple ("audio/x-raw", - "format", G_TYPE_STRING, GST_AUDIO_NE (S16), - "layout", G_TYPE_STRING, "interleaved", - "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, 1, NULL); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (buf, "buf", 1); return buf; @@ -495,7 +501,6 @@ test_buffer_const_int16_stereo (gint sample_rate, gint depth, gsize n_frames, GstBuffer *buf = gst_buffer_new_and_alloc (n_frames * sizeof (gint16) * 2); gint16 *data; GstMapInfo map; - GstCaps *caps; gint i; gst_buffer_map (buf, &map, GST_MAP_WRITE); @@ -506,14 +511,6 @@ test_buffer_const_int16_stereo (gint sample_rate, gint depth, gsize n_frames, } gst_buffer_unmap (buf, &map); - caps = gst_caps_new_simple ("audio/x-raw", - "format", G_TYPE_STRING, GST_AUDIO_NE (S16), - "layout", G_TYPE_STRING, "interleaved", - "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, 2, - "channel-mask", GST_TYPE_BITMASK, (gint64) 0x3, NULL); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (buf, "buf", 1); return buf; @@ -529,7 +526,6 @@ test_buffer_square_float_mono (gint * accumulator, gint sample_rate, GstBuffer *buf = gst_buffer_new_and_alloc (n_frames * sizeof (gfloat)); gfloat *data; GstMapInfo map; - GstCaps *caps; gint i; gst_buffer_map (buf, &map, GST_MAP_WRITE); @@ -545,13 +541,6 @@ test_buffer_square_float_mono (gint * accumulator, gint sample_rate, } gst_buffer_unmap (buf, &map); - caps = gst_caps_new_simple ("audio/x-raw", - "format", G_TYPE_STRING, GST_AUDIO_NE (F32), - "layout", G_TYPE_STRING, "interleaved", - "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, 1, NULL); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (buf, "buf", 1); return buf; @@ -564,7 +553,6 @@ test_buffer_square_float_stereo (gint * accumulator, gint sample_rate, GstBuffer *buf = gst_buffer_new_and_alloc (n_frames * sizeof (gfloat) * 2); gfloat *data; GstMapInfo map; - GstCaps *caps; gint i; gst_buffer_map (buf, &map, GST_MAP_WRITE); @@ -583,14 +571,6 @@ test_buffer_square_float_stereo (gint * accumulator, gint sample_rate, } gst_buffer_unmap (buf, &map); - caps = gst_caps_new_simple ("audio/x-raw", - "format", G_TYPE_STRING, GST_AUDIO_NE (F32), - "layout", G_TYPE_STRING, "interleaved", - "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, 2, - "channel-mask", GST_TYPE_BITMASK, (gint64) 0x3, NULL); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (buf, "buf", 1); return buf; @@ -603,7 +583,6 @@ test_buffer_square_int16_mono (gint * accumulator, gint sample_rate, GstBuffer *buf = gst_buffer_new_and_alloc (n_frames * sizeof (gint16)); gint16 *data; GstMapInfo map; - GstCaps *caps; gint i; gst_buffer_map (buf, &map, GST_MAP_WRITE); @@ -619,13 +598,6 @@ test_buffer_square_int16_mono (gint * accumulator, gint sample_rate, } gst_buffer_unmap (buf, &map); - caps = gst_caps_new_simple ("audio/x-raw", - "format", G_TYPE_STRING, GST_AUDIO_NE (S16), - "layout", G_TYPE_STRING, "interleaved", - "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, 1, NULL); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (buf, "buf", 1); return buf; @@ -638,7 +610,6 @@ test_buffer_square_int16_stereo (gint * accumulator, gint sample_rate, GstBuffer *buf = gst_buffer_new_and_alloc (n_frames * sizeof (gint16) * 2); gint16 *data; GstMapInfo map; - GstCaps *caps; gint i; gst_buffer_map (buf, &map, GST_MAP_WRITE); @@ -657,14 +628,6 @@ test_buffer_square_int16_stereo (gint * accumulator, gint sample_rate, } gst_buffer_unmap (buf, &map); - caps = gst_caps_new_simple ("audio/x-raw", - "format", G_TYPE_STRING, GST_AUDIO_NE (S16), - "layout", G_TYPE_STRING, "interleaved", - "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, 2, - "channel-mask", GST_TYPE_BITMASK, (gint64) 0x3, NULL); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (buf, "buf", 1); return buf; @@ -703,6 +666,7 @@ GST_START_TEST (test_no_buffer_album_1) set_playing_state (element); /* Single track: */ + send_stream_start_event (element); send_segment_event (element); send_eos_event (element); poll_eos (element); @@ -766,7 +730,7 @@ GST_START_TEST (test_no_buffer_album_2) set_playing_state (element); /* No buffer for the first track. */ - + send_stream_start_event (element); send_segment_event (element); send_eos_event (element); /* No tags should be posted, there was nothing to analyze: */ @@ -776,12 +740,13 @@ GST_START_TEST (test_no_buffer_album_2) /* A test waveform with known gain result as second track: */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (F32), 44100, 1); send_segment_event (element); for (i = 20; i--;) push_buffer (test_buffer_square_float_mono (&accumulator, 44100, 512, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, -6.20); /* Album is not finished yet: */ @@ -795,7 +760,7 @@ GST_START_TEST (test_no_buffer_album_2) send_segment_event (element); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_album_peak (tag_list, 0.25); fail_unless_album_gain (tag_list, -6.20); /* No track tags should be posted, as there was no data for it: */ @@ -815,6 +780,8 @@ GST_START_TEST (test_empty_buffers) set_playing_state (element); /* Single track: */ + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 44100, 2); send_segment_event (element); push_buffer (test_buffer_const_float_stereo (44100, 0, 0.0, 0.0)); send_eos_event (element); @@ -875,10 +842,12 @@ GST_START_TEST (test_peak_float) GstTagList *tag_list; set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_float_stereo (8000, 512, -1.369, 0.0)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 1.369); gst_tag_list_unref (tag_list); @@ -887,16 +856,17 @@ GST_START_TEST (test_peak_float) send_segment_event (element); push_buffer (test_buffer_const_float_stereo (8000, 512, 0.0, -1.369)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 1.369); gst_tag_list_unref (tag_list); /* Mono. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (F32), 8000, 1); send_segment_event (element); push_buffer (test_buffer_const_float_mono (8000, 512, -1.369)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 1.369); gst_tag_list_unref (tag_list); @@ -913,55 +883,62 @@ GST_START_TEST (test_peak_int16_16) set_playing_state (element); /* Half amplitude. */ + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_int16_stereo (8000, 16, 512, 1 << 14, 0)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.5); gst_tag_list_unref (tag_list); /* Swapped channels. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_int16_stereo (8000, 16, 512, 0, 1 << 14)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.5); gst_tag_list_unref (tag_list); /* Mono. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 1); send_segment_event (element); push_buffer (test_buffer_const_int16_mono (8000, 16, 512, 1 << 14)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.5); gst_tag_list_unref (tag_list); /* Half amplitude, negative variant. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_int16_stereo (8000, 16, 512, -1 << 14, 0)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.5); gst_tag_list_unref (tag_list); /* Swapped channels. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_int16_stereo (8000, 16, 512, 0, -1 << 14)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.5); gst_tag_list_unref (tag_list); /* Mono. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 1); send_segment_event (element); push_buffer (test_buffer_const_int16_mono (8000, 16, 512, -1 << 14)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.5); gst_tag_list_unref (tag_list); @@ -972,56 +949,62 @@ GST_START_TEST (test_peak_int16_16) * -32768! */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_int16_stereo (8000, 16, 512, 32767, 0)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 32767. / 32768.); gst_tag_list_unref (tag_list); /* Swapped channels. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_int16_stereo (8000, 16, 512, 0, 32767)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 32767. / 32768.); gst_tag_list_unref (tag_list); /* Mono. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 1); send_segment_event (element); push_buffer (test_buffer_const_int16_mono (8000, 16, 512, 32767)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 32767. / 32768.); gst_tag_list_unref (tag_list); /* Negative variant, reaching 1.0. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_int16_stereo (8000, 16, 512, -32768, 0)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 1.0); gst_tag_list_unref (tag_list); /* Swapped channels. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_int16_stereo (8000, 16, 512, 0, -32768)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 1.0); gst_tag_list_unref (tag_list); /* Mono. */ send_flush_events (element); + send_caps_event (GST_AUDIO_NE (S16), 8000, 1); send_segment_event (element); push_buffer (test_buffer_const_int16_mono (8000, 16, 512, -32768)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 1.0); gst_tag_list_unref (tag_list); @@ -1038,10 +1021,12 @@ GST_START_TEST (test_peak_album) g_object_set (element, "num-tracks", 2, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_float_stereo (8000, 1024, 1.0, 0.0)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 1.0); fail_if_album_tags (tag_list); gst_tag_list_unref (tag_list); @@ -1051,7 +1036,7 @@ GST_START_TEST (test_peak_album) send_segment_event (element); push_buffer (test_buffer_const_float_stereo (8000, 1024, 0.0, 0.5)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.5); fail_unless_album_peak (tag_list, 1.0); gst_tag_list_unref (tag_list); @@ -1064,7 +1049,7 @@ GST_START_TEST (test_peak_album) send_segment_event (element); push_buffer (test_buffer_const_float_stereo (8000, 1024, 0.4, 0.4)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.4); fail_if_album_tags (tag_list); gst_tag_list_unref (tag_list); @@ -1074,7 +1059,7 @@ GST_START_TEST (test_peak_album) send_segment_event (element); push_buffer (test_buffer_const_float_stereo (8000, 1024, 0.45, 0.45)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.45); fail_if_album_tags (tag_list); gst_tag_list_unref (tag_list); @@ -1084,7 +1069,7 @@ GST_START_TEST (test_peak_album) send_segment_event (element); push_buffer (test_buffer_const_float_stereo (8000, 1024, 0.2, 0.2)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.2); fail_unless_album_peak (tag_list, 0.45); gst_tag_list_unref (tag_list); @@ -1096,7 +1081,7 @@ GST_START_TEST (test_peak_album) send_segment_event (element); push_buffer (test_buffer_const_float_stereo (8000, 1024, 0.1, 0.1)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.1); fail_if_album_tags (tag_list); gst_tag_list_unref (tag_list); @@ -1115,10 +1100,12 @@ GST_START_TEST (test_peak_track_album) set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 8000, 1); send_segment_event (element); push_buffer (test_buffer_const_float_mono (8000, 1024, 1.0)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 1.0); fail_if_album_tags (tag_list); gst_tag_list_unref (tag_list); @@ -1128,7 +1115,7 @@ GST_START_TEST (test_peak_track_album) send_segment_event (element); push_buffer (test_buffer_const_float_mono (8000, 1024, 0.5)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.5); fail_unless_album_peak (tag_list, 0.5); gst_tag_list_unref (tag_list); @@ -1152,10 +1139,12 @@ GST_START_TEST (test_peak_album_abort_to_track) g_object_set (element, "num-tracks", 2, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 8000, 2); send_segment_event (element); push_buffer (test_buffer_const_float_stereo (8000, 1024, 1.0, 0.0)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 1.0); fail_if_album_tags (tag_list); gst_tag_list_unref (tag_list); @@ -1167,7 +1156,7 @@ GST_START_TEST (test_peak_album_abort_to_track) send_segment_event (element); push_buffer (test_buffer_const_float_stereo (8000, 1024, 0.0, 0.5)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.5); fail_if_album_tags (tag_list); gst_tag_list_unref (tag_list); @@ -1189,13 +1178,15 @@ GST_START_TEST (test_gain_album) /* The three tracks are constructed such that if any of these is in fact * ignored for the album gain, the album gain will differ. */ + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 44100, 2); send_segment_event (element); accumulator = 0; for (i = 8; i--;) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.75, 0.75)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.75); fail_unless_track_gain (tag_list, -15.70); fail_if_album_tags (tag_list); @@ -1208,7 +1199,7 @@ GST_START_TEST (test_gain_album) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.5, 0.5)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.5); fail_unless_track_gain (tag_list, -12.22); fail_if_album_tags (tag_list); @@ -1222,7 +1213,7 @@ GST_START_TEST (test_gain_album) 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, -6.20); fail_unless_album_peak (tag_list, 0.75); @@ -1248,6 +1239,8 @@ GST_START_TEST (test_forced) g_object_set (element, "forced", FALSE, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 44100, 2); send_segment_event (element); tag_list = gst_tag_list_new_empty (); /* Provided values are totally arbitrary. */ @@ -1258,8 +1251,13 @@ GST_START_TEST (test_forced) for (i = 20; i--;) push_buffer (test_buffer_const_float_stereo (44100, 512, 0.5, 0.5)); send_eos_event (element); + /* This fails if a tag message is generated: */ - poll_eos (element); + /* Same values as above */ + tag_list = poll_tags_followed_by_eos (element); + fail_unless_track_gain (tag_list, 2.21); + fail_unless_track_peak (tag_list, 1.0); + gst_tag_list_unref (tag_list); /* Now back to a track without tags. */ send_flush_events (element); @@ -1268,7 +1266,7 @@ GST_START_TEST (test_forced) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (44100)); gst_tag_list_unref (tag_list); @@ -1290,6 +1288,8 @@ GST_START_TEST (test_forced_separate) g_object_set (element, "forced", FALSE, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 44100, 2); send_segment_event (element); tag_list = gst_tag_list_new_empty (); gst_tag_list_add (tag_list, GST_TAG_MERGE_APPEND, GST_TAG_TRACK_GAIN, 2.21, @@ -1305,8 +1305,15 @@ GST_START_TEST (test_forced_separate) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.5, 0.5)); send_eos_event (element); - /* This fails if a tag message is generated: */ - poll_eos (element); + + /* Same values as above */ + tag_list = poll_tags_only (element); + fail_unless_track_gain (tag_list, 2.21); + gst_tag_list_unref (tag_list); + + tag_list = poll_tags_followed_by_eos (element); + fail_unless_track_peak (tag_list, 1.0); + gst_tag_list_unref (tag_list); /* Now a track without tags. */ send_flush_events (element); @@ -1316,7 +1323,7 @@ GST_START_TEST (test_forced_separate) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (44100)); fail_if_album_tags (tag_list); @@ -1343,6 +1350,8 @@ GST_START_TEST (test_forced_after_data) g_object_set (element, "forced", FALSE, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 8000, 2); send_segment_event (element); for (i = 20; i--;) push_buffer (test_buffer_const_float_stereo (8000, 512, 0.5, 0.5)); @@ -1353,7 +1362,12 @@ GST_START_TEST (test_forced_after_data) send_tag_event (element, tag_list); send_eos_event (element); - poll_eos (element); + + /* Same values as above */ + tag_list = poll_tags_followed_by_eos (element); + fail_unless_track_gain (tag_list, 2.21); + fail_unless_track_peak (tag_list, 1.0); + gst_tag_list_unref (tag_list); send_flush_events (element); send_segment_event (element); @@ -1362,7 +1376,7 @@ GST_START_TEST (test_forced_after_data) push_buffer (test_buffer_square_float_stereo (&accumulator, 8000, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (8000)); gst_tag_list_unref (tag_list); @@ -1385,6 +1399,8 @@ GST_START_TEST (test_forced_album) g_object_set (element, "forced", FALSE, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 44100, 2); send_segment_event (element); tag_list = gst_tag_list_new_empty (); /* Provided values are totally arbitrary. */ @@ -1397,8 +1413,12 @@ GST_START_TEST (test_forced_album) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.5, 0.5)); send_eos_event (element); - /* This fails if a tag message is generated: */ - poll_eos (element); + + /* Same values as above */ + tag_list = poll_tags_followed_by_eos (element); + fail_unless_track_gain (tag_list, 2.21); + fail_unless_track_peak (tag_list, 1.0); + gst_tag_list_unref (tag_list); /* Now an album without tags. */ g_object_set (element, "num-tracks", 2, NULL); @@ -1410,7 +1430,7 @@ GST_START_TEST (test_forced_album) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (44100)); fail_if_album_tags (tag_list); @@ -1424,7 +1444,7 @@ GST_START_TEST (test_forced_album) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (44100)); fail_unless_album_peak (tag_list, 0.25); @@ -1447,6 +1467,8 @@ GST_START_TEST (test_forced_album_skip) g_object_set (element, "forced", FALSE, "num-tracks", 2, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 8000, 2); send_segment_event (element); tag_list = gst_tag_list_new_empty (); /* Provided values are totally arbitrary. */ @@ -1459,7 +1481,13 @@ GST_START_TEST (test_forced_album_skip) push_buffer (test_buffer_square_float_stereo (&accumulator, 8000, 512, 0.25, 0.25)); send_eos_event (element); - poll_eos (element); + + /* Same values as above */ + tag_list = poll_tags_followed_by_eos (element); + fail_unless_track_gain (tag_list, 2.21); + fail_unless_track_peak (tag_list, 0.75); + gst_tag_list_unref (tag_list); + fail_unless_num_tracks (element, 1); /* This track has no tags, but needs to be skipped anyways since we @@ -1480,7 +1508,7 @@ GST_START_TEST (test_forced_album_skip) push_buffer (test_buffer_square_float_stereo (&accumulator, 8000, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (8000)); fail_if_album_tags (tag_list); @@ -1501,12 +1529,14 @@ GST_START_TEST (test_forced_album_no_skip) g_object_set (element, "forced", FALSE, "num-tracks", 2, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 8000, 2); send_segment_event (element); for (i = 20; i--;) push_buffer (test_buffer_square_float_stereo (&accumulator, 8000, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (8000)); fail_if_album_tags (tag_list); @@ -1526,7 +1556,15 @@ GST_START_TEST (test_forced_album_no_skip) for (i = 20; i--;) push_buffer (test_buffer_const_float_stereo (8000, 512, 0.0, 0.0)); send_eos_event (element); - tag_list = poll_tags (element); + + /* the first batch from the tags */ + tag_list = poll_tags_only (element); + fail_unless_track_peak (tag_list, 0.75); + fail_unless_track_gain (tag_list, 2.21); + gst_tag_list_unref (tag_list); + + /* the second from the processing */ + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.0); fail_unless_track_gain (tag_list, SILENCE_GAIN); /* Second track was just silence so the album peak equals the first @@ -1553,12 +1591,14 @@ GST_START_TEST (test_forced_abort_album_no_skip) g_object_set (element, "forced", FALSE, "num-tracks", 2, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 8000, 2); send_segment_event (element); for (i = 20; i--;) push_buffer (test_buffer_square_float_stereo (&accumulator, 8000, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (8000)); fail_if_album_tags (tag_list); @@ -1581,7 +1621,11 @@ GST_START_TEST (test_forced_abort_album_no_skip) for (i = 20; i--;) push_buffer (test_buffer_const_float_stereo (8000, 512, 0.0, 0.0)); send_eos_event (element); - poll_eos (element); + + tag_list = poll_tags_followed_by_eos (element); + fail_unless_track_peak (tag_list, 0.75); + fail_unless_track_gain (tag_list, 2.21); + gst_tag_list_unref (tag_list); cleanup_rganalysis (element); } @@ -1598,12 +1642,14 @@ GST_START_TEST (test_reference_level) set_playing_state (element); + send_stream_start_event (element); + send_caps_event (GST_AUDIO_NE (F32), 44100, 2); send_segment_event (element); for (i = 20; i--;) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (44100)); fail_if_album_tags (tag_list); @@ -1620,7 +1666,7 @@ GST_START_TEST (test_reference_level) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (44100) - 6.); fail_if_album_tags (tag_list); @@ -1636,7 +1682,7 @@ GST_START_TEST (test_reference_level) push_buffer (test_buffer_square_float_stereo (&accumulator, 44100, 512, 0.25, 0.25)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, get_expected_gain (44100) - 6.); fail_unless_album_peak (tag_list, 0.25); @@ -1661,24 +1707,29 @@ GST_START_TEST (test_all_formats) gint i, j; set_playing_state (element); + send_stream_start_event (element); for (i = G_N_ELEMENTS (supported_rates); i--;) { send_flush_events (element); + send_caps_event (GST_AUDIO_NE (F32), supported_rates[i].sample_rate, 2); send_segment_event (element); accumulator = 0; for (j = 0; j < 4; j++) push_buffer (test_buffer_square_float_stereo (&accumulator, supported_rates[i].sample_rate, 512, 0.25, 0.25)); + send_caps_event (GST_AUDIO_NE (F32), supported_rates[i].sample_rate, 1); for (j = 0; j < 3; j++) push_buffer (test_buffer_square_float_mono (&accumulator, supported_rates[i].sample_rate, 512, 0.25)); + send_caps_event (GST_AUDIO_NE (S16), supported_rates[i].sample_rate, 2); for (j = 0; j < 4; j++) push_buffer (test_buffer_square_int16_stereo (&accumulator, supported_rates[i].sample_rate, 16, 512, 1 << 13, 1 << 13)); + send_caps_event (GST_AUDIO_NE (S16), supported_rates[i].sample_rate, 1); for (j = 0; j < 3; j++) push_buffer (test_buffer_square_int16_mono (&accumulator, supported_rates[i].sample_rate, 16, 512, 1 << 13)); send_eos_event (element); - tag_list = poll_tags (element); + tag_list = poll_tags_followed_by_eos (element); fail_unless_track_peak (tag_list, 0.25); fail_unless_track_gain (tag_list, supported_rates[i].gain); gst_tag_list_unref (tag_list); @@ -1703,12 +1754,15 @@ GST_END_TEST; gint i; \ \ set_playing_state (element); \ + send_stream_start_event (element); \ + send_caps_event (GST_AUDIO_NE (F32), sample_rate, 1); \ + send_segment_event (element); \ \ for (i = 0; i < 20; i++) \ push_buffer (test_buffer_square_float_mono (&accumulator, \ sample_rate, 512, 0.25)); \ send_eos_event (element); \ - tag_list = poll_tags (element); \ + tag_list = poll_tags_followed_by_eos (element); \ fail_unless_track_peak (tag_list, 0.25); \ fail_unless_track_gain (tag_list, \ get_expected_gain (sample_rate)); \ @@ -1728,12 +1782,15 @@ GST_END_TEST; gint i; \ \ set_playing_state (element); \ + send_stream_start_event (element); \ + send_caps_event (GST_AUDIO_NE (F32), sample_rate, 2); \ + send_segment_event (element); \ \ for (i = 0; i < 20; i++) \ push_buffer (test_buffer_square_float_stereo (&accumulator, \ sample_rate, 512, 0.25, 0.25)); \ send_eos_event (element); \ - tag_list = poll_tags (element); \ + tag_list = poll_tags_followed_by_eos (element); \ fail_unless_track_peak (tag_list, 0.25); \ fail_unless_track_gain (tag_list, \ get_expected_gain (sample_rate)); \ @@ -1753,13 +1810,16 @@ GST_END_TEST; gint i; \ \ set_playing_state (element); \ + send_stream_start_event (element); \ + send_caps_event (GST_AUDIO_NE (S16), sample_rate, 1); \ + send_segment_event (element); \ \ for (i = 0; i < 20; i++) \ push_buffer (test_buffer_square_int16_mono (&accumulator, \ sample_rate, depth, 512, 1 << (13 + depth - 16))); \ \ send_eos_event (element); \ - tag_list = poll_tags (element); \ + tag_list = poll_tags_followed_by_eos (element); \ fail_unless_track_peak (tag_list, 0.25); \ fail_unless_track_gain (tag_list, \ get_expected_gain (sample_rate)); \ @@ -1779,13 +1839,16 @@ GST_END_TEST; gint i; \ \ set_playing_state (element); \ + send_stream_start_event (element); \ + send_caps_event (GST_AUDIO_NE (S16), sample_rate, 2); \ + send_segment_event (element); \ \ for (i = 0; i < 20; i++) \ push_buffer (test_buffer_square_int16_stereo (&accumulator, \ sample_rate, depth, 512, 1 << (13 + depth - 16), \ 1 << (13 + depth - 16))); \ send_eos_event (element); \ - tag_list = poll_tags (element); \ + tag_list = poll_tags_followed_by_eos (element); \ fail_unless_track_peak (tag_list, 0.25); \ fail_unless_track_gain (tag_list, \ get_expected_gain (sample_rate)); \ @@ -1858,13 +1921,13 @@ rganalysis_suite (void) tcase_add_test (tc_chain, test_gain_album); - tcase_skip_broken_test (tc_chain, test_forced); - tcase_skip_broken_test (tc_chain, test_forced_separate); - tcase_skip_broken_test (tc_chain, test_forced_after_data); - tcase_skip_broken_test (tc_chain, test_forced_album); - tcase_skip_broken_test (tc_chain, test_forced_album_skip); - tcase_skip_broken_test (tc_chain, test_forced_album_no_skip); - tcase_skip_broken_test (tc_chain, test_forced_abort_album_no_skip); + tcase_add_test (tc_chain, test_forced); + tcase_add_test (tc_chain, test_forced_separate); + tcase_add_test (tc_chain, test_forced_after_data); + tcase_add_test (tc_chain, test_forced_album); + tcase_add_test (tc_chain, test_forced_album_skip); + tcase_add_test (tc_chain, test_forced_album_no_skip); + tcase_add_test (tc_chain, test_forced_abort_album_no_skip); tcase_add_test (tc_chain, test_reference_level); diff --git a/tests/check/elements/rglimiter.c b/tests/check/elements/rglimiter.c index 104df22585943b5bba4ddff075018c373ac81a71..926ca33dfee245cc861684647414b5444e72ddcb 100644 --- a/tests/check/elements/rglimiter.c +++ b/tests/check/elements/rglimiter.c @@ -99,20 +99,26 @@ static const gfloat test_output[] = { 0.99752737684336523, /* 2.0 */ }; -static GstBuffer * -create_test_buffer (void) +static void +setup_events (GstElement * element) { - GstBuffer *buf = gst_buffer_new_and_alloc (sizeof (test_input)); GstCaps *caps; - gst_buffer_fill (buf, 0, test_input, sizeof (test_input)); - caps = gst_caps_new_simple ("audio/x-raw", "rate", G_TYPE_INT, 44100, "channels", G_TYPE_INT, 1, "format", G_TYPE_STRING, GST_AUDIO_NE (F32), "layout", G_TYPE_STRING, "interleaved", NULL); - gst_pad_set_caps (mysrcpad, caps); + + gst_check_setup_events (mysrcpad, element, caps, GST_FORMAT_TIME); gst_caps_unref (caps); +} + +static GstBuffer * +create_test_buffer (void) +{ + GstBuffer *buf = gst_buffer_new_and_alloc (sizeof (test_input)); + + gst_buffer_fill (buf, 0, test_input, sizeof (test_input)); ASSERT_BUFFER_REFCOUNT (buf, "buf", 1); @@ -158,6 +164,7 @@ GST_START_TEST (test_disabled) g_object_set (element, "enabled", FALSE, NULL); set_playing_state (element); + setup_events (element); buf = create_test_buffer (); fail_unless (gst_pad_push (mysrcpad, buf) == GST_FLOW_OK); @@ -180,6 +187,7 @@ GST_START_TEST (test_limiting) GstBuffer *buf, *out_buf; set_playing_state (element); + setup_events (element); /* Mutable variant. */ buf = create_test_buffer (); @@ -220,6 +228,7 @@ GST_START_TEST (test_gap) GstMapInfo m1, m2; set_playing_state (element); + setup_events (element); buf = create_test_buffer (); GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_GAP); diff --git a/tests/check/elements/rgvolume.c b/tests/check/elements/rgvolume.c index 4c09d553ad93ab8ce46d5b01db18c57f2eed4796..47ed3b3438b40f84dd1cf6669918708fe1657e94 100644 --- a/tests/check/elements/rgvolume.c +++ b/tests/check/elements/rgvolume.c @@ -57,14 +57,8 @@ static GstBuffer *test_buffer_new (gfloat value); static gboolean event_func (GstPad * pad, GstObject * parent, GstEvent * event) { - GST_DEBUG ("received event %p", event); - /* not interested in caps event */ - if (GST_EVENT_TYPE (event) == GST_EVENT_CAPS) { - GST_DEBUG ("dropping caps event"); - gst_event_unref (event); - } else { - events = g_list_append (events, event); - } + GST_DEBUG ("received event %p (%s)", event, GST_EVENT_TYPE_NAME (event)); + events = g_list_append (events, event); return TRUE; } @@ -73,7 +67,6 @@ static GstElement * setup_rgvolume (void) { GstElement *element; - GstCaps *caps; GST_DEBUG ("setup_rgvolume"); element = gst_check_setup_element ("rgvolume"); @@ -86,41 +79,20 @@ setup_rgvolume (void) gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); - caps = gst_caps_from_string ("audio/x-raw, format = F32LE, " - "layout = interleaved, rate = 8000, channels = 1"); - gst_pad_set_caps (mysrcpad, caps); - gst_caps_unref (caps); - return element; } static void -send_newsegment_and_empty_buffer (void) +send_empty_buffer (void) { GstBuffer *buf; - GstEvent *ev; - GstSegment segment; - - fail_unless (g_list_length (events) == 0); - - gst_segment_init (&segment, GST_FORMAT_TIME); - ev = gst_event_new_segment (&segment); - fail_unless (gst_pad_push_event (mysrcpad, ev), - "Pushing newsegment event failed"); - /* makes caps event */ buf = test_buffer_new (0.0); gst_buffer_resize (buf, 0, 0); GST_BUFFER_DURATION (buf) = 0; GST_BUFFER_OFFSET_END (buf) = GST_BUFFER_OFFSET (buf); fail_unless (gst_pad_push (mysrcpad, buf) == GST_FLOW_OK); - fail_unless (g_list_length (events) == 1); - fail_unless (events->data == ev); - gst_mini_object_unref ((GstMiniObject *) events->data); - events = g_list_remove (events, ev); - fail_unless (g_list_length (events) == 0); - fail_unless (g_list_length (buffers) == 1); fail_unless (buffers->data == buf); gst_mini_object_unref ((GstMiniObject *) buffers->data); @@ -163,17 +135,6 @@ set_null_state (GstElement * element) "Could not set state to NULL"); } -static void -clear_last_event (GstEventType type) -{ - GList *last = g_list_last (events); - - fail_unless (last != NULL); - fail_unless_equals_int (GST_EVENT_TYPE (last->data), type); - gst_event_unref (GST_EVENT (last->data)); - events = g_list_delete_link (events, last); -} - static void send_flush_events (GstElement * element) { @@ -181,11 +142,31 @@ send_flush_events (GstElement * element) res = gst_pad_push_event (mysrcpad, gst_event_new_flush_start ()); fail_unless (res, "flush-start even not handled"); - clear_last_event (GST_EVENT_FLUSH_START); res = gst_pad_push_event (mysrcpad, gst_event_new_flush_stop (TRUE)); fail_unless (res, "flush-stop event not handled"); - clear_last_event (GST_EVENT_FLUSH_STOP); +} + +static void +send_stream_start_event (GstElement * element) +{ + gboolean res; + + res = gst_pad_push_event (mysrcpad, gst_event_new_stream_start ("test")); + fail_unless (res, "STREAM_START event not handled"); +} + +static void +send_caps_event (GstElement * element) +{ + GstCaps *caps; + gboolean res; + + caps = gst_caps_from_string ("audio/x-raw, format = F32LE, " + "layout = interleaved, rate = 8000, channels = 1"); + res = gst_pad_push_event (mysrcpad, gst_event_new_caps (caps)); + fail_unless (res, "CAPS event not handled"); + gst_caps_unref (caps); } static void @@ -197,7 +178,6 @@ send_segment_event (GstElement * element) gst_segment_init (&segment, GST_FORMAT_TIME); res = gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment)); fail_unless (res, "SEGMENT event not handled"); - clear_last_event (GST_EVENT_SEGMENT); } static void @@ -205,50 +185,49 @@ send_eos_event (GstElement * element) { GstEvent *event = gst_event_new_eos (); - GST_DEBUG ("events : %d", g_list_length (events)); - - fail_unless (g_list_length (events) == 0); fail_unless (gst_pad_push_event (mysrcpad, event), "Pushing EOS event failed"); - fail_unless (g_list_length (events) == 1); - fail_unless (events->data == event); - gst_mini_object_unref ((GstMiniObject *) events->data); - events = g_list_remove (events, event); } static GstEvent * send_tag_event (GstElement * element, GstEvent * event) { + GList *l; + GstTagList *tag_list; + gdouble dummy; + g_return_val_if_fail (event->type == GST_EVENT_TAG, NULL); - fail_unless (g_list_length (events) == 0); fail_unless (gst_pad_push_event (mysrcpad, event), "Pushing tag event failed"); - if (g_list_length (events) == 0) { - /* Event got filtered out. */ - event = NULL; - } else { - GstTagList *tag_list; - gdouble dummy; - - event = events->data; - events = g_list_remove (events, event); - - fail_unless (event->type == GST_EVENT_TAG); - gst_event_parse_tag (event, &tag_list); - - /* The element is supposed to filter out ReplayGain related tags. */ - fail_if (gst_tag_list_get_double (tag_list, GST_TAG_TRACK_GAIN, &dummy), - "tag event still contains track gain tag"); - fail_if (gst_tag_list_get_double (tag_list, GST_TAG_TRACK_PEAK, &dummy), - "tag event still contains track peak tag"); - fail_if (gst_tag_list_get_double (tag_list, GST_TAG_ALBUM_GAIN, &dummy), - "tag event still contains album gain tag"); - fail_if (gst_tag_list_get_double (tag_list, GST_TAG_ALBUM_PEAK, &dummy), - "tag event still contains album peak tag"); + event = NULL; + + for (l = g_list_last (events); l; l = l->prev) { + if (GST_EVENT_TYPE (l->data) == GST_EVENT_TAG) { + event = l->data; + events = g_list_delete_link (events, l); + break; + } } + /* Event got filtered out */ + if (event == NULL) + return NULL; + + fail_unless (event->type == GST_EVENT_TAG); + gst_event_parse_tag (event, &tag_list); + + /* The element is supposed to filter out ReplayGain related tags. */ + fail_if (gst_tag_list_get_double (tag_list, GST_TAG_TRACK_GAIN, &dummy), + "tag event still contains track gain tag"); + fail_if (gst_tag_list_get_double (tag_list, GST_TAG_TRACK_PEAK, &dummy), + "tag event still contains track peak tag"); + fail_if (gst_tag_list_get_double (tag_list, GST_TAG_ALBUM_GAIN, &dummy), + "tag event still contains album gain tag"); + fail_if (gst_tag_list_get_double (tag_list, GST_TAG_ALBUM_PEAK, &dummy), + "tag event still contains album peak tag"); + return event; } @@ -378,8 +357,11 @@ GST_START_TEST (test_events) gchar *artist; set_playing_state (element); + send_stream_start_event (element); + send_caps_event (element); + send_segment_event (element); - send_newsegment_and_empty_buffer (); + send_empty_buffer (); tag_list = gst_tag_list_new_empty (); gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE, @@ -422,8 +404,11 @@ GST_START_TEST (test_simple) g_object_set (element, "album-mode", FALSE, "headroom", +0.00, "pre-amp", -6.00, "fallback-gain", +1.23, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (element); + send_segment_event (element); - send_newsegment_and_empty_buffer (); + send_empty_buffer (); tag_list = gst_tag_list_new_empty (); gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE, @@ -467,8 +452,11 @@ GST_START_TEST (test_fallback_gain) g_object_set (element, "album-mode", FALSE, "headroom", 10.00, "pre-amp", -6.00, "fallback-gain", -3.00, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (element); + send_segment_event (element); - send_newsegment_and_empty_buffer (); + send_empty_buffer (); tag_list = gst_tag_list_new_empty (); gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE, @@ -516,8 +504,11 @@ GST_START_TEST (test_fallback_track) g_object_set (element, "album-mode", TRUE, "headroom", +0.00, "pre-amp", -6.00, "fallback-gain", +1.23, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (element); + send_segment_event (element); - send_newsegment_and_empty_buffer (); + send_empty_buffer (); tag_list = gst_tag_list_new_empty (); gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE, @@ -543,8 +534,11 @@ GST_START_TEST (test_fallback_album) g_object_set (element, "album-mode", FALSE, "headroom", +0.00, "pre-amp", -6.00, "fallback-gain", +1.23, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (element); + send_segment_event (element); - send_newsegment_and_empty_buffer (); + send_empty_buffer (); tag_list = gst_tag_list_new_empty (); gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE, @@ -567,8 +561,11 @@ GST_START_TEST (test_headroom) g_object_set (element, "album-mode", FALSE, "headroom", +0.00, "pre-amp", +0.00, "fallback-gain", +1.23, NULL); set_playing_state (element); + send_stream_start_event (element); + send_caps_event (element); + send_segment_event (element); - send_newsegment_and_empty_buffer (); + send_empty_buffer (); tag_list = gst_tag_list_new_empty (); gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE, @@ -618,7 +615,11 @@ GST_START_TEST (test_reference_level) "headroom", +0.00, "pre-amp", +0.00, "fallback-gain", +1.23, NULL); set_playing_state (element); - send_newsegment_and_empty_buffer (); + send_stream_start_event (element); + send_caps_event (element); + send_segment_event (element); + + send_empty_buffer (); tag_list = gst_tag_list_new_empty (); gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE, diff --git a/tests/check/elements/rtp-payloading.c b/tests/check/elements/rtp-payloading.c index 99e8e5f200a48303dc4c52232fc576cf4c328616..32d785fdaf9400a049527d307596c18d3fd8c5e1 100644 --- a/tests/check/elements/rtp-payloading.c +++ b/tests/check/elements/rtp-payloading.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> #include <stdlib.h> @@ -98,13 +98,14 @@ rtp_bus_callback (GstBus * bus, GstMessage * message, gpointer data) element_name = (message->src) ? gst_object_get_name (message->src) : NULL; gst_message_parse_error (message, &err, &debug); - /* FIXME: should we fail the test here? */ g_print ("\nError from element %s: %s\n%s\n\n", GST_STR_NULL (element_name), err->message, (debug) ? debug : ""); g_error_free (err); g_free (debug); g_free (element_name); + fail_if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ERROR); + g_main_loop_quit (mainloop); } break; @@ -649,6 +650,25 @@ GST_START_TEST (rtp_L16) "rtpL16pay", "rtpL16depay", 0, 0, FALSE); } +GST_END_TEST; + +static const guint8 rtp_L24_frame_data[] = + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static int rtp_L24_frame_data_size = 24; + +static int rtp_L24_frame_count = 1; + +GST_START_TEST (rtp_L24) +{ + rtp_pipeline_test (rtp_L24_frame_data, rtp_L24_frame_data_size, + rtp_L24_frame_count, + "audio/x-raw,format=S24BE,rate=1,channels=1,layout=(string)interleaved", + "rtpL24pay", "rtpL24depay", 0, 0, FALSE); +} + GST_END_TEST; static const guint8 rtp_mp2t_frame_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -783,6 +803,34 @@ GST_START_TEST (rtp_jpeg) } GST_END_TEST; + +GST_START_TEST (rtp_jpeg_width_greater_than_2040) +{ + rtp_pipeline_test (rtp_jpeg_frame_data, rtp_jpeg_frame_data_size, + rtp_jpeg_frame_count, "video/x-jpeg,height=2048,width=480", "rtpjpegpay", + "rtpjpegdepay", 0, 0, FALSE); +} + +GST_END_TEST; + +GST_START_TEST (rtp_jpeg_height_greater_than_2040) +{ + rtp_pipeline_test (rtp_jpeg_frame_data, rtp_jpeg_frame_data_size, + rtp_jpeg_frame_count, "video/x-jpeg,height=640,width=2048", "rtpjpegpay", + "rtpjpegdepay", 0, 0, FALSE); +} + +GST_END_TEST; + +GST_START_TEST (rtp_jpeg_width_and_height_greater_than_2040) +{ + rtp_pipeline_test (rtp_jpeg_frame_data, rtp_jpeg_frame_data_size, + rtp_jpeg_frame_count, "video/x-jpeg,height=2048,width=2048", "rtpjpegpay", + "rtpjpegdepay", 0, 0, FALSE); +} + +GST_END_TEST; + static const guint8 rtp_jpeg_list_frame_data[] = { /* SOF */ 0xFF, 0xC0, 0x00, 0x11, 0x08, 0x00, 0x08, 0x00, 0x08, 0x03, 0x00, 0x21, 0x08, 0x01, 0x11, 0x08, 0x02, 0x11, 0x08, @@ -812,6 +860,34 @@ GST_START_TEST (rtp_jpeg_list) } GST_END_TEST; + +GST_START_TEST (rtp_jpeg_list_width_greater_than_2040) +{ + rtp_pipeline_test (rtp_jpeg_list_frame_data, rtp_jpeg_list_frame_data_size, + rtp_jpeg_list_frame_count, "video/x-jpeg,height=2048,width=480", + "rtpjpegpay", "rtpjpegdepay", rtp_jpeg_list_bytes_sent, 0, TRUE); +} + +GST_END_TEST; + +GST_START_TEST (rtp_jpeg_list_height_greater_than_2040) +{ + rtp_pipeline_test (rtp_jpeg_list_frame_data, rtp_jpeg_list_frame_data_size, + rtp_jpeg_list_frame_count, "video/x-jpeg,height=640,width=2048", + "rtpjpegpay", "rtpjpegdepay", rtp_jpeg_list_bytes_sent, 0, TRUE); +} + +GST_END_TEST; + +GST_START_TEST (rtp_jpeg_list_width_and_height_greater_than_2040) +{ + rtp_pipeline_test (rtp_jpeg_list_frame_data, rtp_jpeg_list_frame_data_size, + rtp_jpeg_list_frame_count, "video/x-jpeg,height=2048,width=2048", + "rtpjpegpay", "rtpjpegdepay", rtp_jpeg_list_bytes_sent, 0, TRUE); +} + +GST_END_TEST; + static const guint8 rtp_g729_frame_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 @@ -860,6 +936,7 @@ rtp_payloading_suite (void) tcase_add_test (tc_chain, rtp_h264_list_gt_mtu); tcase_add_test (tc_chain, rtp_h264_list_gt_mtu_avc); tcase_add_test (tc_chain, rtp_L16); + tcase_add_test (tc_chain, rtp_L24); tcase_add_test (tc_chain, rtp_mp2t); tcase_add_test (tc_chain, rtp_mp4v); tcase_add_test (tc_chain, rtp_mp4v_list); @@ -867,7 +944,13 @@ rtp_payloading_suite (void) tcase_add_test (tc_chain, rtp_theora); tcase_add_test (tc_chain, rtp_vorbis); tcase_add_test (tc_chain, rtp_jpeg); + tcase_add_test (tc_chain, rtp_jpeg_width_greater_than_2040); + tcase_add_test (tc_chain, rtp_jpeg_height_greater_than_2040); + tcase_add_test (tc_chain, rtp_jpeg_width_and_height_greater_than_2040); tcase_add_test (tc_chain, rtp_jpeg_list); + tcase_add_test (tc_chain, rtp_jpeg_list_width_greater_than_2040); + tcase_add_test (tc_chain, rtp_jpeg_list_height_greater_than_2040); + tcase_add_test (tc_chain, rtp_jpeg_list_width_and_height_greater_than_2040); tcase_add_test (tc_chain, rtp_g729); return s; } diff --git a/tests/check/elements/rtpbin.c b/tests/check/elements/rtpbin.c index 9626b9633aaace3f7dc5c55dc252b76abf54ad6c..389d3330b1b2b57e78877dc92156d352dd95f2ea 100644 --- a/tests/check/elements/rtpbin.c +++ b/tests/check/elements/rtpbin.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -143,6 +143,7 @@ chain_rtp_packet (GstPad * pad, CleanupData * data) { GstFlowReturn res; static GstCaps *caps = NULL; + GstSegment segment; GstBuffer *buffer; GstMapInfo map; @@ -153,7 +154,10 @@ chain_rtp_packet (GstPad * pad, CleanupData * data) data->seqnum = 0; } - gst_pad_set_caps (pad, caps); + gst_pad_send_event (pad, gst_event_new_stream_start (gst_pad_get_name (pad))); + gst_pad_send_event (pad, gst_event_new_caps (caps)); + gst_segment_init (&segment, GST_FORMAT_TIME); + gst_pad_send_event (pad, gst_event_new_segment (&segment)); buffer = gst_buffer_new_and_alloc (sizeof (rtp_packet)); gst_buffer_map (buffer, &map, GST_MAP_WRITE); diff --git a/tests/check/elements/rtpbin_buffer_list.c b/tests/check/elements/rtpbin_buffer_list.c index e11c227dbdde9489589a5b8c94e426b814602317..b6a7793b0e69019c288adb1bb9b0a6db70233251 100644 --- a/tests/check/elements/rtpbin_buffer_list.c +++ b/tests/check/elements/rtpbin_buffer_list.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/rtpjitterbuffer.c b/tests/check/elements/rtpjitterbuffer.c index f10e15cd690c8bf84a2cdf201ddf8864fa1ce83b..bc868cba17b495079f11d23e6a6b712c5066b2a0 100644 --- a/tests/check/elements/rtpjitterbuffer.c +++ b/tests/check/elements/rtpjitterbuffer.c @@ -2,6 +2,9 @@ * * Copyright (C) 2009 Nokia Corporation and its subsidary(-ies) * contact: <stefan.kost@nokia.com> + * Copyright (C) 2012 Cisco Systems, Inc + * Authors: Kelley Rogers <kelro@cisco.com> + * Havard Graff <hgraff@cisco.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -15,11 +18,14 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> +#include <gst/check/gsttestclock.h> + +#include <gst/rtp/gstrtpbuffer.h> /* For ease of programming we use globals to keep refs for our floating * src and sink pads we create; otherwise we always have to do get_pad, @@ -98,7 +104,7 @@ setup_jitterbuffer (gint num_buffers) /* create n buffers */ caps = gst_caps_from_string (RTP_CAPS_STRING); - gst_pad_set_caps (mysrcpad, caps); + gst_check_setup_events (mysrcpad, jitterbuffer, caps, GST_FORMAT_TIME); gst_caps_unref (caps); for (i = 0; i < num_buffers; i++) { @@ -319,6 +325,530 @@ GST_START_TEST (test_basetime) GST_END_TEST; +static const guint payload_size = 160; +static const guint clock_rate = 8000; +static const guint pcmu_payload_type = 0; +static const guint test_ssrc = 0x01BADBAD; + +typedef struct +{ + GstElement *jitter_buffer; + GstPad *test_sink_pad, *test_src_pad; + GstClock *clock; + GAsyncQueue *buf_queue; + GAsyncQueue *event_queue; + gint lost_event_count; +} TestData; + +static GstCaps * +generate_caps (void) +{ + return gst_caps_new_simple ("application/x-rtp", + "media", G_TYPE_STRING, "audio", + "clock-rate", G_TYPE_INT, clock_rate, + "encoding-name", G_TYPE_STRING, "PCMU", + "payload", G_TYPE_INT, pcmu_payload_type, + "ssrc", G_TYPE_UINT, test_ssrc, NULL); +} + +static GstBuffer * +generate_test_buffer (GstClockTime gst_ts, + gboolean marker_bit, guint seq_num, guint32 rtp_ts) +{ + GstBuffer *buf; + guint8 *payload; + guint i; + GstRTPBuffer rtp = GST_RTP_BUFFER_INIT; + + buf = gst_rtp_buffer_new_allocate (payload_size, 0, 0); + GST_BUFFER_TIMESTAMP (buf) = gst_ts; + + gst_rtp_buffer_map (buf, GST_MAP_READWRITE, &rtp); + gst_rtp_buffer_set_payload_type (&rtp, pcmu_payload_type); + gst_rtp_buffer_set_marker (&rtp, marker_bit); + gst_rtp_buffer_set_seq (&rtp, seq_num); + gst_rtp_buffer_set_timestamp (&rtp, rtp_ts); + gst_rtp_buffer_set_ssrc (&rtp, test_ssrc); + + payload = gst_rtp_buffer_get_payload (&rtp); + for (i = 0; i < payload_size; i++) + payload[i] = 0xff; + + gst_rtp_buffer_unmap (&rtp); + + return buf; +} + +static GstFlowReturn +test_sink_pad_chain_cb (GstPad * pad, GstObject * parent, GstBuffer * buffer) +{ + TestData *data = gst_pad_get_element_private (pad); + g_async_queue_push (data->buf_queue, buffer); + return GST_FLOW_OK; +} + +static gboolean +test_sink_pad_event_cb (GstPad * pad, GstObject * parent, GstEvent * event) +{ + TestData *data = gst_pad_get_element_private (pad); + const GstStructure *structure = gst_event_get_structure (event); + + GST_DEBUG ("got event %" GST_PTR_FORMAT, event); + + if (strcmp (gst_structure_get_name (structure), "GstRTPPacketLost") == 0) + data->lost_event_count++; + + g_async_queue_push (data->event_queue, event); + return TRUE; +} + +static void +setup_testharness (TestData * data) +{ + GstPad *jb_sink_pad, *jb_src_pad; + GstSegment seg; + GstMiniObject *obj; + + /* create the testclock */ + data->clock = gst_test_clock_new (); + g_assert (data->clock); + gst_test_clock_set_time (GST_TEST_CLOCK (data->clock), 0); + + /* rig up the jitter buffer */ + data->jitter_buffer = gst_element_factory_make ("rtpjitterbuffer", NULL); + g_assert (data->jitter_buffer); + gst_element_set_clock (data->jitter_buffer, data->clock); + g_object_set (data->jitter_buffer, "do-lost", TRUE, NULL); + g_assert_cmpint (gst_element_set_state (data->jitter_buffer, + GST_STATE_PLAYING), !=, GST_STATE_CHANGE_FAILURE); + + /* link in the test source-pad */ + data->test_src_pad = gst_pad_new ("src", GST_PAD_SRC); + jb_sink_pad = gst_element_get_static_pad (data->jitter_buffer, "sink"); + g_assert_cmpint (gst_pad_link (data->test_src_pad, jb_sink_pad), ==, + GST_PAD_LINK_OK); + g_assert (gst_pad_set_active (data->test_src_pad, TRUE)); + gst_object_unref (jb_sink_pad); + + /* link in the test sink-pad */ + data->test_sink_pad = gst_pad_new ("sink", GST_PAD_SINK); + gst_pad_set_caps (data->test_sink_pad, generate_caps ()); + gst_pad_set_chain_function (data->test_sink_pad, test_sink_pad_chain_cb); + gst_pad_set_event_function (data->test_sink_pad, test_sink_pad_event_cb); + jb_src_pad = gst_element_get_static_pad (data->jitter_buffer, "src"); + g_assert_cmpint (gst_pad_link (jb_src_pad, data->test_sink_pad), ==, + GST_PAD_LINK_OK); + g_assert (gst_pad_set_active (data->test_sink_pad, TRUE)); + gst_object_unref (jb_src_pad); + + /* set up the buf and event queues */ + data->buf_queue = + g_async_queue_new_full ((GDestroyNotify) gst_mini_object_unref); + data->event_queue = + g_async_queue_new_full ((GDestroyNotify) gst_mini_object_unref); + + data->lost_event_count = 0; + gst_pad_set_element_private (data->test_sink_pad, data); + + gst_segment_init (&seg, GST_FORMAT_TIME); + + gst_pad_push_event (data->test_src_pad, + gst_event_new_stream_start ("stream0")); + gst_pad_set_caps (data->test_src_pad, generate_caps ()); + gst_pad_push_event (data->test_src_pad, gst_event_new_segment (&seg)); + + while ((obj = g_async_queue_try_pop (data->event_queue))) + gst_mini_object_unref (obj); +} + +static void +destroy_testharness (TestData * data) +{ + /* clean up */ + g_assert_cmpint (gst_element_set_state (data->jitter_buffer, GST_STATE_NULL), + ==, GST_STATE_CHANGE_SUCCESS); + gst_object_unref (data->jitter_buffer); + data->jitter_buffer = NULL; + + gst_object_unref (data->test_src_pad); + data->test_src_pad = NULL; + + gst_object_unref (data->test_sink_pad); + data->test_sink_pad = NULL; + + gst_object_unref (data->clock); + data->clock = NULL; + + g_async_queue_unref (data->buf_queue); + data->buf_queue = NULL; + + g_async_queue_unref (data->event_queue); + data->event_queue = NULL; + + data->lost_event_count = 0; +} + +static void +verify_lost_event (GstEvent * event, guint32 expected_seqnum, + GstClockTime expected_timestamp, GstClockTime expected_duration, + gboolean expected_late) +{ + const GstStructure *s = gst_event_get_structure (event); + const GValue *value; + guint32 seqnum; + GstClockTime timestamp; + GstClockTime duration; + gboolean late; + g_assert (gst_structure_get_uint (s, "seqnum", &seqnum)); + + value = gst_structure_get_value (s, "timestamp"); + g_assert (value && G_VALUE_HOLDS_UINT64 (value)); + timestamp = g_value_get_uint64 (value); + + value = gst_structure_get_value (s, "duration"); + g_assert (value && G_VALUE_HOLDS_UINT64 (value)); + duration = g_value_get_uint64 (value); + + g_assert (gst_structure_get_boolean (s, "late", &late)); + + g_assert_cmpint (seqnum, ==, expected_seqnum); + g_assert_cmpint (timestamp, ==, expected_timestamp); + g_assert_cmpint (duration, ==, expected_duration); + g_assert (late == expected_late); +} + +GST_START_TEST (test_only_one_lost_event_on_large_gaps) +{ + TestData data; + GstClockID id, test_id; + guint64 timeout; + GstBuffer *in_buf, *out_buf; + GstEvent *out_event; + gint jb_latency_ms = 200; + guint buffer_size_ms = (payload_size * 1000) / clock_rate; + GstRTPBuffer rtp = GST_RTP_BUFFER_INIT; + + setup_testharness (&data); + timeout = 20 * G_USEC_PER_SEC; + + g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL); + + /* push the first buffer in */ + in_buf = generate_test_buffer (0 * GST_MSECOND, TRUE, 0, 0); + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 0); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + /* wait for the first buffer to be synced to timestamp + latency */ + gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id); + + /* increase the time to timestamp + latency and release the wait */ + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), + jb_latency_ms * GST_MSECOND); + g_assert (gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock)) + == id); + + /* check for the buffer coming out that was pushed in */ + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + g_assert_cmpint (GST_BUFFER_TIMESTAMP (out_buf), ==, 0); + + /* move time ahead 10 seconds */ + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 10 * GST_SECOND); + + /* wait a bit */ + g_usleep (G_USEC_PER_SEC / 10); + + /* check that no buffers have been pushed out and no pending waits */ + g_assert_cmpint (g_async_queue_length (data.buf_queue), ==, 0); + g_assert (gst_test_clock_peek_next_pending_id (GST_TEST_CLOCK (data.clock), + &id) == FALSE); + + /* a buffer now arrives perfectly on time */ + in_buf = generate_test_buffer (10 * GST_SECOND, FALSE, 500, 500 * 160); + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 10 * GST_SECOND); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + /* release the wait */ + GST_DEBUG ("wait for id"); + gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id); + GST_DEBUG ("got wait id %p", id); + gst_test_clock_advance_time (GST_TEST_CLOCK (data.clock), GST_MSECOND * 20); + test_id = gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock)); + GST_DEBUG ("process id %p", test_id); + g_assert (id == test_id); + + /* we should now receive a packet-lost-event for buffers 1 through 489 */ + out_event = g_async_queue_timeout_pop (data.event_queue, timeout); + g_assert (out_event != NULL); + g_assert_cmpint (data.lost_event_count, ==, 1); + verify_lost_event (out_event, 1, 1 * GST_MSECOND * 20, GST_MSECOND * 20 * 490, + TRUE); + + /* churn through sync_times until the new buffer gets pushed out */ + while (g_async_queue_length (data.buf_queue) < 1) { + if (gst_test_clock_peek_next_pending_id (GST_TEST_CLOCK (data.clock), &id)) { + GstClockTime t = gst_clock_id_get_time (id); + if (t > gst_clock_get_time (data.clock)) { + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), t); + } + gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock)); + } + } + + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + g_assert (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT)); + gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp); + g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, 500); + gst_rtp_buffer_unmap (&rtp); + g_assert_cmpint (GST_BUFFER_TIMESTAMP (out_buf), ==, (10 * GST_SECOND)); + + /* we get as many lost events as the the number of buffers the jitterbuffer + * is able to wait for (+ the one we already got) */ + g_assert_cmpint (data.lost_event_count, ==, jb_latency_ms / buffer_size_ms); + + destroy_testharness (&data); +} + +GST_END_TEST; + +GST_START_TEST (test_two_lost_one_arrives_in_time) +{ + TestData data; + GstClockID id; + guint64 timeout; + GstBuffer *in_buf, *out_buf; + GstEvent *out_event; + gint jb_latency_ms = 100; + GstClockTime buffer_time, now; + gint b; + GstRTPBuffer rtp = GST_RTP_BUFFER_INIT; + + setup_testharness (&data); + timeout = 20 * G_USEC_PER_SEC; + + g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL); + + /* push the first buffer in */ + in_buf = generate_test_buffer (0 * GST_MSECOND, TRUE, 0, 0); + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 0); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id); + now = jb_latency_ms * GST_MSECOND; + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), now); + g_assert (gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock)) + == id); + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + + /* push some buffers arriving in perfect time! */ + for (b = 1; b < 3; b++) { + buffer_time = b * GST_MSECOND * 20; + in_buf = generate_test_buffer (buffer_time, TRUE, b, b * 160); + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), now + buffer_time); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + /* check for the buffer coming out that was pushed in */ + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + g_assert_cmpint (GST_BUFFER_TIMESTAMP (out_buf), ==, buffer_time); + } + + /* hop over 2 packets and make another one (gap of 2) */ + b = 5; + buffer_time = b * GST_MSECOND * 20; + in_buf = generate_test_buffer (buffer_time, TRUE, b, b * 160); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + /* verify that the jitterbuffer now wait for the latest moment it can push */ + /* the first lost buffer (buffer 3) out on (buffer-timestamp (60) + latency (10) = 70) */ + gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id); + g_assert_cmpint (gst_clock_id_get_time (id), ==, + (3 * GST_MSECOND * 20) + (jb_latency_ms * GST_MSECOND)); + + /* let the time expire... */ + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), + gst_clock_id_get_time (id)); + g_assert (gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock)) + == id); + + /* we should now receive a packet-lost-event for buffer 3 */ + out_event = g_async_queue_timeout_pop (data.event_queue, timeout); + g_assert (out_event != NULL); + g_assert_cmpint (data.lost_event_count, ==, 1); + verify_lost_event (out_event, 3, 3 * GST_MSECOND * 20, GST_MSECOND * 20, + FALSE); + + /* buffer 4 now arrives just in time (time is 70, buffer 4 expires at 90) */ + b = 4; + buffer_time = b * GST_MSECOND * 20; + in_buf = generate_test_buffer (buffer_time, TRUE, b, b * 160); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + /* verify that buffer 4 made it through! */ + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + g_assert (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT)); + gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp); + g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, 4); + gst_rtp_buffer_unmap (&rtp); + + /* and see that buffer 5 now arrives in a normal fashion */ + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + g_assert (!GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT)); + gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp); + g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, 5); + gst_rtp_buffer_unmap (&rtp); + + /* should still have only seen 1 packet lost event */ + g_assert_cmpint (data.lost_event_count, ==, 1); + + destroy_testharness (&data); +} + +GST_END_TEST; + +GST_START_TEST (test_late_packets_still_makes_lost_events) +{ + TestData data; + GstClockID id; + guint64 timeout; + GstBuffer *in_buf, *out_buf; + GstEvent *out_event; + gint jb_latency_ms = 10; + GstClockTime buffer_time; + gint b; + GstRTPBuffer rtp = GST_RTP_BUFFER_INIT; + + setup_testharness (&data); + timeout = 20 * G_USEC_PER_SEC; + + g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL); + + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 10 * GST_SECOND); + + /* push the first buffer in */ + in_buf = generate_test_buffer (0 * GST_MSECOND, TRUE, 0, 0); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id); + g_assert (gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock)) + == id); + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + + /* push some buffers in! */ + for (b = 1; b < 3; b++) { + buffer_time = b * GST_MSECOND * 20; + in_buf = generate_test_buffer (buffer_time, TRUE, b, b * 160); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + /* check for the buffer coming out that was pushed in */ + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + g_assert_cmpint (GST_BUFFER_TIMESTAMP (out_buf), ==, buffer_time); + } + + /* hop over 2 packets and make another one (gap of 2) */ + b = 5; + buffer_time = b * GST_MSECOND * 20; + in_buf = generate_test_buffer (buffer_time, TRUE, b, b * 160); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + /* we should now receive a packet-lost-event for buffer 3 and 4 */ + out_event = g_async_queue_timeout_pop (data.event_queue, timeout); + g_assert (out_event != NULL); + g_assert_cmpint (data.lost_event_count, ==, 1); + verify_lost_event (out_event, 3, 3 * GST_MSECOND * 20, GST_MSECOND * 20 * 2, + TRUE); + + /* verify that buffer 5 made it through! */ + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + g_assert (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT)); + gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp); + g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, 5); + gst_rtp_buffer_unmap (&rtp); + + /* should still have only seen 1 packet lost event */ + g_assert_cmpint (data.lost_event_count, ==, 1); + + destroy_testharness (&data); +} + +GST_END_TEST; + +GST_START_TEST (test_all_packets_are_timestamped_zero) +{ + TestData data; + GstClockID id; + guint64 timeout; + GstBuffer *in_buf, *out_buf; + GstEvent *out_event; + gint jb_latency_ms = 10; + gint b; + GstRTPBuffer rtp = GST_RTP_BUFFER_INIT; + + setup_testharness (&data); + timeout = 20 * G_USEC_PER_SEC; + + g_object_set (data.jitter_buffer, "latency", jb_latency_ms, NULL); + + gst_test_clock_set_time (GST_TEST_CLOCK (data.clock), 10 * GST_SECOND); + + /* push the first buffer in */ + in_buf = generate_test_buffer (0 * GST_MSECOND, TRUE, 0, 0); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + gst_test_clock_wait_for_next_pending_id (GST_TEST_CLOCK (data.clock), &id); + g_assert (gst_test_clock_process_next_clock_id (GST_TEST_CLOCK (data.clock)) + == id); + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + + /* push some buffers in! */ + for (b = 1; b < 3; b++) { + in_buf = generate_test_buffer (0, TRUE, b, 0); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + /* check for the buffer coming out that was pushed in */ + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + g_assert_cmpint (GST_BUFFER_TIMESTAMP (out_buf), ==, 0); + } + + /* hop over 2 packets and make another one (gap of 2) */ + b = 5; + in_buf = generate_test_buffer (0, TRUE, b, 0); + g_assert_cmpint (gst_pad_push (data.test_src_pad, in_buf), ==, GST_FLOW_OK); + + /* we should now receive a packet-lost-event for buffer 3 and 4 */ + out_event = g_async_queue_timeout_pop (data.event_queue, timeout); + g_assert (out_event != NULL); + verify_lost_event (out_event, 3, 0, 0, FALSE); + + out_event = g_async_queue_timeout_pop (data.event_queue, timeout); + g_assert (out_event != NULL); + verify_lost_event (out_event, 4, 0, 0, FALSE); + + g_assert_cmpint (data.lost_event_count, ==, 2); + + /* verify that buffer 5 made it through! */ + out_buf = g_async_queue_timeout_pop (data.buf_queue, timeout); + g_assert (out_buf != NULL); + g_assert (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DISCONT)); + gst_rtp_buffer_map (out_buf, GST_MAP_READ, &rtp); + g_assert_cmpint (gst_rtp_buffer_get_seq (&rtp), ==, 5); + gst_rtp_buffer_unmap (&rtp); + + /* should still have only seen 1 packet lost event */ + g_assert_cmpint (data.lost_event_count, ==, 2); + + destroy_testharness (&data); +} + +GST_END_TEST; static Suite * rtpjitterbuffer_suite (void) @@ -331,8 +861,10 @@ rtpjitterbuffer_suite (void) tcase_add_test (tc_chain, test_push_backward_seq); tcase_add_test (tc_chain, test_push_unordered); tcase_add_test (tc_chain, test_basetime); - - /* FIXME: test buffer lists */ + tcase_add_test (tc_chain, test_only_one_lost_event_on_large_gaps); + tcase_add_test (tc_chain, test_two_lost_one_arrives_in_time); + tcase_add_test (tc_chain, test_late_packets_still_makes_lost_events); + tcase_add_test (tc_chain, test_all_packets_are_timestamped_zero); return s; } diff --git a/tests/check/elements/rtpmux.c b/tests/check/elements/rtpmux.c new file mode 100644 index 0000000000000000000000000000000000000000..2a81294d6e503a67cbfd24533d9ba03902d1121d --- /dev/null +++ b/tests/check/elements/rtpmux.c @@ -0,0 +1,316 @@ +/* GStreamer + * + * unit test for rtpmux elements + * + * Copyright 2009 Collabora Ltd. + * @author: Olivier Crete <olivier.crete@collabora.co.uk> + * Copyright 2009 Nokia Corp. + * + * 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. + */ + +#include <gst/check/gstcheck.h> +#include <gst/rtp/gstrtpbuffer.h> +#include <gst/gst.h> + +static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp")); + +static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("application/x-rtp")); + +typedef void (*check_cb) (GstPad * pad, int i); + +static gboolean +query_func (GstPad * pad, GstObject * noparent, GstQuery * query) +{ + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_CAPS: + { + GstCaps **caps = g_object_get_data (G_OBJECT (pad), "caps"); + + fail_unless (caps != NULL && *caps != NULL); + gst_query_set_caps_result (query, *caps); + break; + } + case GST_QUERY_ACCEPT_CAPS: + gst_query_set_accept_caps_result (query, TRUE); + break; + default: + break; + } + + return TRUE; +} + +static gboolean +event_func (GstPad * pad, GstObject * noparent, GstEvent * event) +{ + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_CAPS: + { + GstCaps *caps; + GstCaps **caps2 = g_object_get_data (G_OBJECT (pad), "caps"); + + gst_event_parse_caps (event, &caps); + fail_unless (caps2 != NULL && *caps2 != NULL); + fail_unless (gst_caps_is_fixed (caps)); + fail_unless (gst_caps_is_fixed (*caps2)); + fail_unless (gst_caps_is_equal_fixed (caps, *caps2)); + break; + } + default: + break; + } + + gst_event_unref (event); + + return TRUE; +} + +static void +test_basic (const gchar * elem_name, const gchar * sink2, int count, + check_cb cb) +{ + GstElement *rtpmux = NULL; + GstPad *reqpad1 = NULL; + GstPad *reqpad2 = NULL; + GstPad *src1 = NULL; + GstPad *src2 = NULL; + GstPad *sink = NULL; + GstBuffer *inbuf = NULL; + GstCaps *src1caps = NULL; + GstCaps *src2caps = NULL; + GstCaps *sinkcaps = NULL; + GstCaps *caps; + GstSegment segment; + int i; + + rtpmux = gst_check_setup_element (elem_name); + + reqpad1 = gst_element_get_request_pad (rtpmux, "sink_1"); + fail_unless (reqpad1 != NULL); + reqpad2 = gst_element_get_request_pad (rtpmux, sink2); + fail_unless (reqpad2 != NULL); + sink = gst_check_setup_sink_pad_by_name (rtpmux, &sinktemplate, "src"); + + src1 = gst_pad_new_from_static_template (&srctemplate, "src"); + src2 = gst_pad_new_from_static_template (&srctemplate, "src"); + fail_unless (gst_pad_link (src1, reqpad1) == GST_PAD_LINK_OK); + fail_unless (gst_pad_link (src2, reqpad2) == GST_PAD_LINK_OK); + gst_pad_set_query_function (src1, query_func); + gst_pad_set_query_function (src2, query_func); + gst_pad_set_query_function (sink, query_func); + gst_pad_set_event_function (sink, event_func); + g_object_set_data (G_OBJECT (src1), "caps", &src1caps); + g_object_set_data (G_OBJECT (src2), "caps", &src2caps); + g_object_set_data (G_OBJECT (sink), "caps", &sinkcaps); + + src1caps = gst_caps_new_simple ("application/x-rtp", + "clock-rate", G_TYPE_INT, 1, "ssrc", G_TYPE_UINT, 11, NULL); + src2caps = gst_caps_new_simple ("application/x-rtp", + "clock-rate", G_TYPE_INT, 2, "ssrc", G_TYPE_UINT, 12, NULL); + sinkcaps = gst_caps_new_simple ("application/x-rtp", + "clock-rate", G_TYPE_INT, 3, "ssrc", G_TYPE_UINT, 13, NULL); + + caps = gst_pad_peer_query_caps (src1, NULL); + fail_unless (gst_caps_is_empty (caps)); + gst_caps_unref (caps); + + gst_caps_set_simple (src2caps, "clock-rate", G_TYPE_INT, 3, NULL); + caps = gst_pad_peer_query_caps (src1, NULL); + fail_unless (gst_caps_is_equal (caps, sinkcaps)); + gst_caps_unref (caps); + + g_object_set (rtpmux, "seqnum-offset", 100, "timestamp-offset", 1000, + "ssrc", 55, NULL); + + fail_unless (gst_element_set_state (rtpmux, + GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS); + gst_pad_set_active (sink, TRUE); + gst_pad_set_active (src1, TRUE); + gst_pad_set_active (src2, TRUE); + + fail_unless (gst_pad_push_event (src1, + gst_event_new_stream_start ("stream1"))); + fail_unless (gst_pad_push_event (src2, + gst_event_new_stream_start ("stream2"))); + + gst_caps_set_simple (sinkcaps, + "payload", G_TYPE_INT, 98, "seqnum-base", G_TYPE_UINT, 100, + "clock-base", G_TYPE_UINT, 1000, "ssrc", G_TYPE_UINT, 66, NULL); + caps = gst_caps_new_simple ("application/x-rtp", + "payload", G_TYPE_INT, 98, "clock-rate", G_TYPE_INT, 3, + "seqnum-base", G_TYPE_UINT, 56, "clock-base", G_TYPE_UINT, 57, + "ssrc", G_TYPE_UINT, 66, NULL); + fail_unless (gst_pad_set_caps (src1, caps)); + + gst_segment_init (&segment, GST_FORMAT_TIME); + segment.start = 100000; + fail_unless (gst_pad_push_event (src1, gst_event_new_segment (&segment))); + segment.start = 0; + fail_unless (gst_pad_push_event (src2, gst_event_new_segment (&segment))); + + + for (i = 0; i < count; i++) { + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + + inbuf = gst_rtp_buffer_new_allocate (10, 0, 0); + GST_BUFFER_PTS (inbuf) = i * 1000 + 100000; + GST_BUFFER_DURATION (inbuf) = 1000; + + gst_rtp_buffer_map (inbuf, GST_MAP_WRITE, &rtpbuffer); + + gst_rtp_buffer_set_version (&rtpbuffer, 2); + gst_rtp_buffer_set_payload_type (&rtpbuffer, 98); + gst_rtp_buffer_set_ssrc (&rtpbuffer, 44); + gst_rtp_buffer_set_timestamp (&rtpbuffer, 200 + i); + gst_rtp_buffer_set_seq (&rtpbuffer, 2000 + i); + gst_rtp_buffer_unmap (&rtpbuffer); + fail_unless (gst_pad_push (src1, inbuf) == GST_FLOW_OK); + + if (buffers) + fail_unless (GST_BUFFER_PTS (buffers->data) == i * 1000, "%lld", + GST_BUFFER_PTS (buffers->data)); + + cb (src2, i); + + g_list_foreach (buffers, (GFunc) gst_buffer_unref, NULL); + g_list_free (buffers); + buffers = NULL; + } + + + gst_pad_set_active (sink, FALSE); + gst_pad_set_active (src1, FALSE); + gst_pad_set_active (src2, FALSE); + fail_unless (gst_element_set_state (rtpmux, + GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS); + gst_check_teardown_pad_by_name (rtpmux, "src"); + gst_object_unref (reqpad1); + gst_object_unref (reqpad2); + gst_check_teardown_pad_by_name (rtpmux, "sink_1"); + gst_check_teardown_pad_by_name (rtpmux, sink2); + gst_element_release_request_pad (rtpmux, reqpad1); + gst_element_release_request_pad (rtpmux, reqpad2); + + gst_caps_unref (caps); + gst_caps_replace (&src1caps, NULL); + gst_caps_replace (&src2caps, NULL); + gst_caps_replace (&sinkcaps, NULL); + + gst_check_teardown_element (rtpmux); +} + +static void +basic_check_cb (GstPad * pad, int i) +{ + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + fail_unless (buffers && g_list_length (buffers) == 1); + + gst_rtp_buffer_map (buffers->data, GST_MAP_READ, &rtpbuffer); + fail_unless (gst_rtp_buffer_get_ssrc (&rtpbuffer) == 55); + fail_unless (gst_rtp_buffer_get_timestamp (&rtpbuffer) == + 200 - 57 + 1000 + i); + fail_unless (gst_rtp_buffer_get_seq (&rtpbuffer) == 100 + 1 + i); + gst_rtp_buffer_unmap (&rtpbuffer); +} + + +GST_START_TEST (test_rtpmux_basic) +{ + test_basic ("rtpmux", "sink_2", 10, basic_check_cb); +} + +GST_END_TEST; + +GST_START_TEST (test_rtpdtmfmux_basic) +{ + test_basic ("rtpdtmfmux", "sink_2", 10, basic_check_cb); +} + +GST_END_TEST; + +static void +lock_check_cb (GstPad * pad, int i) +{ + GstBuffer *inbuf; + + if (i % 2) { + fail_unless (buffers == NULL); + } else { + GstRTPBuffer rtpbuffer = GST_RTP_BUFFER_INIT; + + fail_unless (buffers && g_list_length (buffers) == 1); + gst_rtp_buffer_map (buffers->data, GST_MAP_READ, &rtpbuffer); + fail_unless (gst_rtp_buffer_get_ssrc (&rtpbuffer) == 55); + fail_unless (gst_rtp_buffer_get_timestamp (&rtpbuffer) == + 200 - 57 + 1000 + i); + fail_unless (gst_rtp_buffer_get_seq (&rtpbuffer) == 100 + 1 + i); + gst_rtp_buffer_unmap (&rtpbuffer); + + inbuf = gst_rtp_buffer_new_allocate (10, 0, 0); + GST_BUFFER_PTS (inbuf) = i * 1000 + 500; + GST_BUFFER_DURATION (inbuf) = 1000; + gst_rtp_buffer_map (inbuf, GST_MAP_WRITE, &rtpbuffer); + gst_rtp_buffer_set_version (&rtpbuffer, 2); + gst_rtp_buffer_set_payload_type (&rtpbuffer, 98); + gst_rtp_buffer_set_ssrc (&rtpbuffer, 44); + gst_rtp_buffer_set_timestamp (&rtpbuffer, 200 + i); + gst_rtp_buffer_set_seq (&rtpbuffer, 2000 + i); + gst_rtp_buffer_unmap (&rtpbuffer); + fail_unless (gst_pad_push (pad, inbuf) == GST_FLOW_OK); + + + g_list_foreach (buffers, (GFunc) gst_buffer_unref, NULL); + g_list_free (buffers); + buffers = NULL; + } +} + +GST_START_TEST (test_rtpdtmfmux_lock) +{ + test_basic ("rtpdtmfmux", "priority_sink_2", 10, lock_check_cb); +} + +GST_END_TEST; + +static Suite * +rtpmux_suite (void) +{ + Suite *s = suite_create ("rtpmux"); + TCase *tc_chain; + + tc_chain = tcase_create ("rtpmux_basic"); + tcase_add_test (tc_chain, test_rtpmux_basic); + suite_add_tcase (s, tc_chain); + + tc_chain = tcase_create ("rtpdtmfmux_basic"); + tcase_add_test (tc_chain, test_rtpdtmfmux_basic); + suite_add_tcase (s, tc_chain); + + tc_chain = tcase_create ("rtpdtmfmux_lock"); + tcase_add_test (tc_chain, test_rtpdtmfmux_lock); + suite_add_tcase (s, tc_chain); + + return s; +} + +GST_CHECK_MAIN (rtpmux) diff --git a/tests/check/elements/shapewipe.c b/tests/check/elements/shapewipe.c index 4f7cb09ea78e382f4f1401cdec5fbcc76663f8d5..40496009fb8c4f2f7b596406588ae57828996cfe 100644 --- a/tests/check/elements/shapewipe.c +++ b/tests/check/elements/shapewipe.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -76,7 +76,7 @@ on_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) GST_START_TEST (test_general) { - GstElement *shapewipe; + GstElement *shapewipe, *videosrc, *masksrc, *sink, *bin; GstPad *p; GstCaps *caps; GstBuffer *mask, *input; @@ -84,28 +84,33 @@ GST_START_TEST (test_general) guint8 *data; GstMapInfo map; + bin = gst_bin_new ("myshapewipe"); + videosrc = gst_bin_new ("myvideosrc"); + masksrc = gst_bin_new ("mymasksrc"); + sink = gst_bin_new ("mysink"); + shapewipe = gst_element_factory_make ("shapewipe", NULL); + fail_unless (shapewipe != NULL); + gst_bin_add_many (GST_BIN (bin), videosrc, masksrc, shapewipe, sink, NULL); + myvideosrcpad = gst_pad_new_from_static_template (&videosrctemplate, "videosrc"); + gst_element_add_pad (videosrc, myvideosrcpad); gst_pad_set_active (myvideosrcpad, TRUE); caps = gst_caps_from_string (SHAPEWIPE_VIDEO_CAPS_STRING); - gst_pad_set_caps (myvideosrcpad, caps); + gst_check_setup_events (myvideosrcpad, videosrc, caps, GST_FORMAT_TIME); gst_caps_unref (caps); mymasksrcpad = gst_pad_new_from_static_template (&masksrctemplate, "masksrc"); + gst_element_add_pad (masksrc, mymasksrcpad); gst_pad_set_active (mymasksrcpad, TRUE); caps = gst_caps_from_string (SHAPEWIPE_MASK_CAPS_STRING); - gst_pad_set_caps (mymasksrcpad, caps); + gst_check_setup_events (mymasksrcpad, masksrc, caps, GST_FORMAT_TIME); gst_caps_unref (caps); mysinkpad = gst_pad_new_from_static_template (&sinktemplate, "sink"); + gst_element_add_pad (sink, mysinkpad); gst_pad_set_chain_function (mysinkpad, on_chain); gst_pad_set_active (mysinkpad, TRUE); - caps = gst_caps_from_string (SHAPEWIPE_VIDEO_CAPS_STRING); - gst_pad_set_caps (mysinkpad, caps); - gst_caps_unref (caps); - - shapewipe = gst_element_factory_make ("shapewipe", NULL); - fail_unless (shapewipe != NULL); p = gst_element_get_static_pad (shapewipe, "video_sink"); fail_unless (gst_pad_link (myvideosrcpad, p) == GST_PAD_LINK_OK); @@ -117,13 +122,10 @@ GST_START_TEST (test_general) fail_unless (gst_pad_link (p, mysinkpad) == GST_PAD_LINK_OK); gst_object_unref (p); - fail_unless (gst_element_set_state (shapewipe, + fail_unless (gst_element_set_state (bin, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS); mask = gst_buffer_new_and_alloc (400 * 400); - caps = gst_caps_from_string (SHAPEWIPE_MASK_CAPS_STRING); - gst_pad_set_caps (mymasksrcpad, caps); - gst_caps_unref (caps); gst_buffer_map (mask, &map, GST_MAP_WRITE); data = map.data; for (i = 0; i < 400; i++) { @@ -144,9 +146,6 @@ GST_START_TEST (test_general) fail_unless (gst_pad_push (mymasksrcpad, mask) == GST_FLOW_OK); input = gst_buffer_new_and_alloc (400 * 400 * 4); - caps = gst_caps_from_string (SHAPEWIPE_VIDEO_CAPS_STRING); - gst_pad_set_caps (myvideosrcpad, caps); - gst_caps_unref (caps); gst_buffer_map (input, &map, GST_MAP_WRITE); data = map.data; for (i = 0; i < 400; i++) { @@ -284,7 +283,7 @@ GST_START_TEST (test_general) gst_buffer_unref (input); - fail_unless (gst_element_set_state (shapewipe, + fail_unless (gst_element_set_state (bin, GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS); p = gst_element_get_static_pad (shapewipe, "video_sink"); @@ -297,10 +296,7 @@ GST_START_TEST (test_general) fail_unless (gst_pad_unlink (p, mysinkpad)); gst_object_unref (p); - gst_object_unref (myvideosrcpad); - gst_object_unref (mymasksrcpad); - gst_object_unref (mysinkpad); - gst_object_unref (shapewipe); + gst_object_unref (bin); } GST_END_TEST; diff --git a/tests/check/elements/souphttpsrc.c b/tests/check/elements/souphttpsrc.c index 0b3cd07ff4a2e8e4a9796e24215041ed047ac3b9..87f7d8e8b2483d336e7db4de6c984fda95112069 100644 --- a/tests/check/elements/souphttpsrc.c +++ b/tests/check/elements/souphttpsrc.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -53,7 +53,7 @@ static const char *realm = "SOUPHTTPSRC_REALM"; static const char *basic_auth_path = "/basic_auth"; static const char *digest_auth_path = "/digest_auth"; -static int run_server (guint * http_port, guint * https_port); +static gboolean run_server (guint * http_port, guint * https_port); static void stop_server (void); static void @@ -161,6 +161,11 @@ run_test (const char *format, ...) else if (g_str_has_suffix (err->message, "Found")) rc = 302; GST_INFO ("debug: %s", debug); + /* should not've gotten any output in case of a 40x error. Wait a bit + * to give streaming thread a chance to push out a buffer and triggering + * our callback before shutting down the pipeline */ + g_usleep (G_USEC_PER_SEC / 2); + fail_unless (buf == NULL); g_error_free (err); g_free (debug); gst_message_unref (msg); @@ -204,6 +209,8 @@ GST_END_TEST; GST_START_TEST (test_not_found) { fail_unless (run_test ("http://127.0.0.1:%u/404", http_port) == 404); + fail_unless (run_test ("http://127.0.0.1:%u/404-with-data", + http_port) == 404); } GST_END_TEST; @@ -438,34 +445,46 @@ done: GST_END_TEST; +static SoupServer *server; /* NULL */ +static SoupServer *ssl_server; /* NULL */ + static Suite * souphttpsrc_suite (void) { + TCase *tc_chain, *tc_internet; Suite *s; - TCase *tc_chain, *tc_internet; + /* we don't support exceptions from the proxy, so just unset the environment + * variable - in case it's set in the test environment it would otherwise + * prevent us from connecting to localhost (like jenkins.qa.ubuntu.com) */ + g_unsetenv ("http_proxy"); s = suite_create ("souphttpsrc"); tc_chain = tcase_create ("general"); tc_internet = tcase_create ("internet"); suite_add_tcase (s, tc_chain); - run_server (&http_port, &https_port); - atexit (stop_server); - tcase_add_test (tc_chain, test_first_buffer_has_offset); - tcase_add_test (tc_chain, test_redirect_yes); - tcase_add_test (tc_chain, test_redirect_no); - tcase_add_test (tc_chain, test_not_found); - tcase_add_test (tc_chain, test_forbidden); - tcase_add_test (tc_chain, test_cookies); - tcase_add_test (tc_chain, test_good_user_basic_auth); - tcase_add_test (tc_chain, test_bad_user_basic_auth); - tcase_add_test (tc_chain, test_bad_password_basic_auth); - tcase_add_test (tc_chain, test_good_user_digest_auth); - tcase_add_test (tc_chain, test_bad_user_digest_auth); - tcase_add_test (tc_chain, test_bad_password_digest_auth); - if (soup_ssl_supported) - tcase_add_test (tc_chain, test_https); + if (run_server (&http_port, &https_port)) { + atexit (stop_server); + tcase_add_test (tc_chain, test_first_buffer_has_offset); + tcase_add_test (tc_chain, test_redirect_yes); + tcase_add_test (tc_chain, test_redirect_no); + tcase_add_test (tc_chain, test_not_found); + tcase_add_test (tc_chain, test_forbidden); + tcase_add_test (tc_chain, test_cookies); + tcase_add_test (tc_chain, test_good_user_basic_auth); + tcase_add_test (tc_chain, test_bad_user_basic_auth); + tcase_add_test (tc_chain, test_bad_password_basic_auth); + tcase_add_test (tc_chain, test_good_user_digest_auth); + tcase_add_test (tc_chain, test_bad_user_digest_auth); + tcase_add_test (tc_chain, test_bad_password_digest_auth); + + if (ssl_server != NULL) + tcase_add_test (tc_chain, test_https); + } else { + g_print ("Skipping 12 souphttpsrc tests, couldn't start or connect to " + "local http server\n"); + } suite_add_tcase (s, tc_internet); tcase_set_timeout (tc_internet, 250); @@ -479,6 +498,7 @@ GST_CHECK_MAIN (souphttpsrc); static void do_get (SoupMessage * msg, const char *path) { + gboolean send_error_doc = FALSE; char *uri; int buflen = 4096; @@ -498,6 +518,10 @@ do_get (SoupMessage * msg, const char *path) status = SOUP_STATUS_FORBIDDEN; else if (!strcmp (path, "/404")) status = SOUP_STATUS_NOT_FOUND; + else if (!strcmp (path, "/404-with-data")) { + status = SOUP_STATUS_NOT_FOUND; + send_error_doc = TRUE; + } if (SOUP_STATUS_IS_REDIRECTION (status)) { char *redir_uri; @@ -506,7 +530,7 @@ do_get (SoupMessage * msg, const char *path) soup_message_headers_append (msg->response_headers, "Location", redir_uri); g_free (redir_uri); } - if (status != SOUP_STATUS_OK) + if (status != SOUP_STATUS_OK && !send_error_doc) goto leave; if (msg->method == SOUP_METHOD_GET) { @@ -560,10 +584,7 @@ server_callback (SoupServer * server, SoupMessage * msg, GST_DEBUG (" -> %d %s", msg->status_code, msg->reason_phrase); } -static SoupServer *server; /* NULL */ -static SoupServer *ssl_server; /* NULL */ - -int +static gboolean run_server (guint * http_port, guint * https_port) { guint port = SOUP_ADDRESS_ANY_PORT; @@ -575,7 +596,8 @@ run_server (guint * http_port, guint * https_port) SoupAuthDomain *domain = NULL; if (server_running) - return 0; + return TRUE; + server_running = 1; *http_port = *https_port = 0; @@ -583,7 +605,7 @@ run_server (guint * http_port, guint * https_port) server = soup_server_new (SOUP_SERVER_PORT, port, NULL); if (!server) { GST_DEBUG ("Unable to bind to server port %u", port); - return 1; + return FALSE; } *http_port = soup_server_get_port (server); GST_INFO ("HTTP server listening on port %u", *http_port); @@ -601,21 +623,60 @@ run_server (guint * http_port, guint * https_port) soup_server_run_async (server); if (ssl_cert_file && ssl_key_file) { - ssl_server = soup_server_new (SOUP_SERVER_PORT, ssl_port, - SOUP_SERVER_SSL_CERT_FILE, ssl_cert_file, - SOUP_SERVER_SSL_KEY_FILE, ssl_key_file, NULL); + GTlsBackend *backend = g_tls_backend_get_default (); + + if (backend != NULL && g_tls_backend_supports_tls (backend)) { + ssl_server = soup_server_new (SOUP_SERVER_PORT, ssl_port, + SOUP_SERVER_SSL_CERT_FILE, ssl_cert_file, + SOUP_SERVER_SSL_KEY_FILE, ssl_key_file, NULL); + } else { + GST_INFO ("No TLS support"); + } + + if (ssl_server) { + *https_port = soup_server_get_port (ssl_server); + GST_INFO ("HTTPS server listening on port %u", *https_port); + soup_server_add_handler (ssl_server, NULL, server_callback, NULL, NULL); + soup_server_run_async (ssl_server); + } + } - if (!ssl_server) { - GST_DEBUG ("Unable to bind to SSL server port %u", ssl_port); - return 1; + /* check if we can connect to our local http server */ + { + GSocketConnection *conn; + GSocketClient *client; + + client = g_socket_client_new (); + g_socket_client_set_timeout (client, 2); + conn = g_socket_client_connect_to_host (client, "127.0.0.1", *http_port, + NULL, NULL); + if (conn == NULL) { + GST_INFO ("Couldn't connect to http server 127.0.0.1:%u", *http_port); + g_object_unref (client); + stop_server (); + return FALSE; + } + g_object_unref (conn); + + if (ssl_server == NULL) + goto skip_https_check; + + conn = g_socket_client_connect_to_host (client, "127.0.0.1", *https_port, + NULL, NULL); + if (conn == NULL) { + GST_INFO ("Couldn't connect to https server 127.0.0.1:%u", *https_port); + g_object_unref (client); + stop_server (); + return FALSE; } - *https_port = soup_server_get_port (ssl_server); - GST_INFO ("HTTPS server listening on port %u", *https_port); - soup_server_add_handler (ssl_server, NULL, server_callback, NULL, NULL); - soup_server_run_async (ssl_server); + g_object_unref (conn); + + skip_https_check: + + g_object_unref (client); } - return 0; + return TRUE; } static void diff --git a/tests/check/elements/spectrum.c b/tests/check/elements/spectrum.c index ff3d030053a28595ed4e931633580e550d2cb9ef..e562e72d84e4e4449fa85b93a9254f87887af722 100644 --- a/tests/check/elements/spectrum.c +++ b/tests/check/elements/spectrum.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -86,9 +86,10 @@ static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", /* takes over reference for outcaps */ static GstElement * -setup_spectrum (void) +setup_spectrum (const gchar * caps_str) { GstElement *spectrum; + GstCaps *caps; GST_DEBUG ("setup_spectrum"); spectrum = gst_check_setup_element ("spectrum"); @@ -97,6 +98,10 @@ setup_spectrum (void) gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); + caps = gst_caps_from_string (caps_str); + gst_check_setup_events (mysrcpad, spectrum, caps, GST_FORMAT_TIME); + gst_caps_unref (caps); + return spectrum; } @@ -122,7 +127,6 @@ GST_START_TEST (test_int16) GstElement *spectrum; GstBuffer *inbuffer, *outbuffer; GstBus *bus; - GstCaps *caps; GstMessage *message; const GstStructure *structure; int i, j; @@ -132,7 +136,7 @@ GST_START_TEST (test_int16) GstClockTime endtime; gfloat level; - spectrum = setup_spectrum (); + spectrum = setup_spectrum (SPECT_CAPS_STRING_S16); g_object_set (spectrum, "post-messages", TRUE, "interval", GST_SECOND / 100, "bands", SPECT_BANDS, "threshold", -80, NULL); @@ -155,10 +159,6 @@ GST_START_TEST (test_int16) ++data; } gst_buffer_unmap (inbuffer, &map); - - caps = gst_caps_from_string (SPECT_CAPS_STRING_S16); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); /* create a bus to get the spectrum message on */ @@ -227,7 +227,6 @@ GST_START_TEST (test_int32) GstElement *spectrum; GstBuffer *inbuffer, *outbuffer; GstBus *bus; - GstCaps *caps; GstMessage *message; const GstStructure *structure; int i, j; @@ -237,7 +236,7 @@ GST_START_TEST (test_int32) GstClockTime endtime; gfloat level; - spectrum = setup_spectrum (); + spectrum = setup_spectrum (SPECT_CAPS_STRING_S32); g_object_set (spectrum, "post-messages", TRUE, "interval", GST_SECOND / 100, "bands", SPECT_BANDS, "threshold", -80, NULL); @@ -260,10 +259,6 @@ GST_START_TEST (test_int32) ++data; } gst_buffer_unmap (inbuffer, &map); - - caps = gst_caps_from_string (SPECT_CAPS_STRING_S32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); /* create a bus to get the spectrum message on */ @@ -332,7 +327,6 @@ GST_START_TEST (test_float32) GstElement *spectrum; GstBuffer *inbuffer, *outbuffer; GstBus *bus; - GstCaps *caps; GstMessage *message; const GstStructure *structure; int i, j; @@ -342,7 +336,7 @@ GST_START_TEST (test_float32) GstClockTime endtime; gfloat level; - spectrum = setup_spectrum (); + spectrum = setup_spectrum (SPECT_CAPS_STRING_F32); g_object_set (spectrum, "post-messages", TRUE, "interval", GST_SECOND / 100, "bands", SPECT_BANDS, "threshold", -80, NULL); @@ -365,10 +359,6 @@ GST_START_TEST (test_float32) ++data; } gst_buffer_unmap (inbuffer, &map); - - caps = gst_caps_from_string (SPECT_CAPS_STRING_F32); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); /* create a bus to get the spectrum message on */ @@ -437,7 +427,6 @@ GST_START_TEST (test_float64) GstElement *spectrum; GstBuffer *inbuffer, *outbuffer; GstBus *bus; - GstCaps *caps; GstMessage *message; const GstStructure *structure; int i, j; @@ -447,7 +436,7 @@ GST_START_TEST (test_float64) GstClockTime endtime; gfloat level; - spectrum = setup_spectrum (); + spectrum = setup_spectrum (SPECT_CAPS_STRING_F64); g_object_set (spectrum, "post-messages", TRUE, "interval", GST_SECOND / 100, "bands", SPECT_BANDS, "threshold", -80, NULL); @@ -470,10 +459,6 @@ GST_START_TEST (test_float64) ++data; } gst_buffer_unmap (inbuffer, &map); - - caps = gst_caps_from_string (SPECT_CAPS_STRING_F64); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); - gst_caps_unref (caps); ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); /* create a bus to get the spectrum message on */ diff --git a/tests/check/elements/sunaudio.c b/tests/check/elements/sunaudio.c index 30b569aa07f3c3876ff041892f24bdb15caae620..834e7cbb7d7202916e308eb9d4ffcaf75f8328cc 100644 --- a/tests/check/elements/sunaudio.c +++ b/tests/check/elements/sunaudio.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/elements/udpsink.c b/tests/check/elements/udpsink.c index 57603ec5c3dcf3849ddf150b42014065ffb54d10..d3f03f1182b2599a1becd1d623bc0f1e3b1bde3c 100644 --- a/tests/check/elements/udpsink.c +++ b/tests/check/elements/udpsink.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> #include <gst/base/gstbasesink.h> diff --git a/tests/check/elements/udpsrc.c b/tests/check/elements/udpsrc.c index 3361e7ec015bf7405296c501495e054057e0e0f5..1a0ab3caefbdb07f2f17a891c3937f1f9c3bfd99 100644 --- a/tests/check/elements/udpsrc.c +++ b/tests/check/elements/udpsrc.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> #include <gio/gio.h> diff --git a/tests/check/elements/videocrop.c b/tests/check/elements/videocrop.c index 9baaafba2eaa196ea959727d34b0550f65e5f60c..a7bb46d2b495ccb80d501cf86cbedfbcbc1a3ffa 100644 --- a/tests/check/elements/videocrop.c +++ b/tests/check/elements/videocrop.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -160,6 +160,7 @@ typedef struct GstElement *src; GstElement *filter; GstElement *crop; + GstElement *filter2; GstElement *sink; GstBuffer *last_buf; GstCaps *last_caps; @@ -190,12 +191,16 @@ videocrop_test_cropping_init_context (GstVideoCropTestContext * ctx) fail_unless (ctx->filter != NULL, "Failed to create capsfilter element"); ctx->crop = gst_element_factory_make ("videocrop", "crop"); fail_unless (ctx->crop != NULL, "Failed to create videocrop 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->crop, ctx->sink, NULL); - gst_element_link_many (ctx->src, ctx->filter, ctx->crop, ctx->sink, NULL); + ctx->crop, ctx->filter2, ctx->sink, NULL); + gst_element_link_many (ctx->src, ctx->filter, ctx->crop, ctx->filter2, + ctx->sink, NULL); /* set pattern to 'red' - for our purposes it doesn't matter anyway */ g_object_set (ctx->src, "pattern", 4, NULL); @@ -225,13 +230,15 @@ typedef void (*GstVideoCropTestBufferFunc) (GstBuffer * buffer, GstCaps * caps); static void videocrop_test_cropping (GstVideoCropTestContext * ctx, GstCaps * in_caps, - gint left, gint right, gint top, gint bottom, + GstCaps * out_caps, gint left, gint right, gint top, gint bottom, GstVideoCropTestBufferFunc func) { - GST_LOG ("lrtb = %03u %03u %03u %03u, caps = %" GST_PTR_FORMAT, left, right, - top, bottom, in_caps); + GST_LOG ("lrtb = %03u %03u %03u %03u, in_caps = %" GST_PTR_FORMAT + ", out_caps = %" GST_PTR_FORMAT, left, right, top, bottom, in_caps, + out_caps); g_object_set (ctx->filter, "caps", in_caps, NULL); + g_object_set (ctx->filter2, "caps", out_caps, NULL); g_object_set (ctx->crop, "left", left, "right", right, "top", top, "bottom", bottom, NULL); @@ -258,7 +265,8 @@ check_1x1_buffer (GstBuffer * buf, GstCaps * caps) /* the exact values we check for come from videotestsrc */ static const guint yuv_values[] = { 81, 90, 240, 255 }; static const guint rgb_values[] = { 0xff, 0, 0, 255 }; - static const guint gray_values[] = { 0x51 }; + static const guint gray8_values[] = { 0x51 }; + static const guint gray16_values[] = { 0x5151 }; const guint *values; guint i; const GstVideoFormatInfo *finfo; @@ -274,7 +282,10 @@ check_1x1_buffer (GstBuffer * buf, GstCaps * caps) if (GST_VIDEO_INFO_IS_YUV (&info)) values = yuv_values; else if (GST_VIDEO_INFO_IS_GRAY (&info)) - values = gray_values; + if (GST_VIDEO_FORMAT_INFO_BITS (finfo) == 8) + values = gray8_values; + else + values = gray16_values; else values = rgb_values; @@ -309,7 +320,11 @@ check_1x1_buffer (GstBuffer * buf, GstCaps * caps) val = val & ((1 << depth) - 1); GST_DEBUG ("val %08x %d : %d", pixels, i, val); - fail_unless_equals_int (val, values[i] >> (8 - depth)); + if (depth <= 8) { + fail_unless_equals_int (val, values[i] >> (8 - depth)); + } else { + fail_unless_equals_int (val, values[i] >> (16 - depth)); + } } else { } } @@ -345,11 +360,12 @@ GST_START_TEST (test_crop_to_1x1) gst_structure_set (s, "width", G_TYPE_INT, 160, "height", G_TYPE_INT, 160, NULL); - videocrop_test_cropping (&ctx, caps, 159, 0, 159, 0, check_1x1_buffer); + videocrop_test_cropping (&ctx, caps, NULL, 159, 0, 159, 0, + check_1x1_buffer); /* commented out because they don't really add anything useful check-wise: - videocrop_test_cropping (&ctx, caps, 0, 159, 0, 159, check_1x1_buffer); - videocrop_test_cropping (&ctx, caps, 159, 0, 0, 159, check_1x1_buffer); - videocrop_test_cropping (&ctx, caps, 0, 159, 159, 0, check_1x1_buffer); + videocrop_test_cropping (&ctx, caps, NULL, 0, 159, 0, 159, check_1x1_buffer); + videocrop_test_cropping (&ctx, caps, NULL, 159, 0, 0, 159, check_1x1_buffer); + videocrop_test_cropping (&ctx, caps, NULL, 0, 159, 159, 0, check_1x1_buffer); */ gst_caps_unref (caps); } @@ -397,7 +413,7 @@ GST_START_TEST (test_cropping) GST_INFO ("testing format: %" GST_PTR_FORMAT, caps); for (i = 0; i < G_N_ELEMENTS (sizes_to_try); ++i) { - GstCaps *in_caps; + GstCaps *in_caps, *out_caps; GST_INFO (" - %d x %d", sizes_to_try[i].width, sizes_to_try[i].height); @@ -405,29 +421,51 @@ GST_START_TEST (test_cropping) "height", G_TYPE_INT, sizes_to_try[i].height, NULL); in_caps = gst_caps_copy (caps); - videocrop_test_cropping (&ctx, in_caps, 0, 0, 0, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 1, 0, 0, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 1, 0, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 0, 1, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 0, 0, 1, NULL); - videocrop_test_cropping (&ctx, in_caps, 63, 0, 0, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 63, 0, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 0, 63, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 0, 0, 63, NULL); - videocrop_test_cropping (&ctx, in_caps, 63, 0, 0, 1, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 63, 1, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 1, 63, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 1, 0, 0, 63, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 0, 0, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 32, 0, 0, 128, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 32, 128, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 0, 128, 32, 0, NULL); - videocrop_test_cropping (&ctx, in_caps, 128, 0, 0, 32, NULL); - videocrop_test_cropping (&ctx, in_caps, 1, 1, 1, 1, NULL); - videocrop_test_cropping (&ctx, in_caps, 63, 63, 63, 63, NULL); - videocrop_test_cropping (&ctx, in_caps, 64, 64, 64, 64, NULL); + gst_structure_set (s, "width", G_TYPE_INT, 1, "height", G_TYPE_INT, 1, + NULL); + out_caps = gst_caps_copy (caps); + + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 0, 0, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 1, 0, 0, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 1, 0, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 0, 1, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 0, 0, 1, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 63, 0, 0, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 63, 0, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 0, 63, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 0, 0, 63, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 63, 0, 0, 1, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 63, 1, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 1, 63, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 1, 0, 0, 63, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 0, 0, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 32, 0, 0, 128, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 32, 128, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 0, 128, 32, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 128, 0, 0, 32, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 1, 1, 1, 1, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 63, 63, 63, 63, NULL); + videocrop_test_cropping (&ctx, in_caps, NULL, 64, 64, 64, 64, NULL); + + /* Dynamic cropping */ + videocrop_test_cropping (&ctx, in_caps, out_caps, -1, -1, -1, -1, NULL); + videocrop_test_cropping (&ctx, in_caps, out_caps, 0, -1, -1, -1, NULL); + videocrop_test_cropping (&ctx, in_caps, out_caps, -1, 0, -1, -1, NULL); + videocrop_test_cropping (&ctx, in_caps, out_caps, -1, -1, 0, -1, NULL); + videocrop_test_cropping (&ctx, in_caps, out_caps, -1, -1, -1, 0, NULL); + videocrop_test_cropping (&ctx, in_caps, out_caps, 10, -1, 10, -1, NULL); + videocrop_test_cropping (&ctx, in_caps, out_caps, -1, 10, -1, 10, NULL); + videocrop_test_cropping (&ctx, in_caps, out_caps, + sizes_to_try[i].width - 1, -1, -1, -1, NULL); + videocrop_test_cropping (&ctx, in_caps, out_caps, -1, + sizes_to_try[i].width - 1, -1, -1, NULL); + videocrop_test_cropping (&ctx, in_caps, out_caps, -1, -1, + sizes_to_try[i].height - 1, -1, NULL); + videocrop_test_cropping (&ctx, in_caps, out_caps, -1, -1, -1, + sizes_to_try[i].height - 1, NULL); gst_caps_unref (in_caps); + gst_caps_unref (out_caps); } gst_caps_unref (caps); diff --git a/tests/check/elements/videofilter.c b/tests/check/elements/videofilter.c index 25e33c12afbe93f1235bf865fb6d9bcbca403e64..2b5ae565c44a680ba6a1f3d05b597ae824ca278a 100644 --- a/tests/check/elements/videofilter.c +++ b/tests/check/elements/videofilter.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -88,12 +88,12 @@ check_filter_caps (const gchar * name, GstCaps * caps, gint size, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); + gst_check_setup_events (mysrcpad, filter, caps, GST_FORMAT_TIME); + /* ensure segment (format) properly setup */ gst_segment_init (&segment, GST_FORMAT_TIME); fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment))); - gst_pad_set_caps (mysrcpad, caps); - for (i = 0; i < num_buffers; ++i) { inbuffer = gst_buffer_new_and_alloc (size); /* makes valgrind's memcheck happier */ diff --git a/tests/check/elements/videomixer.c b/tests/check/elements/videomixer.c new file mode 100644 index 0000000000000000000000000000000000000000..7296cb3eed66df97bb185bd9176c301d4dba622e --- /dev/null +++ b/tests/check/elements/videomixer.c @@ -0,0 +1,1061 @@ +/* GStreamer + * + * unit test for videmixer + * + * Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org> + * Copyright (C) <2013> Thibault Saunier <thibault.saunier@collabora.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#ifdef HAVE_VALGRIND +# include <valgrind/valgrind.h> +#endif + +#include <unistd.h> + +#include <gst/check/gstcheck.h> +#include <gst/check/gstconsistencychecker.h> +#include <gst/base/gstbasesrc.h> + +#define VIDEO_CAPS_STRING \ + "video/x-raw, " \ + "width = (int) 320, " \ + "height = (int) 240, " \ + "framerate = (fraction) 25/1 , " \ + "format = (string) I420" + +static GMainLoop *main_loop; + +/* make sure downstream gets a CAPS event before buffers are sent */ +GST_START_TEST (test_caps) +{ + GstElement *pipeline, *src, *videomixer, *sink; + GstStateChangeReturn state_res; + GstCaps *caps; + GstPad *pad; + + /* build pipeline */ + pipeline = gst_pipeline_new ("pipeline"); + + src = gst_element_factory_make ("videotestsrc", "src1"); + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + gst_bin_add_many (GST_BIN (pipeline), src, videomixer, sink, NULL); + + fail_unless (gst_element_link_many (src, videomixer, sink, NULL)); + + /* prepare playing */ + state_res = gst_element_set_state (pipeline, GST_STATE_PAUSED); + fail_unless_equals_int (state_res, GST_STATE_CHANGE_ASYNC); + + /* wait for preroll */ + state_res = gst_element_get_state (pipeline, NULL, NULL, GST_CLOCK_TIME_NONE); + fail_unless_equals_int (state_res, GST_STATE_CHANGE_SUCCESS); + + /* check caps on fakesink */ + pad = gst_element_get_static_pad (sink, "sink"); + caps = gst_pad_get_current_caps (pad); + fail_unless (caps != NULL); + gst_caps_unref (caps); + gst_object_unref (pad); + + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (pipeline); +} + +GST_END_TEST; + +static void +message_received (GstBus * bus, GstMessage * message, GstPipeline * bin) +{ + GST_INFO ("bus message from \"%" GST_PTR_FORMAT "\": %" GST_PTR_FORMAT, + GST_MESSAGE_SRC (message), message); + + switch (message->type) { + case GST_MESSAGE_EOS: + g_main_loop_quit (main_loop); + break; + case GST_MESSAGE_WARNING:{ + GError *gerror; + gchar *debug; + + gst_message_parse_warning (message, &gerror, &debug); + gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug); + g_error_free (gerror); + g_free (debug); + break; + } + case GST_MESSAGE_ERROR:{ + GError *gerror; + gchar *debug; + + gst_message_parse_error (message, &gerror, &debug); + gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug); + g_error_free (gerror); + g_free (debug); + g_main_loop_quit (main_loop); + break; + } + default: + break; + } +} + + +static GstFormat format = GST_FORMAT_UNDEFINED; +static gint64 position = -1; + +static void +test_event_message_received (GstBus * bus, GstMessage * message, + GstPipeline * bin) +{ + GST_INFO ("bus message from \"%" GST_PTR_FORMAT "\": %" GST_PTR_FORMAT, + GST_MESSAGE_SRC (message), message); + + switch (message->type) { + case GST_MESSAGE_SEGMENT_DONE: + gst_message_parse_segment_done (message, &format, &position); + GST_INFO ("received segment_done : %" G_GINT64_FORMAT, position); + g_main_loop_quit (main_loop); + break; + default: + g_assert_not_reached (); + break; + } +} + + +GST_START_TEST (test_event) +{ + GstElement *bin, *src1, *src2, *videomixer, *sink; + GstBus *bus; + GstEvent *seek_event; + GstStateChangeReturn state_res; + gboolean res; + GstPad *srcpad, *sinkpad; + GstStreamConsistency *chk_1, *chk_2, *chk_3; + + GST_INFO ("preparing test"); + + /* build pipeline */ + bin = gst_pipeline_new ("pipeline"); + bus = gst_element_get_bus (bin); + gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH); + + src1 = gst_element_factory_make ("videotestsrc", "src1"); + src2 = gst_element_factory_make ("videotestsrc", "src2"); + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + gst_bin_add_many (GST_BIN (bin), src1, src2, videomixer, sink, NULL); + + res = gst_element_link (src1, videomixer); + fail_unless (res == TRUE, NULL); + res = gst_element_link (src2, videomixer); + fail_unless (res == TRUE, NULL); + res = gst_element_link (videomixer, sink); + fail_unless (res == TRUE, NULL); + + srcpad = gst_element_get_static_pad (videomixer, "src"); + chk_3 = gst_consistency_checker_new (srcpad); + gst_object_unref (srcpad); + + /* create consistency checkers for the pads */ + srcpad = gst_element_get_static_pad (src1, "src"); + chk_1 = gst_consistency_checker_new (srcpad); + sinkpad = gst_pad_get_peer (srcpad); + gst_consistency_checker_add_pad (chk_3, sinkpad); + gst_object_unref (sinkpad); + gst_object_unref (srcpad); + + srcpad = gst_element_get_static_pad (src2, "src"); + chk_2 = gst_consistency_checker_new (srcpad); + sinkpad = gst_pad_get_peer (srcpad); + gst_consistency_checker_add_pad (chk_3, sinkpad); + gst_object_unref (sinkpad); + gst_object_unref (srcpad); + + seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME, + GST_SEEK_FLAG_SEGMENT | GST_SEEK_FLAG_FLUSH, + GST_SEEK_TYPE_SET, (GstClockTime) 0, + GST_SEEK_TYPE_SET, (GstClockTime) 2 * GST_SECOND); + + format = GST_FORMAT_UNDEFINED; + position = -1; + + main_loop = g_main_loop_new (NULL, FALSE); + g_signal_connect (bus, "message::segment-done", + (GCallback) test_event_message_received, bin); + g_signal_connect (bus, "message::error", (GCallback) message_received, bin); + g_signal_connect (bus, "message::warning", (GCallback) message_received, bin); + g_signal_connect (bus, "message::eos", (GCallback) message_received, bin); + + GST_INFO ("starting test"); + + /* prepare playing */ + state_res = gst_element_set_state (bin, GST_STATE_PAUSED); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* wait for completion */ + state_res = gst_element_get_state (bin, NULL, NULL, GST_CLOCK_TIME_NONE); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + res = gst_element_send_event (bin, seek_event); + fail_unless (res == TRUE, NULL); + + /* run pipeline */ + state_res = gst_element_set_state (bin, GST_STATE_PLAYING); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + GST_INFO ("running main loop"); + g_main_loop_run (main_loop); + + state_res = gst_element_set_state (bin, GST_STATE_NULL); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + ck_assert_int_eq (position, 2 * GST_SECOND); + + /* cleanup */ + g_main_loop_unref (main_loop); + gst_consistency_checker_free (chk_1); + gst_consistency_checker_free (chk_2); + gst_consistency_checker_free (chk_3); + gst_bus_remove_signal_watch (bus); + gst_object_unref (bus); + gst_object_unref (bin); +} + +GST_END_TEST; + +static guint play_count = 0; +static GstEvent *play_seek_event = NULL; + +static void +test_play_twice_message_received (GstBus * bus, GstMessage * message, + GstPipeline * bin) +{ + gboolean res; + GstStateChangeReturn state_res; + + GST_INFO ("bus message from \"%" GST_PTR_FORMAT "\": %" GST_PTR_FORMAT, + GST_MESSAGE_SRC (message), message); + + switch (message->type) { + case GST_MESSAGE_SEGMENT_DONE: + play_count++; + if (play_count == 1) { + state_res = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_READY); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* prepare playing again */ + state_res = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PAUSED); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* wait for completion */ + state_res = + gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, + GST_CLOCK_TIME_NONE); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + res = gst_element_send_event (GST_ELEMENT (bin), + gst_event_ref (play_seek_event)); + fail_unless (res == TRUE, NULL); + + state_res = + gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PLAYING); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + } else { + g_main_loop_quit (main_loop); + } + break; + default: + g_assert_not_reached (); + break; + } +} + + +GST_START_TEST (test_play_twice) +{ + GstElement *bin, *src1, *src2, *videomixer, *sink; + GstBus *bus; + gboolean res; + GstStateChangeReturn state_res; + GstPad *srcpad; + GstStreamConsistency *consist; + + GST_INFO ("preparing test"); + + /* build pipeline */ + bin = gst_pipeline_new ("pipeline"); + bus = gst_element_get_bus (bin); + gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH); + + src1 = gst_element_factory_make ("videotestsrc", "src1"); + src2 = gst_element_factory_make ("videotestsrc", "src2"); + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + gst_bin_add_many (GST_BIN (bin), src1, src2, videomixer, sink, NULL); + + res = gst_element_link (src1, videomixer); + fail_unless (res == TRUE, NULL); + res = gst_element_link (src2, videomixer); + fail_unless (res == TRUE, NULL); + res = gst_element_link (videomixer, sink); + fail_unless (res == TRUE, NULL); + + srcpad = gst_element_get_static_pad (videomixer, "src"); + consist = gst_consistency_checker_new (srcpad); + gst_object_unref (srcpad); + + play_seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME, + GST_SEEK_FLAG_SEGMENT | GST_SEEK_FLAG_FLUSH, + GST_SEEK_TYPE_SET, (GstClockTime) 0, + GST_SEEK_TYPE_SET, (GstClockTime) 2 * GST_SECOND); + + play_count = 0; + + main_loop = g_main_loop_new (NULL, FALSE); + g_signal_connect (bus, "message::segment-done", + (GCallback) test_play_twice_message_received, bin); + g_signal_connect (bus, "message::error", (GCallback) message_received, bin); + g_signal_connect (bus, "message::warning", (GCallback) message_received, bin); + g_signal_connect (bus, "message::eos", (GCallback) message_received, bin); + + GST_INFO ("starting test"); + + /* prepare playing */ + state_res = gst_element_set_state (bin, GST_STATE_PAUSED); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* wait for completion */ + state_res = + gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, + GST_CLOCK_TIME_NONE); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + res = gst_element_send_event (bin, gst_event_ref (play_seek_event)); + fail_unless (res == TRUE, NULL); + + GST_INFO ("seeked"); + + /* run pipeline */ + state_res = gst_element_set_state (bin, GST_STATE_PLAYING); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + g_main_loop_run (main_loop); + + state_res = gst_element_set_state (bin, GST_STATE_NULL); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + ck_assert_int_eq (play_count, 2); + + /* cleanup */ + g_main_loop_unref (main_loop); + gst_consistency_checker_free (consist); + gst_event_ref (play_seek_event); + gst_bus_remove_signal_watch (bus); + gst_object_unref (bus); + gst_object_unref (bin); +} + +GST_END_TEST; + +GST_START_TEST (test_play_twice_then_add_and_play_again) +{ + GstElement *bin, *src1, *src2, *src3, *videomixer, *sink; + GstBus *bus; + gboolean res; + GstStateChangeReturn state_res; + gint i; + GstPad *srcpad; + GstStreamConsistency *consist; + + GST_INFO ("preparing test"); + + /* build pipeline */ + bin = gst_pipeline_new ("pipeline"); + bus = gst_element_get_bus (bin); + gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH); + + src1 = gst_element_factory_make ("videotestsrc", "src1"); + src2 = gst_element_factory_make ("videotestsrc", "src2"); + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + gst_bin_add_many (GST_BIN (bin), src1, src2, videomixer, sink, NULL); + + srcpad = gst_element_get_static_pad (videomixer, "src"); + consist = gst_consistency_checker_new (srcpad); + gst_object_unref (srcpad); + + res = gst_element_link (src1, videomixer); + fail_unless (res == TRUE, NULL); + res = gst_element_link (src2, videomixer); + fail_unless (res == TRUE, NULL); + res = gst_element_link (videomixer, sink); + fail_unless (res == TRUE, NULL); + + play_seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME, + GST_SEEK_FLAG_SEGMENT | GST_SEEK_FLAG_FLUSH, + GST_SEEK_TYPE_SET, (GstClockTime) 0, + GST_SEEK_TYPE_SET, (GstClockTime) 2 * GST_SECOND); + + main_loop = g_main_loop_new (NULL, FALSE); + g_signal_connect (bus, "message::segment-done", + (GCallback) test_play_twice_message_received, bin); + g_signal_connect (bus, "message::error", (GCallback) message_received, bin); + g_signal_connect (bus, "message::warning", (GCallback) message_received, bin); + g_signal_connect (bus, "message::eos", (GCallback) message_received, bin); + + /* run it twice */ + for (i = 0; i < 2; i++) { + play_count = 0; + + GST_INFO ("starting test-loop %d", i); + + /* prepare playing */ + state_res = gst_element_set_state (bin, GST_STATE_PAUSED); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* wait for completion */ + state_res = + gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, + GST_CLOCK_TIME_NONE); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + res = gst_element_send_event (bin, gst_event_ref (play_seek_event)); + fail_unless (res == TRUE, NULL); + + GST_INFO ("seeked"); + + /* run pipeline */ + state_res = gst_element_set_state (bin, GST_STATE_PLAYING); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + g_main_loop_run (main_loop); + + state_res = gst_element_set_state (bin, GST_STATE_READY); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + ck_assert_int_eq (play_count, 2); + + /* plug another source */ + if (i == 0) { + src3 = gst_element_factory_make ("videotestsrc", "src3"); + gst_bin_add (GST_BIN (bin), src3); + + res = gst_element_link (src3, videomixer); + fail_unless (res == TRUE, NULL); + } + + gst_consistency_checker_reset (consist); + } + + state_res = gst_element_set_state (bin, GST_STATE_NULL); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* cleanup */ + g_main_loop_unref (main_loop); + gst_event_ref (play_seek_event); + gst_consistency_checker_free (consist); + gst_bus_remove_signal_watch (bus); + gst_object_unref (bus); + gst_object_unref (bin); +} + +GST_END_TEST; + +/* check if adding pads work as expected */ +GST_START_TEST (test_add_pad) +{ + GstElement *bin, *src1, *src2, *videomixer, *sink; + GstBus *bus; + GstPad *srcpad; + gboolean res; + GstStateChangeReturn state_res; + + GST_INFO ("preparing test"); + + /* build pipeline */ + bin = gst_pipeline_new ("pipeline"); + bus = gst_element_get_bus (bin); + gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH); + + src1 = gst_element_factory_make ("videotestsrc", "src1"); + g_object_set (src1, "num-buffers", 4, NULL); + src2 = gst_element_factory_make ("videotestsrc", "src2"); + /* one buffer less, we connect with 1 buffer of delay */ + g_object_set (src2, "num-buffers", 3, NULL); + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + gst_bin_add_many (GST_BIN (bin), src1, videomixer, sink, NULL); + + res = gst_element_link (src1, videomixer); + fail_unless (res == TRUE, NULL); + res = gst_element_link (videomixer, sink); + fail_unless (res == TRUE, NULL); + + srcpad = gst_element_get_static_pad (videomixer, "src"); + gst_object_unref (srcpad); + + main_loop = g_main_loop_new (NULL, FALSE); + g_signal_connect (bus, "message::segment-done", (GCallback) message_received, + bin); + g_signal_connect (bus, "message::error", (GCallback) message_received, bin); + g_signal_connect (bus, "message::warning", (GCallback) message_received, bin); + g_signal_connect (bus, "message::eos", (GCallback) message_received, bin); + + GST_INFO ("starting test"); + + /* prepare playing */ + state_res = gst_element_set_state (bin, GST_STATE_PAUSED); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* wait for completion */ + state_res = + gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, + GST_CLOCK_TIME_NONE); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* add other element */ + gst_bin_add_many (GST_BIN (bin), src2, NULL); + + /* now link the second element */ + res = gst_element_link (src2, videomixer); + fail_unless (res == TRUE, NULL); + + /* set to PAUSED as well */ + state_res = gst_element_set_state (src2, GST_STATE_PAUSED); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* now play all */ + state_res = gst_element_set_state (bin, GST_STATE_PLAYING); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + g_main_loop_run (main_loop); + + state_res = gst_element_set_state (bin, GST_STATE_NULL); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* cleanup */ + g_main_loop_unref (main_loop); + gst_bus_remove_signal_watch (bus); + gst_object_unref (bus); + gst_object_unref (bin); +} + +GST_END_TEST; + +/* check if removing pads work as expected */ +GST_START_TEST (test_remove_pad) +{ + GstElement *bin, *src, *videomixer, *sink; + GstBus *bus; + GstPad *pad, *srcpad; + gboolean res; + GstStateChangeReturn state_res; + + GST_INFO ("preparing test"); + + /* build pipeline */ + bin = gst_pipeline_new ("pipeline"); + bus = gst_element_get_bus (bin); + gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH); + + src = gst_element_factory_make ("videotestsrc", "src"); + g_object_set (src, "num-buffers", 4, NULL); + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + gst_bin_add_many (GST_BIN (bin), src, videomixer, sink, NULL); + + res = gst_element_link (src, videomixer); + fail_unless (res == TRUE, NULL); + res = gst_element_link (videomixer, sink); + fail_unless (res == TRUE, NULL); + + /* create an unconnected sinkpad in videomixer */ + pad = gst_element_get_request_pad (videomixer, "sink_%u"); + fail_if (pad == NULL, NULL); + + srcpad = gst_element_get_static_pad (videomixer, "src"); + gst_object_unref (srcpad); + + main_loop = g_main_loop_new (NULL, FALSE); + g_signal_connect (bus, "message::segment-done", (GCallback) message_received, + bin); + g_signal_connect (bus, "message::error", (GCallback) message_received, bin); + g_signal_connect (bus, "message::warning", (GCallback) message_received, bin); + g_signal_connect (bus, "message::eos", (GCallback) message_received, bin); + + GST_INFO ("starting test"); + + /* prepare playing, this will not preroll as videomixer is waiting + * on the unconnected sinkpad. */ + state_res = gst_element_set_state (bin, GST_STATE_PAUSED); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* wait for completion for one second, will return ASYNC */ + state_res = gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, GST_SECOND); + ck_assert_int_eq (state_res, GST_STATE_CHANGE_ASYNC); + + /* get rid of the pad now, videomixer should stop waiting on it and + * continue the preroll */ + gst_element_release_request_pad (videomixer, pad); + gst_object_unref (pad); + + /* wait for completion, should work now */ + state_res = + gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, + GST_CLOCK_TIME_NONE); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* now play all */ + state_res = gst_element_set_state (bin, GST_STATE_PLAYING); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + g_main_loop_run (main_loop); + + state_res = gst_element_set_state (bin, GST_STATE_NULL); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* cleanup */ + g_main_loop_unref (main_loop); + gst_bus_remove_signal_watch (bus); + gst_object_unref (G_OBJECT (bus)); + gst_object_unref (G_OBJECT (bin)); +} + +GST_END_TEST; + + +static GstBuffer *handoff_buffer = NULL; +static void +handoff_buffer_cb (GstElement * fakesink, GstBuffer * buffer, GstPad * pad, + gpointer user_data) +{ + GST_DEBUG ("got buffer %p", buffer); + gst_buffer_replace (&handoff_buffer, buffer); +} + +/* check if clipping works as expected */ +GST_START_TEST (test_clip) +{ + GstSegment segment; + GstElement *bin, *videomixer, *sink; + GstBus *bus; + GstPad *sinkpad; + gboolean res; + GstStateChangeReturn state_res; + GstFlowReturn ret; + GstEvent *event; + GstBuffer *buffer; + GstCaps *caps; + + GST_INFO ("preparing test"); + + /* build pipeline */ + bin = gst_pipeline_new ("pipeline"); + bus = gst_element_get_bus (bin); + gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH); + + g_signal_connect (bus, "message::error", (GCallback) message_received, bin); + g_signal_connect (bus, "message::warning", (GCallback) message_received, bin); + g_signal_connect (bus, "message::eos", (GCallback) message_received, bin); + + /* just an videomixer and a fakesink */ + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + g_object_set (sink, "signal-handoffs", TRUE, NULL); + g_signal_connect (sink, "handoff", (GCallback) handoff_buffer_cb, NULL); + gst_bin_add_many (GST_BIN (bin), videomixer, sink, NULL); + + res = gst_element_link (videomixer, sink); + fail_unless (res == TRUE, NULL); + + /* set to playing */ + state_res = gst_element_set_state (bin, GST_STATE_PLAYING); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* create an unconnected sinkpad in videomixer, should also automatically activate + * the pad */ + sinkpad = gst_element_get_request_pad (videomixer, "sink_%u"); + fail_if (sinkpad == NULL, NULL); + + gst_pad_send_event (sinkpad, gst_event_new_stream_start ("test")); + + caps = gst_caps_from_string (VIDEO_CAPS_STRING); + + gst_pad_set_caps (sinkpad, caps); + gst_caps_unref (caps); + + /* send segment to videomixer */ + gst_segment_init (&segment, GST_FORMAT_TIME); + segment.start = GST_SECOND; + segment.stop = 2 * GST_SECOND; + segment.time = 0; + event = gst_event_new_segment (&segment); + gst_pad_send_event (sinkpad, event); + + /* should be clipped and ok */ + buffer = gst_buffer_new_and_alloc (115200); + GST_BUFFER_TIMESTAMP (buffer) = 0; + GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND; + GST_DEBUG ("pushing buffer %p", buffer); + ret = gst_pad_chain (sinkpad, buffer); + ck_assert_int_eq (ret, GST_FLOW_OK); + fail_unless (handoff_buffer == NULL); + + /* should be partially clipped */ + buffer = gst_buffer_new_and_alloc (115200); + GST_BUFFER_TIMESTAMP (buffer) = 900 * GST_MSECOND; + GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND; + GST_DEBUG ("pushing buffer %p", buffer); + ret = gst_pad_chain (sinkpad, buffer); + ck_assert_int_eq (ret, GST_FLOW_OK); + fail_unless (handoff_buffer != NULL); + gst_buffer_replace (&handoff_buffer, NULL); + + /* should not be clipped */ + buffer = gst_buffer_new_and_alloc (115200); + GST_BUFFER_TIMESTAMP (buffer) = 1 * GST_SECOND; + GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND; + GST_DEBUG ("pushing buffer %p", buffer); + ret = gst_pad_chain (sinkpad, buffer); + ck_assert_int_eq (ret, GST_FLOW_OK); + fail_unless (handoff_buffer != NULL); + gst_buffer_replace (&handoff_buffer, NULL); + + /* should be clipped and ok */ + buffer = gst_buffer_new_and_alloc (115200); + GST_BUFFER_TIMESTAMP (buffer) = 2 * GST_SECOND; + GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND; + GST_DEBUG ("pushing buffer %p", buffer); + ret = gst_pad_chain (sinkpad, buffer); + ck_assert_int_eq (ret, GST_FLOW_OK); + fail_unless (handoff_buffer == NULL); + + gst_object_unref (sinkpad); + gst_element_set_state (bin, GST_STATE_NULL); + gst_bus_remove_signal_watch (bus); + gst_object_unref (bus); + gst_object_unref (bin); +} + +GST_END_TEST; + +GST_START_TEST (test_duration_is_max) +{ + GstElement *bin, *src[3], *videomixer, *sink; + GstStateChangeReturn state_res; + GstFormat format = GST_FORMAT_TIME; + gboolean res; + gint64 duration; + + GST_INFO ("preparing test"); + + /* build pipeline */ + bin = gst_pipeline_new ("pipeline"); + + /* 3 sources, an videomixer and a fakesink */ + src[0] = gst_element_factory_make ("videotestsrc", NULL); + src[1] = gst_element_factory_make ("videotestsrc", NULL); + src[2] = gst_element_factory_make ("videotestsrc", NULL); + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + gst_bin_add_many (GST_BIN (bin), src[0], src[1], src[2], videomixer, sink, + NULL); + + gst_element_link (src[0], videomixer); + gst_element_link (src[1], videomixer); + gst_element_link (src[2], videomixer); + gst_element_link (videomixer, sink); + + /* irks, duration is reset on basesrc */ + state_res = gst_element_set_state (bin, GST_STATE_PAUSED); + fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL); + + /* set durations on src */ + GST_BASE_SRC (src[0])->segment.duration = 1000; + GST_BASE_SRC (src[1])->segment.duration = 3000; + GST_BASE_SRC (src[2])->segment.duration = 2000; + + /* set to playing */ + state_res = gst_element_set_state (bin, GST_STATE_PLAYING); + fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL); + + /* wait for completion */ + state_res = + gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, + GST_CLOCK_TIME_NONE); + fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL); + + res = gst_element_query_duration (GST_ELEMENT (bin), format, &duration); + fail_unless (res, NULL); + + ck_assert_int_eq (duration, 3000); + + gst_element_set_state (bin, GST_STATE_NULL); + gst_object_unref (bin); +} + +GST_END_TEST; + +GST_START_TEST (test_duration_unknown_overrides) +{ + GstElement *bin, *src[3], *videomixer, *sink; + GstStateChangeReturn state_res; + GstFormat format = GST_FORMAT_TIME; + gboolean res; + gint64 duration; + + GST_INFO ("preparing test"); + + /* build pipeline */ + bin = gst_pipeline_new ("pipeline"); + + /* 3 sources, an videomixer and a fakesink */ + src[0] = gst_element_factory_make ("videotestsrc", NULL); + src[1] = gst_element_factory_make ("videotestsrc", NULL); + src[2] = gst_element_factory_make ("videotestsrc", NULL); + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + gst_bin_add_many (GST_BIN (bin), src[0], src[1], src[2], videomixer, sink, + NULL); + + gst_element_link (src[0], videomixer); + gst_element_link (src[1], videomixer); + gst_element_link (src[2], videomixer); + gst_element_link (videomixer, sink); + + /* irks, duration is reset on basesrc */ + state_res = gst_element_set_state (bin, GST_STATE_PAUSED); + fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL); + + /* set durations on src */ + GST_BASE_SRC (src[0])->segment.duration = GST_CLOCK_TIME_NONE; + GST_BASE_SRC (src[1])->segment.duration = 3000; + GST_BASE_SRC (src[2])->segment.duration = 2000; + + /* set to playing */ + state_res = gst_element_set_state (bin, GST_STATE_PLAYING); + fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL); + + /* wait for completion */ + state_res = + gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, + GST_CLOCK_TIME_NONE); + fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL); + + res = gst_element_query_duration (GST_ELEMENT (bin), format, &duration); + fail_unless (res, NULL); + + ck_assert_int_eq (duration, GST_CLOCK_TIME_NONE); + + gst_element_set_state (bin, GST_STATE_NULL); + gst_object_unref (bin); +} + +GST_END_TEST; + + +static gboolean looped = FALSE; + +static void +loop_segment_done (GstBus * bus, GstMessage * message, GstElement * bin) +{ + GST_INFO ("bus message from \"%" GST_PTR_FORMAT "\": %" GST_PTR_FORMAT, + GST_MESSAGE_SRC (message), message); + + if (looped) { + g_main_loop_quit (main_loop); + } else { + GstEvent *seek_event; + gboolean res; + + seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME, + GST_SEEK_FLAG_SEGMENT, + GST_SEEK_TYPE_SET, (GstClockTime) 0, + GST_SEEK_TYPE_SET, (GstClockTime) 1 * GST_SECOND); + + res = gst_element_send_event (bin, seek_event); + fail_unless (res == TRUE, NULL); + looped = TRUE; + } +} + +GST_START_TEST (test_loop) +{ + GstElement *bin, *src1, *src2, *videomixer, *sink; + GstBus *bus; + GstEvent *seek_event; + GstStateChangeReturn state_res; + gboolean res; + + GST_INFO ("preparing test"); + + /* build pipeline */ + bin = gst_pipeline_new ("pipeline"); + bus = gst_element_get_bus (bin); + gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH); + + src1 = gst_element_factory_make ("videotestsrc", "src1"); + src2 = gst_element_factory_make ("videotestsrc", "src2"); + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + gst_bin_add_many (GST_BIN (bin), src1, src2, videomixer, sink, NULL); + + res = gst_element_link (src1, videomixer); + fail_unless (res == TRUE, NULL); + res = gst_element_link (src2, videomixer); + fail_unless (res == TRUE, NULL); + res = gst_element_link (videomixer, sink); + fail_unless (res == TRUE, NULL); + + seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME, + GST_SEEK_FLAG_SEGMENT | GST_SEEK_FLAG_FLUSH, + GST_SEEK_TYPE_SET, (GstClockTime) 0, GST_SEEK_TYPE_SET, + (GstClockTime) 2 * GST_SECOND); + + main_loop = g_main_loop_new (NULL, FALSE); + g_signal_connect (bus, "message::segment-done", + (GCallback) loop_segment_done, bin); + g_signal_connect (bus, "message::error", (GCallback) message_received, bin); + g_signal_connect (bus, "message::warning", (GCallback) message_received, bin); + g_signal_connect (bus, "message::eos", (GCallback) message_received, bin); + + GST_INFO ("starting test"); + + /* prepare playing */ + state_res = gst_element_set_state (bin, GST_STATE_PAUSED); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + /* wait for completion */ + state_res = + gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, + GST_CLOCK_TIME_NONE); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + res = gst_element_send_event (bin, seek_event); + fail_unless (res == TRUE, NULL); + + /* run pipeline */ + state_res = gst_element_set_state (bin, GST_STATE_PLAYING); + ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE); + + GST_INFO ("running main loop"); + g_main_loop_run (main_loop); + + state_res = gst_element_set_state (bin, GST_STATE_NULL); + + /* cleanup */ + g_main_loop_unref (main_loop); + gst_bus_remove_signal_watch (bus); + gst_object_unref (bus); + gst_object_unref (bin); +} + +GST_END_TEST; + +GST_START_TEST (test_flush_start_flush_stop) +{ + GstPadTemplate *sink_template; + GstPad *tmppad, *sinkpad1, *sinkpad2, *videomixer_src; + GstElement *pipeline, *src1, *src2, *videomixer, *sink; + + GST_INFO ("preparing test"); + + /* build pipeline */ + pipeline = gst_pipeline_new ("pipeline"); + src1 = gst_element_factory_make ("videotestsrc", "src1"); + src2 = gst_element_factory_make ("videotestsrc", "src2"); + videomixer = gst_element_factory_make ("videomixer", "videomixer"); + sink = gst_element_factory_make ("fakesink", "sink"); + gst_bin_add_many (GST_BIN (pipeline), src1, src2, videomixer, sink, NULL); + + sink_template = + gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (videomixer), + "sink_%u"); + fail_unless (GST_IS_PAD_TEMPLATE (sink_template)); + sinkpad1 = gst_element_request_pad (videomixer, sink_template, NULL, NULL); + tmppad = gst_element_get_static_pad (src1, "src"); + gst_pad_link (tmppad, sinkpad1); + gst_object_unref (tmppad); + + sinkpad2 = gst_element_request_pad (videomixer, sink_template, NULL, NULL); + tmppad = gst_element_get_static_pad (src2, "src"); + gst_pad_link (tmppad, sinkpad2); + gst_object_unref (tmppad); + + gst_element_link (videomixer, sink); + + gst_element_set_state (pipeline, GST_STATE_PLAYING); + fail_unless (gst_element_get_state (pipeline, NULL, NULL, + GST_CLOCK_TIME_NONE) == GST_STATE_CHANGE_SUCCESS); + + videomixer_src = gst_element_get_static_pad (videomixer, "src"); + fail_if (GST_PAD_IS_FLUSHING (videomixer_src)); + gst_pad_send_event (sinkpad1, gst_event_new_flush_start ()); + fail_unless (GST_PAD_IS_FLUSHING (videomixer_src)); + gst_pad_send_event (sinkpad1, gst_event_new_flush_stop (TRUE)); + fail_if (GST_PAD_IS_FLUSHING (videomixer_src)); + gst_object_unref (videomixer_src); + + /* cleanup */ + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (pipeline); +} + +GST_END_TEST; + + +static Suite * +videomixer_suite (void) +{ + Suite *s = suite_create ("videomixer"); + TCase *tc_chain = tcase_create ("general"); + + suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_caps); + tcase_add_test (tc_chain, test_event); + tcase_add_test (tc_chain, test_play_twice); + tcase_add_test (tc_chain, test_play_twice_then_add_and_play_again); + tcase_add_test (tc_chain, test_add_pad); + tcase_add_test (tc_chain, test_remove_pad); + tcase_add_test (tc_chain, test_clip); + tcase_add_test (tc_chain, test_duration_is_max); + tcase_add_test (tc_chain, test_duration_unknown_overrides); + tcase_add_test (tc_chain, test_loop); + tcase_add_test (tc_chain, test_flush_start_flush_stop); + + /* Use a longer timeout */ +#ifdef HAVE_VALGRIND + if (RUNNING_ON_VALGRIND) { + tcase_set_timeout (tc_chain, 5 * 60); + } else +#endif + { + /* this is shorter than the default 60 seconds?! (tpm) */ + /* tcase_set_timeout (tc_chain, 6); */ + } + + return s; +} + +GST_CHECK_MAIN (videomixer); diff --git a/tests/check/elements/vp8dec.c b/tests/check/elements/vp8dec.c index 25648401af17ee291da62af053c2bebc18bed7ae..786809e61c6b05940171753fe05450376594aa73 100644 --- a/tests/check/elements/vp8dec.c +++ b/tests/check/elements/vp8dec.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -80,7 +80,7 @@ setup_vp8dec (const gchar * src_caps_str) sinkpad = gst_check_setup_sink_pad (bin, &sinktemplate); gst_pad_set_active (srcpad, TRUE); gst_pad_set_active (sinkpad, TRUE); - fail_unless (gst_pad_set_caps (srcpad, srccaps)); + gst_check_setup_events (srcpad, bin, srccaps, GST_FORMAT_TIME); bus = gst_bus_new (); gst_element_set_bus (bin, bus); diff --git a/tests/check/elements/vp8enc.c b/tests/check/elements/vp8enc.c index fc130473d0ae66ba87a7942415e88bcb29a0a378..86b1d929d1363d895c723f801cd9c8ca0bca0e79 100644 --- a/tests/check/elements/vp8enc.c +++ b/tests/check/elements/vp8enc.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -55,7 +55,7 @@ setup_vp8enc (const gchar * src_caps_str) sinkpad = gst_check_setup_sink_pad (vp8enc, &sinktemplate); gst_pad_set_active (srcpad, TRUE); gst_pad_set_active (sinkpad, TRUE); - fail_unless (gst_pad_set_caps (srcpad, srccaps)); + gst_check_setup_events (srcpad, vp8enc, srccaps, GST_FORMAT_TIME); bus = gst_bus_new (); gst_element_set_bus (vp8enc, bus); diff --git a/tests/check/elements/wavpackdec.c b/tests/check/elements/wavpackdec.c index 01ae67d202518ee5637dae7d25d077a47dedc29d..65c108dd55d132f573a0b14d81ec1846539f1cfb 100644 --- a/tests/check/elements/wavpackdec.c +++ b/tests/check/elements/wavpackdec.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -82,6 +82,11 @@ setup_wavpackdec (void) mysinkpad = gst_check_setup_sink_pad (wavpackdec, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); + gst_check_setup_events (mysrcpad, wavpackdec, NULL, GST_FORMAT_TIME); + + fail_unless (gst_element_set_state (wavpackdec, + GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, + "could not set to playing"); return wavpackdec; } @@ -108,10 +113,6 @@ GST_START_TEST (test_decode_frame) GstMapInfo map; wavpackdec = setup_wavpackdec (); - - fail_unless (gst_element_set_state (wavpackdec, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); bus = gst_bus_new (); inbuffer = gst_buffer_new_and_alloc (sizeof (test_frame)); @@ -162,10 +163,6 @@ GST_START_TEST (test_decode_frame_with_broken_header) GstMessage *message; wavpackdec = setup_wavpackdec (); - - fail_unless (gst_element_set_state (wavpackdec, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); bus = gst_bus_new (); inbuffer = gst_buffer_new_and_alloc (sizeof (test_frame)); @@ -199,10 +196,6 @@ GST_START_TEST (test_decode_frame_with_incomplete_frame) GstMessage *message; wavpackdec = setup_wavpackdec (); - - fail_unless (gst_element_set_state (wavpackdec, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); bus = gst_bus_new (); inbuffer = gst_buffer_new_and_alloc (sizeof (test_frame) - 2); diff --git a/tests/check/elements/wavpackenc.c b/tests/check/elements/wavpackenc.c index 5536effcb1a010e125b1f8e7bac71c8df48f11d2..22e2e7c9f92cd4d394b96db195273f888832de08 100644 --- a/tests/check/elements/wavpackenc.c +++ b/tests/check/elements/wavpackenc.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> diff --git a/tests/check/elements/wavpackparse.c b/tests/check/elements/wavpackparse.c index d7d214f0acd8b8cad5fc7806fd1797eb2d122189..ec409097f18667ac3452cd9e846f0d870860353d 100644 --- a/tests/check/elements/wavpackparse.c +++ b/tests/check/elements/wavpackparse.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -79,6 +79,7 @@ setup_wavpackparse (void) mysinkpad = gst_check_setup_sink_pad (wavpackparse, &sinktemplate); gst_pad_set_active (mysrcpad, TRUE); gst_pad_set_active (mysinkpad, TRUE); + gst_check_setup_events (mysrcpad, wavpackparse, NULL, GST_FORMAT_BYTES); return wavpackparse; } diff --git a/tests/check/elements/wavparse.c b/tests/check/elements/wavparse.c new file mode 100644 index 0000000000000000000000000000000000000000..e4fee9207a2ecc2c433ad22feef4cd0585e895a2 --- /dev/null +++ b/tests/check/elements/wavparse.c @@ -0,0 +1,80 @@ +/* GStreamer WavParse unit tests + * + * 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 <gst/check/gstcheck.h> + +static void +do_test_empty_file (gboolean can_activate_pull) +{ + GstStateChangeReturn ret1, ret2; + GstElement *pipeline; + GstElement *src; + GstElement *wavparse; + GstElement *fakesink; + + /* Pull mode */ + pipeline = gst_pipeline_new ("testpipe"); + src = gst_element_factory_make ("fakesrc", NULL); + fail_if (src == NULL); + wavparse = gst_element_factory_make ("wavparse", NULL); + fail_if (wavparse == NULL); + fakesink = gst_element_factory_make ("fakesink", NULL); + fail_if (fakesink == NULL); + + gst_bin_add_many (GST_BIN (pipeline), src, wavparse, fakesink, NULL); + g_object_set (src, "num-buffers", 0, "can-activate-pull", can_activate_pull, + NULL); + + fail_unless (gst_element_link_many (src, wavparse, fakesink, NULL)); + + ret1 = gst_element_set_state (pipeline, GST_STATE_PLAYING); + if (ret1 == GST_STATE_CHANGE_ASYNC) + ret2 = gst_element_get_state (pipeline, NULL, NULL, GST_CLOCK_TIME_NONE); + else + ret2 = ret1; + + /* should have gotten an error on the bus, no output to fakesink */ + fail_unless_equals_int (ret2, GST_STATE_CHANGE_FAILURE); + + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (pipeline); +} + +GST_START_TEST (test_empty_file) +{ + do_test_empty_file (TRUE); + do_test_empty_file (FALSE); +} + +GST_END_TEST; + +static Suite * +wavparse_suite (void) +{ + Suite *s = suite_create ("wavparse"); + TCase *tc_chain = tcase_create ("wavparse"); + + suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_empty_file); + return s; +} + +GST_CHECK_MAIN (wavparse) diff --git a/tests/check/elements/y4menc.c b/tests/check/elements/y4menc.c index 75935377f296a90f15b32c6d47b38a8e06dbb6db..2117ada8b9c6b2ee75adb70595e914e25f26238e 100644 --- a/tests/check/elements/y4menc.c +++ b/tests/check/elements/y4menc.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <unistd.h> @@ -99,7 +99,7 @@ GST_START_TEST (test_y4m) /* makes valgrind's memcheck happier */ gst_buffer_memset (inbuffer, 0, 0, size); caps = gst_caps_from_string (VIDEO_CAPS_STRING); - fail_unless (gst_pad_set_caps (mysrcpad, caps)); + gst_check_setup_events (mysrcpad, y4menc, caps, GST_FORMAT_TIME); gst_caps_unref (caps); GST_BUFFER_TIMESTAMP (inbuffer) = 0; ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); diff --git a/tests/check/generic/states.c b/tests/check/generic/states.c index 571b94090719e9bbaf6b04b6544d5b57d789b437..4601e07eb9a12ca3716d9c23f7e0cb1eda171a64 100644 --- a/tests/check/generic/states.c +++ b/tests/check/generic/states.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/tests/check/pipelines/effectv.c b/tests/check/pipelines/effectv.c index b4904109fb6d1044c4783757755bfb112bc1f34d..6c25e4b7112f4a4479919a7575ca6c5768355801 100644 --- a/tests/check/pipelines/effectv.c +++ b/tests/check/pipelines/effectv.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/check/pipelines/flacdec.c b/tests/check/pipelines/flacdec.c index d1e4fc2b82d5af5919691a2c78706aa8f892d017..651d77f886ce6651c8561b02aeeaeab1ce56c1eb 100644 --- a/tests/check/pipelines/flacdec.c +++ b/tests/check/pipelines/flacdec.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -36,7 +36,7 @@ _get_first_sample (GstSample * sample) fail_unless (caps != NULL, "sample without caps"); buf = gst_sample_get_buffer (sample); - GST_DEBUG ("buffer with size=%u, caps=%" GST_PTR_FORMAT, + GST_DEBUG ("buffer with size=%" G_GSIZE_FORMAT ", caps=%" GST_PTR_FORMAT, gst_buffer_get_size (buf), caps); gst_buffer_map (buf, &map, GST_MAP_READ); diff --git a/tests/check/pipelines/simple-launch-lines.c b/tests/check/pipelines/simple-launch-lines.c index 4dedbe3d886e7f54168985d681d33680c8961f81..cce4f2d2a3fe6628aca9de10313a1fffceaea00b 100644 --- a/tests/check/pipelines/simple-launch-lines.c +++ b/tests/check/pipelines/simple-launch-lines.c @@ -15,8 +15,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -289,7 +289,7 @@ simple_launch_lines_suite (void) tcase_add_test (tc_chain, test_rtp_payloaders); tcase_add_test (tc_chain, test_video_encoders_decoders); /* FIXME: very rarely fails, maybe because of negotiation issues? */ - tcase_skip_broken_test (tc_chain, test_videomixer); + tcase_add_test (tc_chain, test_videomixer); #endif return s; } diff --git a/tests/check/pipelines/tagschecking.c b/tests/check/pipelines/tagschecking.c index 00a00683bd9132dc88cc1265bba67f98d7ca6e05..f09a32027cb318778741de1227a412ec0f48e1cd 100644 --- a/tests/check/pipelines/tagschecking.c +++ b/tests/check/pipelines/tagschecking.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> @@ -271,7 +271,8 @@ test_tags (const gchar * tag_str, const gchar * caps, const gchar * muxer, #define H264_CAPS "video/x-h264, width=(int)320, height=(int)240," \ " framerate=(fraction)30/1, codec_data=(buffer)" \ "01401592ffe10017674d401592540a0fd8088000000300" \ - "8000001e478b175001000468ee3c80, stream-format=(string)avc" + "8000001e478b175001000468ee3c80, "\ + "stream-format=(string)avc, alignment=(string)au" #define COMMON_TAGS \ "taglist,title=test_title," \ diff --git a/tests/check/pipelines/wavenc.c b/tests/check/pipelines/wavenc.c index 2fdfdc3e804e48a01fa73bcd7a09d693b780dd9c..b79fbf6ff3706f7f2a271f41b6294ff211b8750f 100644 --- a/tests/check/pipelines/wavenc.c +++ b/tests/check/pipelines/wavenc.c @@ -16,8 +16,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* FIXME 0.11: suppress warnings for deprecated API such as GValueArray diff --git a/tests/check/pipelines/wavpack.c b/tests/check/pipelines/wavpack.c index d298848b168c97ede3bd4f8e7c026ae76f45d120..9a6d07a8e3a6132a717c8cdb16cdb5ccee98b2c2 100644 --- a/tests/check/pipelines/wavpack.c +++ b/tests/check/pipelines/wavpack.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/check/gstcheck.h> diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in index 8e6238cbe49ab3df34342cd40622dd783f39c2ad..5c24095102664f400bb735518ac88fd71e0f7ac1 100644 --- a/tests/examples/Makefile.in +++ b/tests/examples/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -20,23 +19,51 @@ # descending into all subdirectories a second time, but only after the first # (parallel) run has finished, so it should go right through the second time. VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -56,8 +83,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/common/parallel-subdirs.mak +DIST_COMMON = $(top_srcdir)/common/parallel-subdirs.mak \ + $(srcdir)/Makefile.in $(srcdir)/Makefile.am subdir = tests/examples ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ @@ -65,7 +92,6 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -101,21 +127,28 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -123,9 +156,29 @@ am__can_run_installinfo = \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -318,6 +371,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -530,22 +584,25 @@ clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -560,57 +617,12 @@ $(RECURSIVE_TARGETS): $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -626,12 +638,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -643,15 +650,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -660,6 +663,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -820,22 +838,20 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am .PHONY: independent-subdirs $(SUBDIRS) diff --git a/tests/examples/audiofx/Makefile.in b/tests/examples/audiofx/Makefile.in index 170e91e24c140fdb8ac9ba0f0597e078a507fafe..c94ca347dc2fd3210e8bf59a2be0b1d36f216916 100644 --- a/tests/examples/audiofx/Makefile.in +++ b/tests/examples/audiofx/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -55,14 +82,14 @@ target_triplet = @target@ noinst_PROGRAMS = firfilter-example$(EXEEXT) \ iirfilter-example$(EXEEXT) subdir = tests/examples/audiofx -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -108,6 +135,7 @@ firfilter_example_DEPENDENCIES = $(am__DEPENDENCIES_1) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = firfilter_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(firfilter_example_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ @@ -121,6 +149,18 @@ iirfilter_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(iirfilter_example_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -133,20 +173,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = firfilter-example.c iirfilter-example.c DIST_SOURCES = firfilter-example.c iirfilter-example.c am__can_run_installinfo = \ @@ -154,6 +190,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -323,6 +376,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -530,9 +584,11 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + firfilter-example$(EXEEXT): $(firfilter_example_OBJECTS) $(firfilter_example_DEPENDENCIES) $(EXTRA_firfilter_example_DEPENDENCIES) @rm -f firfilter-example$(EXEEXT) $(AM_V_CCLD)$(firfilter_example_LINK) $(firfilter_example_OBJECTS) $(firfilter_example_LDADD) $(LIBS) + iirfilter-example$(EXEEXT): $(iirfilter_example_OBJECTS) $(iirfilter_example_DEPENDENCIES) $(EXTRA_iirfilter_example_DEPENDENCIES) @rm -f iirfilter-example$(EXEEXT) $(AM_V_CCLD)$(iirfilter_example_LINK) $(iirfilter_example_OBJECTS) $(iirfilter_example_LDADD) $(LIBS) @@ -547,22 +603,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iirfilter_example-iirfilter-example.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -601,26 +660,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -632,15 +680,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -649,6 +693,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -790,18 +849,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/examples/audiofx/firfilter-example.c b/tests/examples/audiofx/firfilter-example.c index e2fa2dc25bfc5ac240245db94a093cdbb8758595..a3a6cfec088f59a10c2c5ccd852c603334eed131 100644 --- a/tests/examples/audiofx/firfilter-example.c +++ b/tests/examples/audiofx/firfilter-example.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* This small sample application creates a bandpass FIR filter diff --git a/tests/examples/audiofx/iirfilter-example.c b/tests/examples/audiofx/iirfilter-example.c index 708bde1e1d7b574bd773df8c4959eec2bf4fa730..fc553f91509431588e8ffd3627c8de42ca152200 100644 --- a/tests/examples/audiofx/iirfilter-example.c +++ b/tests/examples/audiofx/iirfilter-example.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* This small sample application creates a lowpass IIR filter diff --git a/tests/examples/cairo/Makefile.in b/tests/examples/cairo/Makefile.in index 3ba4e569ddcea7ee4f1c7f1573c26f3db95f923b..deee2277b72979f014fe2ae0a8e55b46496b3d5a 100644 --- a/tests/examples/cairo/Makefile.in +++ b/tests/examples/cairo/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,14 +81,14 @@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = cairo_overlay$(EXEEXT) subdir = tests/examples/cairo -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -106,9 +133,22 @@ cairo_overlay_DEPENDENCIES = $(am__DEPENDENCIES_1) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = cairo_overlay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(cairo_overlay_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -121,20 +161,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(cairo_overlay_SOURCES) DIST_SOURCES = $(cairo_overlay_SOURCES) am__can_run_installinfo = \ @@ -142,6 +178,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -309,6 +362,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -515,6 +569,7 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + cairo_overlay$(EXEEXT): $(cairo_overlay_OBJECTS) $(cairo_overlay_DEPENDENCIES) $(EXTRA_cairo_overlay_DEPENDENCIES) @rm -f cairo_overlay$(EXEEXT) $(AM_V_CCLD)$(cairo_overlay_LINK) $(cairo_overlay_OBJECTS) $(cairo_overlay_LDADD) $(LIBS) @@ -528,22 +583,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_overlay-cairo_overlay.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -568,26 +626,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -599,15 +646,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -616,6 +659,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -757,18 +815,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/examples/cairo/cairo_overlay.c b/tests/examples/cairo/cairo_overlay.c index 937528d944b8abdb877c2ca1903754ee50f65d2e..9e9f71afa11d707b7aaf6dc455013bea739ae469 100644 --- a/tests/examples/cairo/cairo_overlay.c +++ b/tests/examples/cairo/cairo_overlay.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/tests/examples/equalizer/Makefile.in b/tests/examples/equalizer/Makefile.in index fee91593090134b2118eeedaf89f76b2cc5954dc..6901c0c330bd0852aa9ea54f7a3f021a145ce3f6 100644 --- a/tests/examples/equalizer/Makefile.in +++ b/tests/examples/equalizer/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,14 +81,14 @@ host_triplet = @host@ target_triplet = @target@ @HAVE_GTK_TRUE@noinst_PROGRAMS = demo$(EXEEXT) subdir = tests/examples/equalizer -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -106,9 +133,22 @@ demo_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = demo_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(demo_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -121,20 +161,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(demo_SOURCES) DIST_SOURCES = $(demo_SOURCES) am__can_run_installinfo = \ @@ -142,6 +178,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -309,6 +362,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -515,6 +569,7 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + demo$(EXEEXT): $(demo_OBJECTS) $(demo_DEPENDENCIES) $(EXTRA_demo_DEPENDENCIES) @rm -f demo$(EXEEXT) $(AM_V_CCLD)$(demo_LINK) $(demo_OBJECTS) $(demo_LDADD) $(LIBS) @@ -528,22 +583,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo-demo.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -568,26 +626,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -599,15 +646,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -616,6 +659,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -757,18 +815,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/examples/jack/Makefile.in b/tests/examples/jack/Makefile.in index 9527cc0d16a22ac1c7fbec3c09688562051a18df..ecc6bacda54a1c642c2c74af0887a80e5f9663ef 100644 --- a/tests/examples/jack/Makefile.in +++ b/tests/examples/jack/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,14 +81,14 @@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = $(am__EXEEXT_1) subdir = tests/examples/jack -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -105,9 +132,22 @@ jack_client_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = jack_client_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(jack_client_CFLAGS) \ $(CFLAGS) $(jack_client_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -120,20 +160,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(jack_client_SOURCES) DIST_SOURCES = $(jack_client_SOURCES) am__can_run_installinfo = \ @@ -141,6 +177,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -308,6 +361,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -516,6 +570,7 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + jack_client$(EXEEXT): $(jack_client_OBJECTS) $(jack_client_DEPENDENCIES) $(EXTRA_jack_client_DEPENDENCIES) @rm -f jack_client$(EXEEXT) $(AM_V_CCLD)$(jack_client_LINK) $(jack_client_OBJECTS) $(jack_client_LDADD) $(LIBS) @@ -529,22 +584,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jack_client-jack_client.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -569,26 +627,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -600,15 +647,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -617,6 +660,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -758,18 +816,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/examples/jack/jack_client.c b/tests/examples/jack/jack_client.c index 99599ab5cbcbcbe9e25b7b70b75894c8a5650d11..969ceda9c45dcbe6e8098cdd641e79a08304c18d 100644 --- a/tests/examples/jack/jack_client.c +++ b/tests/examples/jack/jack_client.c @@ -68,7 +68,7 @@ main (int argc, char **argv) } /* quit after 5 seconds */ - g_timeout_add (5000, (GSourceFunc) quit_cb, NULL); + g_timeout_add_seconds (5, (GSourceFunc) quit_cb, NULL); gtk_main (); /* clean up */ diff --git a/tests/examples/level/Makefile.in b/tests/examples/level/Makefile.in index 1c6c87d3a4dd8fac69340617bff2d968258a2f95..b06ec5241abfd58ea57d7abdfefd43e1b8f19671 100644 --- a/tests/examples/level/Makefile.in +++ b/tests/examples/level/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,14 +81,14 @@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = level-example$(EXEEXT) subdir = tests/examples/level -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -106,9 +133,22 @@ level_example_DEPENDENCIES = $(am__DEPENDENCIES_1) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = level_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(level_example_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -121,20 +161,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = level-example.c DIST_SOURCES = level-example.c am__can_run_installinfo = \ @@ -142,6 +178,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -309,6 +362,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -514,6 +568,7 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + level-example$(EXEEXT): $(level_example_OBJECTS) $(level_example_DEPENDENCIES) $(EXTRA_level_example_DEPENDENCIES) @rm -f level-example$(EXEEXT) $(AM_V_CCLD)$(level_example_LINK) $(level_example_OBJECTS) $(level_example_LDADD) $(LIBS) @@ -527,22 +582,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/level_example-level-example.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -567,26 +625,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -598,15 +645,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -615,6 +658,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -756,18 +814,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/examples/level/level-example.c b/tests/examples/level/level-example.c index 15de3ba0fef83ab80dc7112b838822eed6d585f1..a953176d840206e86cc6a0ccb0489558baacb403 100644 --- a/tests/examples/level/level-example.c +++ b/tests/examples/level/level-example.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <string.h> @@ -40,34 +40,37 @@ message_handler (GstBus * bus, GstMessage * message, gpointer data) gdouble rms; const GValue *array_val; const GValue *value; - GValueArray *arr; - + GValueArray *rms_arr, *peak_arr, *decay_arr; gint i; if (!gst_structure_get_clock_time (s, "endtime", &endtime)) g_warning ("Could not parse endtime"); - /* we can get the number of channels as the length of any of the value - * lists */ + + /* the values are packed into GValueArrays with the value per channel */ array_val = gst_structure_get_value (s, "rms"); - arr = (GValueArray *) g_value_get_boxed (array_val); - channels = arr->n_values; + rms_arr = (GValueArray *) g_value_get_boxed (array_val); + + array_val = gst_structure_get_value (s, "peak"); + peak_arr = (GValueArray *) g_value_get_boxed (array_val); + array_val = gst_structure_get_value (s, "decay"); + decay_arr = (GValueArray *) g_value_get_boxed (array_val); + + /* we can get the number of channels as the length of any of the value + * arrays */ + channels = rms_arr->n_values; g_print ("endtime: %" GST_TIME_FORMAT ", channels: %d\n", GST_TIME_ARGS (endtime), channels); for (i = 0; i < channels; ++i) { g_print ("channel %d\n", i); - array_val = gst_structure_get_value (s, "rms"); - arr = (GValueArray *) g_value_get_boxed (array_val); - value = g_value_array_get_nth (arr, i); + value = g_value_array_get_nth (rms_arr, i); rms_dB = g_value_get_double (value); - array_val = gst_structure_get_value (s, "peak"); - arr = (GValueArray *) g_value_get_boxed (array_val); - value = g_value_array_get_nth (arr, i); + + value = g_value_array_get_nth (peak_arr, i); peak_dB = g_value_get_double (value); - array_val = gst_structure_get_value (s, "decay"); - arr = (GValueArray *) g_value_get_boxed (array_val); - value = g_value_array_get_nth (arr, i); + + value = g_value_array_get_nth (decay_arr, i); decay_dB = g_value_get_double (value); g_print (" RMS: %f dB, peak: %f dB, decay: %f dB\n", rms_dB, peak_dB, decay_dB); @@ -118,7 +121,7 @@ main (int argc, char *argv[]) g_error ("Failed to link level and fakesink"); /* make sure we'll get messages */ - g_object_set (G_OBJECT (level), "message", TRUE, NULL); + g_object_set (G_OBJECT (level), "post-messages", TRUE, NULL); /* run synced and not as fast as we can */ g_object_set (G_OBJECT (fakesink), "sync", TRUE, NULL); diff --git a/tests/examples/pulse/Makefile.in b/tests/examples/pulse/Makefile.in index 3b8de16b853aff1fe949a4b0c70e685647ae3370..435fbaf534c97df18a70b892b976bc6c05827299 100644 --- a/tests/examples/pulse/Makefile.in +++ b/tests/examples/pulse/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,14 +81,14 @@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = pulse$(EXEEXT) subdir = tests/examples/pulse -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -106,9 +133,22 @@ pulse_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = pulse_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(pulse_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -121,20 +161,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = pulse.c DIST_SOURCES = pulse.c am__can_run_installinfo = \ @@ -142,6 +178,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -309,6 +362,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -514,6 +568,7 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + pulse$(EXEEXT): $(pulse_OBJECTS) $(pulse_DEPENDENCIES) $(EXTRA_pulse_DEPENDENCIES) @rm -f pulse$(EXEEXT) $(AM_V_CCLD)$(pulse_LINK) $(pulse_OBJECTS) $(pulse_LDADD) $(LIBS) @@ -527,22 +582,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pulse-pulse.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -567,26 +625,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -598,15 +645,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -615,6 +658,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -756,18 +814,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/examples/pulse/pulse.c b/tests/examples/pulse/pulse.c index f1d5b26eadd3c2f2e99fadd654a9eeaae365e455..835244a2b839544ee06a3bf842b3c90d9831987f 100644 --- a/tests/examples/pulse/pulse.c +++ b/tests/examples/pulse/pulse.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* FIXME 0.11: suppress warnings for deprecated API such as GValueArray diff --git a/tests/examples/rtp/Makefile.in b/tests/examples/rtp/Makefile.in index afebfd16e5044ab2984f19fa50fd513e9b9396a7..56882bcf250150a59a48c86d9cd8201c5086c22e 100644 --- a/tests/examples/rtp/Makefile.in +++ b/tests/examples/rtp/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -55,14 +82,14 @@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = server-alsasrc-PCMA$(EXEEXT) client-PCMA$(EXEEXT) subdir = tests/examples/rtp -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -106,6 +133,7 @@ client_PCMA_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = client_PCMA_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(client_PCMA_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ @@ -119,6 +147,18 @@ server_alsasrc_PCMA_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(server_alsasrc_PCMA_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SCRIPTS = $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -131,20 +171,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(client_PCMA_SOURCES) $(server_alsasrc_PCMA_SOURCES) DIST_SOURCES = $(client_PCMA_SOURCES) $(server_alsasrc_PCMA_SOURCES) am__can_run_installinfo = \ @@ -152,6 +188,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -321,6 +374,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -543,9 +597,11 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + client-PCMA$(EXEEXT): $(client_PCMA_OBJECTS) $(client_PCMA_DEPENDENCIES) $(EXTRA_client_PCMA_DEPENDENCIES) @rm -f client-PCMA$(EXEEXT) $(AM_V_CCLD)$(client_PCMA_LINK) $(client_PCMA_OBJECTS) $(client_PCMA_LDADD) $(LIBS) + server-alsasrc-PCMA$(EXEEXT): $(server_alsasrc_PCMA_OBJECTS) $(server_alsasrc_PCMA_DEPENDENCIES) $(EXTRA_server_alsasrc_PCMA_DEPENDENCIES) @rm -f server-alsasrc-PCMA$(EXEEXT) $(AM_V_CCLD)$(server_alsasrc_PCMA_LINK) $(server_alsasrc_PCMA_OBJECTS) $(server_alsasrc_PCMA_LDADD) $(LIBS) @@ -560,22 +616,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/server_alsasrc_PCMA-server-alsasrc-PCMA.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -614,26 +673,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -645,15 +693,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -662,6 +706,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -803,18 +862,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/examples/rtp/client-PCMA.c b/tests/examples/rtp/client-PCMA.c index ec498e386289d2109a075e1ffeb8bff4521bcaa1..ee8366f53921c7aee20f4da15b20c1daeb3896cc 100644 --- a/tests/examples/rtp/client-PCMA.c +++ b/tests/examples/rtp/client-PCMA.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <string.h> diff --git a/tests/examples/rtp/server-alsasrc-PCMA.c b/tests/examples/rtp/server-alsasrc-PCMA.c index 625a6ba9f561efd84af1076ff503cbe97b89961b..4690eed45c045959745beab547dc38fbe82666a7 100644 --- a/tests/examples/rtp/server-alsasrc-PCMA.c +++ b/tests/examples/rtp/server-alsasrc-PCMA.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* FIXME 0.11: suppress warnings for deprecated API such as GValueArray @@ -212,7 +212,7 @@ main (int argc, char *argv[]) gst_element_set_state (pipeline, GST_STATE_PLAYING); /* print stats every second */ - g_timeout_add (1000, (GSourceFunc) print_stats, rtpbin); + g_timeout_add_seconds (1, (GSourceFunc) print_stats, rtpbin); /* we need to run a GLib main loop to get the messages */ loop = g_main_loop_new (NULL, FALSE); diff --git a/tests/examples/shapewipe/Makefile.in b/tests/examples/shapewipe/Makefile.in index 2d932d60619c3734b89496daa541733309ae9f01..2c52688e996a1d68460604c03482f6d0a2af99f2 100644 --- a/tests/examples/shapewipe/Makefile.in +++ b/tests/examples/shapewipe/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -17,23 +16,51 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -55,15 +82,14 @@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = shapewipe-example$(EXEEXT) subdir = tests/examples/shapewipe -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -109,10 +135,23 @@ shapewipe_example_DEPENDENCIES = $(am__DEPENDENCIES_1) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = shapewipe_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(shapewipe_example_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -125,20 +164,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(shapewipe_example_SOURCES) DIST_SOURCES = $(shapewipe_example_SOURCES) am__can_run_installinfo = \ @@ -147,6 +182,23 @@ am__can_run_installinfo = \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -314,6 +366,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -521,6 +574,7 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + shapewipe-example$(EXEEXT): $(shapewipe_example_OBJECTS) $(shapewipe_example_DEPENDENCIES) $(EXTRA_shapewipe_example_DEPENDENCIES) @rm -f shapewipe-example$(EXEEXT) $(AM_V_CCLD)$(shapewipe_example_LINK) $(shapewipe_example_OBJECTS) $(shapewipe_example_LDADD) $(LIBS) @@ -534,22 +588,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shapewipe_example-shapewipe-example.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -574,26 +631,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -605,15 +651,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -622,6 +664,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -763,18 +820,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/examples/shapewipe/shapewipe-example.c b/tests/examples/shapewipe/shapewipe-example.c index b1076583422de71be75ef946f6a69a1696c6133d..05ed3d9c0a5a0e6e6bad9e7cb8cdee1b7453c0eb 100644 --- a/tests/examples/shapewipe/shapewipe-example.c +++ b/tests/examples/shapewipe/shapewipe-example.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <gst/gst.h> diff --git a/tests/examples/spectrum/Makefile.in b/tests/examples/spectrum/Makefile.in index d4668950844604e394ee2e74dc6bf0a5bbfe9b31..4d0dcdb8dc30f82e87f330e8b1a7fbec9ec78c21 100644 --- a/tests/examples/spectrum/Makefile.in +++ b/tests/examples/spectrum/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -56,14 +83,14 @@ target_triplet = @target@ @HAVE_GTK_TRUE@ demo-audiotest$(EXEEXT) \ @HAVE_GTK_TRUE@ spectrum-example$(EXEEXT) subdir = tests/examples/spectrum -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -109,6 +136,7 @@ demo_audiotest_DEPENDENCIES = $(am__DEPENDENCIES_1) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = demo_audiotest_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(demo_audiotest_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ @@ -129,6 +157,18 @@ spectrum_example_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(spectrum_example_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -141,20 +181,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(demo_audiotest_SOURCES) $(demo_osssrc_SOURCES) \ $(spectrum_example_SOURCES) DIST_SOURCES = $(demo_audiotest_SOURCES) $(demo_osssrc_SOURCES) \ @@ -164,6 +200,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -331,6 +384,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -547,12 +601,15 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + demo-audiotest$(EXEEXT): $(demo_audiotest_OBJECTS) $(demo_audiotest_DEPENDENCIES) $(EXTRA_demo_audiotest_DEPENDENCIES) @rm -f demo-audiotest$(EXEEXT) $(AM_V_CCLD)$(demo_audiotest_LINK) $(demo_audiotest_OBJECTS) $(demo_audiotest_LDADD) $(LIBS) + demo-osssrc$(EXEEXT): $(demo_osssrc_OBJECTS) $(demo_osssrc_DEPENDENCIES) $(EXTRA_demo_osssrc_DEPENDENCIES) @rm -f demo-osssrc$(EXEEXT) $(AM_V_CCLD)$(demo_osssrc_LINK) $(demo_osssrc_OBJECTS) $(demo_osssrc_LDADD) $(LIBS) + spectrum-example$(EXEEXT): $(spectrum_example_OBJECTS) $(spectrum_example_DEPENDENCIES) $(EXTRA_spectrum_example_DEPENDENCIES) @rm -f spectrum-example$(EXEEXT) $(AM_V_CCLD)$(spectrum_example_LINK) $(spectrum_example_OBJECTS) $(spectrum_example_LDADD) $(LIBS) @@ -568,22 +625,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spectrum_example-spectrum-example.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -636,26 +696,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -667,15 +716,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -684,6 +729,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -825,18 +885,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/examples/spectrum/demo-audiotest.c b/tests/examples/spectrum/demo-audiotest.c index 4b5cc00c3a61d5e10e1594df758720af0b344339..5ddb0984c0708ac189689b3059f2d292946ba6f1 100644 --- a/tests/examples/spectrum/demo-audiotest.c +++ b/tests/examples/spectrum/demo-audiotest.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* TODO: add wave selection */ /* fast vs. slow mode - see update_spectrum_bands() diff --git a/tests/examples/spectrum/demo-osssrc.c b/tests/examples/spectrum/demo-osssrc.c index 9eeb6c6ffcfb6ea6fd74f29201950f2b7a2c041b..1412b7b222542bda7aa7b81c147397711f2b2d39 100644 --- a/tests/examples/spectrum/demo-osssrc.c +++ b/tests/examples/spectrum/demo-osssrc.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/tests/examples/spectrum/spectrum-example.c b/tests/examples/spectrum/spectrum-example.c index c35d7e57a04b9491c31384a16c2e4f72683ff5f4..1052b4e8bc2db9bbe6443ce4bdb521736ebc39d0 100644 --- a/tests/examples/spectrum/spectrum-example.c +++ b/tests/examples/spectrum/spectrum-example.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <stdio.h> diff --git a/tests/examples/v4l2/Makefile.in b/tests/examples/v4l2/Makefile.in index 00a0912f7432d0b22728f0771e46626de767c81f..edd137223a4472ca38d0f6220d6f4f9e4120da9b 100644 --- a/tests/examples/v4l2/Makefile.in +++ b/tests/examples/v4l2/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -54,14 +81,14 @@ host_triplet = @host@ target_triplet = @target@ noinst_PROGRAMS = camctrl$(EXEEXT) subdir = tests/examples/v4l2 -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -106,9 +133,22 @@ camctrl_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = camctrl_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(camctrl_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -121,20 +161,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(camctrl_SOURCES) DIST_SOURCES = $(camctrl_SOURCES) am__can_run_installinfo = \ @@ -142,6 +178,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -309,6 +362,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -515,6 +569,7 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + camctrl$(EXEEXT): $(camctrl_OBJECTS) $(camctrl_DEPENDENCIES) $(EXTRA_camctrl_DEPENDENCIES) @rm -f camctrl$(EXEEXT) $(AM_V_CCLD)$(camctrl_LINK) $(camctrl_OBJECTS) $(camctrl_LDADD) $(LIBS) @@ -528,22 +583,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/camctrl-camctrl.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -568,26 +626,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -599,15 +646,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -616,6 +659,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -757,18 +815,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/examples/v4l2/camctrl.c b/tests/examples/v4l2/camctrl.c index 64db577faf19b38219b52d5e9c5ca22815b35da2..698341811523dad5627aca5bebacc7c7e28dfac9 100644 --- a/tests/examples/v4l2/camctrl.c +++ b/tests/examples/v4l2/camctrl.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* demo for using gstcontroler with camera capture for e.g. bracketing * diff --git a/tests/files/Makefile.in b/tests/files/Makefile.in index 8c4f8682ea85e289167b9d9dd54c8172f6e48d3d..638dd73599426e90a85aabcfaf7babf3cf8a2c40 100644 --- a/tests/files/Makefile.in +++ b/tests/files/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,23 +14,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -52,14 +79,13 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/files -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -95,12 +121,18 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ @@ -108,6 +140,7 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) AALIB_CFLAGS = @AALIB_CFLAGS@ AALIB_CONFIG = @AALIB_CONFIG@ @@ -273,6 +306,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -485,11 +519,11 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -tags: TAGS -TAGS: +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -625,15 +659,16 @@ uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/files/id3-407349-1.tag b/tests/files/id3-407349-1.tag index 47a27634af29989f8ebbe3b5226bb3068e1656b3..05cd4f69b00e635170adcf3e186547131957d2c8 100644 Binary files a/tests/files/id3-407349-1.tag and b/tests/files/id3-407349-1.tag differ diff --git a/tests/files/id3-407349-2.tag b/tests/files/id3-407349-2.tag index d44a9a1d03b7ee400d1a4a44d66e80afbded2059..b16a42a3e129fedf6bc066f32c015898802a883e 100644 Binary files a/tests/files/id3-407349-2.tag and b/tests/files/id3-407349-2.tag differ diff --git a/tests/files/id3-447000-wcop.tag b/tests/files/id3-447000-wcop.tag index 0f81c260b4fe3743dc4f13274dc983c6645c3cbb..27109cea93857b9f5ed8f6a805d5a7012b772a05 100644 Binary files a/tests/files/id3-447000-wcop.tag and b/tests/files/id3-447000-wcop.tag differ diff --git a/tests/icles/Makefile.in b/tests/icles/Makefile.in index 57db444126e1759b9ead286808babd61d5d02bc1..53b2b42cbcea61767c662ef9a8f3354b57f185e5 100644 --- a/tests/icles/Makefile.in +++ b/tests/icles/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,51 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ esac; \ - test $$am__dry = yes; \ - } + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -57,14 +84,14 @@ noinst_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ videocrop-test$(EXEEXT) videobox-test$(EXEEXT) \ videocrop2-test$(EXEEXT) subdir = tests/icles -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \ $(top_srcdir)/common/m4/as-auto-alt.m4 \ $(top_srcdir)/common/m4/as-compiler-flag.m4 \ $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \ $(top_srcdir)/common/m4/as-libtool.m4 \ - $(top_srcdir)/common/m4/as-python.m4 \ $(top_srcdir)/common/m4/as-scrub-include.m4 \ $(top_srcdir)/common/m4/as-version.m4 \ $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \ @@ -112,6 +139,7 @@ equalizer_test_DEPENDENCIES = $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = equalizer_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(equalizer_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ @@ -171,6 +199,18 @@ ximagesrc_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(ximagesrc_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -183,20 +223,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(equalizer_test_SOURCES) $(gdkpixbufsink_test_SOURCES) \ $(test_oss4_SOURCES) $(v4l2src_test_SOURCES) \ $(videobox_test_SOURCES) $(videocrop_test_SOURCES) \ @@ -211,6 +247,23 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -378,6 +431,7 @@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBRT = @LIBRT@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@ @@ -616,27 +670,35 @@ clean-noinstPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list + equalizer-test$(EXEEXT): $(equalizer_test_OBJECTS) $(equalizer_test_DEPENDENCIES) $(EXTRA_equalizer_test_DEPENDENCIES) @rm -f equalizer-test$(EXEEXT) $(AM_V_CCLD)$(equalizer_test_LINK) $(equalizer_test_OBJECTS) $(equalizer_test_LDADD) $(LIBS) + gdkpixbufsink-test$(EXEEXT): $(gdkpixbufsink_test_OBJECTS) $(gdkpixbufsink_test_DEPENDENCIES) $(EXTRA_gdkpixbufsink_test_DEPENDENCIES) @rm -f gdkpixbufsink-test$(EXEEXT) $(AM_V_CCLD)$(gdkpixbufsink_test_LINK) $(gdkpixbufsink_test_OBJECTS) $(gdkpixbufsink_test_LDADD) $(LIBS) + test-oss4$(EXEEXT): $(test_oss4_OBJECTS) $(test_oss4_DEPENDENCIES) $(EXTRA_test_oss4_DEPENDENCIES) @rm -f test-oss4$(EXEEXT) $(AM_V_CCLD)$(test_oss4_LINK) $(test_oss4_OBJECTS) $(test_oss4_LDADD) $(LIBS) + v4l2src-test$(EXEEXT): $(v4l2src_test_OBJECTS) $(v4l2src_test_DEPENDENCIES) $(EXTRA_v4l2src_test_DEPENDENCIES) @rm -f v4l2src-test$(EXEEXT) $(AM_V_CCLD)$(v4l2src_test_LINK) $(v4l2src_test_OBJECTS) $(v4l2src_test_LDADD) $(LIBS) + videobox-test$(EXEEXT): $(videobox_test_OBJECTS) $(videobox_test_DEPENDENCIES) $(EXTRA_videobox_test_DEPENDENCIES) @rm -f videobox-test$(EXEEXT) $(AM_V_CCLD)$(videobox_test_LINK) $(videobox_test_OBJECTS) $(videobox_test_LDADD) $(LIBS) + videocrop-test$(EXEEXT): $(videocrop_test_OBJECTS) $(videocrop_test_DEPENDENCIES) $(EXTRA_videocrop_test_DEPENDENCIES) @rm -f videocrop-test$(EXEEXT) $(AM_V_CCLD)$(videocrop_test_LINK) $(videocrop_test_OBJECTS) $(videocrop_test_LDADD) $(LIBS) + videocrop2-test$(EXEEXT): $(videocrop2_test_OBJECTS) $(videocrop2_test_DEPENDENCIES) $(EXTRA_videocrop2_test_DEPENDENCIES) @rm -f videocrop2-test$(EXEEXT) $(AM_V_CCLD)$(videocrop2_test_LINK) $(videocrop2_test_OBJECTS) $(videocrop2_test_LDADD) $(LIBS) + ximagesrc-test$(EXEEXT): $(ximagesrc_test_OBJECTS) $(ximagesrc_test_DEPENDENCIES) $(EXTRA_ximagesrc_test_DEPENDENCIES) @rm -f ximagesrc-test$(EXEEXT) $(AM_V_CCLD)$(ximagesrc_test_LINK) $(ximagesrc_test_OBJECTS) $(ximagesrc_test_LDADD) $(LIBS) @@ -657,22 +719,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ximagesrc_test-ximagesrc-test.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< @@ -795,26 +860,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -826,15 +880,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -843,6 +893,21 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -984,18 +1049,19 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/tests/icles/equalizer-test.c b/tests/icles/equalizer-test.c index 41ee0f375b8109ef0eab19880776dba1eda167ac..3f9e50e252e59e6b3caf653e7cfe27f61e40b3d9 100644 --- a/tests/icles/equalizer-test.c +++ b/tests/icles/equalizer-test.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* diff --git a/tests/icles/gdkpixbufsink-test.c b/tests/icles/gdkpixbufsink-test.c index 272a07745e0923edcfb6503f8faab0f738ca3d2a..fbcb13abd5d9285d3aad9f7fb6054dfb9085b9b6 100644 --- a/tests/icles/gdkpixbufsink-test.c +++ b/tests/icles/gdkpixbufsink-test.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/tests/icles/test-oss4.c b/tests/icles/test-oss4.c index 1715c663ee72d4aaeaac71763247673d470e92b9..b2e4b96cb82ce4d34fdec5593e4ad0e12b34c02a 100644 --- a/tests/icles/test-oss4.c +++ b/tests/icles/test-oss4.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* FIXME 0.11: suppress warnings for deprecated API such as GValueArray diff --git a/tests/icles/v4l2src-test.c b/tests/icles/v4l2src-test.c index 8b9dfe3714163ba3109dc92d9389130da1a8b4e4..2162e5c5725adeaa12151818b5e74aa04de3e244 100644 --- a/tests/icles/v4l2src-test.c +++ b/tests/icles/v4l2src-test.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include <string.h> diff --git a/tests/icles/videobox-test.c b/tests/icles/videobox-test.c index 49697df986400936809085c489dd06996f476adf..0c85a35de937382b12c4c4b25353746f61cd6764 100644 --- a/tests/icles/videobox-test.c +++ b/tests/icles/videobox-test.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/tests/icles/videocrop-test.c b/tests/icles/videocrop-test.c index f44d48b6c0d776cd6794add704b0d280994b4e17..d95e9e4a79f14b308ba547480a458dff62a836bd 100644 --- a/tests/icles/videocrop-test.c +++ b/tests/icles/videocrop-test.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/tests/icles/videocrop2-test.c b/tests/icles/videocrop2-test.c index 58d19322f7996bf69774d2dc338f47172bb6b5ce..2c6801f3292aab518ae9e8823129145c97dd18f1 100644 --- a/tests/icles/videocrop2-test.c +++ b/tests/icles/videocrop2-test.c @@ -14,8 +14,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff --git a/tests/icles/ximagesrc-test.c b/tests/icles/ximagesrc-test.c index 12ec0dc986b9b805a4646db54ec7867a5f2a6595..fdcc580eee554cb91239b36b150c7564a358cbcd 100644 --- a/tests/icles/ximagesrc-test.c +++ b/tests/icles/ximagesrc-test.c @@ -13,8 +13,8 @@ * * 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H @@ -60,7 +60,7 @@ main (int argc, char **argv) } /* We want to get out after 5 seconds */ - g_timeout_add (5000, (GSourceFunc) terminate_playback, pipeline); + g_timeout_add_seconds (5, (GSourceFunc) terminate_playback, pipeline); g_main_loop_run (loop); diff --git a/win32/MANIFEST b/win32/MANIFEST index b3b879fa543ab67243ed36747a30e67f93866138..cbd57b4aedf37e4412550e08b7bb3703fc64b469 100644 --- a/win32/MANIFEST +++ b/win32/MANIFEST @@ -1,13 +1,5 @@ win32/MANIFEST win32/common/config.h -win32/common/gstudp-enumtypes.c -win32/common/gstudp-enumtypes.h -win32/common/gstrtpbin-marshal.c -win32/common/gstrtpbin-marshal.h -win32/common/tuner-enumtypes.c -win32/common/tuner-enumtypes.h -win32/common/tuner-marshal.c -win32/common/tuner-marshal.h win32/vs6/gst_plugins_good.dsw win32/vs6/autogen.dsp win32/vs6/libgstalaw.dsp diff --git a/win32/common/config.h b/win32/common/config.h index 1599365586045ad8bd77ee98e76a85a54ed725d3..a73fb4ae5d2e610d7050bbf942f4c8f9f0457f4c 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 "2013-08-28" +#define GST_PACKAGE_RELEASE_DATETIME "2013-09-19" /* Define if static plugins should be built */ #undef GST_PLUGIN_BUILD_STATIC @@ -90,6 +90,9 @@ the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE +/* Define to 1 if you have the `clock_gettime' function. */ +#undef HAVE_CLOCK_GETTIME + /* Define to 1 if you have the `cosh' function. */ #undef HAVE_COSH @@ -139,6 +142,10 @@ */ #undef HAVE_DCGETTEXT +/* Define to 1 if you have the declaration of `V4L2_MEMORY_DMABUF', and to 0 + if you don't. */ +#undef HAVE_DECL_V4L2_MEMORY_DMABUF + /* Define to enable DirectSound plug-in (used by directsoundsink). */ #undef HAVE_DIRECTSOUND @@ -226,9 +233,6 @@ /* Define to enable Portable Network Graphics library (used by png). */ #undef HAVE_LIBPNG -/* soup gnome integration */ -#undef HAVE_LIBSOUP_GNOME - /* Whether libv4l2 is available for video buffer conversion */ #undef HAVE_LIBV4L2 @@ -334,6 +338,12 @@ /* Defined if the VP8 encoder is available */ #undef HAVE_VP8_ENCODER +/* Defined if the VP9 decoder is available */ +#undef HAVE_VP9_DECODER + +/* Defined if the VP9 encoder is available */ +#undef HAVE_VP9_ENCODER + /* Define to enable VPX decoder (used by vpx). */ #undef HAVE_VPX @@ -365,9 +375,6 @@ */ #undef LT_OBJDIR -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - /* Name of package */ #define PACKAGE "gst-plugins-good" @@ -378,7 +385,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.0.10" +#define PACKAGE_STRING "GStreamer Good Plug-ins 1.1.90" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "gst-plugins-good" @@ -387,7 +394,7 @@ #undef PACKAGE_URL /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.0.10" +#define PACKAGE_VERSION "1.1.90" /* directory where plugins are located */ #ifdef _DEBUG @@ -421,7 +428,7 @@ #undef TARGET_CPU /* Version number of package */ -#define VERSION "1.0.10" +#define VERSION "1.1.90" /* old wavpack API */ #undef WAVPACK_OLD_API diff --git a/win32/common/gstrtpbin-marshal.c b/win32/common/gstrtpbin-marshal.c deleted file mode 100644 index bbea5a4e53061ad754c064a87de8b3dbb04c322f..0000000000000000000000000000000000000000 --- a/win32/common/gstrtpbin-marshal.c +++ /dev/null @@ -1,424 +0,0 @@ -#include "gstrtpbin-marshal.h" - -#include <glib-object.h> - - -#ifdef G_ENABLE_DEBUG -#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) -#define g_marshal_value_peek_char(v) g_value_get_schar (v) -#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) -#define g_marshal_value_peek_int(v) g_value_get_int (v) -#define g_marshal_value_peek_uint(v) g_value_get_uint (v) -#define g_marshal_value_peek_long(v) g_value_get_long (v) -#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) -#define g_marshal_value_peek_int64(v) g_value_get_int64 (v) -#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) -#define g_marshal_value_peek_enum(v) g_value_get_enum (v) -#define g_marshal_value_peek_flags(v) g_value_get_flags (v) -#define g_marshal_value_peek_float(v) g_value_get_float (v) -#define g_marshal_value_peek_double(v) g_value_get_double (v) -#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) -#define g_marshal_value_peek_param(v) g_value_get_param (v) -#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) -#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) -#define g_marshal_value_peek_object(v) g_value_get_object (v) -#define g_marshal_value_peek_variant(v) g_value_get_variant (v) -#else /* !G_ENABLE_DEBUG */ -/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. - * Do not access GValues directly in your code. Instead, use the - * g_value_get_*() functions - */ -#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int -#define g_marshal_value_peek_char(v) (v)->data[0].v_int -#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint -#define g_marshal_value_peek_int(v) (v)->data[0].v_int -#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint -#define g_marshal_value_peek_long(v) (v)->data[0].v_long -#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong -#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 -#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 -#define g_marshal_value_peek_enum(v) (v)->data[0].v_long -#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong -#define g_marshal_value_peek_float(v) (v)->data[0].v_float -#define g_marshal_value_peek_double(v) (v)->data[0].v_double -#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer -#endif /* !G_ENABLE_DEBUG */ - - -/* UINT:UINT (gstrtpbin-marshal.list:1) */ -void -gst_rtp_bin_marshal_UINT__UINT (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef guint (*GMarshalFunc_UINT__UINT) (gpointer data1, - guint arg_1, gpointer data2); - register GMarshalFunc_UINT__UINT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - guint v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 2); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_UINT__UINT) (marshal_data ? marshal_data : cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_uint (param_values + 1), data2); - - g_value_set_uint (return_value, v_return); -} - -/* BOXED:UINT (gstrtpbin-marshal.list:2) */ -void -gst_rtp_bin_marshal_BOXED__UINT (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef gpointer (*GMarshalFunc_BOXED__UINT) (gpointer data1, - guint arg_1, gpointer data2); - register GMarshalFunc_BOXED__UINT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - gpointer v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 2); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_BOXED__UINT) (marshal_data ? marshal_data : cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_uint (param_values + 1), data2); - - g_value_take_boxed (return_value, v_return); -} - -/* BOXED:UINT,UINT (gstrtpbin-marshal.list:3) */ -void -gst_rtp_bin_marshal_BOXED__UINT_UINT (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef gpointer (*GMarshalFunc_BOXED__UINT_UINT) (gpointer data1, - guint arg_1, guint arg_2, gpointer data2); - register GMarshalFunc_BOXED__UINT_UINT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - gpointer v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_BOXED__UINT_UINT) (marshal_data ? marshal_data : - cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_uint (param_values + 1), - g_marshal_value_peek_uint (param_values + 2), data2); - - g_value_take_boxed (return_value, v_return); -} - -/* OBJECT:UINT (gstrtpbin-marshal.list:4) */ -void -gst_rtp_bin_marshal_OBJECT__UINT (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef GObject *(*GMarshalFunc_OBJECT__UINT) (gpointer data1, - guint arg_1, gpointer data2); - register GMarshalFunc_OBJECT__UINT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - GObject *v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 2); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_OBJECT__UINT) (marshal_data ? marshal_data : cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_uint (param_values + 1), data2); - - g_value_take_object (return_value, v_return); -} - -/* VOID:UINT,OBJECT (gstrtpbin-marshal.list:5) */ -void -gst_rtp_bin_marshal_VOID__UINT_OBJECT (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__UINT_OBJECT) (gpointer data1, - guint arg_1, gpointer arg_2, gpointer data2); - register GMarshalFunc_VOID__UINT_OBJECT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_VOID__UINT_OBJECT) (marshal_data ? marshal_data : - cc->callback); - - callback (data1, - g_marshal_value_peek_uint (param_values + 1), - g_marshal_value_peek_object (param_values + 2), data2); -} - -/* VOID:UINT (gstrtpbin-marshal.list:6) */ - -/* VOID:UINT,UINT (gstrtpbin-marshal.list:7) */ -void -gst_rtp_bin_marshal_VOID__UINT_UINT (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__UINT_UINT) (gpointer data1, - guint arg_1, guint arg_2, gpointer data2); - register GMarshalFunc_VOID__UINT_UINT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_VOID__UINT_UINT) (marshal_data ? marshal_data : - cc->callback); - - callback (data1, - g_marshal_value_peek_uint (param_values + 1), - g_marshal_value_peek_uint (param_values + 2), data2); -} - -/* VOID:OBJECT,OBJECT (gstrtpbin-marshal.list:8) */ -void -gst_rtp_bin_marshal_VOID__OBJECT_OBJECT (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__OBJECT_OBJECT) (gpointer data1, - gpointer arg_1, gpointer arg_2, gpointer data2); - register GMarshalFunc_VOID__OBJECT_OBJECT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_VOID__OBJECT_OBJECT) (marshal_data ? marshal_data : - cc->callback); - - callback (data1, - g_marshal_value_peek_object (param_values + 1), - g_marshal_value_peek_object (param_values + 2), data2); -} - -/* UINT64:BOOL,UINT64 (gstrtpbin-marshal.list:9) */ -void -gst_rtp_bin_marshal_UINT64__BOOLEAN_UINT64 (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef guint64 (*GMarshalFunc_UINT64__BOOLEAN_UINT64) (gpointer data1, - gboolean arg_1, guint64 arg_2, gpointer data2); - register GMarshalFunc_UINT64__BOOLEAN_UINT64 callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - guint64 v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_UINT64__BOOLEAN_UINT64) (marshal_data ? marshal_data : - cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_boolean (param_values + 1), - g_marshal_value_peek_uint64 (param_values + 2), data2); - - g_value_set_uint64 (return_value, v_return); -} - -/* VOID:UINT64 (gstrtpbin-marshal.list:10) */ -void -gst_rtp_bin_marshal_VOID__UINT64 (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__UINT64) (gpointer data1, - guint64 arg_1, gpointer data2); - register GMarshalFunc_VOID__UINT64 callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 2); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_VOID__UINT64) (marshal_data ? marshal_data : cc->callback); - - callback (data1, g_marshal_value_peek_uint64 (param_values + 1), data2); -} - -/* BOOL:BOXED,BOOL (gstrtpbin-marshal.list:11) */ -void -gst_rtp_bin_marshal_BOOLEAN__BOXED_BOOLEAN (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_BOOLEAN) (gpointer data1, - gpointer arg_1, gboolean arg_2, gpointer data2); - register GMarshalFunc_BOOLEAN__BOXED_BOOLEAN callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - gboolean v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_BOOLEAN__BOXED_BOOLEAN) (marshal_data ? marshal_data : - cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_boxed (param_values + 1), - g_marshal_value_peek_boolean (param_values + 2), data2); - - g_value_set_boolean (return_value, v_return); -} - -/* VOID:UINT,UINT,UINT,UINT,BOXED (gstrtpbin-marshal.list:12) */ -void -gst_rtp_bin_marshal_VOID__UINT_UINT_UINT_UINT_BOXED (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__UINT_UINT_UINT_UINT_BOXED) (gpointer data1, - guint arg_1, - guint arg_2, guint arg_3, guint arg_4, gpointer arg_5, gpointer data2); - register GMarshalFunc_VOID__UINT_UINT_UINT_UINT_BOXED callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 6); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_VOID__UINT_UINT_UINT_UINT_BOXED) (marshal_data ? - marshal_data : cc->callback); - - callback (data1, - g_marshal_value_peek_uint (param_values + 1), - g_marshal_value_peek_uint (param_values + 2), - g_marshal_value_peek_uint (param_values + 3), - g_marshal_value_peek_uint (param_values + 4), - g_marshal_value_peek_boxed (param_values + 5), data2); -} diff --git a/win32/common/gstrtpbin-marshal.h b/win32/common/gstrtpbin-marshal.h deleted file mode 100644 index 5a9a196d5d1dc44f886c89f17783d1d3988007c5..0000000000000000000000000000000000000000 --- a/win32/common/gstrtpbin-marshal.h +++ /dev/null @@ -1,105 +0,0 @@ - -#ifndef __gst_rtp_bin_marshal_MARSHAL_H__ -#define __gst_rtp_bin_marshal_MARSHAL_H__ - -#include <glib-object.h> - -G_BEGIN_DECLS - -/* UINT:UINT (gstrtpbin-marshal.list:1) */ -extern void gst_rtp_bin_marshal_UINT__UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -/* BOXED:UINT (gstrtpbin-marshal.list:2) */ -extern void gst_rtp_bin_marshal_BOXED__UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -/* BOXED:UINT,UINT (gstrtpbin-marshal.list:3) */ -extern void gst_rtp_bin_marshal_BOXED__UINT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -/* OBJECT:UINT (gstrtpbin-marshal.list:4) */ -extern void gst_rtp_bin_marshal_OBJECT__UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -/* VOID:UINT,OBJECT (gstrtpbin-marshal.list:5) */ -extern void gst_rtp_bin_marshal_VOID__UINT_OBJECT (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -/* VOID:UINT (gstrtpbin-marshal.list:6) */ -#define gst_rtp_bin_marshal_VOID__UINT g_cclosure_marshal_VOID__UINT - -/* VOID:UINT,UINT (gstrtpbin-marshal.list:7) */ -extern void gst_rtp_bin_marshal_VOID__UINT_UINT (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -/* VOID:OBJECT,OBJECT (gstrtpbin-marshal.list:8) */ -extern void gst_rtp_bin_marshal_VOID__OBJECT_OBJECT (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -/* UINT64:BOOL,UINT64 (gstrtpbin-marshal.list:9) */ -extern void gst_rtp_bin_marshal_UINT64__BOOLEAN_UINT64 (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); -#define gst_rtp_bin_marshal_UINT64__BOOL_UINT64 gst_rtp_bin_marshal_UINT64__BOOLEAN_UINT64 - -/* VOID:UINT64 (gstrtpbin-marshal.list:10) */ -extern void gst_rtp_bin_marshal_VOID__UINT64 (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -/* BOOL:BOXED,BOOL (gstrtpbin-marshal.list:11) */ -extern void gst_rtp_bin_marshal_BOOLEAN__BOXED_BOOLEAN (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); -#define gst_rtp_bin_marshal_BOOL__BOXED_BOOL gst_rtp_bin_marshal_BOOLEAN__BOXED_BOOLEAN - -/* VOID:UINT,UINT,UINT,UINT,BOXED (gstrtpbin-marshal.list:12) */ -extern void gst_rtp_bin_marshal_VOID__UINT_UINT_UINT_UINT_BOXED (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -G_END_DECLS - -#endif /* __gst_rtp_bin_marshal_MARSHAL_H__ */ - diff --git a/win32/common/gstudp-enumtypes.c b/win32/common/gstudp-enumtypes.c deleted file mode 100644 index 7982ccd09c0506c86200d4e45bbcbddda56fb51b..0000000000000000000000000000000000000000 --- a/win32/common/gstudp-enumtypes.c +++ /dev/null @@ -1,25 +0,0 @@ - - - -#include "gstudp-enumtypes.h" - -#include "gstudp.h" - -/* enumerations from "gstudp.h" */ -GType -gst_udp_control_get_type (void) -{ - static volatile gsize g_define_type_id__volatile = 0; - if (g_once_init_enter (&g_define_type_id__volatile)) { - static const GEnumValue values[] = { - {CONTROL_ZERO, "CONTROL_ZERO", "zero"}, - {CONTROL_NONE, "CONTROL_NONE", "none"}, - {CONTROL_UDP, "CONTROL_UDP", "udp"}, - {CONTROL_TCP, "CONTROL_TCP", "tcp"}, - {0, NULL, NULL} - }; - GType g_define_type_id = g_enum_register_static ("GstUDPControl", values); - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); - } - return g_define_type_id__volatile; -} diff --git a/win32/common/gstudp-enumtypes.h b/win32/common/gstudp-enumtypes.h deleted file mode 100644 index 5f2dca2c2a3959ff0d9808d9c00fc2e5b54b0735..0000000000000000000000000000000000000000 --- a/win32/common/gstudp-enumtypes.h +++ /dev/null @@ -1,19 +0,0 @@ - - - -#ifndef __GST_UDP_ENUM_TYPES_H__ -#define __GST_UDP_ENUM_TYPES_H__ - -#include <glib-object.h> - -G_BEGIN_DECLS - -/* enumerations from "gstudp.h" */ -GType gst_udp_control_get_type (void); -#define GST_TYPE_UDP_CONTROL (gst_udp_control_get_type()) -G_END_DECLS - -#endif /* __GST_UDP_ENUM_TYPES_H__ */ - - - diff --git a/win32/common/tuner-enumtypes.c b/win32/common/tuner-enumtypes.c deleted file mode 100644 index 32a3e1720c6a45ead44aeb4a58867cc97e3486d0..0000000000000000000000000000000000000000 --- a/win32/common/tuner-enumtypes.c +++ /dev/null @@ -1,28 +0,0 @@ - - - -#include "tuner-enumtypes.h" - -#include "tuner.h" -#include "tunernorm.h" -#include "tunerchannel.h" - -/* enumerations from "tunerchannel.h" */ -GType -gst_tuner_channel_flags_get_type (void) -{ - static volatile gsize g_define_type_id__volatile = 0; - if (g_once_init_enter (&g_define_type_id__volatile)) { - static const GFlagsValue values[] = { - {GST_TUNER_CHANNEL_INPUT, "GST_TUNER_CHANNEL_INPUT", "input"}, - {GST_TUNER_CHANNEL_OUTPUT, "GST_TUNER_CHANNEL_OUTPUT", "output"}, - {GST_TUNER_CHANNEL_FREQUENCY, "GST_TUNER_CHANNEL_FREQUENCY", "frequency"}, - {GST_TUNER_CHANNEL_AUDIO, "GST_TUNER_CHANNEL_AUDIO", "audio"}, - {0, NULL, NULL} - }; - GType g_define_type_id = - g_flags_register_static ("GstTunerChannelFlags", values); - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); - } - return g_define_type_id__volatile; -} diff --git a/win32/common/tuner-enumtypes.h b/win32/common/tuner-enumtypes.h deleted file mode 100644 index e9b9b7ae92ae171bfbb650de0096251b73060b5f..0000000000000000000000000000000000000000 --- a/win32/common/tuner-enumtypes.h +++ /dev/null @@ -1,19 +0,0 @@ - - - -#ifndef __GST_INTERFACES_ENUM_TYPES_H__ -#define __GST_INTERFACES_ENUM_TYPES_H__ - -#include <glib-object.h> - -G_BEGIN_DECLS - -/* enumerations from "tunerchannel.h" */ -GType gst_tuner_channel_flags_get_type (void); -#define GST_TYPE_TUNER_CHANNEL_FLAGS (gst_tuner_channel_flags_get_type()) -G_END_DECLS - -#endif /* __GST_INTERFACES_ENUM_TYPES_H__ */ - - - diff --git a/win32/common/tuner-marshal.c b/win32/common/tuner-marshal.c deleted file mode 100644 index 7e2cfcf7325f3669620e90a258f72da2378c1424..0000000000000000000000000000000000000000 --- a/win32/common/tuner-marshal.c +++ /dev/null @@ -1,115 +0,0 @@ -#include "tuner-marshal.h" - -#include <glib-object.h> - - -#ifdef G_ENABLE_DEBUG -#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) -#define g_marshal_value_peek_char(v) g_value_get_schar (v) -#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) -#define g_marshal_value_peek_int(v) g_value_get_int (v) -#define g_marshal_value_peek_uint(v) g_value_get_uint (v) -#define g_marshal_value_peek_long(v) g_value_get_long (v) -#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) -#define g_marshal_value_peek_int64(v) g_value_get_int64 (v) -#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) -#define g_marshal_value_peek_enum(v) g_value_get_enum (v) -#define g_marshal_value_peek_flags(v) g_value_get_flags (v) -#define g_marshal_value_peek_float(v) g_value_get_float (v) -#define g_marshal_value_peek_double(v) g_value_get_double (v) -#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) -#define g_marshal_value_peek_param(v) g_value_get_param (v) -#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) -#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) -#define g_marshal_value_peek_object(v) g_value_get_object (v) -#define g_marshal_value_peek_variant(v) g_value_get_variant (v) -#else /* !G_ENABLE_DEBUG */ -/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. - * Do not access GValues directly in your code. Instead, use the - * g_value_get_*() functions - */ -#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int -#define g_marshal_value_peek_char(v) (v)->data[0].v_int -#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint -#define g_marshal_value_peek_int(v) (v)->data[0].v_int -#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint -#define g_marshal_value_peek_long(v) (v)->data[0].v_long -#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong -#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 -#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 -#define g_marshal_value_peek_enum(v) (v)->data[0].v_long -#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong -#define g_marshal_value_peek_float(v) (v)->data[0].v_float -#define g_marshal_value_peek_double(v) (v)->data[0].v_double -#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer -#endif /* !G_ENABLE_DEBUG */ - - -/* VOID:OBJECT,ULONG (tuner-marshal.list:1) */ -void -gst_interfaces_marshal_VOID__OBJECT_ULONG (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__OBJECT_ULONG) (gpointer data1, - gpointer arg_1, gulong arg_2, gpointer data2); - register GMarshalFunc_VOID__OBJECT_ULONG callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_VOID__OBJECT_ULONG) (marshal_data ? marshal_data : - cc->callback); - - callback (data1, - g_marshal_value_peek_object (param_values + 1), - g_marshal_value_peek_ulong (param_values + 2), data2); -} - -/* VOID:OBJECT,INT (tuner-marshal.list:2) */ -void -gst_interfaces_marshal_VOID__OBJECT_INT (GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__OBJECT_INT) (gpointer data1, - gpointer arg_1, gint arg_2, gpointer data2); - register GMarshalFunc_VOID__OBJECT_INT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } else { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_VOID__OBJECT_INT) (marshal_data ? marshal_data : - cc->callback); - - callback (data1, - g_marshal_value_peek_object (param_values + 1), - g_marshal_value_peek_int (param_values + 2), data2); -} diff --git a/win32/common/tuner-marshal.h b/win32/common/tuner-marshal.h deleted file mode 100644 index 82175456326a12c4a859c7350ffb138889fdfb76..0000000000000000000000000000000000000000 --- a/win32/common/tuner-marshal.h +++ /dev/null @@ -1,28 +0,0 @@ - -#ifndef __gst_interfaces_marshal_MARSHAL_H__ -#define __gst_interfaces_marshal_MARSHAL_H__ - -#include <glib-object.h> - -G_BEGIN_DECLS - -/* VOID:OBJECT,ULONG (tuner-marshal.list:1) */ -extern void gst_interfaces_marshal_VOID__OBJECT_ULONG (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -/* VOID:OBJECT,INT (tuner-marshal.list:2) */ -extern void gst_interfaces_marshal_VOID__OBJECT_INT (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); - -G_END_DECLS - -#endif /* __gst_interfaces_marshal_MARSHAL_H__ */ -