diff --git a/ChangeLog b/ChangeLog index b93d4d88ec68f3de1b990b2514ec8e76fda787f1..5da68cbd73269fdedc1fb5acf67479b796f71dd2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,956 @@ +=== release 1.5.2 === + +2015-06-24 Sebastian Dröge <slomo@coaxion.net> + + * configure.ac: + releasing 1.5.2 + +2015-06-24 22:56:12 +0200 Sebastian Dröge <sebastian@centricular.com> + + * 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 + +2015-06-24 11:15:00 +0200 Sebastian Dröge <sebastian@centricular.com> + + * po/nl.po: + po: Update translations + +2015-06-23 18:42:59 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/qtmux.c: + qtmux: Correctly test each segments + In presence of gaps, qtdemux will emit multiple segments. The + second segment start should match the CTTS. + https://bugzilla.gnome.org/show_bug.cgi?id=751361 + +2015-06-23 17:54:31 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: Correctly calculate the elst media start + The media start has nothing to do with the shift we have applied + but with the value of the first PTS. This is defined as: + Dt(0) = 0 + Ct(0) = Dt(0) + CTTS(0) + So the media start is always the first CTTS. + https://bugzilla.gnome.org/show_bug.cgi?id=751361 + +2015-06-23 11:49:32 -0300 Thiago Santos <thiagoss@osg.samsung.com> + + * gst/isomp4/qtdemux.c: + qtdemux: accumulate previous edts entries into segment.base + Allows playing edts editted files with proper synchronization of + streams. This patch fixes the regression introduced by + bf95f93c0189aa04f18e264b86b6527e431c5d53 that was added to fix + segment seeks handling. + Having the accumulated_base separated from the main segment.base + allows handling both segment seeks and edts editted files. + https://bugzilla.gnome.org/show_bug.cgi?id=751361 + +2015-06-23 00:56:16 -0300 Thiago Santos <thiagoss@osg.samsung.com> + + * gst/isomp4/qtdemux.c: + qtdemux: improve some debug messages + Those messages are about the stream, use the pad as the + debug object to make it clear from the logs + https://bugzilla.gnome.org/show_bug.cgi?id=751361 + +2015-06-22 22:22:09 -0300 Thiago Santos <thiagoss@osg.samsung.com> + + * gst/isomp4/gstqtmux.c: + qtmux: store last_dts of the first buffer + Buffers need not to start at running-time 0 so the last_dts needs + to be the value of the first buffer's dts as it is used to compute + the duration of the buffers. If it was left at 0 the first buffer + would have a larger duration when it shouldn't + https://bugzilla.gnome.org/show_bug.cgi?id=751361 + +2015-06-23 17:11:57 +0900 Vineeth TM <vineeth.tm@samsung.com> + + * gst/audioparsers/gstflacparse.c: + flacparse: fix possible memory leak + when buffer is stored to seektable, and stop gets called due to + corrupt flac file, then the seektable is not being released + https://bugzilla.gnome.org/show_bug.cgi?id=751364 + +2015-06-23 16:28:40 +1000 Jan Schmidt <jan@centricular.com> + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + Revert "splitmuxsink: Mask async-start/done while switching files." + This reverts commit d61e5393f110ed482815d77807245d78b52eff46. + Causes failures muxing larger GOP sizes for some reason. Reverting + while I figure it out + +2015-06-18 23:22:06 +1000 Jan Schmidt <jan@centricular.com> + + * gst/multifile/gstsplitmuxpartreader.c: + * gst/multifile/gstsplitmuxsrc.c: + splitmuxsrc: Fix startup and shutdown races. + Fix 2 startup races when things happen too quickly, and 1 + at shutdown by holding a ref to the pads in use until the + loop functions exit. + Handle errors activating file parts and publish them on + the bus. + https://bugzilla.gnome.org/show_bug.cgi?id=750747 + +2015-06-18 09:26:13 +1000 Jan Schmidt <jan@centricular.com> + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Mask async-start/done while switching files. + Sometimes, extra async-start/done from the internal sink + while the element is still starting up can cause splitmuxsink + to stall in PAUSED state when it has been set to PLAYING + by the app. Drop the child's async-start/done messages while + switching, so they don't cause state changes at the + splitmuxsink level. + https://bugzilla.gnome.org/show_bug.cgi?id=750747 + +2015-06-15 16:12:10 +1000 Jan Schmidt <jan@centricular.com> + + * gst/matroska/matroska-demux.c: + matroska-demux: Use gst_video_multiview_guess_half_aspect() + Use the gst_video_multiview_guess_half_aspect() utility function + to set the half-aspect flag (or not) on stereoscopic frame-packed + videos. + +2015-06-15 16:10:37 +1000 Jan Schmidt <jan@centricular.com> + + * gst/isomp4/qtdemux.c: + qtdemux: Move multiview caps calculations, add half-aspect heuristics + Move the multiview caps calculations to the configure_stream() + function, so the rest of the video info is available, and + use the gst_video_multiview_guess_half_aspect() function to + determine if the half-aspect flag should be set on frame-packed + video. + +2015-06-18 16:06:02 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: Add cslg support + The cslg atom provide information about the DTS shift. This is + needed in recent version of ctts atom where the offset can be + negative. When cslg is missing, we parse the CTTS table as proposed + in the spec to calculate these values. + In this implementation, we only need to know the shift. As GStreamer + cannot transport negative timestamps, we shift the timestamps forward + using that value and adapt the segment to compensate. This patch also + removes bogus offset of ctts_soffset, this offset shall be included + in the edit list. + https://bugzilla.gnome.org/show_bug.cgi?id=751103 + +2015-06-19 18:37:59 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/elements/qtmux.c: + qtmux: Test gaps at start of stream + https://bugzilla.gnome.org/show_bug.cgi?id=751242 + +2015-06-19 18:40:43 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/isomp4/gstqtmux.c: + qtmux: Use PTS to figure-out presence of gaps + We need to look at the presentation timestamp in order to conclude if + there is a gap at the start of a stream. + https://bugzilla.gnome.org/show_bug.cgi?id=751242 + +2015-06-19 16:45:02 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/isomp4/gstqtmux.c: + qtmux: Set edit list to compensate DTS shift + We shift DTS forward to avoid negative timestamps which cannot be + represented with version 0 of the CTTS table. To stick with that + version (backward compatibility), the spec recommend using an + edit list entry to move back the presentation time to where it + should be. + https://bugzilla.gnome.org/show_bug.cgi?id=751242 + +2015-06-22 14:35:52 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/flv/gstflvmux.c: + flvmux: Insert AVC end of sequence + This FLV specific mark is needed to prevent Flow Player (most likely + all Flash base player) from going into buffering state when near EOS. + https://bugzilla.gnome.org/show_bug.cgi?id=751320 + +2015-06-22 13:05:29 +0900 Vineeth TM <vineeth.tm@samsung.com> + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-parse.c: + matroska: remove useless check + No need to check for context availability while freeing. We are inside + inside a code block with a condition that dereferences context. + if (context->type == 0 ... + https://bugzilla.gnome.org/show_bug.cgi?id=751306 + +2015-06-22 19:35:57 +0900 Vineeth T M <vineeth.tm@samsung.com> + + * gst/matroska/lzo.c: + lzo: fix memory leak + the opened file is not being closed during test, which will result + in memory leak. + https://bugzilla.gnome.org/show_bug.cgi?id=751306 + +2015-06-22 19:30:58 +0900 Vineeth T M <vineeth.tm@samsung.com> + + * ext/mikmod/mikmod_reader.c: + mikmod_reader: Possible null pointer dereference: + gst_reader variable is being used before actually checking if it + allocated properly + https://bugzilla.gnome.org/show_bug.cgi?id=751306 + +2015-06-22 19:45:14 +0900 Sangkyu Park <sk1122.park@samsung.com> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: Minor clean-up + 1. Fix the code which is wrong coding style. + 2. Fix a typing error of comment. + https://bugzilla.gnome.org/show_bug.cgi?id=751316 + +2015-06-22 11:28:13 +0200 Jose Antonio Santos Cadenas <santoscadenas@gmail.com> + + * gst/rtpmanager/rtpsource.c: + rtpsource: Do not try to push NULL buffers + If update_receiver_stats() fails, we can't really do anything with this buffer + anymore and have to drop it. This happens if there's a big seqnum + discontinuity for example. + https://bugzilla.gnome.org/show_bug.cgi?id=751311 + +2015-06-22 13:10:02 +0900 Vineeth TM <vineeth.tm@samsung.com> + + * gst/flv/gstflvdemux.c: + flvdemux: trivial cleanup + trivial patch to add proper ( while checking for if(G_UNLIKELY()) + https://bugzilla.gnome.org/show_bug.cgi?id=751306 + +2015-06-22 13:16:08 +0900 Vineeth TM <vineeth.tm@samsung.com> + + * gst/audioparsers/gstdcaparse.c: + dcaparse: initialize size variable + size can be used in cleanup without being initialized. Hence + setting it to 0 when declaring + https://bugzilla.gnome.org/show_bug.cgi?id=751306 + +2015-06-22 13:13:29 +0900 Vineeth TM <vineeth.tm@samsung.com> + + * gst/audioparsers/gstmpegaudioparse.c: + mpegaudioparse: initialze bpf variable + bpf variable might be used in cleanup without being intialized. + https://bugzilla.gnome.org/show_bug.cgi?id=751306 + +2015-06-19 14:50:59 +0200 Miguel ParÃs DÃaz <mparisdiaz@gmail.com> + + * gst/rtpmanager/gstrtprtxqueue.c: + rtprtxqueue: reverse pending list before pushing buffers + With this we send the RTX buffers in the same order + that they were requested. + https://bugzilla.gnome.org/show_bug.cgi?id=751297 + +2015-06-21 19:22:10 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * gst/flv/gstflvmux.c: + flvmux: Fix DTS validity check + This check was up-side-down, causing a bad timestamp at start + and then all timestamp being delayed. + https://bugzilla.gnome.org/show_bug.cgi?id=751298 + +2015-06-17 15:19:47 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux_dump.c: + * gst/isomp4/qtdemux_dump.h: + * gst/isomp4/qtdemux_types.c: + cslg: Add Composition Shift Least Greatest Atom + This simply add fourcc and dump function for the cslg Atom. + https://bugzilla.gnome.org/show_bug.cgi?id=751103 + +2015-06-17 15:18:38 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/isomp4/qtdemux_dump.c: + ctts_dump: Fix signess issues + It didn't bug, but use correct signess in traces. The number of + entries is unsigned while the offset can be signed according to + recent spec. + https://bugzilla.gnome.org/show_bug.cgi?id=751103 + +2015-06-16 17:48:08 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> + + * common: + Automatic update of common submodule + From 6015d26 to f74b2df + +2015-06-16 11:43:39 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: gst_rtp_buffer_ext_timestamp() modifies its first argument, keep a copy around + +2015-06-16 10:30:34 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Compare ext RTP times, not plain RTP time and ext RTP time when calculating elapsed time + Otherwise all RTP times after a wraparound would be considered as going + backwards, they will always be smaller than the ext RTP time. + +2015-06-15 19:25:12 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: The default rtp-profile should be AVP, not AVPF + +2015-06-15 14:32:21 +0900 Sangkyu Park <sk1122.park@samsung.com> + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: Minor cleanup + 1. Add Null check in 'free_item' function. + 2. Fix a typing error of comment. + https://bugzilla.gnome.org/show_bug.cgi?id=750965 + +2015-06-12 17:44:51 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/flv/gstflvmux.c: + flmux: Make sure best_time is initialized + +2015-06-12 23:29:19 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/gstrtpsession.h: + rtpbin/session: Add new ntp-time-source property and deprecate use-pipeline-clock property + The new property allows to select the time source that should be used for the + NTP time in RTCP packets. By default it will continue to calculate the NTP + timestamp (1900 epoch) based on the realtime clock. Alternatively it can use + the UNIX timestamp (1970 epoch), the pipeline's running time or the pipeline's + clock time. The latter is especially useful for synchronizing multiple + receivers if all of them share the same clock. + If use-pipeline-clock is set to TRUE, it will override the ntp-time-source + setting and continue to use the running time plus 70 years. This is only kept + for backwards compatibility. + +2015-04-07 16:03:42 -0300 Thiago Santos <thiagoss@osg.samsung.com> + + * tests/check/elements/qtmux.c: + tests: qtmux: test for muxing with DTS outside the segment + https://bugzilla.gnome.org/show_bug.cgi?id=740575 + +2015-06-11 17:26:49 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/isomp4/qtdemux.c: + qtdemux: Adjust segment according to ctts offset + In presence of a CTTS, the segment start/stop must be offset so + the segment start/stop include the PTS. This is needed since the + PTS cannot be negative in this format. This fixes issues where the + running time of the first buffer isn't at the start. + https://bugzilla.gnome.org/show_bug.cgi?id=740575 + +2015-04-03 20:34:42 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: Handle DTS with negative running time + As QT works with duration, simply bring back first DTS to 0 and shift + forward the PTS of the same amount. + https://bugzilla.gnome.org/show_bug.cgi?id=740575 + +2015-06-10 18:15:52 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/flv/gstflvmux.c: + * gst/flv/gstflvmux.h: + flvmux: Add negative runtime DTS support + This is done by using new feature of the CollectPad clip function + which sets the DTS as a gint64 in the collected data. It also simplify + the code a bit. + https://bugzilla.gnome.org/show_bug.cgi?id=740575 + +2015-06-12 23:06:24 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Rename some variables and debug output to make more sense + Local and remote were mixed up in a few places, and the time we store here is + not UNIX time (1970 epoch), but NTP time (1900 epoch) in nanoseconds. + +2015-06-12 19:21:10 +0300 Ilya Konstantinov <ilya.konstantinov@gmail.com> + + * sys/osxaudio/gstosxcoreaudioremoteio.c: + osxaudio: fix latency property query on RemoteIO + AudioUnitGetProperty would fail with kParamErr (-50) every time, + simply because size wasn't initialized. + Now it returns zero latency, but at least it doesn't fail. + https://bugzilla.gnome.org/show_bug.cgi?id=750868 + +2015-04-07 14:06:16 +0530 Arun Raghavan <git@arunraghavan.net> + + * ext/pulse/pulsesrc.c: + pulsesrc: Fix mapping of latency parameters to buffer attributes + +2015-06-12 01:56:37 +1000 Jan Schmidt <jan@centricular.com> + + * gst/matroska/matroska-demux.c: + matroska-demux: Actually set detected 3D info into output caps. + Use the information read from the StereoMode info + to configure multiview-mode and multiview-flags in the + video caps. + +2015-06-11 13:36:54 +1000 Jan Schmidt <jan@centricular.com> + + * gst/multifile/gstsplitmuxpartreader.c: + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Take released-but-not-yet-output bytes into account + When deciding whether it's time to switch to a new file, take into + account data that's been released for pushing, but hasn't yet + been pushed - because downstream is slow or the threads haven't been + scheduled. + Fixes a race in the unit test and probably in practice - sometimes + failing to switch when it should for an extra GOP or two. + Also fix a problem in splitmuxsrc where playback sometimes + stalls at startup if types are found too quickly. + https://bugzilla.gnome.org/show_bug.cgi?id=750747 + +2015-06-11 01:04:51 -0300 Thiago Santos <thiagoss@osg.samsung.com> + + * gst/isomp4/atoms.c: + atoms: remove custom gst_buffer_new function in favor of core version + Remove a custom specialized version of gst_buffer_new_wrapped by + using gst_buffer_new_wrapped_full inside a macro to simplify + parameters and give it a more meaningful name. + It is only used to create temporary buffers to have its data copied. + +2015-06-11 00:14:41 -0300 Thiago Santos <thiagoss@osg.samsung.com> + + * gst/isomp4/atoms.c: + atoms: simplify free form data atoms creation + Avoid creating an intermediary buffer or memory area just + to copy into an atom's data area. + +2015-06-10 22:27:27 -0300 Thiago Santos <thiagoss@osg.samsung.com> + + * gst/isomp4/atoms.c: + * gst/isomp4/atoms.h: + * gst/isomp4/fourcc.h: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + * gst/isomp4/gstqtmuxmap.c: + qtmux: add AC-3 muxing support + Adds AC-3 muxing support. It is defined for mp4 and 3gp formats. + One extra feature that was added was the ability to add extension + atoms after set_caps as the AC-3 extension atom needs some data + that has to be extracted from the stream itself and is not + present on caps. + +2015-06-10 22:36:59 -0300 Thiago Santos <thiagoss@osg.samsung.com> + + * gst/isomp4/atoms.c: + * gst/isomp4/atoms.h: + qtmux: remove unused type MP4S + +2015-06-10 22:29:01 -0300 Thiago Santos <thiagoss@osg.samsung.com> + + * gst/isomp4/gstqtmux.c: + qtmux: remove duplicate attribute value set + It is also set a few lines below + +2015-06-11 00:22:54 +1000 Jan Schmidt <jan@centricular.com> + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.c: + * gst/matroska/matroska-ids.h: + * gst/matroska/matroska-mux.c: + matroska: Implement basic stereoscopic video support + Implement support for the packed video formats WebM + uses, not all the values that Matroska might use. + In practice, it's really hard to find any samples in the + wild of any. + Supported in both the muxer and demuxer. + +2015-06-10 01:26:15 +1000 Jan Schmidt <jan@centricular.com> + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux_dump.c: + * gst/isomp4/qtdemux_dump.h: + * gst/isomp4/qtdemux_types.c: + qtdemux: Add basic support for MPEG-A stereoscopic video + The MPEG-A format provides an extension to the ISO base media + file format to store stereoscopic content encoded with different + codecs like H.264 and MPEG-4:2. The stereo video media information(svmi) + atom declares the presence and storage method for the video. + Stereo video information for MPEG-A can also be supplied through + the 'stvi' atom (ref: ISO/IEC_14496-12, ISO/IEC_23000-11), which + is not implemented in this patch. + Also missing is support for stereo video encoded as separate video tracks + for now. + Based on a patch by Sreerenj Balachandran <sreerenj.balachandran@intel.com> + https://bugzilla.gnome.org/show_bug.cgi?id=611157 + +2015-06-02 16:15:35 -0400 Xavier Claessens <xavier.claessens@collabora.com> + + * ext/soup/gstsouphttpsrc.c: + * ext/soup/gstsouphttpsrc.h: + souphttpsrc: Add tls-database property + https://bugzilla.gnome.org/show_bug.cgi?id=750298 + +2015-06-10 14:33:50 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst/rtp/gstasteriskh263.c: + * gst/rtp/gstrtpac3pay.c: + * gst/rtp/gstrtpamrpay.c: + * gst/rtp/gstrtpceltdepay.c: + * gst/rtp/gstrtpceltpay.c: + * gst/rtp/gstrtpdvpay.c: + * gst/rtp/gstrtpg723pay.c: + * gst/rtp/gstrtpg729pay.c: + * gst/rtp/gstrtpgsmpay.c: + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtph263pay.c: + * gst/rtp/gstrtph263ppay.c: + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtpj2kpay.c: + * gst/rtp/gstrtpjpegpay.c: + * gst/rtp/gstrtpmp2tpay.c: + * gst/rtp/gstrtpmp4adepay.c: + * gst/rtp/gstrtpmp4apay.c: + * gst/rtp/gstrtpmp4gdepay.c: + * gst/rtp/gstrtpmp4gpay.c: + * gst/rtp/gstrtpmp4vpay.c: + * gst/rtp/gstrtpmpapay.c: + * gst/rtp/gstrtpmparobustdepay.c: + * gst/rtp/gstrtpmpvpay.c: + * gst/rtp/gstrtpqcelpdepay.c: + * gst/rtp/gstrtpqdmdepay.c: + * gst/rtp/gstrtpsbcpay.c: + * gst/rtp/gstrtpspeexpay.c: + * gst/rtp/gstrtpsv3vdepay.c: + * gst/rtp/gstrtptheorapay.c: + * gst/rtp/gstrtpvorbispay.c: + * gst/rtp/gstrtpvrawdepay.c: + * gst/rtp/gstrtpvrawpay.c: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsource.c: + rtp: Use GST_BUFFER_PTS() instead of GST_BUFFER_TIMESTAMP() + The mix between all these in the RTP code is confusing, let's try to be + consistent. + +2015-06-10 14:49:50 +0300 Ilya Konstantinov <ilya.konstantinov@gmail.com> + + * gst/rtpmanager/rtpsource.c: + rtpmanager: clarify negative lost packets in stats + Also: + - Move notes on units before field documentation. + - Unify documentation style. + https://bugzilla.gnome.org/show_bug.cgi?id=750653 + +2015-06-10 06:38:39 -0400 Xavier Claessens <xavier.claessens@collabora.com> + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: fix getter of "ssl-use-system-ca-file" + https://bugzilla.gnome.org/show_bug.cgi?id=750298 + +2015-06-10 09:49:47 +0900 Vineeth TM <vineeth.tm@samsung.com> + + * gst/isomp4/qtdemux.c: + qtdemux: fix reverse playback + When performing seek, segment->start is being updated with desired_offset, + but in case of reverse playback segment->start should be 0 and + segment->stop should be updated with desired offset. + https://bugzilla.gnome.org/show_bug.cgi?id=750675 + +2015-01-21 18:09:03 +0100 Philipp Zabel <p.zabel@pengutronix.de> + + * sys/v4l2/gstv4l2allocator.c: + * sys/v4l2/gstv4l2allocator.h: + * sys/v4l2/gstv4l2bufferpool.c: + gstv4l2bufferpool: handle -EPIPE from DQBUF to signal EOS + The V4L2 decoder signals EOS by returning -EPIPE from DQBUF after the + last buffer. + https://bugzilla.gnome.org/show_bug.cgi?id=743338 + +2015-06-06 21:09:19 -0400 Xavier Claessens <xavier.claessens@collabora.com> + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: Add a GTlsInteraction property + It can be used for TLS client authentication. + https://bugzilla.gnome.org/show_bug.cgi?id=750471 + +2015-01-09 11:36:11 +0100 Enrico Jorns <ejo@pengutronix.de> + + * sys/v4l2/gstv4l2transform.c: + v4l2: Allow scaling in the v4l2*convert element + This is inspired of videoscale and videoconvert elements. + https://bugzilla.gnome.org/show_bug.cgi?id=742917 + +2015-06-09 19:02:55 +0300 Ilya Konstantinov <ilya.konstantinov@gmail.com> + + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpstats.h: + rtpmanager: document units of stats and arguments + Also, minor spelling and style corrections. + https://bugzilla.gnome.org/show_bug.cgi?id=750653 + +2015-06-09 14:42:27 +0200 Stefan Sauer <ensonic@users.sf.net> + + * Makefile.am: + cruft: add the obsolete tmpl dir to cruft-dirs + +2015-06-09 11:30:22 +0200 Edward Hervey <bilboed@bilboed.com> + + * common: + Automatic update of common submodule + From d9a3353 to 6015d26 + +2015-06-09 07:04:07 +0200 Edward Hervey <bilboed@bilboed.com> + + * common: + Fix common version + Was accidently downgraded by 87a4884acd8655a6591d735a1d944ecb5ea3de16 + +2015-06-08 19:11:41 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * sys/v4l2/gstv4l2object.c: + v4l2: Also set colorimetry on output devices + This completes the code that set the colorimetry on output + device. + +2015-06-08 19:10:34 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * common: + * sys/v4l2/gstv4l2object.c: + v4l2: Add missing SMTP240M matrix + This is missing in the doc, but was in the header. + +2015-06-08 23:00:16 +0100 Luis de Bethencourt <luis.bg@samsung.com> + + * gst/goom/goom_core.c: + goom: possible uninitialized variables warning + Build fails with the latest snapshot of gcc-4.9 because param1 and param2 might + possibly be used uninitialized. They are set depending on the cases of a switch + statement and the compiler sees this as not a complete guarantee. + Set them to 0 if the switch statement falls down to the default case. + https://bugzilla.gnome.org/show_bug.cgi?id=750566#c6 + +2015-06-08 17:24:38 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * sys/v4l2/gstv4l2object.c: + v4l2object: Fully implement colorimetry support + This fixes wrong mapping for sRGB as in GStreamer sRGB correctly + apply to RGB formats, while in V4L2 it's an alias for sYCC. Also + add support for the new quantization (range), ycbcr_encoding (matrix) + and xfer_func (transfer) enumeration. + +2015-06-08 17:01:15 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * sys/v4l2/ext/types-compat.h: + * sys/v4l2/ext/v4l2-common.h: + * sys/v4l2/ext/v4l2-controls.h: + * sys/v4l2/ext/videodev2.h: + v4l2: Update kernel headers to latest from media tree + This is the latest from media tree. This should enable more development + of the v4l2 elements. This includes new flags requires to fix draining + path in decoder, colorimetry and much more. + +2015-06-08 23:07:55 +0200 Stefan Sauer <ensonic@users.sf.net> + + * common: + Automatic update of common submodule + From d37af32 to d9a3353 + +2015-06-08 19:42:30 +0100 Chris Clayton <chris2553@googlemail.com> + + * gst/rtp/gstrtpvp8pay.c: + rtpvp8depay: potential access beyond end of array + Compiling (with gcc-4.9-20150603) produces an error because of an access beyond + the end of an array. This patch fixes the error by initializing the loop + control/array index variable (i) to 1 and returning i - 1 when a match is found. + Also, because the values stored in the array increase in value as the index + increases, the >= test unnecessary, so it is removed. + +2015-04-30 02:52:58 +1000 Jan Schmidt <jan@centricular.com> + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Don't accumulate more than 2 GOPs + Don't allow large amounts of data to queue up - we only need + the GOP we're writing, and the GOP we're accumulating. + +2015-04-16 10:44:49 +1000 Jan Schmidt <jan@centricular.com> + + * gst/isomp4/gstqtmux.c: + isomp4: fsync after sending updates in robust mode + Use the new GstBuffer SYNC_AFTER flag to trigger an fsync + after updating the moov or mdat atom, and after updating the free + atom to make it visible. + +2015-04-03 00:57:20 +1100 Jan Schmidt <jan@centricular.com> + + * gst/isomp4/gstqtmux.c: + isomp4: Only set moov header into streamheader at EOS + Only update the moov header into the caps if it's the finalised + moov at EOS time. Avoids posting a bogus moov at startup and + repeated updates in robust-recording mode + +2015-04-03 01:44:15 +1100 Jan Schmidt <jan@centricular.com> + + * tests/check/elements/qtmux.c: + tests: Update mp4 mux test for mdat placeholder change + The mp4 muxer now writes a place-holder mdat as a free + atom followed by a 0-byte mdat that covers the rest of the + file, making it possible to rewrite it as 64-bit, or leave + it as-is if nothing else is written afterward + +2015-04-01 11:15:38 +1100 Jan Schmidt <jan@centricular.com> + + * gst/isomp4/atoms.c: + * gst/isomp4/atoms.h: + * gst/isomp4/atomsrecovery.c: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + isomp4: Implement robust muxing using ping-pong strategy + Implement a robust recording mode, where the output + file is always in a playable state, seeking and rewriting + the moov header at a configurable interval. Rewriting + moov is done using reserved space at the start of + the file, and a ping-pong strategy where the moov + is replaced atomically so it's never invalid. + Track when tags have actually changed, and don't write them into + the moov unless they've changed. Clear any existing tags when + re-writing them, so we can do progressive moov updating in robust + recording mode. + Write placeholder mdat as a free atom plus a 32-bit mdat + with '0' size, which means "rest of the file" in the spec. + Re-write it later to a full 64-bit extended size atom if needed. + +2015-04-01 00:58:52 +1100 Jan Schmidt <jan@centricular.com> + + * gst/isomp4/atoms.c: + * gst/isomp4/atoms.h: + * gst/isomp4/gstqtmux.c: + isomp4: Update edit list when re-writing moov + Correctly update any edit lists each time the moov is recalculated, + updating existing table entries if they already exist instead of just + adding new ones. + +2015-04-08 01:41:18 +1000 Jan Schmidt <jan@centricular.com> + + * gst/isomp4/gstqtmux.c: + isomp4: Remove an extra bracket in a comment. + +2015-03-19 20:29:44 +1100 Jan Schmidt <jan@centricular.com> + + * gst/multifile/gstsplitmuxsrc.c: + splitmuxsrc: Protect total_duration state variable with the object lock. + Prevent deadlocks from downstream querying duration from the streaming thread. + +2015-06-07 23:06:20 +0200 Stefan Sauer <ensonic@users.sf.net> + + * common: + Automatic update of common submodule + From 21ba2e5 to d37af32 + +2015-06-07 19:24:20 +0100 Luis de Bethencourt <luis.bg@samsung.com> + + * gst/goom/gstaudiovisualizer.c: + goom: clean dereferences of private structure + https://bugzilla.gnome.org/show_bug.cgi?id=742875 + +2015-06-07 19:20:04 +0100 Luis de Bethencourt <luis.bg@samsung.com> + + * gst/goom2k1/gstaudiovisualizer.c: + goom2k1: clean dereferences of private structure + https://bugzilla.gnome.org/show_bug.cgi?id=742875 + +2015-06-07 17:32:01 +0200 Stefan Sauer <ensonic@users.sf.net> + + * common: + Automatic update of common submodule + From c408583 to 21ba2e5 + +2015-06-07 17:01:37 +0200 Stefan Sauer <ensonic@users.sf.net> + + * docs/plugins/Makefile.am: + docs: remove variables that we define in the snippet from common + This is syncing our Makefile.am with upstream gtkdoc. + +2015-06-07 17:16:19 +0200 Stefan Sauer <ensonic@users.sf.net> + + * autogen.sh: + * common: + Automatic update of common submodule + From d676993 to c408583 + +2015-06-07 16:44:37 +0200 Sebastian Dröge <sebastian@centricular.com> + + * configure.ac: + Back to development + === release 1.5.1 === -2015-06-07 Sebastian Dröge <slomo@coaxion.net> +2015-06-07 10:46:34 +0200 Sebastian Dröge <sebastian@centricular.com> + * ChangeLog: + * NEWS: + * RELEASE: * configure.ac: - releasing 1.5.1 + * 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: + * 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/videomixer/videomixerorc-dist.c: + * win32/common/config.h: + Release 1.5.1 + +2015-06-07 10:38:28 +0200 Sebastian Dröge <sebastian@centricular.com> + + * 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 2015-06-07 10:32:38 +0200 Sebastian Dröge <sebastian@centricular.com> diff --git a/Makefile.am b/Makefile.am index c6da764618eaef04d7e03099a51761a416efed00..6c9786fe244e5ee1e914254c6307b2fac1bdc6f2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -68,6 +68,7 @@ CRUFT_FILES = \ $(top_builddir)/gst/videofilter/.libs/*gamma.{so,dll,DLL,dylib} CRUFT_DIRS = \ + $(top_srcdir)/docs/plugins/tmpl \ $(top_srcdir)/gst/median \ $(top_srcdir)/gst/qtdemux \ $(top_srcdir)/gst/quicktime \ diff --git a/Makefile.in b/Makefile.in index 7451d231a5ad9aa8a1e8bd2d3aec7b182c42bab3..91902bb5adbed8d87a59109546dfd9d477d3b362 100644 --- a/Makefile.in +++ b/Makefile.in @@ -613,6 +613,7 @@ CRUFT_FILES = \ $(top_builddir)/gst/videofilter/.libs/*gamma.{so,dll,DLL,dylib} CRUFT_DIRS = \ + $(top_srcdir)/docs/plugins/tmpl \ $(top_srcdir)/gst/median \ $(top_srcdir)/gst/qtdemux \ $(top_srcdir)/gst/quicktime \ diff --git a/NEWS b/NEWS index ee6348fc0172500b42eb0758c05661da5e6c3a64..916b1220d68db23916699bd37b33d5d3d2977647 100644 --- a/NEWS +++ b/NEWS @@ -1,2 +1,2 @@ -This is GStreamer Good Plugins 1.5.1 +This is GStreamer Good Plugins 1.5.2 diff --git a/RELEASE b/RELEASE index 53ab3bb4807e9bbb034e8b48530f633f2dabdf8d..a55e172c592ace969a9b413bd2138f5b918c3330 100644 --- a/RELEASE +++ b/RELEASE @@ -1,8 +1,8 @@ -Release notes for GStreamer Good Plugins 1.5.1 +Release notes for GStreamer Good Plugins 1.5.2 -The GStreamer team is pleased to announce the first release of the unstable +The GStreamer team is pleased to announce the second release of the unstable 1.5 release series. The 1.5 release series is adding new features on top of the 1.0, 1.2 and 1.4 series and is part of the API and ABI-stable 1.x release series of the GStreamer multimedia framework. The unstable 1.5 release series @@ -58,172 +58,26 @@ contains a set of codecs plugins based on libav (formerly gst-ffmpeg) Bugs fixed in this release - * 740130 : matroskamux: wrong duration on some files - * 699382 : v4l2: dmabuf handling is not complete - * 746747 : rtpsession: Also report internal sources in on-new-ssrc and on-ssrc-active - * 741783 : qtmux: crash when trying to mux ALAC - * 601733 : rtspsrc: Use specific error message when authentication is required - * 635701 : rtspsrc: seeking is broken - * 678124 : multifilesink: add support for time based file switching - * 682770 : v4l2src: should renegotiate - * 690646 : ximagesrc: Cursor offset with ximagesrc and xid - * 690719 : jackaudiosink: add new property (port-pattern) to specify which jack ports to autoconnect to - * 692473 : qtmux: does not store stream specific tags - * 708808 : qtmux: Error out when downstream is not seekable and no fast-start - * 711764 : osxaudiosrc: Produces broken audio for any sample rate other than 44100Hz - * 722567 : wavparse: loops on incorrect wav file - * 725335 : rtspsrc: Extract the payload type from sdp framesize attribute - * 726415 : rtpjpegpay/-depay: Remove incorrectly introduced framesize SDP attribute - * 726416 : rtph263pay/-depay: add framesize SDP attribute - * 730417 : rtspt: no timestamp from some rtsp source over tcp - * 731038 : playbin downmixes 5.0 multichannel-audio to stereo - * 732152 : multiudpsink: use sendmmsg() to send multiple packets to multiple recipients in one go - * 732866 : udpsink: client add/remove from app blocked while render function is stuck in g_socket_send_message() - * 732870 : jpegenc: add support for encoding from nv21 - * 733225 : Lockup while using Cheese on 1.3.91 - * 733444 : wavenc: does not support more than 2 channel - * 733539 : rtph264pay: append profile-level-id parameter to SDP if available - * 733556 : h264 payloader : append packetization-mode parameter for SDP - * 733616 : v4l2object: code cleanup - * 733750 : v4l2object: query minimum required buffers for output - * 734322 : RTP Jitterbuffer shouldn't force clock-rate on the caps - * 734443 : qtdemux: forward DISCONT from upstream to the output streams - * 734542 : speexenc: Improve annotation of internal function - * 734987 : udp: fix udpsrc documentation - * 735085 : y4mencode : port y4m encoder to use GstVideoEncoder base class - * 735378 : gstrtpjitterbuffer: requests retransmission periodically when no needed - * 735564 : gdkpixbufdec: Error when using gdkpixbufdec with ImageFreeze element - * 735581 : imagefreeze: Remove impossible error condition - * 735626 : multipartdemux: caps are NULL in pad-added callback (regression) - * 735627 : wavenc/wavparse: should support RF64 files - * 735795 : imagefreeze: Don't call gst_caps_unref() on NULL caps - * 735880 : imagefreeze: replace with gst_buffer_copy - * 735950 : gdkpixbufdec: free query after use - * 735971 : qtdemux: avdec_mjpeg does not get autoplugged for mjpeg in mov container - * 736072 : v4l2: set min_latency for output device according to required minimum number of buffers - * 736122 : ximagesrc: setting the screen-num property has no effect - * 736133 : v4l2: query crop configuration after each call of S_CROP - * 736252 : gdkpixbufdec: packetized mode logic - * 736462 : multifile: don't bitwise OR the same flag twice - * 736528 : udp: getting compilation error for implicit declaration of memcmp, memset - * 736543 : matroska:OR and Bitwise OR of the same flag twice - * 736872 : libpng: Removed redundant assignment - * 736873 : alpha: Removed unreachable break statements - * 736874 : audiofx: Removed unwanted variable - * 736875 : audiofx: Removed unwanted buffer_length variable - * 736876 : audiofx: Removed unreachable breaks, unwanted variable - * 736878 : audioparsers: Added index check before using the index - * 736879 : avi: Removed redundant assignment - * 736880 : avi: Removed unwanted hdl variable - * 736881 : deinterlace: Removed unwanted res variable - * 736883 : dtmf: Removed unwanted structure member and assignment - * 736884 : flv: Removed unreachable break statements - * 736887 : goom: Clarified precedence between % and ? - * 736888 : isomp4: Removed unreachable breaks - * 736890 : matroska: Removed unwanted instruction - * 736892 : rtpmanager: Removed unwanted variable and assignment - * 736893 : rtpmanager: Removed unwanted assignment - * 736894 : rtpmanager: Removed unwanted assignment in rtpsession - * 736897 : videobox: duplicate assignment - * 736903 : rtsp: Precedence in expression is not clear - * 736986 : qtdemux: handle AAC audio without ESDS atom - * 737095 : qtmux: subtitle muxing doesn't work - * 737127 : interleave: interleaving does not respect the channel positions default order - * 737359 : matroskademux: returns FLOW_FLUSHING when trying to reuse it - * 737708 : pngdec: change parse logic - * 737868 : rtspsrc: set stream caps on internal src TCP pads - * 738013 : v4l2allocator: issue with import_userptr() in single-planar API when n_planes > 1 - * 738707 : gst-plugins-good fails to build on Mac OS X 10.10 Yosemite due to deprecated NSOpenGLPFAFullScreen - * 738838 : videobox: critical error when element properties set as max/min - * 739344 : rtpjitterbuffer: ensure rtx_retry_period > = 0 - * 739366 : imagefreeze: Handle seqnums - * 739549 : v4l2bufferpool: fix typos in flags - * 739566 : gdkpixbufoverlay: Fix relative-x/y and widen their range to support scolling images in/out of frame with GstController - * 739930 : Port server-alsasrc-PCMA.py to version 1.x - * 739975 : Seeking through some AAC file freezes my application - * 740403 : v4l2object: reuse caps framerate if not overwritten by v4l2 device - * 740505 : rtspsrc: segmentation fault when requesting srtp key - * 740683 : rtspsrc: add retransmission handling for rtp - * 740987 : Fixes to osxaudiosrc and osxaudiosink - * 741115 : videomixer segfault when output height is smaller than input height and ypos is negative - * 741134 : v4l2: CREATE_BUF support is broken - * 741279 : qtmux: generating corrupted file when over 4GB - * 741398 : rtpptdemux: errors out on invalid rtp packet, e.g. if the version check failed (0 != 2) - * 741993 : souphttpsrc: leaking a buffer during flushing - * 742098 : rtp: Fails rtpaux and rtpcollision tests - * 742325 : ac3parse: requests minimum frame size that is too small - * 742363 : v4l2object: recognize and distinguish all bayer arrangements - * 742572 : qtdemux: EOS emitted after 10 seconds on a audio/mp4a file [REGRESSION] - * 742661 : qtdemux: EOS in push mode when seeking in m4a - * 743013 : v4l2bufferpool: set v4l2_buffer.field when queuing buffer in an output device - * 743186 : v4l2object: set colorspace in caps for capture devices - * 743407 : qtdemux: doesn't ignore data after last sample in mdat. - * 743518 : qtdemux: dead code while calculating segment base ? - * 743578 : qtdemux: Parse 'sidx' atom (for duration and indexing in fragmented files) - * 743906 : quarktv: doesn't work with planes=0, fix property range accordingly - * 744211 : interleave: assertion 'self- > func != NULL' failed - * 744461 : pulsesink: Enhance code readability in pulsesink_query - * 745192 : matroskademux: V_MS-VFW-FOURCC streams have DTS instead of PTS - * 745226 : Vorbis RTP payloader metadata is slightly wrong - * 745276 : avidemux: remove not needed code - * 745339 : qtdemux: key_unit seek doesn't work - * 745441 : v4l2: Detect lossed frame and warn - * 745515 : level: infinite loop when interval is set to low values - * 745587 : rtp: Add PLI and FIR counters to RTPSource statistics - * 745599 : rtsp: tcp transport fails - * 745973 : matroskademux: gst_tag_list_insert: assertion 'GST_IS_TAG_LIST (into)' failed - * 746065 : level: outputs random values if channels==1 - * 746242 : matroskaparse: send global tags - * 746274 : flvdemux: Less spam from no_more_pads warning - * 746390 : qtdemux: crash while playing MPEG DASH stream - * 746479 : rtsp: Only two second of playback with rtpsrc and test-mp4 (rtsp-server) - * 746543 : rtpsession: Properly implement T_rr_interval and allow sending multiple early feedback packets in a row - * 746810 : matroska: fix GValue leak when parsing tags - * 746822 : qtdemux: segment query reports wrong values after key-unit seek - * 746834 : v4l2sink: driver is not queried for minimum number of buffers when propose_allocation is not called - * 747204 : audiofirfilter creates strange noise for smaller filter kernels and even default kernel - * 747208 : rtpvp8depay: should have width/height in its caps so it can be fed to muxers - * 747358 : rtp: RTPJitterBufferMode enum missing from gtk-doc - * 747394 : rtpsession: Track RTX ssrc caps - * 747554 : suppressions: silence possible valgrind false positive - * 747595 : tests: Add test suite for alpha element - * 747597 : smpte: Remove unused fields - * 747863 : rtpsession: Use bandwidth calculation by default instead of some arbitrary hardcoded value - * 747922 : rtpjitterbuffer/rtxreceive: Don't reset the jitterbuffer if too old RTX packets arrive - * 748022 : audiofx: fix typos in example pipelines - * 748024 : icydemux: Fix segfault for 0-value metainterval - * 748041 : rtpjitterbuffer: Too early requested retransmission for future packets - * 748353 : rtspsrc: Leak of RTCP caps - * 748436 : rtpjitterbuffer: " stats " property docs - * 748584 : matroskademux: fix seek event leak in push mode - * 748617 : qtdemux: fix buffer leak on EOS with stop position in push mode - * 748627 : rtspsrc: Don't send NACKs and early RTCP in non-feedback profiles - * 748909 : jpegdec: fix frame leaks - * 749054 : qtdemux: Fix gst-launch pipeline in the documentation - * 749072 : flacparse: fix buffer leak - * 749122 : vp8enc: vp9enc: target bitrate is not working as expected - * 749129 : rtpg726depay: add block_align to output caps - * 749163 : po: update POTFILES.in - * 749543 : rtpg726depay: fix input buffer memleak - * 749544 : rtpg726pay: fix caps leak - * 749581 : rtpbasepayload: Try harder to reuse previously configured caps values and give more preference to anything set as properties - * 749669 : rtp: fix collection of statistic - * 749690 : splitfilesrc: Implement binary search in find_part_for_offset - * 749909 : matroska: overwritten value assignment - * 750327 : rtpssrcdemux: Add support for reduce size rtcp - * 750332 : rtpsession: Add support for reduced size rtcp - * 743925 : osxaudiosink won't reconfigure sink caps - * 744922 : osxaudiosrc: iOS resampling is stuttering - * 728353 : goom2k1: code does nothing, slowly - * 748068 : equalizer: not changing settings dynamically - * 731352 : flv: Container timestamp is DTS not PTS - * 732910 : v4l2src: Dectect and workaround decreasing HW timestamp - * 737810 : payloaders: VP8 and Opus payloader should probably suppport Google Chrome encoding-names - * 740787 : videocrop: No longer apply the new crop if caps have not changed - * 736396 : isomp4: duplicate if else branches in atoms.c - * 610364 : udpsrc: allocates buffers with size a lot bigger than needed - * 739305 : souphttpsrc: log connection events at info level - * 744213 : spectrum: assertion 'len > 0' failed + * 742917 : v4l2: Allow scaling in the v4l2*convert element + * 746146 : v4l2src: Seems to produce invalid or not-supported colorimetry field + * 750298 : souphttpsrc: add tls-database property + * 750471 : rtspsrc: Add support for TLS client authentication + * 750566 : goom: FTBFS: possible uninitialized variables compiler warning + * 750567 : rtpvp8depay: FTBFS because of access beyond end of array compiler warning + * 750653 : rtpmanager: document units of stats and arguments + * 750675 : qtdemux: reverse playback not working + * 750747 : splitmuxtest sometimes fails + * 750868 : osxaudio: fix latency property query on RemoteIO + * 750965 : rtpjitterbuffer: 1. Fix a typing error of comment, 2. Add null check in free_item function + * 751164 : rtspsrc does not respect the timeout value in the SETUP reply + * 751297 : rtprtxqueue: reverse pending list before pushing buffers + * 751298 : flvmux: produced files does not work well with common flash players + * 751306 : good plugins: fix some issues found using static analysis tool + * 751316 : rtpjitterbuffer : Fix a typing error of comment and the code which is wrong coding style. (trivial cleanup) + * 751320 : flvmux: Does not append AVC end of sequence + * 751361 : qtmux generates bad output timestamps + * 751364 : flacparse: fix possible memory leak + * 743338 : gstv4l2bufferpool: handle -EPIPE from DQBUF to signal EOS ==== Download ==== @@ -260,82 +114,22 @@ subscribe to the gstreamer-devel list. Contributors to this release - * Aleix Conchillo Flaqué - * Alex O'Konski - * Ananda - * Andrei Sarakeev - * Antonio Ospite - * Anuj Jaiswal * Arun Raghavan - * Aurélien Zanelli - * Benjamin Gaignard - * Brad Smith - * Branislav Katreniak - * David Sansome - * David Schleef + * Chris Clayton * Edward Hervey - * George Kiagiadakis - * Guillaume Desmottes - * Gwenole Beauchesne - * Göran Jönsson - * Hans de Goede - * Henning Heinold - * Hyunjun Ko + * Enrico Jorns * Ilya Konstantinov - * Jan Alexander Steffens (heftig) * Jan Schmidt - * Jason Litzinger - * Jesper Larsen - * Jimmy Ohn - * Jonas Holmberg * Jose Antonio Santos Cadenas - * Josep Torra - * Julien Isorce - * Jurgen Slowack - * Krzysztof Kotlenga - * Linus Svensson * Luis de Bethencourt - * Mark Nauwelaerts - * Matej Knopp - * Mathieu Duponchelle - * Matthew Waters - * Michael Smith * Miguel ParÃs DÃaz - * Nicola Murino * Nicolas Dufresne - * Nicolas Huet - * Nirbheek Chauhan - * Ognyan Tonchev - * Olivier Crête - * Patrick Radizi - * Paul Hyunil - * Peter G. Baum - * Peter Korsgaard - * Peter Seiderer - * Philippe De Muyter - * Philippe Normand - * Piotr DrÄ…g - * Ramiro Polla - * Ravi Kiran K N - * Reynaldo H. Verdejo Pinochet - * Sanjay NM - * Santiago Carot-Nemesio + * Philipp Zabel + * Sangkyu Park * Sebastian Dröge - * Sebastian Rasmussen - * Simon Farnsworth - * Sjoerd Simons - * Srimanta Panda * Stefan Sauer * Thiago Santos - * Thibault Saunier - * Tim-Philipp Müller - * Tobias Modschiedler - * Tom Greenwood - * Vincent Penquerc'h * Vineeth T M * Vineeth TM - * VÃctor Manuel Jáquez Leal - * Wim Taymans - * Youness Alaoui - * hark + * Xavier Claessens  \ No newline at end of file diff --git a/autogen.sh b/autogen.sh index 01d3fdab9f76a294753f24283da45c9b40779671..f7c047f28986bf0f8ad985c28f16c5da5c1321bd 100755 --- a/autogen.sh +++ b/autogen.sh @@ -13,7 +13,6 @@ test -n "$srcdir" || srcdir=. olddir=`pwd` cd "$srcdir" -DIE=0 package=gst-plugins-good srcfile=gst-plugins-good.doap @@ -56,13 +55,25 @@ fi autogen_options $@ printf "+ check for build tools" -if test ! -z "$NOCHECK"; then echo ": skipped version checks"; else echo; fi -version_check "autoreconf" "autoreconf " \ - "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 68 || DIE=1 -version_check "pkg-config" "" \ - "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1 - -die_check $DIE +if test -z "$NOCHECK"; then + echo + + printf " checking for autoreconf ... " + echo + which "autoreconf" 2>/dev/null || { + echo "not found! Please install the autoconf package." + exit 1 + } + + printf " checking for pkg-config ... " + echo + which "pkg-config" 2>/dev/null || { + echo "not found! Please install pkg-config." + exit 1 + } +else + echo ": skipped version checks" +fi # if no arguments specified then this will be printed if test -z "$*" && test -z "$NOCONFIGURE"; then @@ -76,7 +87,7 @@ fi toplevel_check $srcfile # autopoint -if test -d po ; then +if test -d po && grep ^AM_GNU_GETTEXT_VERSION configure.ac >/dev/null ; then tool_run "autopoint" "--force" fi diff --git a/common/Makefile.am b/common/Makefile.am index 25966fcb6f1162da79b47d6003ffd95375668f99..1eac7d8c3f68f8dd71e44f8b6fcb9f15820fde3e 100644 --- a/common/Makefile.am +++ b/common/Makefile.am @@ -8,7 +8,7 @@ EXTRA_DIST = \ parallel-subdirs.mak \ gst-autogen.sh \ check-exports \ - c-to-xml.py mangle-tmpl.py scangobj-merge.py \ + c-to-xml.py mangle-db.py scangobj-merge.py \ gtk-doc-plugins.mak \ plugins.xsl gstdoc-scangobj \ gst.supp check.mak \ diff --git a/common/Makefile.in b/common/Makefile.in index f775be575bbc5579e3a52c6989340f54066ef726..b3940185deb19057ca4af167c51068038c823f3f 100644 --- a/common/Makefile.in +++ b/common/Makefile.in @@ -533,7 +533,7 @@ EXTRA_DIST = \ parallel-subdirs.mak \ gst-autogen.sh \ check-exports \ - c-to-xml.py mangle-tmpl.py scangobj-merge.py \ + c-to-xml.py mangle-db.py scangobj-merge.py \ gtk-doc-plugins.mak \ plugins.xsl gstdoc-scangobj \ gst.supp check.mak \ diff --git a/common/gst-autogen.sh b/common/gst-autogen.sh index c5798d0b7ec9e002a43a864ece13b9ee7afeae1a..71049e60d51439096b9674a03bc3b2ded94ad701 100644 --- a/common/gst-autogen.sh +++ b/common/gst-autogen.sh @@ -20,168 +20,6 @@ debug () fi } -version_get () -# based on the command's version output, set variables -# _MAJOR, _MINOR, _MICRO, _VERSION, using the given prefix as variable prefix -# -# arg 1: command binary name -# arg 2: (uppercased) variable name prefix -{ - COMMAND=$1 - VARPREFIX=`echo $2 | tr .,- _` - local ${VARPREFIX}_VERSION - - # strip everything that's not a digit, then use cut to get the first field - pkg_version=`$COMMAND --version|head -n 1|sed 's/^.*)[^0-9]*//'|cut -d' ' -f1` - debug "pkg_version $pkg_version" - # remove any non-digit characters from the version numbers to permit numeric - # comparison - pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g` - pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g` - pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g` - test -z "$pkg_major" && pkg_major=0 - test -z "$pkg_minor" && pkg_minor=0 - test -z "$pkg_micro" && pkg_micro=0 - debug "found major $pkg_major minor $pkg_minor micro $pkg_micro" - eval ${VARPREFIX}_MAJOR=$pkg_major - eval ${VARPREFIX}_MINOR=$pkg_minor - eval ${VARPREFIX}_MICRO=$pkg_micro - eval ${VARPREFIX}_VERSION=$pkg_version -} - -version_compare () -# Checks whether the version of VARPREFIX is equal to or -# newer than the requested version -# arg1: VARPREFIX -# arg2: MAJOR -# arg3: MINOR -# arg4: MICRO -{ - VARPREFIX=`echo $1 | tr .,- _` - MAJOR=$2 - MINOR=$3 - MICRO=$4 - - eval pkg_major=\$${VARPREFIX}_MAJOR; - eval pkg_minor=\$${VARPREFIX}_MINOR; - eval pkg_micro=\$${VARPREFIX}_MICRO; - - #start checking the version - debug "version_compare: $VARPREFIX against $MAJOR.$MINOR.$MICRO" - - # reset check - WRONG= - - if [ ! "$pkg_major" -gt "$MAJOR" ]; then - debug "major: $pkg_major <= $MAJOR" - if [ "$pkg_major" -lt "$MAJOR" ]; then - debug "major: $pkg_major < $MAJOR" - WRONG=1 - elif [ ! "$pkg_minor" -gt "$MINOR" ]; then - debug "minor: $pkg_minor <= $MINOR" - if [ "$pkg_minor" -lt "$MINOR" ]; then - debug "minor: $pkg_minor < $MINOR" - WRONG=1 - elif [ "$pkg_micro" -lt "$MICRO" ]; then - debug "micro: $pkg_micro < $MICRO" - WRONG=1 - fi - fi - fi - if test ! -z "$WRONG"; then - debug "version_compare: $VARPREFIX older than $MAJOR.$MINOR.$MICRO" - return 1 - fi - debug "version_compare: $VARPREFIX equal to/newer than $MAJOR.$MINOR.$MICRO" - return 0 -} - - -version_check () -# check the version of a package -# first argument : package name (executable) -# second argument : optional path where to look for it instead -# third argument : source download url -# rest of arguments : major, minor, micro version -# all consecutive ones : suggestions for binaries to use -# (if not specified in second argument) -{ - PACKAGE=$1 - PKG_PATH=$2 - URL=$3 - MAJOR=$4 - MINOR=$5 - MICRO=$6 - - # for backwards compatibility, we let PKG_PATH=PACKAGE when PKG_PATH null - if test -z "$PKG_PATH"; then PKG_PATH=$PACKAGE; fi - debug "major $MAJOR minor $MINOR micro $MICRO" - VERSION=$MAJOR - if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi - if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi - - debug "major $MAJOR minor $MINOR micro $MICRO" - - for SUGGESTION in $PKG_PATH; do - COMMAND="$SUGGESTION" - - # don't check if asked not to - test -z "$NOCHECK" && { - printf " checking for $COMMAND >= $VERSION ... " - } || { - # we set a var with the same name as the package, but stripped of - # unwanted chars - VAR=`echo $PACKAGE | sed 's/-//g'` - debug "setting $VAR" - eval $VAR="$COMMAND" - return 0 - } - - which $COMMAND > /dev/null 2>&1 - if test $? -eq 1; - then - debug "$COMMAND not found" - continue - fi - - VARPREFIX=`echo $COMMAND | sed 's/-//g' | tr [:lower:] [:upper:]` - version_get $COMMAND $VARPREFIX - - version_compare $VARPREFIX $MAJOR $MINOR $MICRO - if test $? -ne 0; then - echo "found $pkg_version, not ok !" - continue - else - echo "found $pkg_version, ok." - # we set a var with the same name as the package, but stripped of - # unwanted chars - VAR=`echo $PACKAGE | sed 's/-//g'` - debug "setting $VAR" - eval $VAR="$COMMAND" - return 0 - fi - done - - echo "$PACKAGE not found !" - echo "You must have $PACKAGE installed to compile $package." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at $URL" - return 1; -} - -die_check () -{ - # call with $DIE - # if set to 1, we need to print something helpful then die - DIE=$1 - if test "x$DIE" = "x1"; - then - echo - echo "- Please get the right tools before proceeding." - echo "- Alternatively, if you're sure we're wrong, run with --nocheck." - exit 1 - fi -} autogen_options () { diff --git a/common/gst.supp b/common/gst.supp index 5e2aaf92b54c03d6dba2b0b9935e025b44db7be4..81f98a99c9f0afe059abbf4ef22c127f3a48cbda 100644 --- a/common/gst.supp +++ b/common/gst.supp @@ -4006,3 +4006,17 @@ ... fun:_g_io_module_get_default } + +{ + <valgrind bug when trying to parse "infinity" from "interleaved"> + Memcheck:Addr8 + fun:__GI___strncasecmp_l + fun:____strtod_l_internal + fun:gst_value_deserialize_double +} + +{ + <glibc overreads/conditionals> + Memcheck:Addr8 + fun:do_lookup_x +} diff --git a/common/gtk-doc-plugins.mak b/common/gtk-doc-plugins.mak index f19e7d7edbd3b99d427b55292fee3987b00cc377..997a67277189975b1232395f7cb7a9fc3a278674 100644 --- a/common/gtk-doc-plugins.mak +++ b/common/gtk-doc-plugins.mak @@ -16,6 +16,16 @@ help: update: scanobj-update $(MAKE) check-outdated-docs +if GTK_DOC_USE_LIBTOOL +GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +GTKDOC_RUN = $(LIBTOOL) --mode=execute +else +GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +GTKDOC_RUN = +endif + # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then @@ -44,11 +54,9 @@ EXTRA_DIST = \ # maintainers and result is commited to git DOC_STAMPS = \ scan-build.stamp \ - tmpl-build.stamp \ sgml-build.stamp \ html-build.stamp \ scan.stamp \ - tmpl.stamp \ sgml.stamp \ html.stamp @@ -122,7 +130,7 @@ scanobj-build.stamp: $(SCANOBJ_DEPS) $(basefiles) scanobj_options="--verbose"; \ fi; \ $(INSPECT_ENVIRONMENT) \ - CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" \ CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS) $(WARNING_CFLAGS)" \ LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ $(GST_DOC_SCANOBJ) $$scanobj_options --type-init-func="gst_init(NULL,NULL)" \ @@ -161,29 +169,9 @@ scan-build.stamp: $(HFILE_GLOB) $(EXTRA_HFILES) $(basefiles) scanobj-build.stamp --ignore-headers="$(IGNORE_HFILES)"; \ touch scan-build.stamp -#### update templates; done on every build #### - -# in a non-srcdir build, we need to copy files from the previous step -# and the files from previous runs of this step -tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_OVERRIDES) - @echo ' DOC Rebuilding template files' - @if test x"$(srcdir)" != x. ; then \ - for f in $(SCANOBJ_FILES) $(SCAN_FILES); \ - do \ - if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi; \ - done; \ - fi - @gtkdoc-mktmpl --module=$(DOC_MODULE) - @$(PYTHON) \ - $(top_srcdir)/common/mangle-tmpl.py $(srcdir)/$(INSPECT_DIR) tmpl - @touch tmpl-build.stamp - -tmpl.stamp: tmpl-build.stamp - @true - #### xml #### -sgml-build.stamp: tmpl.stamp scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files) +sgml-build.stamp: scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files) @echo ' DOC Building XML' @-mkdir -p xml @for a in $(srcdir)/$(INSPECT_DIR)/*.xml; do \ @@ -199,6 +187,7 @@ sgml-build.stamp: tmpl.stamp scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common --output-format=xml \ --ignore-files="$(IGNORE_HFILES) $(IGNORE_CFILES)" \ $(MKDB_OPTIONS) + @$(PYTHON) $(top_srcdir)/common/mangle-db.py xml @cp ../version.entities xml @touch sgml-build.stamp diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak index 9d76889e4e7311693529c1b31611c39f03b56926..f8edf40b20a64cd44bfdc8510ef416d8dd544738 100644 --- a/common/gtk-doc.mak +++ b/common/gtk-doc.mak @@ -3,7 +3,16 @@ ########################################################################### # thomas: except of course that we did -# thomas: copied from glib-2 +if GTK_DOC_USE_LIBTOOL +GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +GTKDOC_RUN = $(LIBTOOL) --mode=execute +else +GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +GTKDOC_RUN = +endif + # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then @@ -81,15 +90,22 @@ scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) --ignore-headers="$(IGNORE_HFILES)" @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null; then \ echo " DOC Introspecting gobjects"; \ + scanobj_options=""; \ + gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + scanobj_options="--verbose"; \ + fi; \ + fi; \ 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)" \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" \ CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" \ LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj --type-init-func="gst_init(NULL,NULL)" \ - --module=$(DOC_MODULE) ; \ + $$scanobj_options --module=$(DOC_MODULE) ; \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ diff --git a/common/m4/gst-glib2.m4 b/common/m4/gst-glib2.m4 index 63f0f46123e7ee81625efffdb0a28c414e610097..5b9cd8beda470c8b3e919a4a0cec8f3fd7cd8fd2 100644 --- a/common/m4/gst-glib2.m4 +++ b/common/m4/gst-glib2.m4 @@ -120,6 +120,10 @@ AC_DEFUN([AG_GST_GLIB_CHECK], GIO_LIBDIR="`$PKG_CONFIG --variable=libdir gio-2.0`" AC_DEFINE_UNQUOTED(GIO_LIBDIR, "$GIO_LIBDIR", [The GIO library directory.]) + GIO_PREFIX="`$PKG_CONFIG --variable=prefix gio-2.0`" + AC_DEFINE_UNQUOTED(GIO_PREFIX, "$GIO_PREFIX", + [The GIO install prefix.]) + AC_SUBST(GIO_CFLAGS) AC_SUBST(GIO_LIBS) AC_SUBST(GIO_LDFLAGS) diff --git a/common/m4/introspection.m4 b/common/m4/introspection.m4 index 589721c5a02008e3b32e3978e6b201d6f4c6cb92..162be57cbcc978af52f692cca4224f677383a711 100644 --- a/common/m4/introspection.m4 +++ b/common/m4/introspection.m4 @@ -62,6 +62,7 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection + INTROSPECTION_INIT="extern void gst_init(gint*,gchar**); gst_init(NULL,NULL);" fi AC_SUBST(INTROSPECTION_SCANNER) AC_SUBST(INTROSPECTION_COMPILER) @@ -71,6 +72,7 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], AC_SUBST(INTROSPECTION_CFLAGS) AC_SUBST(INTROSPECTION_LIBS) AC_SUBST(INTROSPECTION_MAKEFILE) + AC_SUBST(INTROSPECTION_INIT) AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes") ]) diff --git a/common/mangle-db.py b/common/mangle-db.py new file mode 100644 index 0000000000000000000000000000000000000000..463e5bc50ceeae3e743a1668e4b0ba0ad7868918 --- /dev/null +++ b/common/mangle-db.py @@ -0,0 +1,71 @@ +# -*- Mode: Python -*- +# vi:si:et:sw=4:sts=4:ts=4 + +""" +Insert includes for the element-*-details.xml files into the related docbook +files. +""" + +from __future__ import print_function, unicode_literals + +import codecs +import glob +import os +import sys + +import xml.dom.minidom + +def patch(related, details): + try: + doc = xml.dom.minidom.parse(related) + except IOError: + return + + # find the insertion point + elem = None + for e in doc.childNodes: + if e.nodeType == e.ELEMENT_NODE and e.localName == 'refentry': + elem = e + break + if elem == None: + return + + elem2 = None + for e in elem.childNodes: + if e.nodeType == e.ELEMENT_NODE and e.localName == 'refsect1': + id = e.getAttributeNode('id') + role = e.getAttributeNode('role') + if id and id.nodeValue.endswith('.description') and role and role.nodeValue == 'desc': + elem2 = e + break + if elem2 == None: + return + + # insert include + include = doc.createElement('include') + include.setAttribute('xmlns', 'http://www.w3.org/2003/XInclude') + include.setAttribute('href', details) + fallback = doc.createElement('fallback') + fallback.setAttribute('xmlns', 'http://www.w3.org/2003/XInclude') + include.appendChild(fallback) + elem2.appendChild(include) + + # store patched file + result = codecs.open(related, mode="w", encoding="utf-8") + #result = open(related, "wb") + doc.writexml(result) + result.close() + +def main(): + if not len(sys.argv) == 2: + sys.stderr.write('Please specify the xml/ dir') + sys.exit(1) + + xmldir = sys.argv[1] + + # parse all *-details.xml files and patch includes into the corresponding + # xml files + for details in glob.glob("%s/element-*-details.xml" % xmldir): + patch (details.replace("-details", ""), os.path.basename(details)) + +main() diff --git a/common/mangle-tmpl.py b/common/mangle-tmpl.py deleted file mode 100644 index 51ea8c2e59779ed09dee8a75203d6d0168c1e0fa..0000000000000000000000000000000000000000 --- a/common/mangle-tmpl.py +++ /dev/null @@ -1,165 +0,0 @@ -# -*- Mode: Python -*- -# vi:si:et:sw=4:sts=4:ts=4 - -""" -use the output from gst-xmlinspect.py to mangle tmpl/*.sgml and -insert/overwrite Short Description and Long Description -""" - -# FIXME: right now it uses pygst and scans on its own; -# we really should use inspect/*.xml instead since the result of -# gst-xmlinspect.py is committed by the docs maintainer, who can be -# expected to have pygst, but this step should be done for every docs build, -# so no pygst allowed - -# 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 -import os - -class Tmpl: - def __init__(self, filename): - self.filename = filename - self._sectionids = [] - self._sections = {} - - def read(self): - """ - Read and parse the sections from the given file. - """ - lines = open(self.filename).readlines() - matcher = re.compile("<!-- ##### SECTION (\S+) ##### -->\n") - id = None - - for line in lines: - match = matcher.search(line) - if match: - id = match.expand("\\1") - self._sectionids.append(id) - self._sections[id] = [] - else: - if not id: - sys.stderr.write( - "WARNING: line before a SECTION header: %s" % line) - else: - self._sections[id].append(line) - - def get_section(self, id): - """ - Get the content from the given section. - """ - return self._sections[id] - - def set_section(self, id, content): - """ - Replace the given section id with the given content. - """ - self._sections[id] = content - - def output(self): - """ - Return the output of the current template in the tmpl/*.sgml format. - """ - lines = [] - for id in self._sectionids: - lines.append("<!-- ##### SECTION %s ##### -->\n" % id) - for line in self._sections[id]: - lines.append(line) - - return "".join(lines) - - def write(self, backup=False): - """ - Write out the template file again, backing up the previous one. - """ - if backup: - target = self.filename + ".mangle.bak" - os.rename(self.filename, target) - - handle = open(self.filename, "w") - handle.write(self.output()) - handle.close() - -import xml.dom.minidom - -def get_elements(file): - elements = {} - doc = xml.dom.minidom.parse(file) - - elem = None - for e in doc.childNodes: - if e.nodeType == e.ELEMENT_NODE and e.localName == 'plugin': - elem = e - break - if elem == None: - return None - - elem2 = None - for e in elem.childNodes: - if e.nodeType == e.ELEMENT_NODE and e.localName == 'elements': - elem2 = e - break - if elem2 == None: - return None - - elem = elem2 - - for e in elem.childNodes: - if e.nodeType == e.ELEMENT_NODE and e.localName == 'element': - name = None - description = None - - for e2 in e.childNodes: - if e2.nodeType == e2.ELEMENT_NODE and e2.localName == 'name': - name = e2.childNodes[0].nodeValue.encode("UTF-8") - elif e2.nodeType == e2.ELEMENT_NODE and e2.localName == 'description': - if e2.childNodes: - description = e2.childNodes[0].nodeValue.encode("UTF-8") - else: - description = 'No description' - - if name != None and description != None: - elements[name] = {'description': description} - - return elements - -def main(): - if not len(sys.argv) == 3: - sys.stderr.write('Please specify the inspect/ dir and the tmpl/ dir') - sys.exit(1) - - inspectdir = sys.argv[1] - tmpldir = sys.argv[2] - - # parse all .xml files; build map of element name -> short desc - #for file in glob.glob("inspect/plugin-*.xml"): - elements = {} - for file in glob.glob("%s/plugin-*.xml" % inspectdir): - elements.update(get_elements(file)) - - for file in glob.glob("%s/element-*.sgml" % tmpldir): - base = os.path.basename(file) - element = base[len("element-"):-len(".sgml")] - tmpl = Tmpl(file) - tmpl.read() - if element in elements.keys(): - description = elements[element]['description'] - tmpl.set_section("Short_Description", "%s\n\n" % description) - - # put in an include if not yet there - line = '<include xmlns="http://www.w3.org/2003/XInclude" href="' + \ - 'element-' + element + '-details.xml">' + \ - '<fallback xmlns="http://www.w3.org/2003/XInclude" />' + \ - '</include>\n' - section = tmpl.get_section("Long_Description") - if not section[0] == line: - section.insert(0, line) - tmpl.set_section("Long_Description", section) - tmpl.write() - -main() diff --git a/config.h.in b/config.h.in index 9ab6589fa5ba9532dceede2481c7fccfd8a1433f..09bdbda587658f3532eb39ff81c7fe8d0d8e4505 100644 --- a/config.h.in +++ b/config.h.in @@ -34,6 +34,9 @@ /* The GIO modules directory. */ #undef GIO_MODULE_DIR +/* The GIO install prefix. */ +#undef GIO_PREFIX + /* GStreamer API Version */ #undef GST_API_VERSION diff --git a/configure b/configure index f2e014b352f92d08bb8d7fc2e4ac9b59df522f95..0d65e4ffcfed658f6012fd52d73778b5ec2d1916 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.5.1. +# Generated by GNU Autoconf 2.69 for GStreamer Good Plug-ins 1.5.2. # # 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.5.1' -PACKAGE_STRING='GStreamer Good Plug-ins 1.5.1' +PACKAGE_VERSION='1.5.2' +PACKAGE_STRING='GStreamer Good Plug-ins 1.5.2' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer' PACKAGE_URL='' @@ -1943,7 +1943,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.5.1 to adapt to many kinds of systems. +\`configure' configures GStreamer Good Plug-ins 1.5.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2015,7 +2015,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GStreamer Good Plug-ins 1.5.1:";; + short | recursive ) echo "Configuration of GStreamer Good Plug-ins 1.5.2:";; esac cat <<\_ACEOF @@ -2379,7 +2379,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GStreamer Good Plug-ins configure 1.5.1 +GStreamer Good Plug-ins configure 1.5.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3190,7 +3190,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.5.1, which was +It was created by GStreamer Good Plug-ins $as_me 1.5.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4172,7 +4172,7 @@ fi # Define the identity of the package. PACKAGE='gst-plugins-good' - VERSION='1.5.1' + VERSION='1.5.2' cat >>confdefs.h <<_ACEOF @@ -4383,9 +4383,9 @@ fi - PACKAGE_VERSION_MAJOR=$(echo 1.5.1 | cut -d'.' -f1) - PACKAGE_VERSION_MINOR=$(echo 1.5.1 | cut -d'.' -f2) - PACKAGE_VERSION_MICRO=$(echo 1.5.1 | cut -d'.' -f3) + PACKAGE_VERSION_MAJOR=$(echo 1.5.2 | cut -d'.' -f1) + PACKAGE_VERSION_MINOR=$(echo 1.5.2 | cut -d'.' -f2) + PACKAGE_VERSION_MICRO=$(echo 1.5.2 | cut -d'.' -f3) @@ -4396,7 +4396,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5 $as_echo_n "checking nano version... " >&6; } - NANO=$(echo 1.5.1 | cut -d'.' -f4) + NANO=$(echo 1.5.2 | cut -d'.' -f4) if test x"$NANO" = x || test "x$NANO" = "x0" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5 @@ -9052,10 +9052,10 @@ fi done - GST_CURRENT=501 + GST_CURRENT=502 GST_REVISION=0 - GST_AGE=501 - GST_LIBVERSION=501:0:501 + GST_AGE=502 + GST_LIBVERSION=502:0:502 @@ -13380,8 +13380,8 @@ CC="$lt_save_CC" -GST_REQ=1.5.1 -GSTPB_REQ=1.5.1 +GST_REQ=1.5.2 +GSTPB_REQ=1.5.2 @@ -24399,6 +24399,13 @@ cat >>confdefs.h <<_ACEOF #define GIO_LIBDIR "$GIO_LIBDIR" _ACEOF + GIO_PREFIX="`$PKG_CONFIG --variable=prefix gio-2.0`" + +cat >>confdefs.h <<_ACEOF +#define GIO_PREFIX "$GIO_PREFIX" +_ACEOF + + @@ -36387,7 +36394,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.5.1, which was +This file was extended by GStreamer Good Plug-ins $as_me 1.5.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -36453,7 +36460,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.5.1 +GStreamer Good Plug-ins config.status 1.5.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 46e63af1a1ce56c629fb63504b761ffb59b463a8..a8eb50b503d8f1ced0b3ec15ad86388d43b0f27f 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ dnl please read gstreamer/docs/random/autotools before changing this file dnl initialize autoconf dnl releases only do -Wall, git and prerelease does -Werror too dnl use a three digit version number for releases, and four for git/pre -AC_INIT([GStreamer Good Plug-ins],[1.5.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-good]) +AC_INIT([GStreamer Good Plug-ins],[1.5.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-good]) AG_GST_INIT @@ -43,11 +43,11 @@ AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION", [GStreamer API Version]) AG_GST_LIBTOOL_PREPARE -AS_LIBTOOL(GST, 501, 0, 501) +AS_LIBTOOL(GST, 502, 0, 502) dnl *** required versions of GStreamer stuff *** -GST_REQ=1.5.1 -GSTPB_REQ=1.5.1 +GST_REQ=1.5.2 +GSTPB_REQ=1.5.2 dnl *** autotools stuff **** diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am index 728574f5f8e09570042f8e25dc19c0853b8e28e9..4e8ab0ff3cb29db2cb86a761b841d3ed359c3a41 100644 --- a/docs/plugins/Makefile.am +++ b/docs/plugins/Makefile.am @@ -233,9 +233,6 @@ extra_files = GTKDOC_CFLAGS = $(GST_BASE_CFLAGS) -I$(top_builddir) GTKDOC_LIBS = $(GST_BASE_LIBS) -GTKDOC_CC=$(LIBTOOL) --tag=CC --mode=compile $(CC) -GTKDOC_LD=$(LIBTOOL) --tag=CC --mode=link $(CC) - # If you need to override some of the declarations, place them in this file # and uncomment this line. #DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in index c358cb90e970196f03904c536d2cc02edbb786df..022748ae9edc1989df8a8f33e1c1c951b3637ecc 100644 --- a/docs/plugins/Makefile.in +++ b/docs/plugins/Makefile.in @@ -721,13 +721,17 @@ extra_files = # contains GtkObjects/GObjects and you want to document signals and properties. GTKDOC_CFLAGS = $(GST_BASE_CFLAGS) -I$(top_builddir) GTKDOC_LIBS = $(GST_BASE_LIBS) -GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) -GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) # If you need to override some of the declarations, place them in this file # and uncomment this line. #DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt DOC_OVERRIDES = +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to @@ -757,11 +761,9 @@ EXTRA_DIST = \ # maintainers and result is commited to git DOC_STAMPS = \ scan-build.stamp \ - tmpl-build.stamp \ sgml-build.stamp \ html-build.stamp \ scan.stamp \ - tmpl.stamp \ sgml.stamp \ html.stamp @@ -1097,7 +1099,7 @@ update: scanobj-update @ENABLE_GTK_DOC_TRUE@ scanobj_options="--verbose"; \ @ENABLE_GTK_DOC_TRUE@ fi; \ @ENABLE_GTK_DOC_TRUE@ $(INSPECT_ENVIRONMENT) \ -@ENABLE_GTK_DOC_TRUE@ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" \ +@ENABLE_GTK_DOC_TRUE@ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" \ @ENABLE_GTK_DOC_TRUE@ CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS) $(WARNING_CFLAGS)" \ @ENABLE_GTK_DOC_TRUE@ LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ @ENABLE_GTK_DOC_TRUE@ $(GST_DOC_SCANOBJ) $$scanobj_options --type-init-func="gst_init(NULL,NULL)" \ @@ -1136,29 +1138,9 @@ update: scanobj-update @ENABLE_GTK_DOC_TRUE@ --ignore-headers="$(IGNORE_HFILES)"; \ @ENABLE_GTK_DOC_TRUE@ touch scan-build.stamp -#### update templates; done on every build #### - -# in a non-srcdir build, we need to copy files from the previous step -# and the files from previous runs of this step -@ENABLE_GTK_DOC_TRUE@tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_OVERRIDES) -@ENABLE_GTK_DOC_TRUE@ @echo ' DOC Rebuilding template files' -@ENABLE_GTK_DOC_TRUE@ @if test x"$(srcdir)" != x. ; then \ -@ENABLE_GTK_DOC_TRUE@ for f in $(SCANOBJ_FILES) $(SCAN_FILES); \ -@ENABLE_GTK_DOC_TRUE@ do \ -@ENABLE_GTK_DOC_TRUE@ if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi; \ -@ENABLE_GTK_DOC_TRUE@ done; \ -@ENABLE_GTK_DOC_TRUE@ fi -@ENABLE_GTK_DOC_TRUE@ @gtkdoc-mktmpl --module=$(DOC_MODULE) -@ENABLE_GTK_DOC_TRUE@ @$(PYTHON) \ -@ENABLE_GTK_DOC_TRUE@ $(top_srcdir)/common/mangle-tmpl.py $(srcdir)/$(INSPECT_DIR) tmpl -@ENABLE_GTK_DOC_TRUE@ @touch tmpl-build.stamp - -@ENABLE_GTK_DOC_TRUE@tmpl.stamp: tmpl-build.stamp -@ENABLE_GTK_DOC_TRUE@ @true - #### xml #### -@ENABLE_GTK_DOC_TRUE@sgml-build.stamp: tmpl.stamp scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files) +@ENABLE_GTK_DOC_TRUE@sgml-build.stamp: scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files) @ENABLE_GTK_DOC_TRUE@ @echo ' DOC Building XML' @ENABLE_GTK_DOC_TRUE@ @-mkdir -p xml @ENABLE_GTK_DOC_TRUE@ @for a in $(srcdir)/$(INSPECT_DIR)/*.xml; do \ @@ -1174,6 +1156,7 @@ update: scanobj-update @ENABLE_GTK_DOC_TRUE@ --output-format=xml \ @ENABLE_GTK_DOC_TRUE@ --ignore-files="$(IGNORE_HFILES) $(IGNORE_CFILES)" \ @ENABLE_GTK_DOC_TRUE@ $(MKDB_OPTIONS) +@ENABLE_GTK_DOC_TRUE@ @$(PYTHON) $(top_srcdir)/common/mangle-db.py xml @ENABLE_GTK_DOC_TRUE@ @cp ../version.entities xml @ENABLE_GTK_DOC_TRUE@ @touch sgml-build.stamp diff --git a/docs/plugins/gst-plugins-good-plugins.args b/docs/plugins/gst-plugins-good-plugins.args index df31626bc5f73c3a8218b666f2b9580614fdf042..73cf080a0c47d17c9be143c8368d44a45cc4aeb6 100644 --- a/docs/plugins/gst-plugins-good-plugins.args +++ b/docs/plugins/gst-plugins-good-plugins.args @@ -1038,6 +1038,16 @@ <DEFAULT>TRUE</DEFAULT> </ARG> +<ARG> +<NAME>GstRTSPSrc::tls-interaction</NAME> +<TYPE>GTlsInteraction*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>TLS interaction</NICK> +<BLURB>A GTlsInteraction object to promt the user for password or certificate.</BLURB> +<DEFAULT></DEFAULT> +</ARG> + <ARG> <NAME>GstRTPDec::skip</NAME> <TYPE>gint</TYPE> @@ -4288,6 +4298,16 @@ <DEFAULT>TRUE</DEFAULT> </ARG> +<ARG> +<NAME>GstSoupHTTPSrc::tls-database</NAME> +<TYPE>GTlsDatabase*</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>TLS database</NICK> +<BLURB>TLS database with anchor certificate authorities used to validate the server certificate.</BLURB> +<DEFAULT></DEFAULT> +</ARG> + <ARG> <NAME>GstRTPDVPay::mode</NAME> <TYPE>GstDVPayMode</TYPE> @@ -21324,7 +21344,7 @@ <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> +<BLURB>Use the pipeline running-time to set the NTP time in the RTCP SR messages (DEPRECATED: Use ntp-source property).</BLURB> <DEFAULT>FALSE</DEFAULT> </ARG> @@ -21385,7 +21405,17 @@ <FLAGS>rw</FLAGS> <NICK>RTP Profile</NICK> <BLURB>Default RTP profile of newly created sessions.</BLURB> -<DEFAULT>GST_RTP_PROFILE_AVPF</DEFAULT> +<DEFAULT>GST_RTP_PROFILE_AVP</DEFAULT> +</ARG> + +<ARG> +<NAME>GstRtpBin::ntp-time-source</NAME> +<TYPE>GstRtpNtpTimeSource</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>NTP Time Source</NICK> +<BLURB>NTP time source for RTCP packets.</BLURB> +<DEFAULT>NTP time based on realtime clock</DEFAULT> </ARG> <ARG> @@ -21644,7 +21674,7 @@ <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> +<BLURB>Use the pipeline running-time to set the NTP time in the RTCP SR messages (DEPRECATED: Use ntp-source property).</BLURB> <DEFAULT>FALSE</DEFAULT> </ARG> @@ -21688,6 +21718,16 @@ <DEFAULT>GST_RTP_PROFILE_AVP</DEFAULT> </ARG> +<ARG> +<NAME>GstRtpSession::ntp-time-source</NAME> +<TYPE>GstRtpNtpTimeSource</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>NTP Time Source</NICK> +<BLURB>NTP time source for RTCP packets.</BLURB> +<DEFAULT>NTP time based on realtime clock</DEFAULT> +</ARG> + <ARG> <NAME>GstRtpRtxSend::rtx-payload-type</NAME> <TYPE>guint</TYPE> @@ -22468,6 +22508,46 @@ <DEFAULT>0</DEFAULT> </ARG> +<ARG> +<NAME>GstQTMux::reserved-bytes-per-sec</NAME> +<TYPE>guint</TYPE> +<RANGE><= 10000</RANGE> +<FLAGS>rwx</FLAGS> +<NICK>Reserved MOOV bytes per second, per track</NICK> +<BLURB>Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track.</BLURB> +<DEFAULT>550</DEFAULT> +</ARG> + +<ARG> +<NAME>GstQTMux::reserved-duration-remaining</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Report the approximate amount of remaining recording space (ns)</NICK> +<BLURB>Reports the approximate amount of remaining moov header space reserved using reserved-max-duration.</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstQTMux::reserved-max-duration</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Reserved maximum file duration (ns)</NICK> +<BLURB>When set to a value > 0, reserves space for index tables at the beginning of the file.</BLURB> +<DEFAULT>18446744073709551615</DEFAULT> +</ARG> + +<ARG> +<NAME>GstQTMux::reserved-moov-update-period</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Interval at which to update index tables (ns)</NICK> +<BLURB>When used with reserved-max-duration, periodically updates the index tables with information muxed so far.</BLURB> +<DEFAULT>18446744073709551615</DEFAULT> +</ARG> + <ARG> <NAME>GstQTMoovRecover::broken-input</NAME> <TYPE>gchar*</TYPE> @@ -22598,6 +22678,46 @@ <DEFAULT>0</DEFAULT> </ARG> +<ARG> +<NAME>GstMP4Mux::reserved-bytes-per-sec</NAME> +<TYPE>guint</TYPE> +<RANGE><= 10000</RANGE> +<FLAGS>rwx</FLAGS> +<NICK>Reserved MOOV bytes per second, per track</NICK> +<BLURB>Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track.</BLURB> +<DEFAULT>550</DEFAULT> +</ARG> + +<ARG> +<NAME>GstMP4Mux::reserved-duration-remaining</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Report the approximate amount of remaining recording space (ns)</NICK> +<BLURB>Reports the approximate amount of remaining moov header space reserved using reserved-max-duration.</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstMP4Mux::reserved-max-duration</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Reserved maximum file duration (ns)</NICK> +<BLURB>When set to a value > 0, reserves space for index tables at the beginning of the file.</BLURB> +<DEFAULT>18446744073709551615</DEFAULT> +</ARG> + +<ARG> +<NAME>GstMP4Mux::reserved-moov-update-period</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Interval at which to update index tables (ns)</NICK> +<BLURB>When used with reserved-max-duration, periodically updates the index tables with information muxed so far.</BLURB> +<DEFAULT>18446744073709551615</DEFAULT> +</ARG> + <ARG> <NAME>GstMJ2Mux::dts-method</NAME> <TYPE>GstQTMuxDtsMethods</TYPE> @@ -22688,6 +22808,46 @@ <DEFAULT>0</DEFAULT> </ARG> +<ARG> +<NAME>GstMJ2Mux::reserved-bytes-per-sec</NAME> +<TYPE>guint</TYPE> +<RANGE><= 10000</RANGE> +<FLAGS>rwx</FLAGS> +<NICK>Reserved MOOV bytes per second, per track</NICK> +<BLURB>Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track.</BLURB> +<DEFAULT>550</DEFAULT> +</ARG> + +<ARG> +<NAME>GstMJ2Mux::reserved-duration-remaining</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Report the approximate amount of remaining recording space (ns)</NICK> +<BLURB>Reports the approximate amount of remaining moov header space reserved using reserved-max-duration.</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstMJ2Mux::reserved-max-duration</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Reserved maximum file duration (ns)</NICK> +<BLURB>When set to a value > 0, reserves space for index tables at the beginning of the file.</BLURB> +<DEFAULT>18446744073709551615</DEFAULT> +</ARG> + +<ARG> +<NAME>GstMJ2Mux::reserved-moov-update-period</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Interval at which to update index tables (ns)</NICK> +<BLURB>When used with reserved-max-duration, periodically updates the index tables with information muxed so far.</BLURB> +<DEFAULT>18446744073709551615</DEFAULT> +</ARG> + <ARG> <NAME>GstISMLMux::dts-method</NAME> <TYPE>GstQTMuxDtsMethods</TYPE> @@ -22778,6 +22938,46 @@ <DEFAULT>0</DEFAULT> </ARG> +<ARG> +<NAME>GstISMLMux::reserved-bytes-per-sec</NAME> +<TYPE>guint</TYPE> +<RANGE><= 10000</RANGE> +<FLAGS>rwx</FLAGS> +<NICK>Reserved MOOV bytes per second, per track</NICK> +<BLURB>Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track.</BLURB> +<DEFAULT>550</DEFAULT> +</ARG> + +<ARG> +<NAME>GstISMLMux::reserved-duration-remaining</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Report the approximate amount of remaining recording space (ns)</NICK> +<BLURB>Reports the approximate amount of remaining moov header space reserved using reserved-max-duration.</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>GstISMLMux::reserved-max-duration</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Reserved maximum file duration (ns)</NICK> +<BLURB>When set to a value > 0, reserves space for index tables at the beginning of the file.</BLURB> +<DEFAULT>18446744073709551615</DEFAULT> +</ARG> + +<ARG> +<NAME>GstISMLMux::reserved-moov-update-period</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Interval at which to update index tables (ns)</NICK> +<BLURB>When used with reserved-max-duration, periodically updates the index tables with information muxed so far.</BLURB> +<DEFAULT>18446744073709551615</DEFAULT> +</ARG> + <ARG> <NAME>GstGPPMux::dts-method</NAME> <TYPE>GstQTMuxDtsMethods</TYPE> @@ -22958,6 +23158,46 @@ <DEFAULT>0</DEFAULT> </ARG> +<ARG> +<NAME>Gst3GPPMux::reserved-bytes-per-sec</NAME> +<TYPE>guint</TYPE> +<RANGE><= 10000</RANGE> +<FLAGS>rwx</FLAGS> +<NICK>Reserved MOOV bytes per second, per track</NICK> +<BLURB>Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track.</BLURB> +<DEFAULT>550</DEFAULT> +</ARG> + +<ARG> +<NAME>Gst3GPPMux::reserved-duration-remaining</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>r</FLAGS> +<NICK>Report the approximate amount of remaining recording space (ns)</NICK> +<BLURB>Reports the approximate amount of remaining moov header space reserved using reserved-max-duration.</BLURB> +<DEFAULT>0</DEFAULT> +</ARG> + +<ARG> +<NAME>Gst3GPPMux::reserved-max-duration</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Reserved maximum file duration (ns)</NICK> +<BLURB>When set to a value > 0, reserves space for index tables at the beginning of the file.</BLURB> +<DEFAULT>18446744073709551615</DEFAULT> +</ARG> + +<ARG> +<NAME>Gst3GPPMux::reserved-moov-update-period</NAME> +<TYPE>guint64</TYPE> +<RANGE></RANGE> +<FLAGS>rw</FLAGS> +<NICK>Interval at which to update index tables (ns)</NICK> +<BLURB>When used with reserved-max-duration, periodically updates the index tables with information muxed so far.</BLURB> +<DEFAULT>18446744073709551615</DEFAULT> +</ARG> + <ARG> <NAME>GstSplitFileSrc::location</NAME> <TYPE>gchar*</TYPE> diff --git a/docs/plugins/gst-plugins-good-plugins.hierarchy b/docs/plugins/gst-plugins-good-plugins.hierarchy index 3d1150a2259a8a94b7ad85625853ce592db910fb..c259c7983da537589092802be31dda7825f71e24 100644 --- a/docs/plugins/gst-plugins-good-plugins.hierarchy +++ b/docs/plugins/gst-plugins-good-plugins.hierarchy @@ -33,7 +33,7 @@ GObject GstMuLawEnc GstSpeexEnc GstWavpackEnc - GstAudioVisualizer-ExtGom + GstAudioVisualizer-ExtGoom GstGoom GstAudioVisualizer-ExtGoom2k1 GstGoom2k1 @@ -309,6 +309,7 @@ GObject GstTaskPool GSocket GTlsDatabase + GTlsInteraction GUdevClient GUdevDevice GdkPixbuf diff --git a/docs/plugins/html/GstIirEqualizer.html b/docs/plugins/html/GstIirEqualizer.html index c8bd064e7634209b732f6a69d6ec2da9bea0c6fa..4a267e242aade105bb17ffa895cf6bd25ee00ade 100644 --- a/docs/plugins/html/GstIirEqualizer.html +++ b/docs/plugins/html/GstIirEqualizer.html @@ -68,8 +68,6 @@ GstIirEqualizer implements </div> <div class="refsect1"> <a name="GstIirEqualizer.description"></a><h2>Description</h2> -<p> -</p> </div> <div class="refsect1"> <a name="GstIirEqualizer.functions_details"></a><h2>Functions</h2> @@ -80,8 +78,6 @@ GstIirEqualizer implements <div class="refsect2"> <a name="GstIirEqualizer-struct"></a><h3>struct GstIirEqualizer</h3> <pre class="programlisting">struct GstIirEqualizer;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html index 82c3da8f093792ddeeeb2eaafd898b1dadd07ed0..61651a4bc903853fd88922de3136b5dd19bb65bd 100644 --- a/docs/plugins/html/ch01.html +++ b/docs/plugins/html/ch01.html @@ -30,229 +30,229 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-aacparse.html">aacparse</a></span><span class="refpurpose"> — AAC parser</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-aasink.html">aasink</a></span><span class="refpurpose"> — An ASCII art videosink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-aasink.html">aasink</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-ac3parse.html">ac3parse</a></span><span class="refpurpose"> — AC3 parser</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-agingtv.html">agingtv</a></span><span class="refpurpose"> — AgingTV adds age to video input using scratches and dust</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-agingtv.html">agingtv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-alpha.html">alpha</a></span><span class="refpurpose"> — Adds an alpha channel to video - uniform or via chroma-keying</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-alpha.html">alpha</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-alphacolor.html">alphacolor</a></span><span class="refpurpose"> — ARGB from/to AYUV colorspace conversion preserving the alpha channel</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-alphacolor.html">alphacolor</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-alawdec.html">alawdec</a></span><span class="refpurpose"> — Convert 8bit A law to 16bit PCM</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-alawdec.html">alawdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-alawenc.html">alawenc</a></span><span class="refpurpose"> — Convert 16bit PCM to 8bit A law</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-alawenc.html">alawenc</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-amrparse.html">amrparse</a></span><span class="refpurpose"> — AMR parser</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-apedemux.html">apedemux</a></span><span class="refpurpose"> — Read and output APE tags while demuxing the contents</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-apedemux.html">apedemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-apev2mux.html">apev2mux</a></span><span class="refpurpose"> — Adds an APEv2 header to the beginning of files using taglib</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-apev2mux.html">apev2mux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-aspectratiocrop.html">aspectratiocrop</a></span><span class="refpurpose"> — Crops video into a user-defined aspect-ratio</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-aspectratiocrop.html">aspectratiocrop</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioamplify.html">audioamplify</a></span><span class="refpurpose"> — Amplifies an audio stream by a given factor</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioamplify.html">audioamplify</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiochebband.html">audiochebband</a></span><span class="refpurpose"> — Chebyshev band pass and band reject filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiochebband.html">audiochebband</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiocheblimit.html">audiocheblimit</a></span><span class="refpurpose"> — Chebyshev low pass and high pass filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiocheblimit.html">audiocheblimit</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiofirfilter.html">audiofirfilter</a></span><span class="refpurpose"> — Generic audio FIR filter with custom filter kernel</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiofirfilter.html">audiofirfilter</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioiirfilter.html">audioiirfilter</a></span><span class="refpurpose"> — Generic audio IIR filter with custom filter kernel</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioiirfilter.html">audioiirfilter</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiowsincband.html">audiowsincband</a></span><span class="refpurpose"> — Band pass and band reject windowed sinc filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiowsincband.html">audiowsincband</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiowsinclimit.html">audiowsinclimit</a></span><span class="refpurpose"> — Low pass and high pass windowed sinc filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiowsinclimit.html">audiowsinclimit</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioecho.html">audioecho</a></span><span class="refpurpose"> — Adds an echo or reverb effect to an audio stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioecho.html">audioecho</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiodynamic.html">audiodynamic</a></span><span class="refpurpose"> — Compressor and Expander</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiodynamic.html">audiodynamic</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioinvert.html">audioinvert</a></span><span class="refpurpose"> — Swaps upper and lower half of audio samples</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioinvert.html">audioinvert</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiopanorama.html">audiopanorama</a></span><span class="refpurpose"> — Positions audio streams in the stereo panorama</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiopanorama.html">audiopanorama</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiokaraoke.html">audiokaraoke</a></span><span class="refpurpose"> — Removes voice from sound</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiokaraoke.html">audiokaraoke</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-auparse.html">auparse</a></span><span class="refpurpose"> — Parse an .au file into raw audio</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-auparse.html">auparse</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-autoaudiosink.html">autoaudiosink</a></span><span class="refpurpose"> — Wrapper audio sink for automatically detected audio sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-autoaudiosink.html">autoaudiosink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-autoaudiosrc.html">autoaudiosrc</a></span><span class="refpurpose"> — Wrapper audio source for automatically detected audio source</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-autoaudiosrc.html">autoaudiosrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-autovideosink.html">autovideosink</a></span><span class="refpurpose"> — Wrapper video sink for automatically detected video sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-autovideosink.html">autovideosink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-autovideosrc.html">autovideosrc</a></span><span class="refpurpose"> — Wrapper video source for automatically detected video source</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-autovideosrc.html">autovideosrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-avidemux.html">avidemux</a></span><span class="refpurpose"> — Demultiplex an avi file into audio and video</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-avidemux.html">avidemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-avimux.html">avimux</a></span><span class="refpurpose"> — Muxes audio and video into an avi stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-avimux.html">avimux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-avisubtitle.html">avisubtitle</a></span><span class="refpurpose"> — Parse avi subtitle stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-avisubtitle.html">avisubtitle</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-cacasink.html">cacasink</a></span><span class="refpurpose"> — A colored ASCII art videosink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-cacasink.html">cacasink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-cairooverlay.html">cairooverlay</a></span><span class="refpurpose"> — Render overlay on a video stream using Cairo</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-cairooverlay.html">cairooverlay</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-capssetter.html">capssetter</a></span><span class="refpurpose"> — Set/merge caps on stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-capssetter.html">capssetter</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-cutter.html">cutter</a></span><span class="refpurpose"> — Audio Cutter to split audio into non-silent bits</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-cutter.html">cutter</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-dcaparse.html">dcaparse</a></span><span class="refpurpose"> — DCA (DTS Coherent Acoustics) parser</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-deinterlace.html">deinterlace</a></span><span class="refpurpose"> — Deinterlace Methods ported from DScaler/TvTime</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-deinterlace.html">deinterlace</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-deinterleave.html">deinterleave</a></span><span class="refpurpose"> — Splits one interleaved multichannel audio stream into many mono audio streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-deinterleave.html">deinterleave</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-dicetv.html">dicetv</a></span><span class="refpurpose"> — 'Dices' the screen up into many small squares</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dicetv.html">dicetv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-directsoundsink.html">directsoundsink</a></span><span class="refpurpose"> — DirectSound audio sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-directsoundsink.html">directsoundsink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-dtmfsrc.html">dtmfsrc</a></span><span class="refpurpose"> — Generates DTMF tones</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dtmfsrc.html">dtmfsrc</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dv1394src.html">dv1394src</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-dvdec.html">dvdec</a></span><span class="refpurpose"> — Uses libdv to decode DV video (smpte314) (libdv.sourceforge.net)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dvdec.html">dvdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-dvdemux.html">dvdemux</a></span><span class="refpurpose"> — Uses libdv to separate DV audio from DV video (libdv.sourceforge.net)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dvdemux.html">dvdemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-edgetv.html">edgetv</a></span><span class="refpurpose"> — Apply edge detect on video</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-edgetv.html">edgetv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-10bands.html">equalizer-10bands</a></span><span class="refpurpose"> — Direct Form 10 band IIR equalizer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-10bands.html">equalizer-10bands</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-3bands.html">equalizer-3bands</a></span><span class="refpurpose"> — Direct Form 3 band IIR equalizer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-3bands.html">equalizer-3bands</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-nbands.html">equalizer-nbands</a></span><span class="refpurpose"> — Direct Form IIR equalizer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-nbands.html">equalizer-nbands</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacdec.html">flacdec</a></span><span class="refpurpose"> — Decodes FLAC lossless audio streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacdec.html">flacdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacenc.html">flacenc</a></span><span class="refpurpose"> — Encodes audio with the FLAC lossless audio encoder</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacenc.html">flacenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacparse.html">flacparse</a></span><span class="refpurpose"> — Parses audio with the FLAC lossless audio codec</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacparse.html">flacparse</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flactag.html">flactag</a></span><span class="refpurpose"> — Rewrite tags in a FLAC file</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flactag.html">flactag</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flvdemux.html">flvdemux</a></span><span class="refpurpose"> — Demux FLV feeds into digital streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flvdemux.html">flvdemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flvmux.html">flvmux</a></span><span class="refpurpose"> — Muxes video/audio streams into a FLV stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flvmux.html">flvmux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flxdec.html">flxdec</a></span><span class="refpurpose"> — FLC/FLI/FLX video decoder</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flxdec.html">flxdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-gamma.html">gamma</a></span><span class="refpurpose"> — Adjusts gamma on a video stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-gamma.html">gamma</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-gdkpixbufsink.html">gdkpixbufsink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-goom.html">goom</a></span><span class="refpurpose"> — Takes frames of data and outputs video frames using the GOOM filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-goom.html">goom</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-goom2k1.html">goom2k1</a></span><span class="refpurpose"> — Takes frames of data and outputs video frames using the GOOM 2k1 filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-goom2k1.html">goom2k1</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-hdv1394src.html">hdv1394src</a></span><span class="refpurpose"> — Source for MPEG-TS video data from firewire port</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-hdv1394src.html">hdv1394src</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-icydemux.html">icydemux</a></span><span class="refpurpose"> — Read and output ICY tags while demuxing the contents</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-icydemux.html">icydemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-id3demux.html">id3demux</a></span><span class="refpurpose"> — Read and output ID3v1 and ID3v2 tags while demuxing the contents</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-id3demux.html">id3demux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-id3v2mux.html">id3v2mux</a></span><span class="refpurpose"> — Adds an ID3v2 header to the beginning of MP3 files using taglib</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-id3v2mux.html">id3v2mux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-imagefreeze.html">imagefreeze</a></span><span class="refpurpose"> — Generates a still frame stream from an image</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-imagefreeze.html">imagefreeze</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-interleave.html">interleave</a></span><span class="refpurpose"> — Folds many mono channels into one interleaved audio stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-interleave.html">interleave</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-ismlmux.html">ismlmux</a></span><span class="refpurpose"> — Muxer for ISML smooth streaming (.isml) files</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-jackaudiosrc.html">jackaudiosrc</a></span><span class="refpurpose"> — Captures audio from a JACK server</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-jackaudiosrc.html">jackaudiosrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-jackaudiosink.html">jackaudiosink</a></span><span class="refpurpose"> — Output audio to a JACK server</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-jackaudiosink.html">jackaudiosink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-jpegdec.html">jpegdec</a></span><span class="refpurpose"> — Decode images from JPEG format</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-jpegdec.html">jpegdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-jpegenc.html">jpegenc</a></span><span class="refpurpose"> — Encode images in JPEG format</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-jpegenc.html">jpegenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-level.html">level</a></span><span class="refpurpose"> — RMS/Peak/Decaying Peak Level messager for audio/raw</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-level.html">level</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-matroskamux.html">matroskamux</a></span><span class="refpurpose"> — Muxes video/audio/subtitle streams into a matroska stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-matroskamux.html">matroskamux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-matroskademux.html">matroskademux</a></span><span class="refpurpose"> — Demuxes Matroska/WebM streams into video/audio/subtitles</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-matroskademux.html">matroskademux</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-mj2mux.html">mj2mux</a></span><span class="refpurpose"> — Muxer for Motion JPEG-2000 (.mj2) files</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-monoscope.html">monoscope</a></span><span class="refpurpose"> — Displays a highly stabilised waveform of audio input</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-monoscope.html">monoscope</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-mpegaudioparse.html">mpegaudioparse</a></span><span class="refpurpose"> — MPEG audio parser</span> @@ -261,70 +261,70 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-mp4mux.html">mp4mux</a></span><span class="refpurpose"> — Muxer for ISO MPEG-4 (.mp4) files</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-mulawdec.html">mulawdec</a></span><span class="refpurpose"> — Convert 8bit mu law to 16bit PCM</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-mulawdec.html">mulawdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-mulawenc.html">mulawenc</a></span><span class="refpurpose"> — Convert 16bit PCM to 8bit mu law</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-mulawenc.html">mulawenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-multifilesink.html">multifilesink</a></span><span class="refpurpose"> — Write buffers to a sequentially named set of files</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-multifilesink.html">multifilesink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-multifilesrc.html">multifilesrc</a></span><span class="refpurpose"> — Read a sequentially named set of files into buffers</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-multifilesrc.html">multifilesrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-multipartdemux.html">multipartdemux</a></span><span class="refpurpose"> — demux multipart streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-multipartdemux.html">multipartdemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-multipartmux.html">multipartmux</a></span><span class="refpurpose"> — mux multipart streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-multipartmux.html">multipartmux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-multiudpsink.html">multiudpsink</a></span><span class="refpurpose"> — Send data over the network via UDP to one or multiple recipients which can be added or removed at runtime using action signals</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-multiudpsink.html">multiudpsink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-optv.html">optv</a></span><span class="refpurpose"> — Optical art meets real-time video effect</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-optv.html">optv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-oss4sink.html">oss4sink</a></span><span class="refpurpose"> — Output to a sound card via OSS version 4</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-oss4sink.html">oss4sink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-oss4src.html">oss4src</a></span><span class="refpurpose"> — Capture from a sound card via OSS version 4</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-oss4src.html">oss4src</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-osssink.html">osssink</a></span><span class="refpurpose"> — Output to a sound card via OSS</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-osssink.html">osssink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-osssrc.html">osssrc</a></span><span class="refpurpose"> — Capture from a sound card via OSS</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-osssrc.html">osssrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxaudiosink.html">osxaudiosink</a></span><span class="refpurpose"> — Output to a sound card in OS X</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxaudiosink.html">osxaudiosink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxaudiosrc.html">osxaudiosrc</a></span><span class="refpurpose"> — Input from a sound card in OS X</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxaudiosrc.html">osxaudiosrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxvideosink.html">osxvideosink</a></span><span class="refpurpose"> — OSX native videosink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxvideosink.html">osxvideosink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-pngdec.html">pngdec</a></span><span class="refpurpose"> — Decode a png video frame to a raw image</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-pngdec.html">pngdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-pngenc.html">pngenc</a></span><span class="refpurpose"> — Encode a video frame to a .png image</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-pngenc.html">pngenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-progressreport.html">progressreport</a></span><span class="refpurpose"> — Periodically query and report on processing progress</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-progressreport.html">progressreport</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-pulsesink.html">pulsesink</a></span><span class="refpurpose"> — Plays audio to a PulseAudio server</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-pulsesink.html">pulsesink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-pulsesrc.html">pulsesrc</a></span><span class="refpurpose"> — Captures audio from a PulseAudio server</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-pulsesrc.html">pulsesrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-quarktv.html">quarktv</a></span><span class="refpurpose"> — Motion dissolver</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-quarktv.html">quarktv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-qtdemux.html">qtdemux</a></span><span class="refpurpose"> — Demultiplex a QuickTime file into audio and video streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-qtdemux.html">qtdemux</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-qtmux.html">qtmux</a></span><span class="refpurpose"> — Muxer for quicktime(.mov) files</span> @@ -333,127 +333,127 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-qtmoovrecover.html">qtmoovrecover</a></span><span class="refpurpose"> — Utility element for recovering unfinished quicktime files</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-radioactv.html">radioactv</a></span><span class="refpurpose"> — motion-enlightment effect</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-radioactv.html">radioactv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-revtv.html">revtv</a></span><span class="refpurpose"> — A video waveform monitor for each line of video processed</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-revtv.html">revtv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rganalysis.html">rganalysis</a></span><span class="refpurpose"> — Perform the ReplayGain analysis</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rganalysis.html">rganalysis</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rglimiter.html">rglimiter</a></span><span class="refpurpose"> — Apply signal compression to raw audio data</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rglimiter.html">rglimiter</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rgvolume.html">rgvolume</a></span><span class="refpurpose"> — Apply ReplayGain volume adjustment</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rgvolume.html">rgvolume</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rippletv.html">rippletv</a></span><span class="refpurpose"> — RippleTV does ripple mark effect on the video input</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rippletv.html">rippletv</a></span><span class="refpurpose"></span> </dt> <dt> -<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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdec.html">rtpdec</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpac3depay.html">rtpac3depay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpac3pay.html">rtpac3pay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpamrdepay.html">rtpamrdepay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpamrpay.html">rtpamrpay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbvdepay.html">rtpbvdepay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbvpay.html">rtpbvpay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpL16depay.html">rtpL16depay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpL16pay.html">rtpL16pay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpj2kpay.html">rtpj2kpay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpjpegpay.html">rtpjpegpay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpsbcpay.html">rtpsbcpay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtspsrc.html">rtspsrc</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbin.html">rtpbin</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdtmfmux.html">rtpdtmfmux</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdtmfsrc.html">rtpdtmfsrc</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpjitterbuffer.html">rtpjitterbuffer</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpmux.html">rtpmux</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpptdemux.html">rtpptdemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpsession.html">rtpsession</a></span><span class="refpurpose"> — Implement an RTP session</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpsession.html">rtpsession</a></span><span class="refpurpose"></span> </dt> <dt> -<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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpssrcdemux.html">rtpssrcdemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtprtxsend.html">rtprtxsend</a></span><span class="refpurpose"> — Retransmit RTP packets when needed, according to RFC4588</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtprtxsend.html">rtprtxsend</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtprtxreceive.html">rtprtxreceive</a></span><span class="refpurpose"> — Receive retransmitted RTP packets according to RFC4588</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtprtxreceive.html">rtprtxreceive</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-sbcparse.html">sbcparse</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-scaletempo.html">scaletempo</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-shagadelictv.html">shagadelictv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-shapewipe.html">shapewipe</a></span><span class="refpurpose"> — Adds a shape wipe transition to a video stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-shapewipe.html">shapewipe</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-shout2send.html">shout2send</a></span><span class="refpurpose"> — Sends data to an icecast server</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-shout2send.html">shout2send</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-smpte.html">smpte</a></span><span class="refpurpose"> — Apply the standard SMPTE transitions on video images</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-smpte.html">smpte</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-smptealpha.html">smptealpha</a></span><span class="refpurpose"> — Apply the standard SMPTE transitions as alpha on video images</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-smptealpha.html">smptealpha</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-souphttpsrc.html">souphttpsrc</a></span><span class="refpurpose"> — Receive data as a client over the network via HTTP using SOUP</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-souphttpsrc.html">souphttpsrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-spectrum.html">spectrum</a></span><span class="refpurpose"> — Run an FFT on the audio signal, output spectrum data</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-spectrum.html">spectrum</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-speexenc.html">speexenc</a></span><span class="refpurpose"> — Encodes audio in Speex format</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-speexenc.html">speexenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-speexdec.html">speexdec</a></span><span class="refpurpose"> — decode speex streams to audio</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-speexdec.html">speexdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-splitfilesrc.html">splitfilesrc</a></span><span class="refpurpose"> — Read a sequentially named set of files as if it was one large file</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-splitfilesrc.html">splitfilesrc</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-splitmuxsrc.html">splitmuxsrc</a></span><span class="refpurpose"> — Split Demuxer bin that recombines files created by @@ -463,79 +463,79 @@ the splitmuxsink element.</span> <span class="refentrytitle"><a href="gst-plugins-good-plugins-splitmuxsink.html">splitmuxsink</a></span><span class="refpurpose"> — Muxer wrapper for splitting output stream by size or time</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-streaktv.html">streaktv</a></span><span class="refpurpose"> — StreakTV makes after images of moving objects</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-streaktv.html">streaktv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-taginject.html">taginject</a></span><span class="refpurpose"> — inject metadata tags</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-taginject.html">taginject</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-udpsrc.html">udpsrc</a></span><span class="refpurpose"> — Receive data over the network via UDP</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-udpsrc.html">udpsrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-udpsink.html">udpsink</a></span><span class="refpurpose"> — Send data over the network via UDP</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-udpsink.html">udpsink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2src.html">v4l2src</a></span><span class="refpurpose"> — Reads frames from a Video4Linux2 device</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2src.html">v4l2src</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2sink.html">v4l2sink</a></span><span class="refpurpose"> — Displays frames on a video4linux2 device</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2sink.html">v4l2sink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2radio.html">v4l2radio</a></span><span class="refpurpose"> — Controls a Video4Linux2 radio device</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2radio.html">v4l2radio</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-vertigotv.html">vertigotv</a></span><span class="refpurpose"> — A loopback alpha blending effector with rotating and scaling</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-vertigotv.html">vertigotv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-videobalance.html">videobalance</a></span><span class="refpurpose"> — Adjusts brightness, contrast, hue, saturation on a video stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-videobalance.html">videobalance</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-videobox.html">videobox</a></span><span class="refpurpose"> — Resizes a video by adding borders or cropping</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-videobox.html">videobox</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-videocrop.html">videocrop</a></span><span class="refpurpose"> — Crops video into a user-defined region</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-videocrop.html">videocrop</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-videoflip.html">videoflip</a></span><span class="refpurpose"> — Flips and rotates video</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-videoflip.html">videoflip</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-videomixer.html">videomixer</a></span><span class="refpurpose"> — Mix multiple video streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-videomixer.html">videomixer</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-vp8dec.html">vp8dec</a></span><span class="refpurpose"> — Decode VP8 video streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-vp8dec.html">vp8dec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-vp8enc.html">vp8enc</a></span><span class="refpurpose"> — Encode VP8 video streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-vp8enc.html">vp8enc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-warptv.html">warptv</a></span><span class="refpurpose"> — WarpTV does realtime goo'ing of the video input</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-warptv.html">warptv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavenc.html">wavenc</a></span><span class="refpurpose"> — Encode raw audio into WAV</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavenc.html">wavenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-waveformsink.html">waveformsink</a></span><span class="refpurpose"> — WaveForm audio sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-waveformsink.html">waveformsink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavpackdec.html">wavpackdec</a></span><span class="refpurpose"> — Decodes Wavpack audio data</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavpackdec.html">wavpackdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavpackenc.html">wavpackenc</a></span><span class="refpurpose"> — Encodes audio with the Wavpack lossless/lossy audio codec</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavpackenc.html">wavpackenc</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-wavpackparse.html">wavpackparse</a></span><span class="refpurpose"> — Wavpack parser</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavparse.html">wavparse</a></span><span class="refpurpose"> — Parse a .wav file into raw audio</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavparse.html">wavparse</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-webmmux.html">webmmux</a></span><span class="refpurpose"> — Muxes video and audio streams into a WebM stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-webmmux.html">webmmux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-ximagesrc.html">ximagesrc</a></span><span class="refpurpose"> — Creates a screenshot video stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-ximagesrc.html">ximagesrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-y4menc.html">y4menc</a></span><span class="refpurpose"> — Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-y4menc.html">y4menc</a></span><span class="refpurpose"></span> </dt> </dl></div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2 b/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2 index 0b2add678ea8f05297cdd00aa572798b0103875a..26c5a126605778fabdd939440756ef3c78d81e6e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2 +++ b/docs/plugins/html/gst-plugins-good-plugins-1.0.devhelp2 @@ -262,6 +262,10 @@ <keyword type="property" name="The “presentation-time†property" link="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--presentation-time"/> <keyword type="property" name="The “streamable†property" link="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--streamable"/> <keyword type="property" name="The “trak-timescale†property" link="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--trak-timescale"/> + <keyword type="property" name="The “reserved-bytes-per-sec†property" link="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-bytes-per-sec"/> + <keyword type="property" name="The “reserved-duration-remaining†property" link="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-duration-remaining"/> + <keyword type="property" name="The “reserved-max-duration†property" link="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-max-duration"/> + <keyword type="property" name="The “reserved-moov-update-period†property" link="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-moov-update-period"/> <keyword type="struct" name="struct GstAacParse" link="gst-plugins-good-plugins-aacparse.html#GstAacParse-struct"/> <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"/> @@ -502,6 +506,10 @@ <keyword type="property" name="The “presentation-time†property" link="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--presentation-time"/> <keyword type="property" name="The “streamable†property" link="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--streamable"/> <keyword type="property" name="The “trak-timescale†property" link="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--trak-timescale"/> + <keyword type="property" name="The “reserved-bytes-per-sec†property" link="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-bytes-per-sec"/> + <keyword type="property" name="The “reserved-duration-remaining†property" link="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-duration-remaining"/> + <keyword type="property" name="The “reserved-max-duration†property" link="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-max-duration"/> + <keyword type="property" name="The “reserved-moov-update-period†property" link="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-moov-update-period"/> <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"/> @@ -546,6 +554,10 @@ <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="property" name="The “reserved-bytes-per-sec†property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-bytes-per-sec"/> + <keyword type="property" name="The “reserved-duration-remaining†property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-duration-remaining"/> + <keyword type="property" name="The “reserved-max-duration†property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-max-duration"/> + <keyword type="property" name="The “reserved-moov-update-period†property" link="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-moov-update-period"/> <keyword type="struct" name="struct GstMonoscope" link="gst-plugins-good-plugins-monoscope.html#GstMonoscope"/> <keyword type="struct" name="struct GstMpegAudioParse" link="gst-plugins-good-plugins-mpegaudioparse.html#GstMpegAudioParse-struct"/> <keyword type="struct" name="GstMP4Mux" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux-struct"/> @@ -558,6 +570,10 @@ <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="property" name="The “reserved-bytes-per-sec†property" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-bytes-per-sec"/> + <keyword type="property" name="The “reserved-duration-remaining†property" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-duration-remaining"/> + <keyword type="property" name="The “reserved-max-duration†property" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-max-duration"/> + <keyword type="property" name="The “reserved-moov-update-period†property" link="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-moov-update-period"/> <keyword type="struct" name="struct GstMuLawDec" link="gst-plugins-good-plugins-mulawdec.html#GstMuLawDec-struct"/> <keyword type="struct" name="struct GstMuLawEnc" link="gst-plugins-good-plugins-mulawenc.html#GstMuLawEnc-struct"/> <keyword type="struct" name="struct GstMultiFileSink" link="gst-plugins-good-plugins-multifilesink.html#GstMultiFileSink-struct"/> @@ -680,6 +696,10 @@ <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="property" name="The “reserved-bytes-per-sec†property" link="gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-bytes-per-sec"/> + <keyword type="property" name="The “reserved-duration-remaining†property" link="gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-duration-remaining"/> + <keyword type="property" name="The “reserved-max-duration†property" link="gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-max-duration"/> + <keyword type="property" name="The “reserved-moov-update-period†property" link="gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-moov-update-period"/> <keyword type="function" name="gst_qt_moov_recover_get_type ()" link="gst-plugins-good-plugins-qtmoovrecover.html#gst-qt-moov-recover-get-type"/> <keyword type="function" name="gst_qt_moov_recover_register ()" link="gst-plugins-good-plugins-qtmoovrecover.html#gst-qt-moov-recover-register"/> <keyword type="struct" name="struct GstQTMoovRecover" link="gst-plugins-good-plugins-qtmoovrecover.html#GstQTMoovRecover-struct"/> @@ -771,6 +791,7 @@ <keyword type="property" name="The “tls-database†property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--tls-database"/> <keyword type="property" name="The “tls-validation-flags†property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--tls-validation-flags"/> <keyword type="property" name="The “do-retransmission†property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--do-retransmission"/> + <keyword type="property" name="The “tls-interaction†property" link="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--tls-interaction"/> <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"/> @@ -793,6 +814,7 @@ <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="property" name="The “rtp-profile†property" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--rtp-profile"/> + <keyword type="property" name="The “ntp-time-source†property" link="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--ntp-time-source"/> <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"/> @@ -872,6 +894,7 @@ <keyword type="property" name="The “probation†property" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession--probation"/> <keyword type="property" name="The “stats†property" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession--stats"/> <keyword type="property" name="The “rtp-profile†property" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession--rtp-profile"/> + <keyword type="property" name="The “ntp-time-source†property" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession--ntp-time-source"/> <keyword type="signal" name="The “clear-pt-map†signal" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-clear-pt-map"/> <keyword type="signal" name="The “on-bye-ssrc†signal" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-bye-ssrc"/> <keyword type="signal" name="The “on-bye-timeout†signal" link="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-bye-timeout"/> @@ -963,6 +986,7 @@ <keyword type="property" name="The “ssl-ca-file†property" link="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--ssl-ca-file"/> <keyword type="property" name="The “ssl-strict†property" link="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--ssl-strict"/> <keyword type="property" name="The “ssl-use-system-ca-file†property" link="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--ssl-use-system-ca-file"/> + <keyword type="property" name="The “tls-database†property" link="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--tls-database"/> <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"/> diff --git a/docs/plugins/html/gst-plugins-good-plugins-3gppmux.html b/docs/plugins/html/gst-plugins-good-plugins-3gppmux.html index 3165cf33dc841bfbada0d6a6fc9132aae80698dc..5ac5608ff5cc5731b3f492b4f29f14c14c76e16e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-3gppmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-3gppmux.html @@ -90,6 +90,26 @@ <td class="property_name"><a class="link" href="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--trak-timescale" title="The “trak-timescale†property">trak-timescale</a></td> <td class="property_flags">Read / Write / Construct</td> </tr> +<tr> +<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-bytes-per-sec" title="The “reserved-bytes-per-sec†property">reserved-bytes-per-sec</a></td> +<td class="property_flags">Read / Write / Construct</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-duration-remaining" title="The “reserved-duration-remaining†property">reserved-duration-remaining</a></td> +<td class="property_flags">Read</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-max-duration" title="The “reserved-max-duration†property">reserved-max-duration</a></td> +<td class="property_flags">Read / Write</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-moov-update-period" title="The “reserved-moov-update-period†property">reserved-moov-update-period</a></td> +<td class="property_flags">Read / Write</td> +</tr> </tbody> </table></div> </div> @@ -170,7 +190,7 @@ and muxes it into an 3gp file. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.2.8.8.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.2.8.9.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -196,7 +216,7 @@ and muxes it into an 3gp file. </div> <hr> <div class="refsect2"> -<a name="id-1.2.2.8.8.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.2.8.9.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -231,6 +251,10 @@ and muxes it into an 3gp file. <td><p><span class="term"></span></p></td> <td> audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]</td> </tr> +<tr> +<td><p><span class="term"></span></p></td> +<td> audio/x-ac3, channels=(int)[ 1, 6 ], rate=(int)[ 1, 2147483647 ]</td> +</tr> </tbody> </table></div> <div class="variablelist"><table border="0" class="variablelist"> @@ -319,8 +343,6 @@ and muxes it into an 3gp file. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-3gppmux.functions_details"></a><h2>Functions</h2> @@ -331,8 +353,6 @@ and muxes it into an 3gp file. <div class="refsect2"> <a name="Gst3GPPMux-struct"></a><h3>Gst3GPPMux</h3> <pre class="programlisting">typedef struct _Gst3GPPMux Gst3GPPMux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -409,6 +429,39 @@ and muxes it into an 3gp file. <p>Flags: Read / Write / Construct</p> <p>Default value: 0</p> </div> +<hr> +<div class="refsect2"> +<a name="Gst3GPPMux--reserved-bytes-per-sec"></a><h3>The <code class="literal">“reserved-bytes-per-secâ€</code> property</h3> +<pre class="programlisting"> “reserved-bytes-per-sec†<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> +<p>Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track.</p> +<p>Flags: Read / Write / Construct</p> +<p>Allowed values: <= 10000</p> +<p>Default value: 550</p> +</div> +<hr> +<div class="refsect2"> +<a name="Gst3GPPMux--reserved-duration-remaining"></a><h3>The <code class="literal">“reserved-duration-remainingâ€</code> property</h3> +<pre class="programlisting"> “reserved-duration-remaining†<span class="type">guint64</span></pre> +<p>Reports the approximate amount of remaining moov header space reserved using reserved-max-duration.</p> +<p>Flags: Read</p> +<p>Default value: 0</p> +</div> +<hr> +<div class="refsect2"> +<a name="Gst3GPPMux--reserved-max-duration"></a><h3>The <code class="literal">“reserved-max-durationâ€</code> property</h3> +<pre class="programlisting"> “reserved-max-duration†<span class="type">guint64</span></pre> +<p>When set to a value > 0, reserves space for index tables at the beginning of the file.</p> +<p>Flags: Read / Write</p> +<p>Default value: 18446744073709551615</p> +</div> +<hr> +<div class="refsect2"> +<a name="Gst3GPPMux--reserved-moov-update-period"></a><h3>The <code class="literal">“reserved-moov-update-periodâ€</code> property</h3> +<pre class="programlisting"> “reserved-moov-update-period†<span class="type">guint64</span></pre> +<p>When used with reserved-max-duration, periodically updates the index tables with information muxed so far.</p> +<p>Flags: Read / Write</p> +<p>Default value: 18446744073709551615</p> +</div> </div> </div> <div class="footer"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-GstVideoMixerPad.html b/docs/plugins/html/gst-plugins-good-plugins-GstVideoMixerPad.html index 51812ec5f2d747e4542a542540f58c4669fd9b9c..d8b7cb6a54e3a928c4d995920052127d94d1375c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-GstVideoMixerPad.html +++ b/docs/plugins/html/gst-plugins-good-plugins-GstVideoMixerPad.html @@ -32,8 +32,6 @@ </tr></table></div> <div class="refsect1"> <a name="gst-plugins-good-plugins-GstVideoMixerPad.description"></a><h2>Description</h2> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-GstVideoMixerPad.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-aacparse.html b/docs/plugins/html/gst-plugins-good-plugins-aacparse.html index edb1fb9d9636d478668428d313aafd6b953a7ce4..b7081cd79fc0fca65c2b8ac3739ab4f00bb4eb24 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-aacparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-aacparse.html @@ -155,8 +155,6 @@ can also estimate playback position and clip duration.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-aacparse.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-aasink.html b/docs/plugins/html/gst-plugins-good-plugins-aasink.html index 3a7fafc2315872adb7a7f1f1386e488338303766..fddeda7e931cf0981b75c63df36e2faf57a6b0b5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-aasink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-aasink.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-aasink.top_of_page"></a>aasink</span></h2> -<p>aasink — An ASCII art videosink</p> +<p>aasink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -113,12 +113,12 @@ <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-aasink.html#GstAASink-frame-displayed" title="The “frame-displayed†signal">frame-displayed</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-aasink.html#GstAASink-have-size" title="The “have-size†signal">have-size</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> </tbody> </table></div> @@ -205,8 +205,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-aasink.functions_details"></a><h2>Functions</h2> @@ -217,8 +215,6 @@ <div class="refsect2"> <a name="GstAASink-struct"></a><h3>struct GstAASink</h3> <pre class="programlisting">struct GstAASink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -319,31 +315,7 @@ <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-aasink.html#GstAASink"><span class="type">GstAASink</span></a> *gstaasink, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.4.12.2.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstaasink</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -353,31 +325,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-aasink.html#GstAAS <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg1, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg2, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.4.12.3.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstaasink</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html b/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html index 90cba4e195d7700f5e5a89a5ff80beea7f01344c..8614d2e3c7685439e3991e79acd3d75aef25ecb0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-ac3parse.html @@ -168,8 +168,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-ac3parse.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-agingtv.html b/docs/plugins/html/gst-plugins-good-plugins-agingtv.html index 10bf678dda6b70ad3fb9c4b290958013137d44d1..a475283b906527482e7035f08879065cd01a43f9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-agingtv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-agingtv.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-agingtv.top_of_page"></a>agingtv</span></h2> -<p>agingtv — AgingTV adds age to video input using scratches and dust</p> +<p>agingtv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -187,8 +187,6 @@ scratches and dust.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-agingtv.functions_details"></a><h2>Functions</h2> @@ -199,8 +197,6 @@ scratches and dust.</p> <div class="refsect2"> <a name="GstAgingTV-struct"></a><h3>struct GstAgingTV</h3> <pre class="programlisting">struct GstAgingTV;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-alawdec.html b/docs/plugins/html/gst-plugins-good-plugins-alawdec.html index a1f27677289ea8efc96c0f054b62ed5e2049409a..bdbe0e7155b7d2c49f45c8ef5258666bec68657f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-alawdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-alawdec.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-alawdec.top_of_page"></a>alawdec</span></h2> -<p>alawdec — Convert 8bit A law to 16bit PCM</p> +<p>alawdec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -60,7 +60,7 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.9.6.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.9.6.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -86,7 +86,7 @@ </div> <hr> <div class="refsect2"> -<a name="id-1.2.9.6.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.9.6.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -137,8 +137,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-alawdec.functions_details"></a><h2>Functions</h2> @@ -149,8 +147,6 @@ <div class="refsect2"> <a name="GstALawDec-struct"></a><h3>struct GstALawDec</h3> <pre class="programlisting">struct GstALawDec;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-alawenc.html b/docs/plugins/html/gst-plugins-good-plugins-alawenc.html index f6d94bfa62aaa14572e3906f7d820c2cf467d4ad..b379b0a5c12e35e1be9280a2276f1534cfc1ebee 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-alawenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-alawenc.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-alawenc.top_of_page"></a>alawenc</span></h2> -<p>alawenc — Convert 16bit PCM to 8bit A law</p> +<p>alawenc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -60,7 +60,7 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.10.7.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.10.7.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -86,7 +86,7 @@ </div> <hr> <div class="refsect2"> -<a name="id-1.2.10.7.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.10.7.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -137,8 +137,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-alawenc.functions_details"></a><h2>Functions</h2> @@ -149,8 +147,6 @@ <div class="refsect2"> <a name="GstALawEnc-struct"></a><h3>struct GstALawEnc</h3> <pre class="programlisting">struct GstALawEnc;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-alpha.html b/docs/plugins/html/gst-plugins-good-plugins-alpha.html index 5291a1acc94c7c8e44f3e5ecd487b926d179d779..23ad8eeaf9cb576f26833ab3ef8d964dee595dfd 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-alpha.html +++ b/docs/plugins/html/gst-plugins-good-plugins-alpha.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-alpha.top_of_page"></a>alpha</span></h2> -<p>alpha — Adds an alpha channel to video - uniform or via chroma-keying</p> +<p>alpha</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -153,7 +153,7 @@ a snow video stream.</p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.7.7.5.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.7.7.6.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -181,7 +181,7 @@ Jan Schmidt <thaytan@noraisin.net></td> </div> <hr> <div class="refsect2"> -<a name="id-1.2.7.7.5.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.7.7.6.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -232,8 +232,6 @@ Jan Schmidt <thaytan@noraisin.net></td> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-alpha.functions_details"></a><h2>Functions</h2> @@ -244,8 +242,6 @@ Jan Schmidt <thaytan@noraisin.net></td> <div class="refsect2"> <a name="GstAlpha-struct"></a><h3>struct GstAlpha</h3> <pre class="programlisting">struct GstAlpha;</pre> -<p> -</p> </div> <hr> <div class="refsect2"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-alphacolor.html b/docs/plugins/html/gst-plugins-good-plugins-alphacolor.html index 35917e2332536f2c275abdfa2c43a47cb58d9da4..4c6db646df2e5a876b859fd39a46850a0cb9fd74 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-alphacolor.html +++ b/docs/plugins/html/gst-plugins-good-plugins-alphacolor.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-alphacolor.top_of_page"></a>alphacolor</span></h2> -<p>alphacolor — ARGB from/to AYUV colorspace conversion preserving the alpha channel</p> +<p>alphacolor</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -75,10 +75,11 @@ alpha channel.</p> </table> </div> +<p></p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.8.6.5.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.8.6.6.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -104,7 +105,7 @@ alpha channel.</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.8.6.5.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.8.6.6.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -155,8 +156,6 @@ alpha channel.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-alphacolor.functions_details"></a><h2>Functions</h2> @@ -167,8 +166,6 @@ alpha channel.</p> <div class="refsect2"> <a name="GstAlphaColor-struct"></a><h3>struct GstAlphaColor</h3> <pre class="programlisting">struct GstAlphaColor;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-amrparse.html b/docs/plugins/html/gst-plugins-good-plugins-amrparse.html index 31ca2da4b4a3af37620c972f004009b2071d3895..1fa19d4174b29c54bd137244836abe9f31431b81 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-amrparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-amrparse.html @@ -161,8 +161,6 @@ formats.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-amrparse.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-apedemux.html b/docs/plugins/html/gst-plugins-good-plugins-apedemux.html index 85cf11a09fde0ff7fac1dc99ff541e80f747a58b..db77d889de352873dacdcccccbedeaae221cb2b8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-apedemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-apedemux.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-apedemux.top_of_page"></a>apedemux</span></h2> -<p>apedemux — Read and output APE tags while demuxing the contents</p> +<p>apedemux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -163,8 +163,6 @@ the appropriate mime type set on buffers produced from apedemux. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-apedemux.functions_details"></a><h2>Functions</h2> @@ -175,8 +173,6 @@ the appropriate mime type set on buffers produced from apedemux. <div class="refsect2"> <a name="GstApeDemux-struct"></a><h3>struct GstApeDemux</h3> <pre class="programlisting">struct GstApeDemux;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-apev2mux.html b/docs/plugins/html/gst-plugins-good-plugins-apev2mux.html index f14f7395a537963b0a7acfd54aedfbba716723e5..bd5dc103ca4b2083be3dd689449b781bce232e8f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-apev2mux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-apev2mux.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-apev2mux.top_of_page"></a>apev2mux</span></h2> -<p>apev2mux — Adds an APEv2 header to the beginning of files using taglib</p> +<p>apev2mux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -144,8 +144,6 @@ GstApev2Mux implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-apev2mux.functions_details"></a><h2>Functions</h2> @@ -156,8 +154,6 @@ GstApev2Mux implements <div class="refsect2"> <a name="GstApev2Mux-struct"></a><h3>struct GstApev2Mux</h3> <pre class="programlisting">struct GstApev2Mux;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-aspectratiocrop.html b/docs/plugins/html/gst-plugins-good-plugins-aspectratiocrop.html index 1446af5a04491f1325a399fc83edc2f028652f64..b6c9d968b1a127338fd7a14cd9478030af58711f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-aspectratiocrop.html +++ b/docs/plugins/html/gst-plugins-good-plugins-aspectratiocrop.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-aspectratiocrop.top_of_page"></a>aspectratiocrop</span></h2> -<p>aspectratiocrop — Crops video into a user-defined aspect-ratio</p> +<p>aspectratiocrop</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -177,8 +177,6 @@ in pass-through mode.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-aspectratiocrop.functions_details"></a><h2>Functions</h2> @@ -189,8 +187,6 @@ in pass-through mode.</p> <div class="refsect2"> <a name="GstAspectRatioCrop-struct"></a><h3>struct GstAspectRatioCrop</h3> <pre class="programlisting">struct GstAspectRatioCrop;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audioamplify.html b/docs/plugins/html/gst-plugins-good-plugins-audioamplify.html index 4ce0d7e5f92a0c08e5d77eb4188e1c3cb7e6c80e..d56b6c7348c62cff3a8f7e7f69aec65ccf080c7a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audioamplify.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audioamplify.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audioamplify.top_of_page"></a>audioamplify</span></h2> -<p>audioamplify — Amplifies an audio stream by a given factor</p> +<p>audioamplify</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -181,8 +181,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audioamplify.functions_details"></a><h2>Functions</h2> @@ -193,8 +191,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsect2"> <a name="GstAudioAmplify-struct"></a><h3>struct GstAudioAmplify</h3> <pre class="programlisting">struct GstAudioAmplify;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiochebband.html b/docs/plugins/html/gst-plugins-good-plugins-audiochebband.html index f577e0a2c3c7bd95ebd0cba62eecc68f09b7757e..834cfda6d41d4862286be7f575f5f93ac39535f9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiochebband.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiochebband.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audiochebband.top_of_page"></a>audiochebband</span></h2> -<p>audiochebband — Chebyshev band pass and band reject filter</p> +<p>audiochebband</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -215,8 +215,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audiochebband.functions_details"></a><h2>Functions</h2> @@ -227,8 +225,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsect2"> <a name="GstAudioChebBand-struct"></a><h3>struct GstAudioChebBand</h3> <pre class="programlisting">struct GstAudioChebBand;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiocheblimit.html b/docs/plugins/html/gst-plugins-good-plugins-audiocheblimit.html index eb9260467c3cb9a5deb1d8e9f39709707865289c..86ffd5f6f0d086bff592c808aa997270f010bb71 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiocheblimit.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiocheblimit.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audiocheblimit.top_of_page"></a>audiocheblimit</span></h2> -<p>audiocheblimit — Chebyshev low pass and high pass filter</p> +<p>audiocheblimit</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -210,8 +210,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audiocheblimit.functions_details"></a><h2>Functions</h2> @@ -222,8 +220,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsect2"> <a name="GstAudioChebLimit-struct"></a><h3>struct GstAudioChebLimit</h3> <pre class="programlisting">struct GstAudioChebLimit;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiodynamic.html b/docs/plugins/html/gst-plugins-good-plugins-audiodynamic.html index ca66e803b8b2b41628b0a008eb12b2e3c65dc2f9..9adb1e599bb71de7263e39b8f56f94170dcef4e6 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiodynamic.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiodynamic.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audiodynamic.top_of_page"></a>audiodynamic</span></h2> -<p>audiodynamic — Compressor and Expander</p> +<p>audiodynamic</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -193,8 +193,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audiodynamic.functions_details"></a><h2>Functions</h2> @@ -205,8 +203,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsect2"> <a name="GstAudioDynamic-struct"></a><h3>struct GstAudioDynamic</h3> <pre class="programlisting">struct GstAudioDynamic;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audioecho.html b/docs/plugins/html/gst-plugins-good-plugins-audioecho.html index e9d55c242ccaa5c573b9c529d37c84dea68264b9..ecf5af412a554871ed48ae9a4f20a63b48776855 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audioecho.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audioecho.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audioecho.top_of_page"></a>audioecho</span></h2> -<p>audioecho — Adds an echo or reverb effect to an audio stream</p> +<p>audioecho</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -195,8 +195,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audioecho.functions_details"></a><h2>Functions</h2> @@ -207,8 +205,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsect2"> <a name="GstAudioEcho-struct"></a><h3>struct GstAudioEcho</h3> <pre class="programlisting">struct GstAudioEcho;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiofirfilter.html b/docs/plugins/html/gst-plugins-good-plugins-audiofirfilter.html index 231b2f7b0abd4b0faf0ce0fd25105f2f823a08d0..e0c63280dc1293bd4c33ed47b0f181caca4cc56b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiofirfilter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiofirfilter.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audiofirfilter.top_of_page"></a>audiofirfilter</span></h2> -<p>audiofirfilter — Generic audio FIR filter with custom filter kernel</p> +<p>audiofirfilter</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -68,7 +68,7 @@ <tbody><tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-audiofirfilter.html#GstAudioFIRFilter-rate-changed" title="The “rate-changed†signal">rate-changed</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr></tbody> </table></div> </div> @@ -533,8 +533,6 @@ gint </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audiofirfilter.functions_details"></a><h2>Functions</h2> @@ -603,7 +601,7 @@ stop until the event is handled.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audioiirfilter.html b/docs/plugins/html/gst-plugins-good-plugins-audioiirfilter.html index de478c0b8b37b4e80ab204767169fbcdaec58ae4..23053dcb617bca54dd00c171dbf26be83ef9e03c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audioiirfilter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audioiirfilter.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audioiirfilter.top_of_page"></a>audioiirfilter</span></h2> -<p>audioiirfilter — Generic audio IIR filter with custom filter kernel</p> +<p>audioiirfilter</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -69,7 +69,7 @@ <tbody><tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-audioiirfilter.html#GstAudioIIRFilter-rate-changed" title="The “rate-changed†signal">rate-changed</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr></tbody> </table></div> </div> @@ -482,8 +482,6 @@ gint </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audioiirfilter.functions_details"></a><h2>Functions</h2> @@ -551,7 +549,7 @@ stop until the event is handled.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audioinvert.html b/docs/plugins/html/gst-plugins-good-plugins-audioinvert.html index a0aef06d21b1711911d3b91c6dd1da0160246e8f..9b880a943a173a324b11e1eff460c2f9ff013ef8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audioinvert.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audioinvert.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audioinvert.top_of_page"></a>audioinvert</span></h2> -<p>audioinvert — Swaps upper and lower half of audio samples</p> +<p>audioinvert</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -175,8 +175,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audioinvert.functions_details"></a><h2>Functions</h2> @@ -187,8 +185,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsect2"> <a name="GstAudioInvert-struct"></a><h3>struct GstAudioInvert</h3> <pre class="programlisting">struct GstAudioInvert;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiokaraoke.html b/docs/plugins/html/gst-plugins-good-plugins-audiokaraoke.html index c80ee11f83583cc82521831f997fb0a2355717cc..70482bba4696a6fc00613a4e74c5c9eac6f8b604 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiokaraoke.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiokaraoke.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audiokaraoke.top_of_page"></a>audiokaraoke</span></h2> -<p>audiokaraoke — Removes voice from sound</p> +<p>audiokaraoke</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -187,8 +187,6 @@ This plugin is useful for karaoke applications.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audiokaraoke.functions_details"></a><h2>Functions</h2> @@ -199,8 +197,6 @@ This plugin is useful for karaoke applications.</p> <div class="refsect2"> <a name="GstAudioKaraoke-struct"></a><h3>struct GstAudioKaraoke</h3> <pre class="programlisting">struct GstAudioKaraoke;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiopanorama.html b/docs/plugins/html/gst-plugins-good-plugins-audiopanorama.html index 708f3b57562f2112f1a932bd51361e07c57a65d0..55c867dbf12e345af02e597a3b140bddb38a3e21 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiopanorama.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiopanorama.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audiopanorama.top_of_page"></a>audiopanorama</span></h2> -<p>audiopanorama — Positions audio streams in the stereo panorama</p> +<p>audiopanorama</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -182,8 +182,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audiopanorama.functions_details"></a><h2>Functions</h2> @@ -194,8 +192,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsect2"> <a name="GstAudioPanorama-struct"></a><h3>struct GstAudioPanorama</h3> <pre class="programlisting">struct GstAudioPanorama;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiowsincband.html b/docs/plugins/html/gst-plugins-good-plugins-audiowsincband.html index 3537592ee413b22c31cd51d94bf4b2e3327db80a..1710c0c7aa73d5b2a11b0142863ee9c7ae76d2c1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiowsincband.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiowsincband.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audiowsincband.top_of_page"></a>audiowsincband</span></h2> -<p>audiowsincband — Band pass and band reject windowed sinc filter</p> +<p>audiowsincband</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -202,8 +202,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audiowsincband.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-audiowsinclimit.html b/docs/plugins/html/gst-plugins-good-plugins-audiowsinclimit.html index f5802239c8bc3cce817573acba5a561a184007fe..2abd6646fdb983c9ade7bb50a7a40c3074d95a43 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-audiowsinclimit.html +++ b/docs/plugins/html/gst-plugins-good-plugins-audiowsinclimit.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audiowsinclimit.top_of_page"></a>audiowsinclimit</span></h2> -<p>audiowsinclimit — Low pass and high pass windowed sinc filter</p> +<p>audiowsinclimit</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -202,8 +202,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-audiowsinclimit.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-auparse.html b/docs/plugins/html/gst-plugins-good-plugins-auparse.html index d84ec479583eb6b695f8d9a359ccfc044745f4f3..e976a71aa8335618a713e377224228d858cabebf 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-auparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-auparse.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-auparse.top_of_page"></a>auparse</span></h2> -<p>auparse — Parse an .au file into raw audio</p> +<p>auparse</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -60,7 +60,7 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.27.6.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.27.6.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -86,7 +86,7 @@ </div> <hr> <div class="refsect2"> -<a name="id-1.2.27.6.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.27.6.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -153,8 +153,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-auparse.functions_details"></a><h2>Functions</h2> @@ -165,8 +163,6 @@ <div class="refsect2"> <a name="GstAuParse-struct"></a><h3>struct GstAuParse</h3> <pre class="programlisting">struct GstAuParse;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-autoaudiosink.html b/docs/plugins/html/gst-plugins-good-plugins-autoaudiosink.html index 190daa2b4899a8894108831246ce10eba0faf398..668cfe9b4e584a7d3a29d087458c58f2cc65295e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-autoaudiosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-autoaudiosink.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-autoaudiosink.top_of_page"></a>autoaudiosink</span></h2> -<p>autoaudiosink — Wrapper audio sink for automatically detected audio sink</p> +<p>autoaudiosink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -168,8 +168,6 @@ of their element information, and also have a non-zero autoplugging rank.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-autoaudiosink.functions_details"></a><h2>Functions</h2> @@ -180,8 +178,6 @@ of their element information, and also have a non-zero autoplugging rank.</p> <div class="refsect2"> <a name="GstAutoAudioSink-struct"></a><h3>GstAutoAudioSink</h3> <pre class="programlisting">typedef struct _GstAutoAudioSink GstAutoAudioSink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-autoaudiosrc.html b/docs/plugins/html/gst-plugins-good-plugins-autoaudiosrc.html index d385d5568c11e74c09d81e40144447d0e1ef63c4..17b517452d97cfff2b1cbf7c7bba1b1ace99d7b3 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-autoaudiosrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-autoaudiosrc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-autoaudiosrc.top_of_page"></a>autoaudiosrc</span></h2> -<p>autoaudiosrc — Wrapper audio source for automatically detected audio source</p> +<p>autoaudiosrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -156,8 +156,6 @@ of their element information, and also have a non-zero autoplugging rank.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-autoaudiosrc.functions_details"></a><h2>Functions</h2> @@ -168,8 +166,6 @@ of their element information, and also have a non-zero autoplugging rank.</p> <div class="refsect2"> <a name="GstAutoAudioSrc-struct"></a><h3>GstAutoAudioSrc</h3> <pre class="programlisting">typedef struct _GstAutoAudioSrc GstAutoAudioSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-autovideosink.html b/docs/plugins/html/gst-plugins-good-plugins-autovideosink.html index ee252b48103ded2f23eef30c942c7e756028bcc2..c63f11f0826d59c605451a9100f92e808b4ac593 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-autovideosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-autovideosink.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-autovideosink.top_of_page"></a>autovideosink</span></h2> -<p>autovideosink — Wrapper video sink for automatically detected video sink</p> +<p>autovideosink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -168,8 +168,6 @@ of their element information, and also have a non-zero autoplugging rank.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-autovideosink.functions_details"></a><h2>Functions</h2> @@ -180,8 +178,6 @@ of their element information, and also have a non-zero autoplugging rank.</p> <div class="refsect2"> <a name="GstAutoVideoSink-struct"></a><h3>GstAutoVideoSink</h3> <pre class="programlisting">typedef struct _GstAutoVideoSink GstAutoVideoSink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-autovideosrc.html b/docs/plugins/html/gst-plugins-good-plugins-autovideosrc.html index 8a78952c8cbf75929c63ea075fb930af3eada1b7..c6fd46f29fe0e07318e5d597e6d9e920288d66ca 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-autovideosrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-autovideosrc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-autovideosrc.top_of_page"></a>autovideosrc</span></h2> -<p>autovideosrc — Wrapper video source for automatically detected video source</p> +<p>autovideosrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -156,8 +156,6 @@ of their element information, and also have a non-zero autoplugging rank.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-autovideosrc.functions_details"></a><h2>Functions</h2> @@ -168,8 +166,6 @@ of their element information, and also have a non-zero autoplugging rank.</p> <div class="refsect2"> <a name="GstAutoVideoSrc-struct"></a><h3>GstAutoVideoSrc</h3> <pre class="programlisting">typedef struct _GstAutoVideoSrc GstAutoVideoSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-avidemux.html b/docs/plugins/html/gst-plugins-good-plugins-avidemux.html index a509211de5e93a9413150ca9bb4fa31d48e417ca..46c94cab083b908c85410b3d245ca8ff2bf63923 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-avidemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-avidemux.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-avidemux.top_of_page"></a>avidemux</span></h2> -<p>avidemux — Demultiplex an avi file into audio and video</p> +<p>avidemux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -664,8 +664,6 @@ right decoder elements/plugins installed. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-avidemux.functions_details"></a><h2>Functions</h2> @@ -676,8 +674,6 @@ right decoder elements/plugins installed. <div class="refsect2"> <a name="GstAviDemux-struct"></a><h3>GstAviDemux</h3> <pre class="programlisting">typedef struct _GstAviDemux GstAviDemux;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-avimux.html b/docs/plugins/html/gst-plugins-good-plugins-avimux.html index 9bef8a0bbeb54b5d1fbe63a9b47fdde2264abf04..9f32d78bc38b018d5ac1bfd84df101a0925a8e2b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-avimux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-avimux.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-avimux.top_of_page"></a>avimux</span></h2> -<p>avimux — Muxes audio and video into an avi stream</p> +<p>avimux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -302,8 +302,6 @@ only work if you have the necessary encoder elements installed of course. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-avimux.functions_details"></a><h2>Functions</h2> @@ -314,8 +312,6 @@ only work if you have the necessary encoder elements installed of course. <div class="refsect2"> <a name="GstAviMux-struct"></a><h3>struct GstAviMux</h3> <pre class="programlisting">struct GstAviMux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-avisubtitle.html b/docs/plugins/html/gst-plugins-good-plugins-avisubtitle.html index 175ddaa00b4e60716d747e34f0d9bbbbf309d298..44931f9a28a9e75537c3314ad807070361950903 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-avisubtitle.html +++ b/docs/plugins/html/gst-plugins-good-plugins-avisubtitle.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-avisubtitle.top_of_page"></a>avisubtitle</span></h2> -<p>avisubtitle — Parse avi subtitle stream</p> +<p>avisubtitle</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -150,8 +150,6 @@ This plays an avi file with a video and subtitle stream. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-avisubtitle.functions_details"></a><h2>Functions</h2> @@ -162,8 +160,6 @@ This plays an avi file with a video and subtitle stream. <div class="refsect2"> <a name="GstAviSubtitle-struct"></a><h3>struct GstAviSubtitle</h3> <pre class="programlisting">struct GstAviSubtitle;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-cacasink.html b/docs/plugins/html/gst-plugins-good-plugins-cacasink.html index 7b6bcff63e782a03556440ac96c35d151c0f45d4..d8c2ba0cc9ced27bbece44d780225a6e413e551a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-cacasink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-cacasink.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-cacasink.top_of_page"></a>cacasink</span></h2> -<p>cacasink — A colored ASCII art videosink</p> +<p>cacasink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -146,8 +146,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-cacasink.functions_details"></a><h2>Functions</h2> @@ -158,8 +156,6 @@ <div class="refsect2"> <a name="GstCACASink-struct"></a><h3>struct GstCACASink</h3> <pre class="programlisting">struct GstCACASink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-cairooverlay.html b/docs/plugins/html/gst-plugins-good-plugins-cairooverlay.html index ae0dd93b7d5f2415dbcfe1179c5e85787a50d21e..e628201204156c30ece9554ea778bc1b67ae539c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-cairooverlay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-cairooverlay.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-cairooverlay.top_of_page"></a>cairooverlay</span></h2> -<p>cairooverlay — Render overlay on a video stream using Cairo</p> +<p>cairooverlay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -161,8 +161,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-cairooverlay.functions_details"></a><h2>Functions</h2> @@ -173,8 +171,6 @@ <div class="refsect2"> <a name="GstCairoOverlay-struct"></a><h3>struct GstCairoOverlay</h3> <pre class="programlisting">struct GstCairoOverlay;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -185,30 +181,6 @@ user_function (<a class="link" href="gst-plugins-good-plugins-cairooverlay.html#GstCairoOverlay"><span class="type">GstCairoOverlay</span></a> *gstcairooverlay, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *arg1, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.36.10.2.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstcairooverlay</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> </div> <hr> <div class="refsect2"> @@ -219,30 +191,6 @@ user_function (<a class="link" href="gst-plugins-good-plugins-cairooverlay.html# <span class="type">guint64</span> arg2, <span class="type">guint64</span> arg3, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.36.10.3.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstcairooverlay</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-capssetter.html b/docs/plugins/html/gst-plugins-good-plugins-capssetter.html index 45133a73becb4edebe0cb565457b5a3019e534fe..a8d5a2c7e91ae7dea33bbaf0ff5b78c77a2f421f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-capssetter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-capssetter.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-capssetter.top_of_page"></a>capssetter</span></h2> -<p>capssetter — Set/merge caps on stream</p> +<p>capssetter</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -104,7 +104,7 @@ alike.</p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.37.7.5.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.37.7.6.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -130,7 +130,7 @@ alike.</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.37.7.5.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.37.7.6.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -181,8 +181,6 @@ alike.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-capssetter.functions_details"></a><h2>Functions</h2> @@ -193,8 +191,6 @@ alike.</p> <div class="refsect2"> <a name="GstCapsSetter-struct"></a><h3>struct GstCapsSetter</h3> <pre class="programlisting">struct GstCapsSetter;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-cutter.html b/docs/plugins/html/gst-plugins-good-plugins-cutter.html index 963578c3c45debed11e036e650f4dd209491d3fa..e45780cab20ca1d755e6a34628382fb3c7ec4a14 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-cutter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-cutter.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-cutter.top_of_page"></a>cutter</span></h2> -<p>cutter — Audio Cutter to split audio into non-silent bits</p> +<p>cutter</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -204,8 +204,6 @@ silence is signalled by bus messages named</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-cutter.functions_details"></a><h2>Functions</h2> @@ -216,8 +214,6 @@ silence is signalled by bus messages named</p> <div class="refsect2"> <a name="GstCutter-struct"></a><h3>struct GstCutter</h3> <pre class="programlisting">struct GstCutter;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html b/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html index e8b57485ff25ca372680e42ee2442ac446c8ef28..83117bf61c6f17646de7b28693292b8fb63b658a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dcaparse.html @@ -156,8 +156,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-dcaparse.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html b/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html index ab666c916d0ec3cffd65a8c1d587a69fdd8ef49f..e857d1a4386884f5ba948c97474e279cd9d5dabf 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html +++ b/docs/plugins/html/gst-plugins-good-plugins-deinterlace.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-deinterlace.top_of_page"></a>deinterlace</span></h2> -<p>deinterlace — Deinterlace Methods ported from DScaler/TvTime</p> +<p>deinterlace</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -215,8 +215,6 @@ For this different algorithms can be selected which will be described later.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-deinterlace.functions_details"></a><h2>Functions</h2> @@ -227,8 +225,6 @@ For this different algorithms can be selected which will be described later.</p> <div class="refsect2"> <a name="GstDeinterlace-struct"></a><h3>struct GstDeinterlace</h3> <pre class="programlisting">struct GstDeinterlace;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-deinterleave.html b/docs/plugins/html/gst-plugins-good-plugins-deinterleave.html index 7f6106dd66012372ec658ba7df3d5cfec8baa984..6169b2753523335dccc711978f7335fcfa291d84 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-deinterleave.html +++ b/docs/plugins/html/gst-plugins-good-plugins-deinterleave.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-deinterleave.top_of_page"></a>deinterleave</span></h2> -<p>deinterleave — Splits one interleaved multichannel audio stream into many mono audio streams</p> +<p>deinterleave</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -187,8 +187,6 @@ channels exchanged. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-deinterleave.functions_details"></a><h2>Functions</h2> @@ -199,8 +197,6 @@ channels exchanged. <div class="refsect2"> <a name="GstDeinterleave-struct"></a><h3>struct GstDeinterleave</h3> <pre class="programlisting">struct GstDeinterleave;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-dicetv.html b/docs/plugins/html/gst-plugins-good-plugins-dicetv.html index 63d70ce3ecbc5512969a6a5f8bee703b6af528e7..cbaf6f32215e1afa3134739a2830ecc4a28e20b9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dicetv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dicetv.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-dicetv.top_of_page"></a>dicetv</span></h2> -<p>dicetv — 'Dices' the screen up into many small squares</p> +<p>dicetv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -60,7 +60,7 @@ <tbody><tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-dicetv.html#GstDiceTV-reset" title="The “reset†signal">reset</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr></tbody> </table></div> </div> @@ -190,8 +190,6 @@ consistent between each frame.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-dicetv.functions_details"></a><h2>Functions</h2> @@ -202,8 +200,6 @@ consistent between each frame.</p> <div class="refsect2"> <a name="GstDiceTV-struct"></a><h3>struct GstDiceTV</h3> <pre class="programlisting">struct GstDiceTV;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -224,31 +220,7 @@ consistent between each frame.</p> <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-dicetv.html#GstDiceTV"><span class="type">GstDiceTV</span></a> *gstdicetv, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.42.12.2.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstdicetv</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-directsoundsink.html b/docs/plugins/html/gst-plugins-good-plugins-directsoundsink.html index 885c496f9cfb91bb57dc2f08d34eeea6ed43fb8a..bba5f413f274dccaacb8e5eba3972c9dec29478e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-directsoundsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-directsoundsink.html @@ -27,7 +27,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-directsoundsink.top_of_page"></a>directsoundsink</span></h2> -<p>directsoundsink — DirectSound audio sink</p> +<p>directsoundsink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -78,8 +78,6 @@ <a name="id-1.2.43.4.2.2"></a><h3>Element Pads</h3> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-directsoundsink.functions_details"></a><h2>Functions</h2> @@ -120,8 +118,6 @@ GstAudioRingBufferFormatType type; }; </pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-dtmfsrc.html b/docs/plugins/html/gst-plugins-good-plugins-dtmfsrc.html index a83c44f1197e341a14f914444964083c6d11210b..624d8bc1ecb5cdeb2127e6180dc80d8405a1b256 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dtmfsrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dtmfsrc.html @@ -29,7 +29,7 @@ <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> +<p>dtmfsrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -157,7 +157,7 @@ READY state, then a "dtmf-event-dropped" message is posted on the <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.44.7.6.4.1"></a><h3>Element Information</h3> +<a name="id-1.2.44.7.7.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -183,7 +183,7 @@ READY state, then a "dtmf-event-dropped" message is posted on the </div> <hr> <div class="refsect2"> -<a name="id-1.2.44.7.6.4.2"></a><h3>Element Pads</h3> +<a name="id-1.2.44.7.7.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -210,8 +210,6 @@ READY state, then a "dtmf-event-dropped" message is posted on the </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-dtmfsrc.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-dv1394src.html b/docs/plugins/html/gst-plugins-good-plugins-dv1394src.html index 927da93119e5892118a8626bae47f1a6cab4fe28..3a048d3475f403310a8970c8ea09a9ceb1779fec 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dv1394src.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dv1394src.html @@ -31,7 +31,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-dv1394src.top_of_page"></a>dv1394src</span></h2> -<p>dv1394src — Source for DV video data from firewire port</p> +<p>dv1394src</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -99,7 +99,7 @@ <tbody><tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-dv1394src.html#GstDV1394Src-frame-dropped" title="The “frame-dropped†signal">frame-dropped</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr></tbody> </table></div> </div> @@ -191,8 +191,6 @@ GstDV1394Src implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-dv1394src.functions_details"></a><h2>Functions</h2> @@ -203,8 +201,6 @@ GstDV1394Src implements <div class="refsect2"> <a name="GstDV1394Src-struct"></a><h3>struct GstDV1394Src</h3> <pre class="programlisting">struct GstDV1394Src;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -284,31 +280,7 @@ GstDV1394Src implements <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-dv1394src.html#GstDV1394Src"><span class="type">GstDV1394Src</span></a> *gstdv1394src, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.45.13.2.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstdv1394src</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-dvdec.html b/docs/plugins/html/gst-plugins-good-plugins-dvdec.html index 8694459baf78f8cb5e2487b1ee3173e4a4d3955d..f8a11f766c84e4475aafeebf2c872e97d972c5e5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dvdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dvdec.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-dvdec.top_of_page"></a>dvdec</span></h2> -<p>dvdec — Uses libdv to decode DV video (smpte314) (libdv.sourceforge.net)</p> +<p>dvdec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -169,8 +169,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-dvdec.functions_details"></a><h2>Functions</h2> @@ -181,8 +179,6 @@ <div class="refsect2"> <a name="GstDVDec-struct"></a><h3>struct GstDVDec</h3> <pre class="programlisting">struct GstDVDec;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-dvdemux.html b/docs/plugins/html/gst-plugins-good-plugins-dvdemux.html index c5f96e2985a9aa6d73b7cbd01c9ad391412d957d..254c8d3d545326802a2eb0bc4a5b569e00f610a2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-dvdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-dvdemux.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-dvdemux.top_of_page"></a>dvdemux</span></h2> -<p>dvdemux — Uses libdv to separate DV audio from DV video (libdv.sourceforge.net)</p> +<p>dvdemux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -160,8 +160,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-dvdemux.functions_details"></a><h2>Functions</h2> @@ -172,8 +170,6 @@ <div class="refsect2"> <a name="GstDVDemux-struct"></a><h3>struct GstDVDemux</h3> <pre class="programlisting">struct GstDVDemux;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-edgetv.html b/docs/plugins/html/gst-plugins-good-plugins-edgetv.html index b221a3c7d045283d9993fbb0224752044d808328..697626f9b4b9e109346c2c0faa75e8dee50aab3c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-edgetv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-edgetv.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-edgetv.top_of_page"></a>edgetv</span></h2> -<p>edgetv — Apply edge detect on video</p> +<p>edgetv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -154,8 +154,6 @@ computer way.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-edgetv.functions_details"></a><h2>Functions</h2> @@ -166,8 +164,6 @@ computer way.</p> <div class="refsect2"> <a name="GstEdgeTV-struct"></a><h3>struct GstEdgeTV</h3> <pre class="programlisting">struct GstEdgeTV;</pre> -<p> -</p> </div> </div> </div> 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 b4013538117e072821d1e558ba2b74ab428443d1..7f79f3fce59c4cfeff11a853e57927c10545fec0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-equalizer-10bands.html +++ b/docs/plugins/html/gst-plugins-good-plugins-equalizer-10bands.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-equalizer-10bands.top_of_page"></a>equalizer-10bands</span></h2> -<p>equalizer-10bands — Direct Form 10 band IIR equalizer</p> +<p>equalizer-10bands</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -225,8 +225,6 @@ frequency bands between 30 Hz and 15 kHz.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-equalizer-10bands.functions_details"></a><h2>Functions</h2> @@ -237,8 +235,6 @@ frequency bands between 30 Hz and 15 kHz.</p> <div class="refsect2"> <a name="GstIirEqualizer10Bands-struct"></a><h3>struct GstIirEqualizer10Bands</h3> <pre class="programlisting">struct GstIirEqualizer10Bands;</pre> -<p> -</p> </div> </div> <div class="refsect1"> 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 76bb1022c8343da9dc157a5daf07c39321a0ef36..8b5e6eb27129294ccfe9a9b201c86202056f529b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-equalizer-3bands.html +++ b/docs/plugins/html/gst-plugins-good-plugins-equalizer-3bands.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-equalizer-3bands.top_of_page"></a>equalizer-3bands</span></h2> -<p>equalizer-3bands — Direct Form 3 band IIR equalizer</p> +<p>equalizer-3bands</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -190,8 +190,6 @@ medium frequency and high frequency band.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-equalizer-3bands.functions_details"></a><h2>Functions</h2> @@ -202,8 +200,6 @@ medium frequency and high frequency band.</p> <div class="refsect2"> <a name="GstIirEqualizer3Bands-struct"></a><h3>struct GstIirEqualizer3Bands</h3> <pre class="programlisting">struct GstIirEqualizer3Bands;</pre> -<p> -</p> </div> </div> <div class="refsect1"> 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 7592a6b9060907bb1bfe22799cb48b076482d6ff..fb5ce41ed955c0bed31f0ebc690122a665df0605 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-equalizer-nbands.html +++ b/docs/plugins/html/gst-plugins-good-plugins-equalizer-nbands.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-equalizer-nbands.top_of_page"></a>equalizer-nbands</span></h2> -<p>equalizer-nbands — Direct Form IIR equalizer</p> +<p>equalizer-nbands</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -268,8 +268,6 @@ the center frequency, band width and gain.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-equalizer-nbands.functions_details"></a><h2>Functions</h2> @@ -280,8 +278,6 @@ the center frequency, band width and gain.</p> <div class="refsect2"> <a name="GstIirEqualizerNBands-struct"></a><h3>struct GstIirEqualizerNBands</h3> <pre class="programlisting">struct GstIirEqualizerNBands;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-flacdec.html b/docs/plugins/html/gst-plugins-good-plugins-flacdec.html index 86d490bfd8cb0cb6e96541f9710c5b5d9637819a..4eb8af165bc99a53aaac1c07b64c230c67dad794 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flacdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flacdec.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-flacdec.top_of_page"></a>flacdec</span></h2> -<p>flacdec — Decodes FLAC lossless audio streams</p> +<p>flacdec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -137,8 +137,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-flacdec.functions_details"></a><h2>Functions</h2> @@ -149,8 +147,6 @@ <div class="refsect2"> <a name="GstFlacDec-struct"></a><h3>struct GstFlacDec</h3> <pre class="programlisting">struct GstFlacDec;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-flacenc.html b/docs/plugins/html/gst-plugins-good-plugins-flacenc.html index 979ed591acd90d4d6950330686800350456cf308..ad4c889f5eed68b3880446905e3c9a3bbf294b92 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flacenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flacenc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-flacenc.top_of_page"></a>flacenc</span></h2> -<p>flacenc — Encodes audio with the FLAC lossless audio encoder</p> +<p>flacenc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -232,8 +232,6 @@ GstFlacEnc implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-flacenc.functions_details"></a><h2>Functions</h2> @@ -244,8 +242,6 @@ GstFlacEnc implements <div class="refsect2"> <a name="GstFlacEnc-struct"></a><h3>struct GstFlacEnc</h3> <pre class="programlisting">struct GstFlacEnc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-flacparse.html b/docs/plugins/html/gst-plugins-good-plugins-flacparse.html index 7bb748585d0da485ab9199b5c7d3a22775294f2b..da59e286f42a3abb46f127272d71c5a527e230ee 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flacparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flacparse.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-flacparse.top_of_page"></a>flacparse</span></h2> -<p>flacparse — Parses audio with the FLAC lossless audio codec</p> +<p>flacparse</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -181,8 +181,6 @@ buffer has the timestamp, duration, offset, and offset_end set. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-flacparse.functions_details"></a><h2>Functions</h2> @@ -193,8 +191,6 @@ buffer has the timestamp, duration, offset, and offset_end set. <div class="refsect2"> <a name="GstFlacParse-struct"></a><h3>struct GstFlacParse</h3> <pre class="programlisting">struct GstFlacParse;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-flactag.html b/docs/plugins/html/gst-plugins-good-plugins-flactag.html index e1e041590cdceeed5985b9f17c9c2bc8a364c385..191f47a8c0730ae91d46c254f371c3c736ec84af 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flactag.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flactag.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-flactag.top_of_page"></a>flactag</span></h2> -<p>flactag — Rewrite tags in a FLAC file</p> +<p>flactag</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -143,8 +143,6 @@ GstFlacTag implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-flactag.functions_details"></a><h2>Functions</h2> @@ -155,8 +153,6 @@ GstFlacTag implements <div class="refsect2"> <a name="GstFlacTag-struct"></a><h3>struct GstFlacTag</h3> <pre class="programlisting">struct GstFlacTag;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html b/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html index 9e7c88a91ab32339de52243bf5175efd38bd1a79..a9ed63e5cd3c9eced7d7a8a1a878288a51777d1e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flvdemux.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-flvdemux.top_of_page"></a>flvdemux</span></h2> -<p>flvdemux — Demux FLV feeds into digital streams</p> +<p>flvdemux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -219,8 +219,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-flvdemux.functions_details"></a><h2>Functions</h2> @@ -231,8 +229,6 @@ <div class="refsect2"> <a name="GstFlvDemux-struct"></a><h3>struct GstFlvDemux</h3> <pre class="programlisting">struct GstFlvDemux;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-flvmux.html b/docs/plugins/html/gst-plugins-good-plugins-flvmux.html index b2f990841bda5868aa7365cd82369024955ff5b3..8125ac638e52d9c3ea9fd628dc945c9ca80cfa41 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flvmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flvmux.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-flvmux.top_of_page"></a>flvmux</span></h2> -<p>flvmux — Muxes video/audio streams into a FLV stream</p> +<p>flvmux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -249,8 +249,6 @@ GstFlvMux implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-flvmux.functions_details"></a><h2>Functions</h2> @@ -261,8 +259,6 @@ GstFlvMux implements <div class="refsect2"> <a name="GstFlvMux-struct"></a><h3>GstFlvMux</h3> <pre class="programlisting">typedef struct _GstFlvMux GstFlvMux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-flxdec.html b/docs/plugins/html/gst-plugins-good-plugins-flxdec.html index 6514f1d6e8d517f1546d925c42a280f699b4140d..cc00e79fa61f51c734dd6728b9590bf620f2196f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-flxdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-flxdec.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-flxdec.top_of_page"></a>flxdec</span></h2> -<p>flxdec — FLC/FLI/FLX video decoder</p> +<p>flxdec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -60,7 +60,7 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.58.6.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.58.6.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -86,7 +86,7 @@ </div> <hr> <div class="refsect2"> -<a name="id-1.2.58.6.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.58.6.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -137,8 +137,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-flxdec.functions_details"></a><h2>Functions</h2> @@ -149,8 +147,6 @@ <div class="refsect2"> <a name="GstFlxDec-struct"></a><h3>struct GstFlxDec</h3> <pre class="programlisting">struct GstFlxDec;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-gamma.html b/docs/plugins/html/gst-plugins-good-plugins-gamma.html index 3b0fa6045fb26d027a5553d7c9a7681ae1c29099..5c08a9e3fcc9aaa55ed3e7a96a178e033e0f08ee 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-gamma.html +++ b/docs/plugins/html/gst-plugins-good-plugins-gamma.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-gamma.top_of_page"></a>gamma</span></h2> -<p>gamma — Adjusts gamma on a video stream</p> +<p>gamma</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -180,8 +180,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-gamma.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufsink.html b/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufsink.html index e0a5a399d8956699e1d5ccdfd7445f6845c72c76..e507514cd60ab73547ff0c13d14f7b8c6e72ebb3 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-gdkpixbufsink.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-gdkpixbufsink.top_of_page"></a>gdkpixbufsink</span></h2> -<p>gdkpixbufsink — Output images as GdkPixbuf objects in bus messages</p> +<p>gdkpixbufsink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -147,8 +147,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-gdkpixbufsink.functions_details"></a><h2>Functions</h2> @@ -159,8 +157,6 @@ <div class="refsect2"> <a name="GstGdkPixbufSink-struct"></a><h3>struct GstGdkPixbufSink</h3> <pre class="programlisting">struct GstGdkPixbufSink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-goom.html b/docs/plugins/html/gst-plugins-good-plugins-goom.html index 57fcdd93934fde1e612c05b39077cf1923ea0573..eba9d002711c946f3611908a8787ce52e8cdf35a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-goom.html +++ b/docs/plugins/html/gst-plugins-good-plugins-goom.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-goom.top_of_page"></a>goom</span></h2> -<p>goom — Takes frames of data and outputs video frames using the GOOM filter</p> +<p>goom</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -51,7 +51,7 @@ <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> - <span class="lineart">╰──</span> GstAudioVisualizer-ExtGom + <span class="lineart">╰──</span> GstAudioVisualizer-ExtGoom <span class="lineart">╰──</span> GstGoom </pre> </div> @@ -157,8 +157,6 @@ based on the incoming audio signal.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-goom.functions_details"></a><h2>Functions</h2> @@ -169,8 +167,6 @@ based on the incoming audio signal.</p> <div class="refsect2"> <a name="GstGoom-struct"></a><h3>struct GstGoom</h3> <pre class="programlisting">struct GstGoom;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-goom2k1.html b/docs/plugins/html/gst-plugins-good-plugins-goom2k1.html index 02efc0f99114020325257945ecbbbc31a68f9d40..c0fd2359866f0a725367f8125a7dcfe212d683ea 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-goom2k1.html +++ b/docs/plugins/html/gst-plugins-good-plugins-goom2k1.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-goom2k1.top_of_page"></a>goom2k1</span></h2> -<p>goom2k1 — Takes frames of data and outputs video frames using the GOOM 2k1 filter</p> +<p>goom2k1</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -51,7 +51,7 @@ <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> - <span class="lineart">╰──</span> GstAudioVisualizer-ExtGom + <span class="lineart">╰──</span> GstAudioVisualizer-ExtGoom <span class="lineart">╰──</span> GstGoom </pre> </div> @@ -158,8 +158,6 @@ visualisation. Also available is goom2k4, with a different look.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-goom2k1.functions_details"></a><h2>Functions</h2> @@ -170,8 +168,6 @@ visualisation. Also available is goom2k4, with a different look.</p> <div class="refsect2"> <a name="GstGoom-struct"></a><h3>struct GstGoom</h3> <pre class="programlisting">struct GstGoom;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-hdv1394src.html b/docs/plugins/html/gst-plugins-good-plugins-hdv1394src.html index b7e3c4a74f12ea101bf72e52874afa2851e3125e..da7ece07196cfa7dbb1eda34e67e8aefed16a668 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-hdv1394src.html +++ b/docs/plugins/html/gst-plugins-good-plugins-hdv1394src.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-hdv1394src.top_of_page"></a>hdv1394src</span></h2> -<p>hdv1394src — Source for MPEG-TS video data from firewire port</p> +<p>hdv1394src</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -160,8 +160,6 @@ GstHDV1394Src implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-hdv1394src.functions_details"></a><h2>Functions</h2> @@ -172,8 +170,6 @@ GstHDV1394Src implements <div class="refsect2"> <a name="GstHDV1394Src-struct"></a><h3>struct GstHDV1394Src</h3> <pre class="programlisting">struct GstHDV1394Src;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-icydemux.html b/docs/plugins/html/gst-plugins-good-plugins-icydemux.html index 256d069f9a55a85db756803157d46b087bbe23d1..7b4b6c1d3195b9aa3f7d0a2518b0f49ea1163592 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-icydemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-icydemux.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-icydemux.top_of_page"></a>icydemux</span></h2> -<p>icydemux — Read and output ICY tags while demuxing the contents</p> +<p>icydemux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -158,8 +158,6 @@ or giosrc instead of souphttpsrc should also work.) </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-icydemux.functions_details"></a><h2>Functions</h2> @@ -170,8 +168,6 @@ or giosrc instead of souphttpsrc should also work.) <div class="refsect2"> <a name="GstICYDemux-struct"></a><h3>struct GstICYDemux</h3> <pre class="programlisting">struct GstICYDemux;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-id3demux.html b/docs/plugins/html/gst-plugins-good-plugins-id3demux.html index 3a72f4b9fb55e2caca5cb4ea29dd158d92872a86..f7110c4a4edab96db64c63d62253379e7fbcf40c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-id3demux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-id3demux.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-id3demux.top_of_page"></a>id3demux</span></h2> -<p>id3demux — Read and output ID3v1 and ID3v2 tags while demuxing the contents</p> +<p>id3demux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -180,8 +180,6 @@ the appropriate mime type set on buffers produced from id3demux. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-id3demux.functions_details"></a><h2>Functions</h2> @@ -192,8 +190,6 @@ the appropriate mime type set on buffers produced from id3demux. <div class="refsect2"> <a name="GstID3Demux-struct"></a><h3>struct GstID3Demux</h3> <pre class="programlisting">struct GstID3Demux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-id3v2mux.html b/docs/plugins/html/gst-plugins-good-plugins-id3v2mux.html index 909c1801195c48260755c32ce62db8eb70a98c17..e32f4897d711938521dd026f1d77ae4bd2ec17c5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-id3v2mux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-id3v2mux.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-id3v2mux.top_of_page"></a>id3v2mux</span></h2> -<p>id3v2mux — Adds an ID3v2 header to the beginning of MP3 files using taglib</p> +<p>id3v2mux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -144,8 +144,6 @@ GstId3v2Mux implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-id3v2mux.functions_details"></a><h2>Functions</h2> @@ -156,8 +154,6 @@ GstId3v2Mux implements <div class="refsect2"> <a name="GstId3v2Mux-struct"></a><h3>struct GstId3v2Mux</h3> <pre class="programlisting">struct GstId3v2Mux;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-imagefreeze.html b/docs/plugins/html/gst-plugins-good-plugins-imagefreeze.html index a76a799fbceb5f2b0ac768bbcdf5b0736eba0e50..61df5485709cd5842126bd955f2395cf86cffda7 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-imagefreeze.html +++ b/docs/plugins/html/gst-plugins-good-plugins-imagefreeze.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-imagefreeze.top_of_page"></a>imagefreeze</span></h2> -<p>imagefreeze — Generates a still frame stream from an image</p> +<p>imagefreeze</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -153,8 +153,6 @@ by downstream, allows seeking and answers queries.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-imagefreeze.functions_details"></a><h2>Functions</h2> @@ -165,8 +163,6 @@ by downstream, allows seeking and answers queries.</p> <div class="refsect2"> <a name="GstImageFreeze-struct"></a><h3>struct GstImageFreeze</h3> <pre class="programlisting">struct GstImageFreeze;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-interleave.html b/docs/plugins/html/gst-plugins-good-plugins-interleave.html index 8b171da7e2c483ed0347d102bdce7a7a0587cd78..56875f86658e275a0b4263bd903929a64d308699 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-interleave.html +++ b/docs/plugins/html/gst-plugins-good-plugins-interleave.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-interleave.top_of_page"></a>interleave</span></h2> -<p>interleave — Folds many mono channels into one interleaved audio stream</p> +<p>interleave</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -195,8 +195,6 @@ channels exchanged. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-interleave.functions_details"></a><h2>Functions</h2> @@ -207,8 +205,6 @@ channels exchanged. <div class="refsect2"> <a name="GstInterleave-struct"></a><h3>struct GstInterleave</h3> <pre class="programlisting">struct GstInterleave;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-ismlmux.html b/docs/plugins/html/gst-plugins-good-plugins-ismlmux.html index 945704725e41a7da9937867cdf183ee3ccb588d7..c4cfc816113b65ce7fe13b4e1d5ef26ee0d5da99 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-ismlmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-ismlmux.html @@ -90,6 +90,26 @@ <td class="property_name"><a class="link" href="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--trak-timescale" title="The “trak-timescale†property">trak-timescale</a></td> <td class="property_flags">Read / Write / Construct</td> </tr> +<tr> +<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-bytes-per-sec" title="The “reserved-bytes-per-sec†property">reserved-bytes-per-sec</a></td> +<td class="property_flags">Read / Write / Construct</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-duration-remaining" title="The “reserved-duration-remaining†property">reserved-duration-remaining</a></td> +<td class="property_flags">Read</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-max-duration" title="The “reserved-max-duration†property">reserved-max-duration</a></td> +<td class="property_flags">Read / Write</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-moov-update-period" title="The “reserved-moov-update-period†property">reserved-moov-update-period</a></td> +<td class="property_flags">Read / Write</td> +</tr> </tbody> </table></div> </div> @@ -170,7 +190,7 @@ and muxes it into an mj2 file. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.69.8.8.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.69.8.9.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -196,7 +216,7 @@ and muxes it into an mj2 file. </div> <hr> <div class="refsect2"> -<a name="id-1.2.69.8.8.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.69.8.9.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -283,8 +303,6 @@ and muxes it into an mj2 file. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-ismlmux.functions_details"></a><h2>Functions</h2> @@ -295,8 +313,6 @@ and muxes it into an mj2 file. <div class="refsect2"> <a name="GstISMLMux-struct"></a><h3>GstISMLMux</h3> <pre class="programlisting">typedef struct _GstISMLMux GstISMLMux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -373,6 +389,39 @@ and muxes it into an mj2 file. <p>Flags: Read / Write / Construct</p> <p>Default value: 0</p> </div> +<hr> +<div class="refsect2"> +<a name="GstISMLMux--reserved-bytes-per-sec"></a><h3>The <code class="literal">“reserved-bytes-per-secâ€</code> property</h3> +<pre class="programlisting"> “reserved-bytes-per-sec†<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> +<p>Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track.</p> +<p>Flags: Read / Write / Construct</p> +<p>Allowed values: <= 10000</p> +<p>Default value: 550</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstISMLMux--reserved-duration-remaining"></a><h3>The <code class="literal">“reserved-duration-remainingâ€</code> property</h3> +<pre class="programlisting"> “reserved-duration-remaining†<span class="type">guint64</span></pre> +<p>Reports the approximate amount of remaining moov header space reserved using reserved-max-duration.</p> +<p>Flags: Read</p> +<p>Default value: 0</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstISMLMux--reserved-max-duration"></a><h3>The <code class="literal">“reserved-max-durationâ€</code> property</h3> +<pre class="programlisting"> “reserved-max-duration†<span class="type">guint64</span></pre> +<p>When set to a value > 0, reserves space for index tables at the beginning of the file.</p> +<p>Flags: Read / Write</p> +<p>Default value: 18446744073709551615</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstISMLMux--reserved-moov-update-period"></a><h3>The <code class="literal">“reserved-moov-update-periodâ€</code> property</h3> +<pre class="programlisting"> “reserved-moov-update-period†<span class="type">guint64</span></pre> +<p>When used with reserved-max-duration, periodically updates the index tables with information muxed so far.</p> +<p>Flags: Read / Write</p> +<p>Default value: 18446744073709551615</p> +</div> </div> </div> <div class="footer"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-jackaudiosink.html b/docs/plugins/html/gst-plugins-good-plugins-jackaudiosink.html index 3de75053a34fed74629c7d692497a9d7ebad3530..d5bbf5ed02bc5c6eb450199b64ae8563f1e45b0e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-jackaudiosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-jackaudiosink.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-jackaudiosink.top_of_page"></a>jackaudiosink</span></h2> -<p>jackaudiosink — Output audio to a JACK server</p> +<p>jackaudiosink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -161,8 +161,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-jackaudiosink.functions_details"></a><h2>Functions</h2> @@ -173,8 +171,6 @@ <div class="refsect2"> <a name="GstJackAudioSink-struct"></a><h3>struct GstJackAudioSink</h3> <pre class="programlisting">struct GstJackAudioSink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-jackaudiosrc.html b/docs/plugins/html/gst-plugins-good-plugins-jackaudiosrc.html index fcb1a1fb8f346db47c1703498fae48a47dd86e1d..3e89db103caeb855c035dfe1d89380dd2dbf4825 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-jackaudiosrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-jackaudiosrc.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-jackaudiosrc.top_of_page"></a>jackaudiosrc</span></h2> -<p>jackaudiosrc — Captures audio from a JACK server</p> +<p>jackaudiosrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -162,8 +162,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-jackaudiosrc.functions_details"></a><h2>Functions</h2> @@ -174,8 +172,6 @@ <div class="refsect2"> <a name="GstJackAudioSrc-struct"></a><h3>struct GstJackAudioSrc</h3> <pre class="programlisting">struct GstJackAudioSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-jpegdec.html b/docs/plugins/html/gst-plugins-good-plugins-jpegdec.html index 3e6647d8d14094024478e99391fc5c5ff40db40a..ba28071081153388e0d6d4ba09efeaac9c6abe85 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-jpegdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-jpegdec.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-jpegdec.top_of_page"></a>jpegdec</span></h2> -<p>jpegdec — Decode images from JPEG format</p> +<p>jpegdec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -160,8 +160,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-jpegdec.functions_details"></a><h2>Functions</h2> @@ -172,8 +170,6 @@ <div class="refsect2"> <a name="GstJpegDec-struct"></a><h3>struct GstJpegDec</h3> <pre class="programlisting">struct GstJpegDec;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-jpegenc.html b/docs/plugins/html/gst-plugins-good-plugins-jpegenc.html index 50b4e9ebfba60e2e3aba65c5c5ab6cf70fc058e9..df46e54aff2ea16eb9717d1f9f082bf4960f93ae 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-jpegenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-jpegenc.html @@ -31,7 +31,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-jpegenc.top_of_page"></a>jpegenc</span></h2> -<p>jpegenc — Encode images in JPEG format</p> +<p>jpegenc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -68,7 +68,7 @@ <tbody><tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-jpegenc.html#GstJpegEnc-frame-encoded" title="The “frame-encoded†signal">frame-encoded</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr></tbody> </table></div> </div> @@ -183,8 +183,6 @@ GstJpegEnc implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-jpegenc.functions_details"></a><h2>Functions</h2> @@ -195,8 +193,6 @@ GstJpegEnc implements <div class="refsect2"> <a name="GstJpegEnc-struct"></a><h3>struct GstJpegEnc</h3> <pre class="programlisting">struct GstJpegEnc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -225,31 +221,7 @@ GstJpegEnc implements <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-jpegenc.html#GstJpegEnc"><span class="type">GstJpegEnc</span></a> *gstjpegenc, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.73.13.2.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstjpegenc</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-level.html b/docs/plugins/html/gst-plugins-good-plugins-level.html index 0b63b5da28d8693f8f3878b0b1b65cf36ad307ad..7706870bea2557cbc29e44a4a59f4d777aef2e3c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-level.html +++ b/docs/plugins/html/gst-plugins-good-plugins-level.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-level.top_of_page"></a>level</span></h2> -<p>level — RMS/Peak/Decaying Peak Level messager for audio/raw</p> +<p>level</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -519,8 +519,6 @@ The message's structure contains these fields:</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-level.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-matroskademux.html b/docs/plugins/html/gst-plugins-good-plugins-matroskademux.html index b73a048b0a32e23fe3fc0bed2ec4660b8b5c052d..a061f525e02a6b2042c7f8fad7d824d3f672f6d0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-matroskademux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-matroskademux.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-matroskademux.top_of_page"></a>matroskademux</span></h2> -<p>matroskademux — Demuxes Matroska/WebM streams into video/audio/subtitles</p> +<p>matroskademux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -259,8 +259,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-matroskademux.functions_details"></a><h2>Functions</h2> @@ -271,8 +269,6 @@ <div class="refsect2"> <a name="GstMatroskaDemux-struct"></a><h3>GstMatroskaDemux</h3> <pre class="programlisting">typedef struct _GstMatroskaDemux GstMatroskaDemux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-matroskamux.html b/docs/plugins/html/gst-plugins-good-plugins-matroskamux.html index 25d8112432804eb7c415c5c47f1be4164cdfbb69..f7ffb01c6a4f5f614a206938289e85b1ced4d602 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-matroskamux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-matroskamux.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-matroskamux.top_of_page"></a>matroskamux</span></h2> -<p>matroskamux — Muxes video/audio/subtitle streams into a matroska stream</p> +<p>matroskamux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -404,8 +404,6 @@ GstMatroskaMux implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-matroskamux.functions_details"></a><h2>Functions</h2> @@ -416,8 +414,6 @@ GstMatroskaMux implements <div class="refsect2"> <a name="GstMatroskaMux-struct"></a><h3>struct GstMatroskaMux</h3> <pre class="programlisting">struct GstMatroskaMux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html b/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html index 6fef577dc4d26f6720c42d44ade2599568be9353..36333831253347d12caee5ea3a5092dfa8e9cb60 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-mj2mux.html @@ -90,6 +90,26 @@ <td class="property_name"><a class="link" href="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--trak-timescale" title="The “trak-timescale†property">trak-timescale</a></td> <td class="property_flags">Read / Write / Construct</td> </tr> +<tr> +<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-bytes-per-sec" title="The “reserved-bytes-per-sec†property">reserved-bytes-per-sec</a></td> +<td class="property_flags">Read / Write / Construct</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-duration-remaining" title="The “reserved-duration-remaining†property">reserved-duration-remaining</a></td> +<td class="property_flags">Read</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-max-duration" title="The “reserved-max-duration†property">reserved-max-duration</a></td> +<td class="property_flags">Read / Write</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-moov-update-period" title="The “reserved-moov-update-period†property">reserved-moov-update-period</a></td> +<td class="property_flags">Read / Write</td> +</tr> </tbody> </table></div> </div> @@ -170,7 +190,7 @@ and muxes it into an mj2 file. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.77.8.8.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.77.8.9.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -196,7 +216,7 @@ and muxes it into an mj2 file. </div> <hr> <div class="refsect2"> -<a name="id-1.2.77.8.8.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.77.8.9.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -279,8 +299,6 @@ and muxes it into an mj2 file. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-mj2mux.functions_details"></a><h2>Functions</h2> @@ -291,8 +309,6 @@ and muxes it into an mj2 file. <div class="refsect2"> <a name="GstMJ2Mux-struct"></a><h3>GstMJ2Mux</h3> <pre class="programlisting">typedef struct _GstMJ2Mux GstMJ2Mux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -369,6 +385,39 @@ and muxes it into an mj2 file. <p>Flags: Read / Write / Construct</p> <p>Default value: 0</p> </div> +<hr> +<div class="refsect2"> +<a name="GstMJ2Mux--reserved-bytes-per-sec"></a><h3>The <code class="literal">“reserved-bytes-per-secâ€</code> property</h3> +<pre class="programlisting"> “reserved-bytes-per-sec†<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> +<p>Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track.</p> +<p>Flags: Read / Write / Construct</p> +<p>Allowed values: <= 10000</p> +<p>Default value: 550</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstMJ2Mux--reserved-duration-remaining"></a><h3>The <code class="literal">“reserved-duration-remainingâ€</code> property</h3> +<pre class="programlisting"> “reserved-duration-remaining†<span class="type">guint64</span></pre> +<p>Reports the approximate amount of remaining moov header space reserved using reserved-max-duration.</p> +<p>Flags: Read</p> +<p>Default value: 0</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstMJ2Mux--reserved-max-duration"></a><h3>The <code class="literal">“reserved-max-durationâ€</code> property</h3> +<pre class="programlisting"> “reserved-max-duration†<span class="type">guint64</span></pre> +<p>When set to a value > 0, reserves space for index tables at the beginning of the file.</p> +<p>Flags: Read / Write</p> +<p>Default value: 18446744073709551615</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstMJ2Mux--reserved-moov-update-period"></a><h3>The <code class="literal">“reserved-moov-update-periodâ€</code> property</h3> +<pre class="programlisting"> “reserved-moov-update-period†<span class="type">guint64</span></pre> +<p>When used with reserved-max-duration, periodically updates the index tables with information muxed so far.</p> +<p>Flags: Read / Write</p> +<p>Default value: 18446744073709551615</p> +</div> </div> </div> <div class="footer"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-monoscope.html b/docs/plugins/html/gst-plugins-good-plugins-monoscope.html index 248b80793af653951d2bdf43901635fdf3230bad..ff845a67fc46281ee60ae5eaae64b3539148cdc5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-monoscope.html +++ b/docs/plugins/html/gst-plugins-good-plugins-monoscope.html @@ -27,7 +27,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-monoscope.top_of_page"></a>monoscope</span></h2> -<p>monoscope — Displays a highly stabilised waveform of audio input</p> +<p>monoscope</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -142,8 +142,6 @@ curve of the audio signal like on an oscilloscope.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-monoscope.functions_details"></a><h2>Functions</h2> @@ -186,8 +184,6 @@ curve of the audio signal like on an oscilloscope.</p> struct monoscope_state *visstate; }; </pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html b/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html index 99f04f9f9c73aef8291b93d0f6b921329a1cfebf..a3c79bd88d5a2fd87e909923027b45f0291bf094 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-mp4mux.html @@ -90,6 +90,26 @@ <td class="property_name"><a class="link" href="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--trak-timescale" title="The “trak-timescale†property">trak-timescale</a></td> <td class="property_flags">Read / Write / Construct</td> </tr> +<tr> +<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-bytes-per-sec" title="The “reserved-bytes-per-sec†property">reserved-bytes-per-sec</a></td> +<td class="property_flags">Read / Write / Construct</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-duration-remaining" title="The “reserved-duration-remaining†property">reserved-duration-remaining</a></td> +<td class="property_flags">Read</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-max-duration" title="The “reserved-max-duration†property">reserved-max-duration</a></td> +<td class="property_flags">Read / Write</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-moov-update-period" title="The “reserved-moov-update-period†property">reserved-moov-update-period</a></td> +<td class="property_flags">Read / Write</td> +</tr> </tbody> </table></div> </div> @@ -224,6 +244,10 @@ and muxes it into an mp4 file. </tr> <tr> <td><p><span class="term"></span></p></td> +<td> audio/x-ac3, channels=(int)[ 1, 6 ], rate=(int)[ 1, 2147483647 ]</td> +</tr> +<tr> +<td><p><span class="term"></span></p></td> <td> audio/x-alac, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]</td> </tr> </tbody> @@ -314,8 +338,6 @@ and muxes it into an mp4 file. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-mp4mux.functions_details"></a><h2>Functions</h2> @@ -326,8 +348,6 @@ and muxes it into an mp4 file. <div class="refsect2"> <a name="GstMP4Mux-struct"></a><h3>GstMP4Mux</h3> <pre class="programlisting">typedef struct _GstMP4Mux GstMP4Mux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -404,6 +424,39 @@ and muxes it into an mp4 file. <p>Flags: Read / Write / Construct</p> <p>Default value: 0</p> </div> +<hr> +<div class="refsect2"> +<a name="GstMP4Mux--reserved-bytes-per-sec"></a><h3>The <code class="literal">“reserved-bytes-per-secâ€</code> property</h3> +<pre class="programlisting"> “reserved-bytes-per-sec†<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> +<p>Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track.</p> +<p>Flags: Read / Write / Construct</p> +<p>Allowed values: <= 10000</p> +<p>Default value: 550</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstMP4Mux--reserved-duration-remaining"></a><h3>The <code class="literal">“reserved-duration-remainingâ€</code> property</h3> +<pre class="programlisting"> “reserved-duration-remaining†<span class="type">guint64</span></pre> +<p>Reports the approximate amount of remaining moov header space reserved using reserved-max-duration.</p> +<p>Flags: Read</p> +<p>Default value: 0</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstMP4Mux--reserved-max-duration"></a><h3>The <code class="literal">“reserved-max-durationâ€</code> property</h3> +<pre class="programlisting"> “reserved-max-duration†<span class="type">guint64</span></pre> +<p>When set to a value > 0, reserves space for index tables at the beginning of the file.</p> +<p>Flags: Read / Write</p> +<p>Default value: 18446744073709551615</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstMP4Mux--reserved-moov-update-period"></a><h3>The <code class="literal">“reserved-moov-update-periodâ€</code> property</h3> +<pre class="programlisting"> “reserved-moov-update-period†<span class="type">guint64</span></pre> +<p>When used with reserved-max-duration, periodically updates the index tables with information muxed so far.</p> +<p>Flags: Read / Write</p> +<p>Default value: 18446744073709551615</p> +</div> </div> </div> <div class="footer"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html b/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html index 776fdb2ed3aa42fb31049f33a354e691294b6e2d..7e993c6a7790bfed92cc6dd528c64ca7adf5b1c9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-mpegaudioparse.html @@ -152,8 +152,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-mpegaudioparse.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-mulawdec.html b/docs/plugins/html/gst-plugins-good-plugins-mulawdec.html index ad5bc599a50051f492fff861fb316a14a27668a0..1e44c82aecf7a985803a5472edb6c04eb405f984 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-mulawdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-mulawdec.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-mulawdec.top_of_page"></a>mulawdec</span></h2> -<p>mulawdec — Convert 8bit mu law to 16bit PCM</p> +<p>mulawdec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -61,7 +61,7 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.81.6.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.81.6.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -87,7 +87,7 @@ </div> <hr> <div class="refsect2"> -<a name="id-1.2.81.6.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.81.6.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -138,8 +138,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-mulawdec.functions_details"></a><h2>Functions</h2> @@ -150,8 +148,6 @@ <div class="refsect2"> <a name="GstMuLawDec-struct"></a><h3>struct GstMuLawDec</h3> <pre class="programlisting">struct GstMuLawDec;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-mulawenc.html b/docs/plugins/html/gst-plugins-good-plugins-mulawenc.html index b6cf143bc80d6c1c17620d7f201396f4a5fa1c00..2a7a93f86b14f9441eb60db9cd10f88789615991 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-mulawenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-mulawenc.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-mulawenc.top_of_page"></a>mulawenc</span></h2> -<p>mulawenc — Convert 16bit PCM to 8bit mu law</p> +<p>mulawenc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -61,7 +61,7 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.82.7.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.82.7.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -87,7 +87,7 @@ </div> <hr> <div class="refsect2"> -<a name="id-1.2.82.7.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.82.7.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -138,8 +138,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-mulawenc.functions_details"></a><h2>Functions</h2> @@ -150,8 +148,6 @@ <div class="refsect2"> <a name="GstMuLawEnc-struct"></a><h3>struct GstMuLawEnc</h3> <pre class="programlisting">struct GstMuLawEnc;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-multifilesink.html b/docs/plugins/html/gst-plugins-good-plugins-multifilesink.html index 7dd489900b9ec2643319be187fc97b8804fd2d14..26575179c5ec485a1a4ff3afb306c2748053d0c6 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-multifilesink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-multifilesink.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-multifilesink.top_of_page"></a>multifilesink</span></h2> -<p>multifilesink — Write buffers to a sequentially named set of files</p> +<p>multifilesink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -245,8 +245,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-multifilesink.functions_details"></a><h2>Functions</h2> @@ -257,8 +255,6 @@ gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span <div class="refsect2"> <a name="GstMultiFileSink-struct"></a><h3>struct GstMultiFileSink</h3> <pre class="programlisting">struct GstMultiFileSink;</pre> -<p> -</p> </div> <hr> <div class="refsect2"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-multifilesrc.html b/docs/plugins/html/gst-plugins-good-plugins-multifilesrc.html index 5d49f3a438690cea062fd29af5750fc431372e1e..1a31c6e48894f01a97c3b9278937d715d869c908 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-multifilesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-multifilesrc.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-multifilesrc.top_of_page"></a>multifilesrc</span></h2> -<p>multifilesrc — Read a sequentially named set of files into buffers</p> +<p>multifilesrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -184,8 +184,6 @@ files named img.0000.png, img.0001.png, etc. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-multifilesrc.functions_details"></a><h2>Functions</h2> @@ -196,8 +194,6 @@ files named img.0000.png, img.0001.png, etc. <div class="refsect2"> <a name="GstMultiFileSrc-struct"></a><h3>struct GstMultiFileSrc</h3> <pre class="programlisting">struct GstMultiFileSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-multipartdemux.html b/docs/plugins/html/gst-plugins-good-plugins-multipartdemux.html index c6fea3ba0ffa45d3ff00bb9b77ebefb369d544c4..c4ef8211f34dfa1d5c87016ec3ea64f63ba2fe25 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-multipartdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-multipartdemux.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-multipartdemux.top_of_page"></a>multipartdemux</span></h2> -<p>multipartdemux — demux multipart streams</p> +<p>multipartdemux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -190,8 +190,6 @@ containing JPEG frames. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-multipartdemux.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-multipartmux.html b/docs/plugins/html/gst-plugins-good-plugins-multipartmux.html index 4adb3966199b1c955eefedc9f364382774acf5f9..a85bd774f39bcc06033a16be1a0d8d59764017a8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-multipartmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-multipartmux.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-multipartmux.top_of_page"></a>multipartmux</span></h2> -<p>multipartmux — mux multipart streams</p> +<p>multipartmux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -171,8 +171,6 @@ stored to a file. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-multipartmux.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html b/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html index e604c76e56b4c821905835b5f30405b431f1ad04..9284f8db458a84aaee06c2c519c19e703de30863 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-multiudpsink.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-multiudpsink.top_of_page"></a>multiudpsink</span></h2> -<p>multiudpsink — Send data over the network via UDP to one or multiple recipients which can be added or removed at runtime using action signals</p> +<p>multiudpsink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -175,33 +175,33 @@ <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-add" title="The “add†signal">add</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-clear" title="The “clear†signal">clear</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-client-added" title="The “client-added†signal">client-added</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-client-removed" title="The “client-removed†signal">client-removed</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html"><span class="returnvalue">GstStructure</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-get-stats" title="The “get-stats†signal">get-stats</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-multiudpsink.html#GstMultiUDPSink-remove" title="The “remove†signal">remove</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> </tbody> </table></div> @@ -238,7 +238,7 @@ It can be combined with rtp payload encoders to implement RTP streaming.</p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.87.8.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.87.8.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -264,7 +264,7 @@ It can be combined with rtp payload encoders to implement RTP streaming.</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.87.8.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.87.8.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -291,8 +291,6 @@ It can be combined with rtp payload encoders to implement RTP streaming.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-multiudpsink.functions_details"></a><h2>Functions</h2> @@ -303,8 +301,6 @@ It can be combined with rtp payload encoders to implement RTP streaming.</p> <div class="refsect2"> <a name="GstMultiUDPSink-struct"></a><h3>struct GstMultiUDPSink</h3> <pre class="programlisting">struct GstMultiUDPSink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -538,7 +534,7 @@ of destinations.</p> </tbody> </table></div> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> <hr> <div class="refsect2"> @@ -569,7 +565,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-multiudpsink.html# </tbody> </table></div> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> <hr> <div class="refsect2"> @@ -613,7 +609,7 @@ clients.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -657,7 +653,7 @@ clients.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -707,7 +703,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-multiudpsink.html# <p> a GstStructure: bytes_sent, packets_sent, connect_time (in epoch seconds), disconnect_time (in epoch seconds)</p> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> <hr> <div class="refsect2"> @@ -753,7 +749,7 @@ clients.</p> </tbody> </table></div> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-optv.html b/docs/plugins/html/gst-plugins-good-plugins-optv.html index 0186b201c83eeeee2bf2b412f63960e9188cace7..dc3d86d04e07f3cbff18e7566515c0bf186eb22f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-optv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-optv.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-optv.top_of_page"></a>optv</span></h2> -<p>optv — Optical art meets real-time video effect</p> +<p>optv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -183,8 +183,6 @@ various optical pattern.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-optv.functions_details"></a><h2>Functions</h2> @@ -195,8 +193,6 @@ various optical pattern.</p> <div class="refsect2"> <a name="GstOpTV-struct"></a><h3>struct GstOpTV</h3> <pre class="programlisting">struct GstOpTV;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-oss4sink.html b/docs/plugins/html/gst-plugins-good-plugins-oss4sink.html index 9a5162e9e745c25b5dd03021207ba6974c4ea207..4f253ffe768f75e135d166eb4d39f0c46a362804 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-oss4sink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-oss4sink.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-oss4sink.top_of_page"></a>oss4sink</span></h2> -<p>oss4sink — Output to a sound card via OSS version 4</p> +<p>oss4sink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -165,8 +165,6 @@ GstOss4Sink implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-oss4sink.functions_details"></a><h2>Functions</h2> @@ -177,8 +175,6 @@ GstOss4Sink implements <div class="refsect2"> <a name="GstOss4Sink-struct"></a><h3>struct GstOss4Sink</h3> <pre class="programlisting">struct GstOss4Sink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-oss4src.html b/docs/plugins/html/gst-plugins-good-plugins-oss4src.html index daa1e932637a628727aff75262835ce0c975f299..64074ed347b754daf6d0470bea3cf75926c54222 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-oss4src.html +++ b/docs/plugins/html/gst-plugins-good-plugins-oss4src.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-oss4src.top_of_page"></a>oss4src</span></h2> -<p>oss4src — Capture from a sound card via OSS version 4</p> +<p>oss4src</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -156,8 +156,6 @@ GstOss4Source implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-oss4src.functions_details"></a><h2>Functions</h2> @@ -168,8 +166,6 @@ GstOss4Source implements <div class="refsect2"> <a name="GstOss4Source-struct"></a><h3>struct GstOss4Source</h3> <pre class="programlisting">struct GstOss4Source;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-osssink.html b/docs/plugins/html/gst-plugins-good-plugins-osssink.html index 5904af6c54163e644dbaf78b45c1753c9cc5f7cb..bb4ae9f267e05dfaf2b0af3103f4b3b9cbc290a8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osssink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osssink.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-osssink.top_of_page"></a>osssink</span></h2> -<p>osssink — Output to a sound card via OSS</p> +<p>osssink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -136,8 +136,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-osssink.functions_details"></a><h2>Functions</h2> @@ -148,8 +146,6 @@ <div class="refsect2"> <a name="GstOssSink-struct"></a><h3>struct GstOssSink</h3> <pre class="programlisting">struct GstOssSink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-osssrc.html b/docs/plugins/html/gst-plugins-good-plugins-osssrc.html index 30954069dc22fa88bd196e68f05fb00bbcc639ca..658da05bd51387042ab923e66299d61572c5e579 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osssrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osssrc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-osssrc.top_of_page"></a>osssrc</span></h2> -<p>osssrc — Capture from a sound card via OSS</p> +<p>osssrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -152,8 +152,6 @@ GstOssSrc implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-osssrc.functions_details"></a><h2>Functions</h2> @@ -164,8 +162,6 @@ GstOssSrc implements <div class="refsect2"> <a name="GstOssSrc-struct"></a><h3>struct GstOssSrc</h3> <pre class="programlisting">struct GstOssSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-osxaudiosink.html b/docs/plugins/html/gst-plugins-good-plugins-osxaudiosink.html index cab8694eca6db9b77e0aff39ce200680dd513dc5..c88c8524856b80774fd1c3bf77b49b03d76d9134 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osxaudiosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osxaudiosink.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-osxaudiosink.top_of_page"></a>osxaudiosink</span></h2> -<p>osxaudiosink — Output to a sound card in OS X</p> +<p>osxaudiosink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -94,8 +94,6 @@ <a name="id-1.2.93.5.2.2"></a><h3>Element Pads</h3> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-osxaudiosink.functions_details"></a><h2>Functions</h2> @@ -118,8 +116,6 @@ GstAudioChannelPosition channel_positions[GST_OSX_AUDIO_MAX_CHANNEL]; }; </pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-osxaudiosrc.html b/docs/plugins/html/gst-plugins-good-plugins-osxaudiosrc.html index b02e6296155fcfb8fdd7c174c2905ad912d76fbb..5cb774f13ac38868e748f18d4ab37da246f343b1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osxaudiosrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osxaudiosrc.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-osxaudiosrc.top_of_page"></a>osxaudiosrc</span></h2> -<p>osxaudiosrc — Input from a sound card in OS X</p> +<p>osxaudiosrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -94,8 +94,6 @@ <a name="id-1.2.94.5.2.2"></a><h3>Element Pads</h3> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-osxaudiosrc.functions_details"></a><h2>Functions</h2> @@ -113,8 +111,6 @@ GstCaps *cached_caps; }; </pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html b/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html index 29696d12513b8090b871d0e6d9f59d8016ec16b5..089fc9aedd7c06d3a1df69e2bf81506ce89caaca 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-osxvideosink.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-osxvideosink.top_of_page"></a>osxvideosink</span></h2> -<p>osxvideosink — OSX native videosink</p> +<p>osxvideosink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -101,8 +101,6 @@ <a name="id-1.2.95.5.2.2"></a><h3>Element Pads</h3> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-osxvideosink.functions_details"></a><h2>Functions</h2> @@ -122,8 +120,6 @@ GstVideoInfo info; }; </pre> -<p> -</p> </div> </div> <div class="refsect1"> 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 4e044c4663c1e046c8270127317fd5a4e0dba6c4..71f2f25590404a40953d5c667a54ac8ce66d6eb9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-1394.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 72dbad46a273154b3e648afa91819e4457352a41..9e494b5f23d48be2ded6f0770268a2ee61b7cadb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-aasink.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 f5fb2166725b2814e3a95dd30c919de96b6f5be3..925e9a4cc3d9e52204525ec5b177596a85c6c739 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alaw.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 09854d42948e5d0a127abddbf22a0342fe2c6fae..0bddb4cef12c1a64968f969b332682139861cca9 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alpha.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 45b001ea7af5a78b84b290bd82c6659484f4e03e..2a71b2e851886bfcd7daf58ba644f871972f953a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-alphacolor.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 8a3ea494ec7701429f596b8018e9f7598f4d0df6..0d2576cb8c292cd64fe2c6f551150e10e7de44a1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-apetag.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 44d92e46c16a49b67f684e7a358724309632c647..447fac2a7a9cefcd734ada6da6a5cea80b3ad58a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-audiofx.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 1a9b43716b2ce58ff0760c7b1cc9ee7b28dd2833..aefd6ed875fe753f56177bfa906a348f81784a48 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-auparse.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 375c4e54e33d2afacfe30d7d4cb7646a1b1b2a4d..6704b50ddeccfb87c622eade1084be22e1c1b718 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-autodetect.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 1ec8429466a64240ff8dd89c459231001c82c975..03e7f7382775f951a41ed1c4febf25b979c0faaf 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-avi.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 279a8daa8e42526e8b2542dfd205543cbec71af3..8c9b1a9f221332c44a37f1000ec3f682cff2985a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cacasink.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 99b46e530d4e9613b26cdcf33cd6259309487c19..b22f66cd827a8d4bda72035cc4b6e28db0453d96 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cairo.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 bf0f600c4ada8c07fbd49ab035f5736dbe9347f0..847ecf2c21229f03ffd87fdcaf8d0b159d053e5e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-cutter.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 64fc84e85b57e822eca8f1a873c659a76258304b..4115381b623567e9261153926fbe47acceeab3d2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-debug.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 91e6c1ad46584e5830119387c5607971c908ba44..170d9075b669109e01f4a301f1c2015cf096b9fb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-deinterlace.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> diff --git a/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html b/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html index 5780553a75e6dec2104c9552d807aba157cb1c35..f5a77ee03f76c10a120beaecd7c24108686191a3 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-dtmf.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 92505a981838d7bbf3a004beeb66728df5e9ab7a..9d6b76120ddedcf09735daf7bc6cb48a9660396c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-dv.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 bc44d9de3f1197fe5d7d6cb998cceeee737be045..7f8d4273a05aaa16523470b5a0dfd6d6191877ec 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-effectv.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 680aa8fddaf89861bac245c4218c4d38dde2ec68..fe5583d5e37bc3ea38e011211a812d050943c6e1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-equalizer.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 d39be73b09006a977148a64c2793f9c003620c77..b2329c26e16406f597286e2b8d11ee2078ed0d3c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flac.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 f6445033ab1d9e88c8a0bbeb6baaa65c412e13f6..0a5f91db0153920ee6be633d87446641314bc0ae 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flv.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 10bdb0ed413296dc7de503baf3e1d3f374ee9a52..99bad7ceba6996408b9e00567cd55918b4bce07f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-flxdec.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 68ad67a34f24324edd2bea8227b279618e48cd89..adc6f7683add15e3323c8e16f478c4a995b0624e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-gdkpixbuf.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 986ecdc09c57286fa5b5658f6349d203fe44ece9..1633e89d5891b634e4506cd57e41c24c36197d5e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 8e043dd99757059d47014b0d228efa43e1bef1ad..e108fad8d451f055888a5c33fea413b62018fe09 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-goom2k1.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 21c619a1eec1c225d52598e0652a2219eba01706..5e8177b0c93a6f46102fb29895cee2d02688712b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-icydemux.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 f40a28780b73c43af05741fb720dadf04bcbf0f0..ce91976cf6259b5951f003e49eddd3d3c04e9026 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-id3demux.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 2967a3c425410aaaa7de1083df85cd3755d69f1c..cb7717f3a68578af5366580763aa0fbb5b822bfc 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-imagefreeze.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 be61788637d6c6aab246b83158aac733a69ae91c..a0446e8b7e881ec7c903220af3c7a055076ff5d8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-interleave.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 642c583e14e26b854cf08bda5a0620eb3c46b981..d3ea10a84302d2fbfafbcbbe8728d1f0bf3248a2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-isomp4.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 e247886910361b7ec4b215c135545548ffbf3a7b..9d8655d818d485a55ed5ca8659275745544c30bb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-jack.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 9f07e0af4044e08691c7c379467ff5dcbf5f5755..e659cbd221e678e462a14108cb8a212459143226 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-jpeg.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 1fe2d5e6417a5894796a3526abcb695c6627da9f..506594629c7759bffae8591975d3ce685bdfd54b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-level.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 882221e873caf9878734b6328ef614af9ce89fd2..ddd3022ae16562781587d0787d3b9a10819a44af 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-matroska.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 ee75eca74b3077f41afd59cd2627a8c3d9f4aca0..e3825dd47064c8bc0723517745a6bc9e98dbf071 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-mulaw.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 4c5cecba731ca6896e1ce61d1417f8827f59c14c..4a46c475b3df5fce2769f8c7c9ce32134bfd688b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-multifile.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 fcc75995a357f6647c11faf86c7e17ec59192d09..f38fee6cb14ff187ea50442411fcfda1df0f4acb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-multipart.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 945144deec0031492352fc83f71761c7a4f2f334..93eb59db2451ebb041d05f16559131974742731b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-navigationtest.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 982cbd8ea241c9805c959f3b4faa5fc25d3415af..15e51ea7144458d39ee1d17540dcbdc6f5b0c083 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-oss4.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 4e1ab07e14e6d18cbda8c8909a9f4831e91702a1..ca276228a4ca602d8aa1655111c80718a8b08e94 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-ossaudio.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 39d6daf75b4310dbc5cdddbc7aa0bb4560aec482..709c6de460616344c441a9e1a83a2b3115ad9911 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-png.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 e469e63c82d5a9f5cccd9cfcb045c2028297cebf..2de63acb11e11bbd9a4c9037ae08922fe9ba0006 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-pulseaudio.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 f03c36e4a9649cc89c008b953ea05e52ca4faaa1..72c3046f52d89c80fb3115daeab75666dbd41eb1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-replaygain.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 aa2fcc0f08033495a0ff2e2462517dfdb55a8c6f..ee613a80f9fd798fbae0344a93ea7c19ad45902b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtp.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 4156eb2839e72e93996a06498857a3c433b2a7a7..c086434909cf6952da61f9b948e2d63ff173a6d7 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtpmanager.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 9d8836884f170aaec4c7bcdfc9548a6b4aa28632..35ea89a612347570105b0f139c76f75dca544167 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-rtsp.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 0c718ba3468564bf8a4551f31a54e111c575833a..02ac16c141df906086823094e01bd6d8a2d4344f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-shapewipe.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 205680900f9915d4c80e2c1f6dc0e731127ba04b..4262e1700c60216832fa46c4be53432671be2ccd 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-shout2send.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 7ebf1062cc70b49bd26bb09166c246473367258c..6be6ed30a0f311f34cb26cb562a037ad200c853e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-smpte.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 b86fd55b35baf9605ae1d93d0cac2a5aa7e173c8..2aa3dcc3936de343db91b663a2f6680c0c916af0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-soup.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 28d45c0ba569e95463bd85498e751d33dc0b1fb4..5b5887b2996c13f4ae076747fe07d67d3796785c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-spectrum.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 348b6ebdc39e3ea32c930331d90eca2412c30c18..f959bff348b0363c9e393291fdbb5487e6967032 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-speex.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 22776165d12559df37d29d3df1079cb13e29a706..922c638e561ea42884f759746f15f891a7f37c36 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-taglib.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 4bfb407b8532f38464a920ff3961f00be34c08c7..4f11cae500dd9e880cf6d6277a4c69fb5e01e1c1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-udp.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 bd1199a1a090191b1623af9630ba87e6c1117d1d..d574b94e37d028839e1914ba92250f4b2af73129 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-video4linux2.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 5e73d5bde1f210c5dbfb6f2c5ee6f6fa2cd7d78f..f72336d291de73a0a26cc1a87a12db7dde1b17ce 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videobox.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 a32c68ac036a22a66c77486a345461fd2873a366..a3852102c06563145266b4b2cd3dcc4c197f87c7 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videocrop.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 f87f106ebca3d2443b90c5726191f54c51cba104..afe023b29bad3db6b715da25a19855f5a9aba9ab 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videofilter.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 5b64ac50179808a42a021be9660c10be0dc608ba..c57b2ab2eb2236ae3520917dd46b8dadf7912da0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-videomixer.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 27587a33f004cd0a8de2336eede1740f2e8602e8..6d0079c0800642c17b9405de22349ef570701a82 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-vpx.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 080d6ef71ff84d3d5967647aa4f25a800479d9d6..407b321fa9938d2a5d0ff81953d1a060a8bc7200 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavenc.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 70e8e10581a936a084a51ec4de04a10eda197a0f..de53f14f9595c0cbaa3298d9ef62a64d90785566 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavpack.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 782ab7dc56c68cf63332ce524d28b143af5bb5a9..5ab370352d46bb2a3000dc29edb59e279610949e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-wavparse.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 3c76dab5e0409f78e08ad6fda70eb0e412104313..96694581046b0eb77302e355a759c32f3bc62f58 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-ximagesrc.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> 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 0906334641b1e154c4c8f1888e82dd57115e4a95..88a49a1ef7a5f3fb070be79d1641a20d8850cedf 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-plugin-y4menc.html @@ -42,7 +42,7 @@ </tr> <tr> <td><p><span class="term">version</span></p></td> -<td>1.5.1</td> +<td>1.5.2</td> </tr> <tr> <td><p><span class="term">run-time license</span></p></td> diff --git a/docs/plugins/html/gst-plugins-good-plugins-pngdec.html b/docs/plugins/html/gst-plugins-good-plugins-pngdec.html index 80493f5dd04ec4f0d1f888d70ae3937a66a5b213..6fd428f4c7708300dc9a11422e0130433b277274 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-pngdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-pngdec.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-pngdec.top_of_page"></a>pngdec</span></h2> -<p>pngdec — Decode a png video frame to a raw image</p> +<p>pngdec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -137,8 +137,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-pngdec.functions_details"></a><h2>Functions</h2> @@ -149,8 +147,6 @@ <div class="refsect2"> <a name="GstPngDec-struct"></a><h3>struct GstPngDec</h3> <pre class="programlisting">struct GstPngDec;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-pngenc.html b/docs/plugins/html/gst-plugins-good-plugins-pngenc.html index b1ee519f77fad812fdc9bbfda2509a1bdf8f5d19..5b3f4c41d4d45b317608dc0321054c6b46614fc8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-pngenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-pngenc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-pngenc.top_of_page"></a>pngenc</span></h2> -<p>pngenc — Encode a video frame to a .png image</p> +<p>pngenc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -167,8 +167,6 @@ GstPngEnc implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-pngenc.functions_details"></a><h2>Functions</h2> @@ -179,8 +177,6 @@ GstPngEnc implements <div class="refsect2"> <a name="GstPngEnc-struct"></a><h3>struct GstPngEnc</h3> <pre class="programlisting">struct GstPngEnc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-progressreport.html b/docs/plugins/html/gst-plugins-good-plugins-progressreport.html index d061a4e0a6deae5090d16f774ef7d715b67f560e..3a79cc21fe056e1beadba0f33543783c707c1696 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-progressreport.html +++ b/docs/plugins/html/gst-plugins-good-plugins-progressreport.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-progressreport.top_of_page"></a>progressreport</span></h2> -<p>progressreport — Periodically query and report on processing progress</p> +<p>progressreport</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -221,8 +221,6 @@ a whole).</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-progressreport.functions_details"></a><h2>Functions</h2> @@ -233,8 +231,6 @@ a whole).</p> <div class="refsect2"> <a name="GstProgressReport-struct"></a><h3>struct GstProgressReport</h3> <pre class="programlisting">struct GstProgressReport;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-pulsesink.html b/docs/plugins/html/gst-plugins-good-plugins-pulsesink.html index 3433cfb47cbcfac1cbad7a18c4fef1303844e49e..ac67fca871863cb5d82b84b0ecda840992449d38 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-pulsesink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-pulsesink.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-pulsesink.top_of_page"></a>pulsesink</span></h2> -<p>pulsesink — Plays audio to a PulseAudio server</p> +<p>pulsesink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -214,8 +214,6 @@ GstPulseSink implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-pulsesink.functions_details"></a><h2>Functions</h2> @@ -226,8 +224,6 @@ GstPulseSink implements <div class="refsect2"> <a name="GstPulseSink-struct"></a><h3>struct GstPulseSink</h3> <pre class="programlisting">struct GstPulseSink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-pulsesrc.html b/docs/plugins/html/gst-plugins-good-plugins-pulsesrc.html index 5b656472f5133e1ece57b1999d639956355e03c9..b09efe161e117174e1f90985c26dd77f0c438ff5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-pulsesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-pulsesrc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-pulsesrc.top_of_page"></a>pulsesrc</span></h2> -<p>pulsesrc — Captures audio from a PulseAudio server</p> +<p>pulsesrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -201,8 +201,6 @@ GstPulseSrc implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-pulsesrc.functions_details"></a><h2>Functions</h2> @@ -213,8 +211,6 @@ GstPulseSrc implements <div class="refsect2"> <a name="GstPulseSrc-struct"></a><h3>struct GstPulseSrc</h3> <pre class="programlisting">struct GstPulseSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-qtdemux.html b/docs/plugins/html/gst-plugins-good-plugins-qtdemux.html index dda9043490e735c98fc35f759b72655bdfdacb34..dead661a9e8c5e2ad20b1daf1425a3b5cfd19022 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-qtdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-qtdemux.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-qtdemux.top_of_page"></a>qtdemux</span></h2> -<p>qtdemux — Demultiplex a QuickTime file into audio and video streams</p> +<p>qtdemux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -232,8 +232,6 @@ right decoder elements/plugins installed. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-qtdemux.functions_details"></a><h2>Functions</h2> @@ -244,8 +242,6 @@ right decoder elements/plugins installed. <div class="refsect2"> <a name="GstQTDemux-struct"></a><h3>struct GstQTDemux</h3> <pre class="programlisting">struct GstQTDemux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -256,30 +252,6 @@ right decoder elements/plugins installed. user_function (<a class="link" href="gst-plugins-good-plugins-qtdemux.html#GstQTDemux"><span class="type">GstQTDemux</span></a> *gstqtdemux, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg1, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.102.10.2.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstqtdemux</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-qtmoovrecover.html b/docs/plugins/html/gst-plugins-good-plugins-qtmoovrecover.html index d88934a430658d35280d8b9b6b583fbde1a1eac8..056fd1300490ba67045866a219e6f1aeda44f24b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-qtmoovrecover.html +++ b/docs/plugins/html/gst-plugins-good-plugins-qtmoovrecover.html @@ -180,8 +180,6 @@ TODO <a name="id-1.2.104.9.3.2"></a><h3>Element Pads</h3> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-qtmoovrecover.functions_details"></a><h2>Functions</h2> @@ -189,16 +187,12 @@ TODO <a name="gst-qt-moov-recover-get-type"></a><h3>gst_qt_moov_recover_get_type ()</h3> <pre class="programlisting"><a href="https://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> gst_qt_moov_recover_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre> -<p> -</p> </div> <hr> <div class="refsect2"> <a name="gst-qt-moov-recover-register"></a><h3>gst_qt_moov_recover_register ()</h3> <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> gst_qt_moov_recover_register (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPlugin.html"><span class="type">GstPlugin</span></a> *plugin</code></em>);</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -206,8 +200,6 @@ gst_qt_moov_recover_register (<em class="parameter"><code><a href="http://gstrea <div class="refsect2"> <a name="GstQTMoovRecover-struct"></a><h3>struct GstQTMoovRecover</h3> <pre class="programlisting">struct GstQTMoovRecover;</pre> -<p> -</p> </div> <hr> <div class="refsect2"> @@ -216,8 +208,6 @@ gst_qt_moov_recover_register (<em class="parameter"><code><a href="http://gstrea GstPipelineClass parent_class; }; </pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-qtmux.html b/docs/plugins/html/gst-plugins-good-plugins-qtmux.html index 07be5792b0b008fb1cbb9534b5103bb21c356ce3..dbbf8463088e66bcc5151b339fce3592e3692a9b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-qtmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-qtmux.html @@ -90,6 +90,26 @@ <td class="property_name"><a class="link" href="gst-plugins-good-plugins-qtmux.html#GstQTMux--trak-timescale" title="The “trak-timescale†property">trak-timescale</a></td> <td class="property_flags">Read / Write / Construct</td> </tr> +<tr> +<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-bytes-per-sec" title="The “reserved-bytes-per-sec†property">reserved-bytes-per-sec</a></td> +<td class="property_flags">Read / Write / Construct</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-duration-remaining" title="The “reserved-duration-remaining†property">reserved-duration-remaining</a></td> +<td class="property_flags">Read</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-max-duration" title="The “reserved-max-duration†property">reserved-max-duration</a></td> +<td class="property_flags">Read / Write</td> +</tr> +<tr> +<td class="property_type"><span class="type">guint64</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-moov-update-period" title="The “reserved-moov-update-period†property">reserved-moov-update-period</a></td> +<td class="property_flags">Read / Write</td> +</tr> </tbody> </table></div> </div> @@ -150,8 +170,21 @@ data can be spread out into fragments of <a class="link" href="gst-plugins-good- If such fragmented layout is intended for streaming purposes, then <a class="link" href="gst-plugins-good-plugins-qtmux.html#GstQTMux--streamable" title="The “streamable†property"><span class="type">“streamableâ€</span></a> allows foregoing to add index metadata (at the end of file).</p> +<p>When the maximum duration to be recorded can be known in advance, <a class="link" href="gst-plugins-good-plugins-qtmux.html#GstQTMux"><span class="type">GstQTMux</span></a> +also supports a 'Robust Muxing' mode. In robust muxing mode, space for the +headers are reserved at the start of muxing, and rewritten at a configurable +interval, so that the output file is always playable, even if the recording +is interrupted uncleanly by a crash. Robust muxing mode requires a seekable +output, such as filesink, because it needs to rewrite the start of the file.</p> +<p>To enable robust muxing mode, set the <span class="type">“reserved-moov-update-periodâ€</span> +and <span class="type">“reserved-max-durationâ€</span> property. Also present is the +<span class="type">“reserved-bytes-per-secâ€</span> property, which can be increased if +for some reason the default is not large enough and the initial reserved +space for headers is too small. Applications can monitor the +<span class="type">“reserved-duration-remainingâ€</span> property to see how close to full +the reserved space is becoming.</p> <div class="refsect2"> -<a name="id-1.2.103.8.7"></a><h3>Example pipelines</h3> +<a name="id-1.2.103.8.9"></a><h3>Example pipelines</h3> <div class="informalexample"> <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> <tbody> @@ -168,7 +201,7 @@ Records a video stream captured from a v4l2 device and muxes it into a qt file. <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.103.8.8.1"></a><h3>Element Information</h3> +<a name="id-1.2.103.8.10.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -194,7 +227,7 @@ Records a video stream captured from a v4l2 device and muxes it into a qt file. </div> <hr> <div class="refsect2"> -<a name="id-1.2.103.8.8.2"></a><h3>Element Pads</h3> +<a name="id-1.2.103.8.10.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -381,8 +414,6 @@ Records a video stream captured from a v4l2 device and muxes it into a qt file. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-qtmux.functions_details"></a><h2>Functions</h2> @@ -393,8 +424,6 @@ Records a video stream captured from a v4l2 device and muxes it into a qt file. <div class="refsect2"> <a name="GstQTMux-struct"></a><h3>struct GstQTMux</h3> <pre class="programlisting">struct GstQTMux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -471,6 +500,39 @@ Records a video stream captured from a v4l2 device and muxes it into a qt file. <p>Flags: Read / Write / Construct</p> <p>Default value: 0</p> </div> +<hr> +<div class="refsect2"> +<a name="GstQTMux--reserved-bytes-per-sec"></a><h3>The <code class="literal">“reserved-bytes-per-secâ€</code> property</h3> +<pre class="programlisting"> “reserved-bytes-per-sec†<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> +<p>Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track.</p> +<p>Flags: Read / Write / Construct</p> +<p>Allowed values: <= 10000</p> +<p>Default value: 550</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstQTMux--reserved-duration-remaining"></a><h3>The <code class="literal">“reserved-duration-remainingâ€</code> property</h3> +<pre class="programlisting"> “reserved-duration-remaining†<span class="type">guint64</span></pre> +<p>Reports the approximate amount of remaining moov header space reserved using reserved-max-duration.</p> +<p>Flags: Read</p> +<p>Default value: 0</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstQTMux--reserved-max-duration"></a><h3>The <code class="literal">“reserved-max-durationâ€</code> property</h3> +<pre class="programlisting"> “reserved-max-duration†<span class="type">guint64</span></pre> +<p>When set to a value > 0, reserves space for index tables at the beginning of the file.</p> +<p>Flags: Read / Write</p> +<p>Default value: 18446744073709551615</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstQTMux--reserved-moov-update-period"></a><h3>The <code class="literal">“reserved-moov-update-periodâ€</code> property</h3> +<pre class="programlisting"> “reserved-moov-update-period†<span class="type">guint64</span></pre> +<p>When used with reserved-max-duration, periodically updates the index tables with information muxed so far.</p> +<p>Flags: Read / Write</p> +<p>Default value: 18446744073709551615</p> +</div> </div> </div> <div class="footer"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-quarktv.html b/docs/plugins/html/gst-plugins-good-plugins-quarktv.html index 6023ea6c67a3a305a3194ff47f228e50c292487d..f6fdb8ae569f1345089a11ef18d188501842cbcc 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-quarktv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-quarktv.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-quarktv.top_of_page"></a>quarktv</span></h2> -<p>quarktv — Motion dissolver</p> +<p>quarktv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -170,8 +170,6 @@ the last frames randomly.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-quarktv.functions_details"></a><h2>Functions</h2> @@ -182,8 +180,6 @@ the last frames randomly.</p> <div class="refsect2"> <a name="GstQuarkTV-struct"></a><h3>struct GstQuarkTV</h3> <pre class="programlisting">struct GstQuarkTV;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-radioactv.html b/docs/plugins/html/gst-plugins-good-plugins-radioactv.html index bb6a3155f20b19ca3c72fc0810becc45ef6fd92e..4f6a109a71b5dc22b76025a6fbdfb05d611124df 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-radioactv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-radioactv.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-radioactv.top_of_page"></a>radioactv</span></h2> -<p>radioactv — motion-enlightment effect</p> +<p>radioactv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -192,8 +192,6 @@ previous frame displayed. The effect of strobe2 is stronger than strobe1.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-radioactv.functions_details"></a><h2>Functions</h2> @@ -204,8 +202,6 @@ previous frame displayed. The effect of strobe2 is stronger than strobe1.</p> <div class="refsect2"> <a name="GstRadioacTV-struct"></a><h3>struct GstRadioacTV</h3> <pre class="programlisting">struct GstRadioacTV;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-revtv.html b/docs/plugins/html/gst-plugins-good-plugins-revtv.html index 6cd088f2c64e02b2b3ca6b771d0e8b0d37ae1f1c..38d933a56dca3013b465daf2a7556141736df53c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-revtv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-revtv.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-revtv.top_of_page"></a>revtv</span></h2> -<p>revtv — A video waveform monitor for each line of video processed</p> +<p>revtv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -183,8 +183,6 @@ of the video along each line.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-revtv.functions_details"></a><h2>Functions</h2> @@ -195,8 +193,6 @@ of the video along each line.</p> <div class="refsect2"> <a name="GstRevTV-struct"></a><h3>struct GstRevTV</h3> <pre class="programlisting">struct GstRevTV;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rganalysis.html b/docs/plugins/html/gst-plugins-good-plugins-rganalysis.html index 31be2ec944c344604bb6dbab30c8b0cd58946469..72bc4b614eb87544932439e304cb1b1b642a9347 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rganalysis.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rganalysis.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rganalysis.top_of_page"></a>rganalysis</span></h2> -<p>rganalysis — Perform the ReplayGain analysis</p> +<p>rganalysis</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -249,8 +249,6 @@ and Frank Klemm. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rganalysis.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rglimiter.html b/docs/plugins/html/gst-plugins-good-plugins-rglimiter.html index 4ab733bfe320edbea30551221d0ba2d76fb9a712..62db74ff9cefd210e75ae2ffc0aff727f69b12bb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rglimiter.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rglimiter.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rglimiter.top_of_page"></a>rglimiter</span></h2> -<p>rglimiter — Apply signal compression to raw audio data</p> +<p>rglimiter</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -174,8 +174,6 @@ Playback of a file </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rglimiter.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rgvolume.html b/docs/plugins/html/gst-plugins-good-plugins-rgvolume.html index 5c1357a3243062ebc8be3c4f24dcb3d758e1d2aa..6e1de02d82fda4924bc7339f0c3d881bbf33990e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rgvolume.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rgvolume.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rgvolume.top_of_page"></a>rgvolume</span></h2> -<p>rgvolume — Apply ReplayGain volume adjustment</p> +<p>rgvolume</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -222,8 +222,6 @@ element applies -6 dB hard limiting as mentioned in the ReplayGain standard.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rgvolume.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rippletv.html b/docs/plugins/html/gst-plugins-good-plugins-rippletv.html index 97adc618e2e3f2b25839d42214a2e8d806534aba..1ea3db3c2e7c837a3f7df720287407a7cb62bdab 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rippletv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rippletv.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rippletv.top_of_page"></a>rippletv</span></h2> -<p>rippletv — RippleTV does ripple mark effect on the video input</p> +<p>rippletv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -177,8 +177,6 @@ by motion or random rain drops.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rippletv.functions_details"></a><h2>Functions</h2> @@ -189,8 +187,6 @@ by motion or random rain drops.</p> <div class="refsect2"> <a name="GstRippleTV-struct"></a><h3>struct GstRippleTV</h3> <pre class="programlisting">struct GstRippleTV;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpL16depay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpL16depay.html index fc0fb3bcc4802b22d3e2aa4cb81f5921f7fbb35e..3bd4baf1cee4c2f18f8c82ff150f5028ab735b6d 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpL16depay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpL16depay.html @@ -28,7 +28,7 @@ <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> +<p>rtpL16depay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -158,8 +158,6 @@ the rtpL16pay example to create the RTP stream. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpL16depay.functions_details"></a><h2>Functions</h2> @@ -170,8 +168,6 @@ the rtpL16pay example to create the RTP stream. <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"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpL16pay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpL16pay.html index 56d5663061f81c1258909eb77a9c779c2c8899e1..04f102480c503b6c6d8dc2570a6cb8773fd5c36c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpL16pay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpL16pay.html @@ -28,7 +28,7 @@ <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> +<p>rtpL16pay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -163,8 +163,6 @@ the rtpL16depay example to depayload and play the RTP stream. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpL16pay.functions_details"></a><h2>Functions</h2> @@ -175,8 +173,6 @@ the rtpL16depay example to depayload and play the RTP stream. <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"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpac3depay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpac3depay.html index 4c13d985fc77677f4246d7035f108675a117c96f..2d3d0d3cd90793671605f810eab8c61a590919c8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpac3depay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpac3depay.html @@ -28,7 +28,7 @@ <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> +<p>rtpac3depay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -154,8 +154,6 @@ the rtpac3pay example to create the RTP stream. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpac3depay.functions_details"></a><h2>Functions</h2> @@ -166,8 +164,6 @@ the rtpac3pay example to create the RTP stream. <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"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpac3pay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpac3pay.html index 6b7d1837c4b69566f1c086c658d0707a2fbf0e1f..4db6bb28b3b191023ba48501a4aaec95fafb92f1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpac3pay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpac3pay.html @@ -28,7 +28,7 @@ <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> +<p>rtpac3pay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -158,8 +158,6 @@ the rtpac3depay example to depayload and decode the RTP stream. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpac3pay.functions_details"></a><h2>Functions</h2> @@ -170,8 +168,6 @@ the rtpac3depay example to depayload and decode the RTP stream. <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"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpamrdepay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpamrdepay.html index c83a972229a80213afc3baf3b878671121a9403f..529e7292770cfda8048871e99574781f0f94d14c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpamrdepay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpamrdepay.html @@ -28,7 +28,7 @@ <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> +<p>rtpamrdepay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -162,8 +162,6 @@ the rtpamrpay example to create the RTP stream. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpamrdepay.functions_details"></a><h2>Functions</h2> @@ -174,8 +172,6 @@ the rtpamrpay example to create the RTP stream. <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"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpamrpay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpamrpay.html index bc28880057be331899f6a5d4673992a891e9754e..d673e6859750ec78f8d68e5bf8c84b7fb2f76786 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpamrpay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpamrpay.html @@ -28,7 +28,7 @@ <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> +<p>rtpamrpay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -162,8 +162,6 @@ the rtpamrdepay example to depayload and decode the RTP stream. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpamrpay.functions_details"></a><h2>Functions</h2> @@ -174,8 +172,6 @@ the rtpamrdepay example to depayload and decode the RTP stream. <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"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpbin.html b/docs/plugins/html/gst-plugins-good-plugins-rtpbin.html index fa52ea23073786f159d71876eadd2ae7d8a44b61..55a005fbd0422008e644d919cb0da2282f4b10ca 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpbin.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpbin.html @@ -31,7 +31,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpbin.top_of_page"></a>rtpbin</span></h2> -<p>rtpbin — Real-Time Transport Protocol bin</p> +<p>rtpbin</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -115,6 +115,11 @@ <td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--rtp-profile" title="The “rtp-profile†property">rtp-profile</a></td> <td class="property_flags">Read / Write</td> </tr> +<tr> +<td class="property_type"><span class="type">GstRtpNtpTimeSource</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin--ntp-time-source" title="The “ntp-time-source†property">ntp-time-source</a></td> +<td class="property_flags">Read / Write</td> +</tr> </tbody> </table></div> </div> @@ -130,120 +135,120 @@ <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-clear-pt-map" title="The “clear-pt-map†signal">clear-pt-map</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> <tr> <td class="signal_type"> <span class="returnvalue">RTPSession</span>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-get-internal-session" title="The “get-internal-session†signal">get-internal-session</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-bye-ssrc" title="The “on-bye-ssrc†signal">on-bye-ssrc</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-bye-timeout" title="The “on-bye-timeout†signal">on-bye-timeout</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-new-ssrc" title="The “on-new-ssrc†signal">on-new-ssrc</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-npt-stop" title="The “on-npt-stop†signal">on-npt-stop</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-sender-timeout" title="The “on-sender-timeout†signal">on-sender-timeout</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-ssrc-active" title="The “on-ssrc-active†signal">on-ssrc-active</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-ssrc-collision" title="The “on-ssrc-collision†signal">on-ssrc-collision</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-ssrc-sdes" title="The “on-ssrc-sdes†signal">on-ssrc-sdes</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-ssrc-validated" title="The “on-ssrc-validated†signal">on-ssrc-validated</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-on-timeout" title="The “on-timeout†signal">on-timeout</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="returnvalue">GstCaps</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-pt-map" title="The “request-pt-map†signal">request-pt-map</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-reset-sync" title="The “reset-sync†signal">reset-sync</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-payload-type-change" title="The “payload-type-change†signal">payload-type-change</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-new-jitterbuffer" title="The “new-jitterbuffer†signal">new-jitterbuffer</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="returnvalue">GstElement</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-aux-receiver" title="The “request-aux-receiver†signal">request-aux-receiver</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="returnvalue">GstElement</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-aux-sender" title="The “request-aux-sender†signal">request-aux-sender</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="returnvalue">GstElement</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-rtcp-decoder" title="The “request-rtcp-decoder†signal">request-rtcp-decoder</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="returnvalue">GstElement</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-rtcp-encoder" title="The “request-rtcp-encoder†signal">request-rtcp-encoder</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="returnvalue">GstElement</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-rtp-decoder" title="The “request-rtp-decoder†signal">request-rtp-decoder</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="returnvalue">GstElement</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-rtp-encoder" title="The “request-rtp-encoder†signal">request-rtp-encoder</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> </tbody> </table></div> @@ -625,8 +630,6 @@ on port 5007. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpbin.functions_details"></a><h2>Functions</h2> @@ -637,8 +640,6 @@ on port 5007. <div class="refsect2"> <a name="GstRtpBin-struct"></a><h3>struct GstRtpBin</h3> <pre class="programlisting">struct GstRtpBin;</pre> -<p> -</p> </div> <hr> <div class="refsect2"> @@ -668,28 +669,28 @@ RTP_JITTER_BUFFER_MODE_LAST: last buffer mode.</p> <tbody> <tr> <td class="enum_member_name"><p><a name="RTP-JITTER-BUFFER-MODE-NONE:CAPS"></a>RTP_JITTER_BUFFER_MODE_NONE</p></td> -<td class="enum_member_description"> </td> -<td class="enum_member_annotations"> </td> +<td> </td> +<td> </td> </tr> <tr> <td class="enum_member_name"><p><a name="RTP-JITTER-BUFFER-MODE-SLAVE:CAPS"></a>RTP_JITTER_BUFFER_MODE_SLAVE</p></td> -<td class="enum_member_description"> </td> -<td class="enum_member_annotations"> </td> +<td> </td> +<td> </td> </tr> <tr> <td class="enum_member_name"><p><a name="RTP-JITTER-BUFFER-MODE-BUFFER:CAPS"></a>RTP_JITTER_BUFFER_MODE_BUFFER</p></td> -<td class="enum_member_description"> </td> -<td class="enum_member_annotations"> </td> +<td> </td> +<td> </td> </tr> <tr> <td class="enum_member_name"><p><a name="RTP-JITTER-BUFFER-MODE-SYNCED:CAPS"></a>RTP_JITTER_BUFFER_MODE_SYNCED</p></td> -<td class="enum_member_description"> </td> -<td class="enum_member_annotations"> </td> +<td> </td> +<td> </td> </tr> <tr> <td class="enum_member_name"><p><a name="RTP-JITTER-BUFFER-MODE-LAST:CAPS"></a>RTP_JITTER_BUFFER_MODE_LAST</p></td> -<td class="enum_member_description"> </td> -<td class="enum_member_annotations"> </td> +<td> </td> +<td> </td> </tr> </tbody> </table></div> @@ -698,10 +699,8 @@ RTP_JITTER_BUFFER_MODE_LAST: last buffer mode.</p> <hr> <div class="refsect2"> <a name="GstRTCPSync"></a><h3>enum GstRTCPSync</h3> -<p> -</p> <div class="refsect3"> -<a name="id-1.2.124.11.4.4"></a><h4>Members</h4> +<a name="id-1.2.124.11.4.3"></a><h4>Members</h4> <div class="informaltable"><table width="100%" border="0"> <colgroup> <col width="300px" class="enum_members_name"> @@ -711,18 +710,18 @@ RTP_JITTER_BUFFER_MODE_LAST: last buffer mode.</p> <tbody> <tr> <td class="enum_member_name"><p><a name="GST-RTP-BIN-RTCP-SYNC-ALWAYS:CAPS"></a>GST_RTP_BIN_RTCP_SYNC_ALWAYS</p></td> -<td class="enum_member_description"> </td> -<td class="enum_member_annotations"> </td> +<td> </td> +<td> </td> </tr> <tr> <td class="enum_member_name"><p><a name="GST-RTP-BIN-RTCP-SYNC-INITIAL:CAPS"></a>GST_RTP_BIN_RTCP_SYNC_INITIAL</p></td> -<td class="enum_member_description"> </td> -<td class="enum_member_annotations"> </td> +<td> </td> +<td> </td> </tr> <tr> <td class="enum_member_name"><p><a name="GST-RTP-BIN-RTCP-SYNC-RTP:CAPS"></a>GST_RTP_BIN_RTCP_SYNC_RTP</p></td> -<td class="enum_member_description"> </td> -<td class="enum_member_annotations"> </td> +<td> </td> +<td> </td> </tr> </tbody> </table></div> @@ -793,7 +792,7 @@ used to synchronize receivers on multiple machines.</p> <div class="refsect2"> <a name="GstRtpBin--use-pipeline-clock"></a><h3>The <code class="literal">“use-pipeline-clockâ€</code> property</h3> <pre class="programlisting"> “use-pipeline-clock†<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> -<p>Use the pipeline running-time to set the NTP time in the RTCP SR messages.</p> +<p>Use the pipeline running-time to set the NTP time in the RTCP SR messages (DEPRECATED: Use ntp-source property).</p> <p>Flags: Read / Write</p> <p>Default value: FALSE</p> </div> @@ -848,7 +847,15 @@ set the <span class="type">“do-retransmissionâ€</span> property on the <p>Sets the default RTP profile of newly created RTP sessions. The profile can be changed afterwards on a per-session basis.</p> <p>Flags: Read / Write</p> -<p>Default value: GST_RTP_PROFILE_AVPF</p> +<p>Default value: GST_RTP_PROFILE_AVP</p> +</div> +<hr> +<div class="refsect2"> +<a name="GstRtpBin--ntp-time-source"></a><h3>The <code class="literal">“ntp-time-sourceâ€</code> property</h3> +<pre class="programlisting"> “ntp-time-source†<span class="type">GstRtpNtpTimeSource</span></pre> +<p>NTP time source for RTCP packets.</p> +<p>Flags: Read / Write</p> +<p>Default value: NTP time based on realtime clock</p> </div> </div> <div class="refsect1"> @@ -882,7 +889,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> <hr> <div class="refsect2"> @@ -920,7 +927,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> <hr> <div class="refsect2"> @@ -963,7 +970,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1006,7 +1013,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1050,7 +1057,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1093,7 +1100,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1136,7 +1143,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1179,7 +1186,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1222,7 +1229,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1265,7 +1272,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1308,7 +1315,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1351,7 +1358,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1396,7 +1403,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1428,7 +1435,7 @@ packets for all streams before lip-sync is attempted again.</p> </tbody> </table></div> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> <hr> <div class="refsect2"> @@ -1473,7 +1480,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtp </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1527,7 +1534,7 @@ This signal can, for example, be used to configure <em class="parameter"><code>j </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> <p class="since">Since: 1.4</p> </div> <hr> @@ -1568,7 +1575,7 @@ element will be added to the bin.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> <p class="since">Since: 1.4</p> </div> <hr> @@ -1609,7 +1616,7 @@ element will be added to the bin.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> <p class="since">Since: 1.4</p> </div> <hr> @@ -1650,7 +1657,7 @@ element will be added to the bin if not previously added.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> <p class="since">Since: 1.4</p> </div> <hr> @@ -1691,7 +1698,7 @@ element will be added to the bin if not previously added.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> <p class="since">Since: 1.4</p> </div> <hr> @@ -1732,7 +1739,7 @@ element will be added to the bin if not previously added.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> <p class="since">Since: 1.4</p> </div> <hr> @@ -1773,7 +1780,7 @@ element will be added to the bin if not previously added.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> <p class="since">Since: 1.4</p> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpbvdepay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpbvdepay.html index 4528e0dc7c1818e61204d7e6de529df62a6efaaa..387390da92b73a491c40cccde836c66d7a8961b8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpbvdepay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpbvdepay.html @@ -27,7 +27,7 @@ <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> +<p>rtpbvdepay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -38,7 +38,7 @@ For detailed information see: http://www.rfc-editor.org/rfc/rfc4298.txt</p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.116.3.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.116.3.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -64,7 +64,7 @@ For detailed information see: http://www.rfc-editor.org/rfc/rfc4298.txt</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.116.3.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.116.3.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -119,8 +119,6 @@ For detailed information see: http://www.rfc-editor.org/rfc/rfc4298.txt</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpbvdepay.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpbvpay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpbvpay.html index 736e1562733b68d5f725878374a566bcc2a01a34..160811e4f5d7ea050776a08c935a20a0cfb2688a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpbvpay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpbvpay.html @@ -27,7 +27,7 @@ <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> +<p>rtpbvpay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -38,7 +38,7 @@ For detailed information see: http://www.rfc-editor.org/rfc/rfc4298.txt</p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.117.3.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.117.3.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -64,7 +64,7 @@ For detailed information see: http://www.rfc-editor.org/rfc/rfc4298.txt</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.117.3.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.117.3.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -119,8 +119,6 @@ For detailed information see: http://www.rfc-editor.org/rfc/rfc4298.txt</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpbvpay.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpdec.html b/docs/plugins/html/gst-plugins-good-plugins-rtpdec.html index ecd863dc4bca197696fe157e0896ad1ca3d28ba0..e4ff8f42887b761c40f34194304e9bc0c1ef06f5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpdec.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpdec.top_of_page"></a>rtpdec</span></h2> -<p>rtpdec — Accepts raw RTP and RTCP packets and sends them forward</p> +<p>rtpdec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -68,43 +68,43 @@ <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-clear-pt-map" title="The “clear-pt-map†signal">clear-pt-map</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="returnvalue">GstCaps</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-request-pt-map" title="The “request-pt-map†signal">request-pt-map</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-bye-ssrc" title="The “on-bye-ssrc†signal">on-bye-ssrc</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-bye-timeout" title="The “on-bye-timeout†signal">on-bye-timeout</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-new-ssrc" title="The “on-new-ssrc†signal">on-new-ssrc</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-ssrc-collision" title="The “on-ssrc-collision†signal">on-ssrc-collision</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-ssrc-validated" title="The “on-ssrc-validated†signal">on-ssrc-validated</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTPDec-on-timeout" title="The “on-timeout†signal">on-timeout</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> </tbody> </table></div> @@ -137,7 +137,7 @@ <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.111.8.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.111.8.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -163,7 +163,7 @@ </div> <hr> <div class="refsect2"> -<a name="id-1.2.111.8.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.111.8.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -262,8 +262,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpdec.functions_details"></a><h2>Functions</h2> @@ -274,8 +272,6 @@ <div class="refsect2"> <a name="GstRTPDec-struct"></a><h3>struct GstRTPDec</h3> <pre class="programlisting">struct GstRTPDec;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -303,31 +299,7 @@ <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTPDec"><span class="type">GstRTPDec</span></a> *gstrtpdec, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.111.12.2.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstrtpdec</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -372,7 +344,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTP </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -415,7 +387,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTP </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -458,7 +430,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTP </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -502,7 +474,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTP </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -512,31 +484,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTP <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg1, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg2, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.111.12.7.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstrtpdec</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -546,31 +494,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTP <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg1, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg2, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.111.12.8.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstrtpdec</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -613,7 +537,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpdec.html#GstRTP </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfmux.html b/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfmux.html index 197739563a7a5010e6349c05009f1ffb8c5db281..06a86509f1412b8a51a9c4aede73285b731985ce 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfmux.html @@ -28,7 +28,7 @@ <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> +<p>rtpdtmfmux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -67,7 +67,7 @@ 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.6.3.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.125.6.4.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -93,7 +93,7 @@ DTMF signal can replace the recorded audio while the tone is being sent.</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.125.6.3.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.125.6.4.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -168,8 +168,6 @@ DTMF signal can replace the recorded audio while the tone is being sent.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpdtmfmux.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfsrc.html b/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfsrc.html index a418f923e032598f720e57cb74c18046303144ff..af7b43410ecfef4b00bacc06dc353b05e693d024 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfsrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpdtmfsrc.html @@ -29,7 +29,7 @@ <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> +<p>rtpdtmfsrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -194,7 +194,7 @@ READY state, then a "dtmf-event-dropped" message is posted on the <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.126.7.6.4.1"></a><h3>Element Information</h3> +<a name="id-1.2.126.7.7.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -220,7 +220,7 @@ READY state, then a "dtmf-event-dropped" message is posted on the </div> <hr> <div class="refsect2"> -<a name="id-1.2.126.7.6.4.2"></a><h3>Element Pads</h3> +<a name="id-1.2.126.7.7.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -247,8 +247,6 @@ READY state, then a "dtmf-event-dropped" message is posted on the </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpdtmfsrc.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpj2kpay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpj2kpay.html index b78b6f3fd9e0a70b7074e9b8e37eb4d718dd8bad..5a8c8381f503ad2e056c49d54d95741d964861cb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpj2kpay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpj2kpay.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpj2kpay.top_of_page"></a>rtpj2kpay</span></h2> -<p>rtpj2kpay — Payload-encodes JPEG 2000 pictures into RTP packets (RFC 5371)</p> +<p>rtpj2kpay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -81,7 +81,7 @@ codestream.</p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.120.7.3.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.120.7.4.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -107,7 +107,7 @@ codestream.</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.120.7.3.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.120.7.4.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -158,8 +158,6 @@ codestream.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpj2kpay.functions_details"></a><h2>Functions</h2> @@ -170,8 +168,6 @@ codestream.</p> <div class="refsect2"> <a name="GstRtpJ2KPay-struct"></a><h3>struct GstRtpJ2KPay</h3> <pre class="programlisting">struct GstRtpJ2KPay;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html b/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html index ee576663836c8266683229a5918559acec184529..ad15eeaea7209b250e7615d8090e19dd330a7ab1 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpjitterbuffer.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpjitterbuffer.top_of_page"></a>rtpjitterbuffer</span></h2> -<p>rtpjitterbuffer — A buffer that deals with network jitter and other transmission faults</p> +<p>rtpjitterbuffer</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -139,28 +139,28 @@ <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-clear-pt-map" title="The “clear-pt-map†signal">clear-pt-map</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-handle-sync" title="The “handle-sync†signal">handle-sync</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-on-npt-stop" title="The “on-npt-stop†signal">on-npt-stop</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="returnvalue">GstCaps</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-request-pt-map" title="The “request-pt-map†signal">request-pt-map</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">guint64</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer-set-active" title="The “set-active†signal">set-active</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> </tbody> </table></div> @@ -357,8 +357,6 @@ out-of-order RTP packets. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpjitterbuffer.functions_details"></a><h2>Functions</h2> @@ -588,7 +586,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.ht </tbody> </table></div> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> <hr> <div class="refsect2"> @@ -625,7 +623,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.ht </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -657,7 +655,7 @@ the npt-stop position.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -695,7 +693,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.ht </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -733,7 +731,7 @@ useful in buffering mode.</p> <a name="id-1.2.127.12.6.6"></a><h4>Returns</h4> <p> the time of the last pushed packet.</p> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpjpegpay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpjpegpay.html index ebb5c60b76d633778bbd4955d22db23cb5f41136..99fd0b1b9c2bedc7da05ad6bd999e344c1142bde 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpjpegpay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpjpegpay.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpjpegpay.top_of_page"></a>rtpjpegpay</span></h2> -<p>rtpjpegpay — Payload-encodes JPEG pictures into RTP packets (RFC 2435)</p> +<p>rtpjpegpay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -94,7 +94,7 @@ the actual JPEG entropy scan.</p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.121.7.4.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.121.7.5.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -120,7 +120,7 @@ the actual JPEG entropy scan.</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.121.7.4.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.121.7.5.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -175,8 +175,6 @@ the actual JPEG entropy scan.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpjpegpay.functions_details"></a><h2>Functions</h2> @@ -187,8 +185,6 @@ the actual JPEG entropy scan.</p> <div class="refsect2"> <a name="GstRtpJPEGPay-struct"></a><h3>struct GstRtpJPEGPay</h3> <pre class="programlisting">struct GstRtpJPEGPay;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpmux.html b/docs/plugins/html/gst-plugins-good-plugins-rtpmux.html index 85b2ef4f2cf4c2ac5b83a7a926d7bfdd6ccd0ce5..164b4ead6090e5ec1a71aa3857b7ff5c0b83bc4b 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpmux.html @@ -29,7 +29,7 @@ <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> +<p>rtpmux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -199,8 +199,6 @@ so they can be sent on the same port. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpmux.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html b/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html index 286eb558c9c894f288b309ed610303add068d7f6..7d9e33c6a22781bc6a7d321838f2cd836e0ec1e2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpptdemux.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpptdemux.top_of_page"></a>rtpptdemux</span></h2> -<p>rtpptdemux — Parses codec streams transmitted in the same RTP session</p> +<p>rtpptdemux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -45,23 +45,23 @@ <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-clear-pt-map" title="The “clear-pt-map†signal">clear-pt-map</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-new-payload-type" title="The “new-payload-type†signal">new-payload-type</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-payload-type-change" title="The “payload-type-change†signal">payload-type-change</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="returnvalue">GstCaps</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#GstRtpPtDemux-request-pt-map" title="The “request-pt-map†signal">request-pt-map</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> </tbody> </table></div> @@ -195,8 +195,6 @@ payload type to fakesink, discarding the other payload types. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpptdemux.functions_details"></a><h2>Functions</h2> @@ -207,8 +205,6 @@ payload type to fakesink, discarding the other payload types. <div class="refsect2"> <a name="GstRtpPtDemux-struct"></a><h3>struct GstRtpPtDemux</h3> <pre class="programlisting">struct GstRtpPtDemux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -242,7 +238,7 @@ currently cached payload type map.</p> </tbody> </table></div> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> <hr> <div class="refsect2"> @@ -286,7 +282,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#Gs </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -323,7 +319,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#Gs </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -361,7 +357,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpptdemux.html#Gs </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtprtxreceive.html b/docs/plugins/html/gst-plugins-good-plugins-rtprtxreceive.html index 74aea642fa153764fd5b556801733b39c312dfb2..2be4bb752f198835fde78a49ed2fe4625b1c0efb 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtprtxreceive.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtprtxreceive.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtprtxreceive.top_of_page"></a>rtprtxreceive</span></h2> -<p>rtprtxreceive — Receive retransmitted RTP packets according to RFC4588</p> +<p>rtprtxreceive</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -319,8 +319,6 @@ You should hear a clear sound. (after a few seconds the two streams wave feel sy </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtprtxreceive.functions_details"></a><h2>Functions</h2> @@ -331,8 +329,6 @@ You should hear a clear sound. (after a few seconds the two streams wave feel sy <div class="refsect2"> <a name="GstRtpRtxReceive-struct"></a><h3>struct GstRtpRtxReceive</h3> <pre class="programlisting">struct GstRtpRtxReceive;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtprtxsend.html b/docs/plugins/html/gst-plugins-good-plugins-rtprtxsend.html index 9d136f3366ff0300e7a2d607590a5e6ffa8e2df2..4c388bd833137a72b0d0a13d8e17fe034bafb5c6 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtprtxsend.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtprtxsend.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtprtxsend.top_of_page"></a>rtprtxsend</span></h2> -<p>rtprtxsend — Retransmit RTP packets when needed, according to RFC4588</p> +<p>rtprtxsend</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -117,7 +117,7 @@ this as an auxiliary stream. RTX is SSRC-multiplexed</p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.132.7.3.2.1"></a><h3>Element Information</h3> +<a name="id-1.2.132.7.4.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -143,7 +143,7 @@ this as an auxiliary stream. RTX is SSRC-multiplexed</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.132.7.3.2.2"></a><h3>Element Pads</h3> +<a name="id-1.2.132.7.4.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -194,8 +194,6 @@ this as an auxiliary stream. RTX is SSRC-multiplexed</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtprtxsend.functions_details"></a><h2>Functions</h2> @@ -206,8 +204,6 @@ this as an auxiliary stream. RTX is SSRC-multiplexed</p> <div class="refsect2"> <a name="GstRtpRtxSend-struct"></a><h3>struct GstRtpRtxSend</h3> <pre class="programlisting">struct GstRtpRtxSend;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpsbcpay.html b/docs/plugins/html/gst-plugins-good-plugins-rtpsbcpay.html index c8ec23a3225e82ed59026b0ec7034c3b10632e19..910c980fea1ae497728b27d1b2bd6fd84e3267af 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpsbcpay.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpsbcpay.html @@ -29,7 +29,7 @@ <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> +<p>rtpsbcpay</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -153,8 +153,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpsbcpay.functions_details"></a><h2>Functions</h2> @@ -165,8 +163,6 @@ <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"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html b/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html index 7fb46851297ef0eb7a8be85f37fe2117bfb49c0b..0ca137083583d7e99613096d7231dd2568a1781a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpsession.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpsession.top_of_page"></a>rtpsession</span></h2> -<p>rtpsession — Implement an RTP session</p> +<p>rtpsession</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -116,6 +116,11 @@ <td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession--rtp-profile" title="The “rtp-profile†property">rtp-profile</a></td> <td class="property_flags">Read / Write</td> </tr> +<tr> +<td class="property_type"><span class="type">GstRtpNtpTimeSource</span></td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession--ntp-time-source" title="The “ntp-time-source†property">ntp-time-source</a></td> +<td class="property_flags">Read / Write</td> +</tr> </tbody> </table></div> </div> @@ -131,58 +136,58 @@ <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-clear-pt-map" title="The “clear-pt-map†signal">clear-pt-map</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-bye-ssrc" title="The “on-bye-ssrc†signal">on-bye-ssrc</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-bye-timeout" title="The “on-bye-timeout†signal">on-bye-timeout</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-new-ssrc" title="The “on-new-ssrc†signal">on-new-ssrc</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-sender-timeout" title="The “on-sender-timeout†signal">on-sender-timeout</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-ssrc-active" title="The “on-ssrc-active†signal">on-ssrc-active</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-ssrc-collision" title="The “on-ssrc-collision†signal">on-ssrc-collision</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-ssrc-sdes" title="The “on-ssrc-sdes†signal">on-ssrc-sdes</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-ssrc-validated" title="The “on-ssrc-validated†signal">on-ssrc-validated</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-timeout" title="The “on-timeout†signal">on-timeout</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="returnvalue">GstCaps</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession-request-pt-map" title="The “request-pt-map†signal">request-pt-map</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> </tbody> </table></div> @@ -513,8 +518,6 @@ keep (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstr </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpsession.functions_details"></a><h2>Functions</h2> @@ -525,8 +528,6 @@ keep (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstr <div class="refsect2"> <a name="GstRtpSession-struct"></a><h3>struct GstRtpSession</h3> <pre class="programlisting">struct GstRtpSession;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -608,7 +609,7 @@ keep (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstr <div class="refsect2"> <a name="GstRtpSession--use-pipeline-clock"></a><h3>The <code class="literal">“use-pipeline-clockâ€</code> property</h3> <pre class="programlisting"> “use-pipeline-clock†<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> -<p>Use the pipeline running-time to set the NTP time in the RTCP SR messages.</p> +<p>Use the pipeline running-time to set the NTP time in the RTCP SR messages (DEPRECATED: Use ntp-source property).</p> <p>Flags: Read / Write</p> <p>Default value: FALSE</p> </div> @@ -643,6 +644,14 @@ keep (see <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstr <p>Flags: Read / Write</p> <p>Default value: GST_RTP_PROFILE_AVP</p> </div> +<hr> +<div class="refsect2"> +<a name="GstRtpSession--ntp-time-source"></a><h3>The <code class="literal">“ntp-time-sourceâ€</code> property</h3> +<pre class="programlisting"> “ntp-time-source†<span class="type">GstRtpNtpTimeSource</span></pre> +<p>NTP time source for RTCP packets.</p> +<p>Flags: Read / Write</p> +<p>Default value: NTP time based on realtime clock</p> +</div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpsession.signal-details"></a><h2>Signal Details</h2> @@ -674,7 +683,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs </tbody> </table></div> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> <hr> <div class="refsect2"> @@ -711,7 +720,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -748,7 +757,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -786,7 +795,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -823,7 +832,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -832,31 +841,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession"><span class="type">GstRtpSession</span></a> *gstrtpsession, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg1, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.130.12.7.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstrtpsession</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -865,31 +850,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession"><span class="type">GstRtpSession</span></a> *gstrtpsession, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg1, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.130.12.8.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstrtpsession</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -926,7 +887,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -935,31 +896,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#GstRtpSession"><span class="type">GstRtpSession</span></a> *gstrtpsession, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> arg1, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.130.12.10.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstrtpsession</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -996,7 +933,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -1034,7 +971,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpsession.html#Gs </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html b/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html index 5a40e51c1d85d74c33e57147ef59d0216fea6e21..e480f1e8bea48bdc6bbda75a0fba4979fabd008c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtpssrcdemux.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpssrcdemux.top_of_page"></a>rtpssrcdemux</span></h2> -<p>rtpssrcdemux — Splits RTP streams based on the SSRC</p> +<p>rtpssrcdemux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -45,17 +45,17 @@ <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-clear-ssrc" title="The “clear-ssrc†signal">clear-ssrc</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-new-ssrc-pad" title="The “new-ssrc-pad†signal">new-ssrc-pad</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtpssrcdemux.html#GstRtpSsrcDemux-removed-ssrc-pad" title="The “removed-ssrc-pad†signal">removed-ssrc-pad</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> </tbody> </table></div> @@ -232,8 +232,6 @@ to fakesink, discarding the other SSRCs. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtpssrcdemux.functions_details"></a><h2>Functions</h2> @@ -244,8 +242,6 @@ to fakesink, discarding the other SSRCs. <div class="refsect2"> <a name="GstRtpSsrcDemux-struct"></a><h3>struct GstRtpSsrcDemux</h3> <pre class="programlisting">struct GstRtpSsrcDemux;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -284,7 +280,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpssrcdemux.html# </tbody> </table></div> </div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> <hr> <div class="refsect2"> @@ -327,7 +323,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpssrcdemux.html# </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> <hr> <div class="refsect2"> @@ -370,7 +366,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtpssrcdemux.html# </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html b/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html index ed25e8b1ac2b1a391a3cc9b5d4d82c2066e2b89c..fd540eea4594786e30450a859159f2bd1f4f55d7 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-rtspsrc.html @@ -31,7 +31,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtspsrc.top_of_page"></a>rtspsrc</span></h2> -<p>rtspsrc — Receive data over the network via RTSP (RFC 2326)</p> +<p>rtspsrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -209,6 +209,12 @@ <td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--do-retransmission" title="The “do-retransmission†property">do-retransmission</a></td> <td class="property_flags">Read / Write</td> </tr> +<tr> +<td class="property_type"> +<a href="https://developer.gnome.org/gio/unstable/GTlsInteraction.html"><span class="type">GTlsInteraction</span></a> *</td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--tls-interaction" title="The “tls-interaction†property">tls-interaction</a></td> +<td class="property_flags">Read / Write</td> +</tr> </tbody> </table></div> </div> @@ -234,18 +240,18 @@ <tr> <td class="signal_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-select-stream" title="The “select-stream†signal">select-stream</a></td> -<td class="signal_flags">Run First</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td> </tr> <tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-new-manager" title="The “new-manager†signal">new-manager</a></td> -<td class="signal_flags">Run First</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td> </tr> <tr> <td class="signal_type"> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="returnvalue">GstCaps</span></a>*</td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc-request-rtcp-key" title="The “request-rtcp-key†signal">request-rtcp-key</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr> </tbody> </table></div> @@ -374,8 +380,6 @@ fakesink. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtspsrc.functions_details"></a><h2>Functions</h2> @@ -386,8 +390,6 @@ fakesink. <div class="refsect2"> <a name="GstRTSPSrc-struct"></a><h3>struct GstRTSPSrc</h3> <pre class="programlisting">struct GstRTSPSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -649,6 +651,13 @@ keep alive and then this property needs to be set to FALSE.</p> <p>Flags: Read / Write</p> <p>Default value: TRUE</p> </div> +<hr> +<div class="refsect2"> +<a name="GstRTSPSrc--tls-interaction"></a><h3>The <code class="literal">“tls-interactionâ€</code> property</h3> +<pre class="programlisting"> “tls-interaction†<a href="https://developer.gnome.org/gio/unstable/GTlsInteraction.html"><span class="type">GTlsInteraction</span></a> *</pre> +<p>A GTlsInteraction object to promt the user for password or certificate.</p> +<p>Flags: Read / Write</p> +</div> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-rtspsrc.signal-details"></a><h2>Signal Details</h2> @@ -796,7 +805,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-rtspsrc.html#GstRT <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when the stream should be selected, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when the stream is to be ignored.</p> </div> -<p>Flags: Run First</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p> <p class="since">Since: 1.2</p> </div> <hr> @@ -835,7 +844,7 @@ properties were configured.</p> </tbody> </table></div> </div> -<p>Flags: Run First</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p> <p class="since">Since: 1.4</p> </div> <hr> @@ -875,7 +884,7 @@ and authentication, and return them wrapped in a GstCaps.</p> </tbody> </table></div> </div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> <p class="since">Since: 1.4</p> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html b/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html index 408d668be98741dfa60ab27a33d2613b5e74cd84..900354f27b9cb7e0a7acc81eee2cf4a7e358bc07 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-sbcparse.html @@ -28,7 +28,7 @@ <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> +<p>sbcparse</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -62,7 +62,7 @@ frames and timestamp them properly.</p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.134.6.2.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.134.6.3.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -88,7 +88,7 @@ frames and timestamp them properly.</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.134.6.2.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.134.6.3.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -139,8 +139,6 @@ frames and timestamp them properly.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-sbcparse.functions_details"></a><h2>Functions</h2> @@ -151,8 +149,6 @@ frames and timestamp them properly.</p> <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"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-scaletempo.html b/docs/plugins/html/gst-plugins-good-plugins-scaletempo.html index 93f78cacddf1168cab409773ac6208cd1e3feda5..bf6ef27f50189d812e1583e91f68c23e1d200296 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-scaletempo.html +++ b/docs/plugins/html/gst-plugins-good-plugins-scaletempo.html @@ -29,7 +29,7 @@ <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> +<p>scaletempo</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -233,8 +233,6 @@ the algoritm looks. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-scaletempo.functions_details"></a><h2>Functions</h2> @@ -245,8 +243,6 @@ the algoritm looks. <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"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-shagadelictv.html b/docs/plugins/html/gst-plugins-good-plugins-shagadelictv.html index 545b0ab2a39da77b15fe9a21f2dd3a8feabf1935..f32807c9cc0c86eabbe6f440c51595d5aafe48a4 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-shagadelictv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-shagadelictv.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-shagadelictv.top_of_page"></a>shagadelictv</span></h2> -<p>shagadelictv — Oh behave, ShagedelicTV makes images shagadelic!</p> +<p>shagadelictv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -153,8 +153,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-shagadelictv.functions_details"></a><h2>Functions</h2> @@ -165,8 +163,6 @@ <div class="refsect2"> <a name="GstShagadelicTV-struct"></a><h3>struct GstShagadelicTV</h3> <pre class="programlisting">struct GstShagadelicTV;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-shapewipe.html b/docs/plugins/html/gst-plugins-good-plugins-shapewipe.html index 34a8835d0d7ab30ac4277d52c77451b4663406e1..c8c1d9ef538b0827b9969eab981ac34b3a27128a 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-shapewipe.html +++ b/docs/plugins/html/gst-plugins-good-plugins-shapewipe.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-shapewipe.top_of_page"></a>shapewipe</span></h2> -<p>shapewipe — Adds a shape wipe transition to a video stream</p> +<p>shapewipe</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -207,8 +207,6 @@ can be added by the border property.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-shapewipe.functions_details"></a><h2>Functions</h2> @@ -219,8 +217,6 @@ can be added by the border property.</p> <div class="refsect2"> <a name="GstShapeWipe-struct"></a><h3>struct GstShapeWipe</h3> <pre class="programlisting">struct GstShapeWipe;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-shout2send.html b/docs/plugins/html/gst-plugins-good-plugins-shout2send.html index 459bf886fca2465590e3aeb94d88ecc545395198..b66230ebe8b80bda379c83d813055ec06aaa28b7 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-shout2send.html +++ b/docs/plugins/html/gst-plugins-good-plugins-shout2send.html @@ -31,7 +31,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-shout2send.top_of_page"></a>shout2send</span></h2> -<p>shout2send — Sends data to an icecast server</p> +<p>shout2send</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -237,8 +237,6 @@ GstShout2send implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-shout2send.functions_details"></a><h2>Functions</h2> @@ -249,8 +247,6 @@ GstShout2send implements <div class="refsect2"> <a name="GstShout2send-struct"></a><h3>struct GstShout2send</h3> <pre class="programlisting">struct GstShout2send;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -360,30 +356,6 @@ GstShout2send implements user_function (<a class="link" href="gst-plugins-good-plugins-shout2send.html#GstShout2send"><span class="type">GstShout2send</span></a> *gstshout2send, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> arg1, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.138.13.2.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstshout2send</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> <p>Flags: Cleanup</p> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-smpte.html b/docs/plugins/html/gst-plugins-good-plugins-smpte.html index 5c09e48494ec58c701ef71bb031e90cfbb8099c0..4f2cf24b3b2d1784f846cabeb89cceaf291f3b6f 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-smpte.html +++ b/docs/plugins/html/gst-plugins-good-plugins-smpte.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-smpte.top_of_page"></a>smpte</span></h2> -<p>smpte — Apply the standard SMPTE transitions on video images</p> +<p>smpte</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -226,8 +226,6 @@ edges of the transition are smoothed with a 20000 big border. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-smpte.functions_details"></a><h2>Functions</h2> @@ -238,8 +236,6 @@ edges of the transition are smoothed with a 20000 big border. <div class="refsect2"> <a name="GstSMPTE-struct"></a><h3>struct GstSMPTE</h3> <pre class="programlisting">struct GstSMPTE;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-smptealpha.html b/docs/plugins/html/gst-plugins-good-plugins-smptealpha.html index 977b972a1310e4962ce54853012ad906db2e2b6b..44201ad44ec983a1e71739060b85a677c40a1261 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-smptealpha.html +++ b/docs/plugins/html/gst-plugins-good-plugins-smptealpha.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-smptealpha.top_of_page"></a>smptealpha</span></h2> -<p>smptealpha — Apply the standard SMPTE transitions as alpha on video images</p> +<p>smptealpha</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -241,8 +241,6 @@ transparent image. The edges of the transition are smoothed with a </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-smptealpha.functions_details"></a><h2>Functions</h2> @@ -253,8 +251,6 @@ transparent image. The edges of the transition are smoothed with a <div class="refsect2"> <a name="GstSMPTEAlpha-struct"></a><h3>struct GstSMPTEAlpha</h3> <pre class="programlisting">struct GstSMPTEAlpha;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-souphttpsrc.html b/docs/plugins/html/gst-plugins-good-plugins-souphttpsrc.html index b2875c00fd1abfa41084076ebafb6e0e65c9bdf3..77fa0ce9bf5831bd6a087e279b257f7392fa3276 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-souphttpsrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-souphttpsrc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-souphttpsrc.top_of_page"></a>souphttpsrc</span></h2> -<p>souphttpsrc — Receive data as a client over the network via HTTP using SOUP</p> +<p>souphttpsrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -176,6 +176,12 @@ <td class="property_name"><a class="link" href="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--ssl-use-system-ca-file" title="The “ssl-use-system-ca-file†property">ssl-use-system-ca-file</a></td> <td class="property_flags">Read / Write</td> </tr> +<tr> +<td class="property_type"> +<a href="https://developer.gnome.org/gio/unstable/GTlsDatabase.html"><span class="type">GTlsDatabase</span></a> *</td> +<td class="property_name"><a class="link" href="gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--tls-database" title="The “tls-database†property">tls-database</a></td> +<td class="property_flags">Read / Write</td> +</tr> </tbody> </table></div> </div> @@ -267,8 +273,6 @@ GstSoupHTTPSrc implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-souphttpsrc.functions_details"></a><h2>Functions</h2> @@ -279,8 +283,6 @@ GstSoupHTTPSrc implements <div class="refsect2"> <a name="GstSoupHTTPSrc-struct"></a><h3>struct GstSoupHTTPSrc</h3> <pre class="programlisting">struct GstSoupHTTPSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -476,6 +478,13 @@ GstSoupHTTPSrc implements <p>Flags: Read / Write</p> <p>Default value: TRUE</p> </div> +<hr> +<div class="refsect2"> +<a name="GstSoupHTTPSrc--tls-database"></a><h3>The <code class="literal">“tls-databaseâ€</code> property</h3> +<pre class="programlisting"> “tls-database†<a href="https://developer.gnome.org/gio/unstable/GTlsDatabase.html"><span class="type">GTlsDatabase</span></a> *</pre> +<p>TLS database with anchor certificate authorities used to validate the server certificate.</p> +<p>Flags: Read / Write</p> +</div> </div> </div> <div class="footer"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-spectrum.html b/docs/plugins/html/gst-plugins-good-plugins-spectrum.html index 8cd0712fbf2ab7e3dc43ce26f2abd0e929fe8b8c..d2860be6599674d3e962654729d0c99f32b0a1d0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-spectrum.html +++ b/docs/plugins/html/gst-plugins-good-plugins-spectrum.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-spectrum.top_of_page"></a>spectrum</span></h2> -<p>spectrum — Run an FFT on the audio signal, output spectrum data</p> +<p>spectrum</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -501,8 +501,6 @@ channels and the second dimension are the values.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-spectrum.functions_details"></a><h2>Functions</h2> @@ -513,8 +511,6 @@ channels and the second dimension are the values.</p> <div class="refsect2"> <a name="GstSpectrum-struct"></a><h3>struct GstSpectrum</h3> <pre class="programlisting">struct GstSpectrum;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-speexdec.html b/docs/plugins/html/gst-plugins-good-plugins-speexdec.html index 14b0c7ccb1df49afb705a383148923cb6a321025..fb031e6e6c8e74456218e0f5758ebd2882dd9270 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-speexdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-speexdec.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-speexdec.top_of_page"></a>speexdec</span></h2> -<p>speexdec — decode speex streams to audio</p> +<p>speexdec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -153,8 +153,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-speexdec.functions_details"></a><h2>Functions</h2> @@ -165,8 +163,6 @@ <div class="refsect2"> <a name="GstSpeexDec-struct"></a><h3>struct GstSpeexDec</h3> <pre class="programlisting">struct GstSpeexDec;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-speexenc.html b/docs/plugins/html/gst-plugins-good-plugins-speexenc.html index c53ebf47574b6886660ac92c3b544babbdb94eeb..d2ef8b3a6d2720a11bd6ab0b638209d8ac0d9dc2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-speexenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-speexenc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-speexenc.top_of_page"></a>speexenc</span></h2> -<p>speexenc — Encodes audio in Speex format</p> +<p>speexenc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -212,8 +212,6 @@ GstSpeexEnc implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-speexenc.functions_details"></a><h2>Functions</h2> @@ -224,8 +222,6 @@ GstSpeexEnc implements <div class="refsect2"> <a name="GstSpeexEnc-struct"></a><h3>struct GstSpeexEnc</h3> <pre class="programlisting">struct GstSpeexEnc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-splitfilesrc.html b/docs/plugins/html/gst-plugins-good-plugins-splitfilesrc.html index 531633164274e954849b26db9d9690433ef55cd7..e0ed2d5b84c01cc68d59aa50980eddc2def8897d 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-splitfilesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-splitfilesrc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-splitfilesrc.top_of_page"></a>splitfilesrc</span></h2> -<p>splitfilesrc — Read a sequentially named set of files as if it was one large file</p> +<p>splitfilesrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -169,8 +169,6 @@ directories). The results will be sorted.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-splitfilesrc.functions_details"></a><h2>Functions</h2> @@ -181,8 +179,6 @@ directories). The results will be sorted.</p> <div class="refsect2"> <a name="GstSplitFileSrc-struct"></a><h3>struct GstSplitFileSrc</h3> <pre class="programlisting">struct GstSplitFileSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-splitmuxsink.html b/docs/plugins/html/gst-plugins-good-plugins-splitmuxsink.html index acf5fd2c187e2d10ba11eec9b9bf549afa4f2667..0bdd6b734fd6151effed518ab4ae667ebfdbb5cd 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-splitmuxsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-splitmuxsink.html @@ -243,8 +243,6 @@ and 1MB maximum size. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-splitmuxsink.functions_details"></a><h2>Functions</h2> @@ -255,8 +253,6 @@ and 1MB maximum size. <div class="refsect2"> <a name="GstSplitMuxSink-struct"></a><h3>struct GstSplitMuxSink</h3> <pre class="programlisting">struct GstSplitMuxSink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-splitmuxsrc.html b/docs/plugins/html/gst-plugins-good-plugins-splitmuxsrc.html index f49f28d346c844cda805feb05a5ba45be510bebc..f1a78ba9601600abe1e2febb3536ec8a0b1cc0e5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-splitmuxsrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-splitmuxsrc.html @@ -216,8 +216,6 @@ as a single larger bytestream.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-splitmuxsrc.functions_details"></a><h2>Functions</h2> @@ -228,8 +226,6 @@ as a single larger bytestream.</p> <div class="refsect2"> <a name="GstSplitMuxSrc-struct"></a><h3>struct GstSplitMuxSrc</h3> <pre class="programlisting">struct GstSplitMuxSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-streaktv.html b/docs/plugins/html/gst-plugins-good-plugins-streaktv.html index 178dc12cf3092c6095de14ce3f354f372271a735..083fb3eda4aad916f4f265d889c523316b86dbd2 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-streaktv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-streaktv.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-streaktv.top_of_page"></a>streaktv</span></h2> -<p>streaktv — StreakTV makes after images of moving objects</p> +<p>streaktv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -169,8 +169,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-streaktv.functions_details"></a><h2>Functions</h2> @@ -181,8 +179,6 @@ <div class="refsect2"> <a name="GstStreakTV-struct"></a><h3>struct GstStreakTV</h3> <pre class="programlisting">struct GstStreakTV;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-taginject.html b/docs/plugins/html/gst-plugins-good-plugins-taginject.html index 99150ad98b07a4f71f945e8ff0a8d1d061dc3715..4c0b78df788b62dc8b1094f55a952d3b79331e42 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-taginject.html +++ b/docs/plugins/html/gst-plugins-good-plugins-taginject.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-taginject.top_of_page"></a>taginject</span></h2> -<p>taginject — inject metadata tags</p> +<p>taginject</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -181,8 +181,6 @@ unmodified.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-taginject.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-udpsink.html b/docs/plugins/html/gst-plugins-good-plugins-udpsink.html index 43d12778bee2c054fc7f4b9dae870a17982de9c9..4c8158e1a2a276d55dfe4287e94e31111a99c2f0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-udpsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-udpsink.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-udpsink.top_of_page"></a>udpsink</span></h2> -<p>udpsink — Send data over the network via UDP</p> +<p>udpsink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -161,8 +161,6 @@ It can be combined with RTP payloaders to implement RTP streaming.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-udpsink.functions_details"></a><h2>Functions</h2> @@ -173,8 +171,6 @@ It can be combined with RTP payloaders to implement RTP streaming.</p> <div class="refsect2"> <a name="GstUDPSink-struct"></a><h3>struct GstUDPSink</h3> <pre class="programlisting">struct GstUDPSink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-udpsrc.html b/docs/plugins/html/gst-plugins-good-plugins-udpsrc.html index de2bd3c8d3d9cfc4baf336af9d188bcb4dffbd92..c5d1cd74a879d390e7625ffef83189f9d96e2844 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-udpsrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-udpsrc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-udpsrc.top_of_page"></a>udpsrc</span></h2> -<p>udpsrc — Receive data over the network via UDP</p> +<p>udpsrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -316,8 +316,6 @@ above mentioned pipeline should dump data packets to the console. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-udpsrc.functions_details"></a><h2>Functions</h2> @@ -328,8 +326,6 @@ above mentioned pipeline should dump data packets to the console. <div class="refsect2"> <a name="GstUDPSrc-struct"></a><h3>struct GstUDPSrc</h3> <pre class="programlisting">struct GstUDPSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-v4l2radio.html b/docs/plugins/html/gst-plugins-good-plugins-v4l2radio.html index b6aa0dbcff77160b6ba37186f75bb76c2e9b3370..677ca2564d720aa8d89bf53f322da8f94f1cfe54 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-v4l2radio.html +++ b/docs/plugins/html/gst-plugins-good-plugins-v4l2radio.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-v4l2radio.top_of_page"></a>v4l2radio</span></h2> -<p>v4l2radio — Controls a Video4Linux2 radio device</p> +<p>v4l2radio</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -119,8 +119,6 @@ GstV4l2Radio implements <a name="id-1.2.154.8.2.2"></a><h3>Element Pads</h3> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-v4l2radio.functions_details"></a><h2>Functions</h2> @@ -131,8 +129,6 @@ GstV4l2Radio implements <div class="refsect2"> <a name="GstV4l2Radio-struct"></a><h3>struct GstV4l2Radio</h3> <pre class="programlisting">struct GstV4l2Radio;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-v4l2sink.html b/docs/plugins/html/gst-plugins-good-plugins-v4l2sink.html index 6bc01279183c6ca692395ead38640bc2fa17151d..cae298b5a0adb6784d9c9c4e26985805c25f85fc 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-v4l2sink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-v4l2sink.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-v4l2sink.top_of_page"></a>v4l2sink</span></h2> -<p>v4l2sink — Displays frames on a video4linux2 device</p> +<p>v4l2sink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -301,8 +301,6 @@ GstV4l2Sink implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-v4l2sink.functions_details"></a><h2>Functions</h2> @@ -313,8 +311,6 @@ GstV4l2Sink implements <div class="refsect2"> <a name="GstV4l2Sink-struct"></a><h3>struct GstV4l2Sink</h3> <pre class="programlisting">struct GstV4l2Sink;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-v4l2src.html b/docs/plugins/html/gst-plugins-good-plugins-v4l2src.html index cabfd081b56c1928a372f42b92a7f7e82c3df802..ade38f2ee1a38c591ce6112e5a49d0d850caab91 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-v4l2src.html +++ b/docs/plugins/html/gst-plugins-good-plugins-v4l2src.html @@ -31,7 +31,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-v4l2src.top_of_page"></a>v4l2src</span></h2> -<p>v4l2src — Reads frames from a Video4Linux2 device</p> +<p>v4l2src</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -142,7 +142,7 @@ <tbody><tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-v4l2src.html#GstV4l2Src-prepare-format" title="The “prepare-format†signal">prepare-format</a></td> -<td class="signal_flags">Run Last</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td> </tr></tbody> </table></div> </div> @@ -282,8 +282,6 @@ GstV4l2Src implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-v4l2src.functions_details"></a><h2>Functions</h2> @@ -294,8 +292,6 @@ GstV4l2Src implements <div class="refsect2"> <a name="GstV4l2Src-struct"></a><h3>struct GstV4l2Src</h3> <pre class="programlisting">struct GstV4l2Src;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -438,31 +434,7 @@ user_function (<a class="link" href="gst-plugins-good-plugins-v4l2src.html#GstV4 <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> arg1, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *arg2, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.152.13.2.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstv4l2src</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Run Last</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-vertigotv.html b/docs/plugins/html/gst-plugins-good-plugins-vertigotv.html index d811a1cc86a2d039aaafafe54b4a12d614600afe..b65c4b88e71e4462c0bf81621f32dffe1b346497 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-vertigotv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-vertigotv.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-vertigotv.top_of_page"></a>vertigotv</span></h2> -<p>vertigotv — A loopback alpha blending effector with rotating and scaling</p> +<p>vertigotv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -67,7 +67,7 @@ <tbody><tr> <td class="signal_type"><span class="returnvalue">void</span></td> <td class="signal_name"><a class="link" href="gst-plugins-good-plugins-vertigotv.html#GstVertigoTV-reset-parms" title="The “reset-parms†signal">reset-parms</a></td> -<td class="signal_flags">Action</td> +<td class="signal_flags"><a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td> </tr></tbody> </table></div> </div> @@ -192,8 +192,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-vertigotv.functions_details"></a><h2>Functions</h2> @@ -204,8 +202,6 @@ <div class="refsect2"> <a name="GstVertigoTV-struct"></a><h3>struct GstVertigoTV</h3> <pre class="programlisting">struct GstVertigoTV;</pre> -<p> -</p> </div> </div> <div class="refsect1"> @@ -235,31 +231,7 @@ <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="gst-plugins-good-plugins-vertigotv.html#GstVertigoTV"><span class="type">GstVertigoTV</span></a> *gstvertigotv, <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre> -<p> -</p> -<div class="refsect3"> -<a name="id-1.2.155.12.2.5"></a><h4>Parameters</h4> -<div class="informaltable"><table width="100%" border="0"> -<colgroup> -<col width="150px" class="parameters_name"> -<col class="parameters_description"> -<col width="200px" class="parameters_annotations"> -</colgroup> -<tbody> -<tr> -<td class="parameter_name"><p>gstvertigotv</p></td> -<td class="parameter_description"><p>the object which received the signal.</p></td> -<td class="parameter_annotations"> </td> -</tr> -<tr> -<td class="parameter_name"><p>user_data</p></td> -<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td> -<td class="parameter_annotations"> </td> -</tr> -</tbody> -</table></div> -</div> -<p>Flags: Action</p> +<p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-videobalance.html b/docs/plugins/html/gst-plugins-good-plugins-videobalance.html index 487dfc016b89020f491b0f7a51d90f7cb0a4323f..aff0641fddd51b34b0c832265b3a0178d6d05a50 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videobalance.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videobalance.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-videobalance.top_of_page"></a>videobalance</span></h2> -<p>videobalance — Adjusts brightness, contrast, hue, saturation on a video stream</p> +<p>videobalance</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -202,8 +202,6 @@ saturation to 0.0. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-videobalance.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-videobox.html b/docs/plugins/html/gst-plugins-good-plugins-videobox.html index 9ea84e712eb265ad63f2234e7fc550789d19fe6c..bee72561ed962b2e8f4d768631dde363bdf8fd6e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videobox.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videobox.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-videobox.top_of_page"></a>videobox</span></h2> -<p>videobox — Resizes a video by adding borders or cropping</p> +<p>videobox</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -145,10 +145,11 @@ but nothing stops you from doing so.</p> </table> </div> +<p></p> <div class="refsynopsisdiv"> <h2>Synopsis</h2> <div class="refsect2"> -<a name="id-1.2.157.7.9.1.1"></a><h3>Element Information</h3> +<a name="id-1.2.157.7.10.1"></a><h3>Element Information</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -174,7 +175,7 @@ but nothing stops you from doing so.</p> </div> <hr> <div class="refsect2"> -<a name="id-1.2.157.7.9.1.2"></a><h3>Element Pads</h3> +<a name="id-1.2.157.7.10.2"></a><h3>Element Pads</h3> <div class="variablelist"><table border="0" class="variablelist"> <colgroup> <col align="left" valign="top"> @@ -225,8 +226,6 @@ but nothing stops you from doing so.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-videobox.functions_details"></a><h2>Functions</h2> @@ -237,8 +236,6 @@ but nothing stops you from doing so.</p> <div class="refsect2"> <a name="GstVideoBox-struct"></a><h3>struct GstVideoBox</h3> <pre class="programlisting">struct GstVideoBox;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-videocrop.html b/docs/plugins/html/gst-plugins-good-plugins-videocrop.html index a0eb16627ca34896545f9d83670b33f200fdf2d3..8778ddf82af0bda11f18b4ea3d69e335637952c0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videocrop.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videocrop.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-videocrop.top_of_page"></a>videocrop</span></h2> -<p>videocrop — Crops video into a user-defined region</p> +<p>videocrop</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -199,8 +199,6 @@ most use cases, but it might matter for yours.</p> </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-videocrop.functions_details"></a><h2>Functions</h2> @@ -211,8 +209,6 @@ most use cases, but it might matter for yours.</p> <div class="refsect2"> <a name="GstVideoCrop-struct"></a><h3>struct GstVideoCrop</h3> <pre class="programlisting">struct GstVideoCrop;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-videoflip.html b/docs/plugins/html/gst-plugins-good-plugins-videoflip.html index 5fac678331cd753d6393b52b4ea81188498360cc..69111190925f30f62d6c9c97bce3d7539209bbc0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videoflip.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videoflip.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-videoflip.top_of_page"></a>videoflip</span></h2> -<p>videoflip — Flips and rotates video</p> +<p>videoflip</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -175,8 +175,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-videoflip.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-videomixer.html b/docs/plugins/html/gst-plugins-good-plugins-videomixer.html index 06e6adb820ac06f1aeac26d70230b19ec4701e4d..929a5e4ef06acafdcb4413d6b14957b2a696b689 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-videomixer.html +++ b/docs/plugins/html/gst-plugins-good-plugins-videomixer.html @@ -27,7 +27,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-videomixer.top_of_page"></a>videomixer</span></h2> -<p>videomixer — Mix multiple video streams</p> +<p>videomixer</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -217,8 +217,6 @@ framerate of the output video is 10 frames per second. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-videomixer.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-vp8dec.html b/docs/plugins/html/gst-plugins-good-plugins-vp8dec.html index a0b230cc6aa2c296d8cfe93a6615c0dde65689e6..0e1468404e5516ca336e284ea9723447369c0765 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-vp8dec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-vp8dec.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-vp8dec.top_of_page"></a>vp8dec</span></h2> -<p>vp8dec — Decode VP8 video streams</p> +<p>vp8dec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -175,8 +175,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-vp8dec.functions_details"></a><h2>Functions</h2> @@ -187,8 +185,6 @@ <div class="refsect2"> <a name="GstVP8Dec-struct"></a><h3>struct GstVP8Dec</h3> <pre class="programlisting">struct GstVP8Dec;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-vp8enc.html b/docs/plugins/html/gst-plugins-good-plugins-vp8enc.html index 3c47e8013027bf5ca0da4b9b4fc10c14e86165ab..815a1c78e0f7e00b9d3214e3b857261122af8100 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-vp8enc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-vp8enc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-vp8enc.top_of_page"></a>vp8enc</span></h2> -<p>vp8enc — Encode VP8 video streams</p> +<p>vp8enc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -459,8 +459,6 @@ GstVP8Enc implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-vp8enc.functions_details"></a><h2>Functions</h2> @@ -471,8 +469,6 @@ GstVP8Enc implements <div class="refsect2"> <a name="GstVP8Enc-struct"></a><h3>struct GstVP8Enc</h3> <pre class="programlisting">struct GstVP8Enc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-warptv.html b/docs/plugins/html/gst-plugins-good-plugins-warptv.html index 9b58af56455beab58a2d73578773912da828a982..01cbec314d4bc7d89b7e297dafd019846ab70aa5 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-warptv.html +++ b/docs/plugins/html/gst-plugins-good-plugins-warptv.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-warptv.top_of_page"></a>warptv</span></h2> -<p>warptv — WarpTV does realtime goo'ing of the video input</p> +<p>warptv</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -153,8 +153,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-warptv.functions_details"></a><h2>Functions</h2> @@ -165,8 +163,6 @@ <div class="refsect2"> <a name="GstWarpTV-struct"></a><h3>struct GstWarpTV</h3> <pre class="programlisting">struct GstWarpTV;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-waveformsink.html b/docs/plugins/html/gst-plugins-good-plugins-waveformsink.html index 478b51adc7560f5b7e6627cfbd8978799e95e22e..d8db68dc8a1cce19a8963bd6f84f085b7da372cc 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-waveformsink.html +++ b/docs/plugins/html/gst-plugins-good-plugins-waveformsink.html @@ -27,7 +27,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-waveformsink.top_of_page"></a>waveformsink</span></h2> -<p>waveformsink — WaveForm audio sink</p> +<p>waveformsink</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -78,8 +78,6 @@ <a name="id-1.2.165.4.2.2"></a><h3>Element Pads</h3> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-waveformsink.functions_details"></a><h2>Functions</h2> @@ -127,8 +125,6 @@ gchar error_string[ERROR_LENGTH]; }; </pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavenc.html b/docs/plugins/html/gst-plugins-good-plugins-wavenc.html index 4bc4c7e5c4de484d9cc6189b92d68fd683588723..778491c0f505320d4c2a231a38775695fa893a1e 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-wavenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-wavenc.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-wavenc.top_of_page"></a>wavenc</span></h2> -<p>wavenc — Encode raw audio into WAV</p> +<p>wavenc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -181,8 +181,6 @@ GstWavEnc implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-wavenc.functions_details"></a><h2>Functions</h2> @@ -193,8 +191,6 @@ GstWavEnc implements <div class="refsect2"> <a name="GstWavEnc-struct"></a><h3>struct GstWavEnc</h3> <pre class="programlisting">struct GstWavEnc;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavpackdec.html b/docs/plugins/html/gst-plugins-good-plugins-wavpackdec.html index bb1586dd0422ec54d0238101c813305fae2c39a8..01bb59667d023f27ac0d73966822e5c118bd279d 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-wavpackdec.html +++ b/docs/plugins/html/gst-plugins-good-plugins-wavpackdec.html @@ -28,7 +28,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-wavpackdec.top_of_page"></a>wavpackdec</span></h2> -<p>wavpackdec — Decodes Wavpack audio data</p> +<p>wavpackdec</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -145,8 +145,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-wavpackdec.functions_details"></a><h2>Functions</h2> @@ -157,8 +155,6 @@ <div class="refsect2"> <a name="GstWavpackDec-struct"></a><h3>struct GstWavpackDec</h3> <pre class="programlisting">struct GstWavpackDec;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavpackenc.html b/docs/plugins/html/gst-plugins-good-plugins-wavpackenc.html index 980f5701c3cfd856046d015c5c7064205fa4089c..1c5e06057c76ff376a29b4ba3ed91a306d79dce6 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-wavpackenc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-wavpackenc.html @@ -30,7 +30,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-wavpackenc.top_of_page"></a>wavpackenc</span></h2> -<p>wavpackenc — Encodes audio with the Wavpack lossless/lossy audio codec</p> +<p>wavpackenc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -216,8 +216,6 @@ GstWavpackEnc implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-wavpackenc.functions_details"></a><h2>Functions</h2> @@ -228,8 +226,6 @@ GstWavpackEnc implements <div class="refsect2"> <a name="GstWavpackEnc-struct"></a><h3>struct GstWavpackEnc</h3> <pre class="programlisting">struct GstWavpackEnc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html b/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html index 3afa07dcab0a2586e805ccb52e9cb45ab67dadd1..0f6e9e6f181c6a6c6741a7993ec64987c66cbe91 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-wavpackparse.html @@ -156,8 +156,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-wavpackparse.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-wavparse.html b/docs/plugins/html/gst-plugins-good-plugins-wavparse.html index 9f11eb5767e485a666f37759818d6d0e6d3fc98a..b5766e01242e12691cbd4a6b4ad8063119cd8fa8 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-wavparse.html +++ b/docs/plugins/html/gst-plugins-good-plugins-wavparse.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-wavparse.top_of_page"></a>wavparse</span></h2> -<p>wavparse — Parse a .wav file into raw audio</p> +<p>wavparse</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -285,8 +285,6 @@ wav file is assumed to contain raw uncompressed samples. </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-wavparse.functions_details"></a><h2>Functions</h2> diff --git a/docs/plugins/html/gst-plugins-good-plugins-webmmux.html b/docs/plugins/html/gst-plugins-good-plugins-webmmux.html index edc65c579d1b09c8dcaefc018c38cb58b6cdceb0..8a26d29a4d9e628af46828082c2cae702be9345c 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-webmmux.html +++ b/docs/plugins/html/gst-plugins-good-plugins-webmmux.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-webmmux.top_of_page"></a>webmmux</span></h2> -<p>webmmux — Muxes video and audio streams into a WebM stream</p> +<p>webmmux</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -260,8 +260,6 @@ GstWebMMux implements </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-webmmux.functions_details"></a><h2>Functions</h2> @@ -272,8 +270,6 @@ GstWebMMux implements <div class="refsect2"> <a name="GstWebMMux-struct"></a><h3>struct GstWebMMux</h3> <pre class="programlisting">struct GstWebMMux;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/gst-plugins-good-plugins-ximagesrc.html b/docs/plugins/html/gst-plugins-good-plugins-ximagesrc.html index 7540b7c344960168152bfe5943b17ea3181704d8..6a68d8077b775e5380203e557c44e3f69c1aa596 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-ximagesrc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-ximagesrc.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-ximagesrc.top_of_page"></a>ximagesrc</span></h2> -<p>ximagesrc — Creates a screenshot video stream</p> +<p>ximagesrc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -184,8 +184,6 @@ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-ximagesrc.functions_details"></a><h2>Functions</h2> @@ -196,8 +194,6 @@ <div class="refsect2"> <a name="GstXImageSrc-struct"></a><h3>struct GstXImageSrc</h3> <pre class="programlisting">struct GstXImageSrc;</pre> -<p> -</p> </div> </div> <div class="refsect1"> diff --git a/docs/plugins/html/gst-plugins-good-plugins-y4menc.html b/docs/plugins/html/gst-plugins-good-plugins-y4menc.html index a03455cfd913bc62a9b8be7197648f13da437c31..9922c653cd0c9d3450ef5aff80be2a2cbd1cd7a0 100644 --- a/docs/plugins/html/gst-plugins-good-plugins-y4menc.html +++ b/docs/plugins/html/gst-plugins-good-plugins-y4menc.html @@ -29,7 +29,7 @@ <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-y4menc.top_of_page"></a>y4menc</span></h2> -<p>y4menc — Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</p> +<p>y4menc</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> @@ -160,8 +160,6 @@ gst-launch-0.10 videotestsrc num-buffers=250 \ </table></div> </div> </div> -<p> -</p> </div> <div class="refsect1"> <a name="gst-plugins-good-plugins-y4menc.functions_details"></a><h2>Functions</h2> @@ -172,8 +170,6 @@ gst-launch-0.10 videotestsrc num-buffers=250 \ <div class="refsect2"> <a name="GstY4mEncode-struct"></a><h3>struct GstY4mEncode</h3> <pre class="programlisting">struct GstY4mEncode;</pre> -<p> -</p> </div> </div> </div> diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html index 0fc7a6e420e65c8172dd3b343015cb374346f60e..e018cdb3fdcc2dcb0fae984f9f1194e01a64fd84 100644 --- a/docs/plugins/html/index.html +++ b/docs/plugins/html/index.html @@ -15,7 +15,7 @@ <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Good Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div> <div><p class="releaseinfo"> - for GStreamer Good Plugins 1.0 (1.5.1) + for GStreamer Good Plugins 1.0 (1.5.2) 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> @@ -32,229 +32,229 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-aacparse.html">aacparse</a></span><span class="refpurpose"> — AAC parser</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-aasink.html">aasink</a></span><span class="refpurpose"> — An ASCII art videosink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-aasink.html">aasink</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-ac3parse.html">ac3parse</a></span><span class="refpurpose"> — AC3 parser</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-agingtv.html">agingtv</a></span><span class="refpurpose"> — AgingTV adds age to video input using scratches and dust</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-agingtv.html">agingtv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-alpha.html">alpha</a></span><span class="refpurpose"> — Adds an alpha channel to video - uniform or via chroma-keying</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-alpha.html">alpha</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-alphacolor.html">alphacolor</a></span><span class="refpurpose"> — ARGB from/to AYUV colorspace conversion preserving the alpha channel</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-alphacolor.html">alphacolor</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-alawdec.html">alawdec</a></span><span class="refpurpose"> — Convert 8bit A law to 16bit PCM</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-alawdec.html">alawdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-alawenc.html">alawenc</a></span><span class="refpurpose"> — Convert 16bit PCM to 8bit A law</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-alawenc.html">alawenc</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-amrparse.html">amrparse</a></span><span class="refpurpose"> — AMR parser</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-apedemux.html">apedemux</a></span><span class="refpurpose"> — Read and output APE tags while demuxing the contents</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-apedemux.html">apedemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-apev2mux.html">apev2mux</a></span><span class="refpurpose"> — Adds an APEv2 header to the beginning of files using taglib</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-apev2mux.html">apev2mux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-aspectratiocrop.html">aspectratiocrop</a></span><span class="refpurpose"> — Crops video into a user-defined aspect-ratio</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-aspectratiocrop.html">aspectratiocrop</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioamplify.html">audioamplify</a></span><span class="refpurpose"> — Amplifies an audio stream by a given factor</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioamplify.html">audioamplify</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiochebband.html">audiochebband</a></span><span class="refpurpose"> — Chebyshev band pass and band reject filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiochebband.html">audiochebband</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiocheblimit.html">audiocheblimit</a></span><span class="refpurpose"> — Chebyshev low pass and high pass filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiocheblimit.html">audiocheblimit</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiofirfilter.html">audiofirfilter</a></span><span class="refpurpose"> — Generic audio FIR filter with custom filter kernel</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiofirfilter.html">audiofirfilter</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioiirfilter.html">audioiirfilter</a></span><span class="refpurpose"> — Generic audio IIR filter with custom filter kernel</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioiirfilter.html">audioiirfilter</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiowsincband.html">audiowsincband</a></span><span class="refpurpose"> — Band pass and band reject windowed sinc filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiowsincband.html">audiowsincband</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiowsinclimit.html">audiowsinclimit</a></span><span class="refpurpose"> — Low pass and high pass windowed sinc filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiowsinclimit.html">audiowsinclimit</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioecho.html">audioecho</a></span><span class="refpurpose"> — Adds an echo or reverb effect to an audio stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioecho.html">audioecho</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiodynamic.html">audiodynamic</a></span><span class="refpurpose"> — Compressor and Expander</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiodynamic.html">audiodynamic</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioinvert.html">audioinvert</a></span><span class="refpurpose"> — Swaps upper and lower half of audio samples</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audioinvert.html">audioinvert</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiopanorama.html">audiopanorama</a></span><span class="refpurpose"> — Positions audio streams in the stereo panorama</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiopanorama.html">audiopanorama</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiokaraoke.html">audiokaraoke</a></span><span class="refpurpose"> — Removes voice from sound</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-audiokaraoke.html">audiokaraoke</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-auparse.html">auparse</a></span><span class="refpurpose"> — Parse an .au file into raw audio</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-auparse.html">auparse</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-autoaudiosink.html">autoaudiosink</a></span><span class="refpurpose"> — Wrapper audio sink for automatically detected audio sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-autoaudiosink.html">autoaudiosink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-autoaudiosrc.html">autoaudiosrc</a></span><span class="refpurpose"> — Wrapper audio source for automatically detected audio source</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-autoaudiosrc.html">autoaudiosrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-autovideosink.html">autovideosink</a></span><span class="refpurpose"> — Wrapper video sink for automatically detected video sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-autovideosink.html">autovideosink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-autovideosrc.html">autovideosrc</a></span><span class="refpurpose"> — Wrapper video source for automatically detected video source</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-autovideosrc.html">autovideosrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-avidemux.html">avidemux</a></span><span class="refpurpose"> — Demultiplex an avi file into audio and video</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-avidemux.html">avidemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-avimux.html">avimux</a></span><span class="refpurpose"> — Muxes audio and video into an avi stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-avimux.html">avimux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-avisubtitle.html">avisubtitle</a></span><span class="refpurpose"> — Parse avi subtitle stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-avisubtitle.html">avisubtitle</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-cacasink.html">cacasink</a></span><span class="refpurpose"> — A colored ASCII art videosink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-cacasink.html">cacasink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-cairooverlay.html">cairooverlay</a></span><span class="refpurpose"> — Render overlay on a video stream using Cairo</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-cairooverlay.html">cairooverlay</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-capssetter.html">capssetter</a></span><span class="refpurpose"> — Set/merge caps on stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-capssetter.html">capssetter</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-cutter.html">cutter</a></span><span class="refpurpose"> — Audio Cutter to split audio into non-silent bits</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-cutter.html">cutter</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-dcaparse.html">dcaparse</a></span><span class="refpurpose"> — DCA (DTS Coherent Acoustics) parser</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-deinterlace.html">deinterlace</a></span><span class="refpurpose"> — Deinterlace Methods ported from DScaler/TvTime</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-deinterlace.html">deinterlace</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-deinterleave.html">deinterleave</a></span><span class="refpurpose"> — Splits one interleaved multichannel audio stream into many mono audio streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-deinterleave.html">deinterleave</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-dicetv.html">dicetv</a></span><span class="refpurpose"> — 'Dices' the screen up into many small squares</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dicetv.html">dicetv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-directsoundsink.html">directsoundsink</a></span><span class="refpurpose"> — DirectSound audio sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-directsoundsink.html">directsoundsink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-dtmfsrc.html">dtmfsrc</a></span><span class="refpurpose"> — Generates DTMF tones</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dtmfsrc.html">dtmfsrc</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dv1394src.html">dv1394src</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-dvdec.html">dvdec</a></span><span class="refpurpose"> — Uses libdv to decode DV video (smpte314) (libdv.sourceforge.net)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dvdec.html">dvdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-dvdemux.html">dvdemux</a></span><span class="refpurpose"> — Uses libdv to separate DV audio from DV video (libdv.sourceforge.net)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-dvdemux.html">dvdemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-edgetv.html">edgetv</a></span><span class="refpurpose"> — Apply edge detect on video</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-edgetv.html">edgetv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-10bands.html">equalizer-10bands</a></span><span class="refpurpose"> — Direct Form 10 band IIR equalizer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-10bands.html">equalizer-10bands</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-3bands.html">equalizer-3bands</a></span><span class="refpurpose"> — Direct Form 3 band IIR equalizer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-3bands.html">equalizer-3bands</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-nbands.html">equalizer-nbands</a></span><span class="refpurpose"> — Direct Form IIR equalizer</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-equalizer-nbands.html">equalizer-nbands</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacdec.html">flacdec</a></span><span class="refpurpose"> — Decodes FLAC lossless audio streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacdec.html">flacdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacenc.html">flacenc</a></span><span class="refpurpose"> — Encodes audio with the FLAC lossless audio encoder</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacenc.html">flacenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacparse.html">flacparse</a></span><span class="refpurpose"> — Parses audio with the FLAC lossless audio codec</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flacparse.html">flacparse</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flactag.html">flactag</a></span><span class="refpurpose"> — Rewrite tags in a FLAC file</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flactag.html">flactag</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flvdemux.html">flvdemux</a></span><span class="refpurpose"> — Demux FLV feeds into digital streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flvdemux.html">flvdemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flvmux.html">flvmux</a></span><span class="refpurpose"> — Muxes video/audio streams into a FLV stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flvmux.html">flvmux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-flxdec.html">flxdec</a></span><span class="refpurpose"> — FLC/FLI/FLX video decoder</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-flxdec.html">flxdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-gamma.html">gamma</a></span><span class="refpurpose"> — Adjusts gamma on a video stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-gamma.html">gamma</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-gdkpixbufsink.html">gdkpixbufsink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-goom.html">goom</a></span><span class="refpurpose"> — Takes frames of data and outputs video frames using the GOOM filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-goom.html">goom</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-goom2k1.html">goom2k1</a></span><span class="refpurpose"> — Takes frames of data and outputs video frames using the GOOM 2k1 filter</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-goom2k1.html">goom2k1</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-hdv1394src.html">hdv1394src</a></span><span class="refpurpose"> — Source for MPEG-TS video data from firewire port</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-hdv1394src.html">hdv1394src</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-icydemux.html">icydemux</a></span><span class="refpurpose"> — Read and output ICY tags while demuxing the contents</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-icydemux.html">icydemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-id3demux.html">id3demux</a></span><span class="refpurpose"> — Read and output ID3v1 and ID3v2 tags while demuxing the contents</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-id3demux.html">id3demux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-id3v2mux.html">id3v2mux</a></span><span class="refpurpose"> — Adds an ID3v2 header to the beginning of MP3 files using taglib</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-id3v2mux.html">id3v2mux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-imagefreeze.html">imagefreeze</a></span><span class="refpurpose"> — Generates a still frame stream from an image</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-imagefreeze.html">imagefreeze</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-interleave.html">interleave</a></span><span class="refpurpose"> — Folds many mono channels into one interleaved audio stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-interleave.html">interleave</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-ismlmux.html">ismlmux</a></span><span class="refpurpose"> — Muxer for ISML smooth streaming (.isml) files</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-jackaudiosrc.html">jackaudiosrc</a></span><span class="refpurpose"> — Captures audio from a JACK server</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-jackaudiosrc.html">jackaudiosrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-jackaudiosink.html">jackaudiosink</a></span><span class="refpurpose"> — Output audio to a JACK server</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-jackaudiosink.html">jackaudiosink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-jpegdec.html">jpegdec</a></span><span class="refpurpose"> — Decode images from JPEG format</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-jpegdec.html">jpegdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-jpegenc.html">jpegenc</a></span><span class="refpurpose"> — Encode images in JPEG format</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-jpegenc.html">jpegenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-level.html">level</a></span><span class="refpurpose"> — RMS/Peak/Decaying Peak Level messager for audio/raw</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-level.html">level</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-matroskamux.html">matroskamux</a></span><span class="refpurpose"> — Muxes video/audio/subtitle streams into a matroska stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-matroskamux.html">matroskamux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-matroskademux.html">matroskademux</a></span><span class="refpurpose"> — Demuxes Matroska/WebM streams into video/audio/subtitles</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-matroskademux.html">matroskademux</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-mj2mux.html">mj2mux</a></span><span class="refpurpose"> — Muxer for Motion JPEG-2000 (.mj2) files</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-monoscope.html">monoscope</a></span><span class="refpurpose"> — Displays a highly stabilised waveform of audio input</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-monoscope.html">monoscope</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-mpegaudioparse.html">mpegaudioparse</a></span><span class="refpurpose"> — MPEG audio parser</span> @@ -263,70 +263,70 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-mp4mux.html">mp4mux</a></span><span class="refpurpose"> — Muxer for ISO MPEG-4 (.mp4) files</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-mulawdec.html">mulawdec</a></span><span class="refpurpose"> — Convert 8bit mu law to 16bit PCM</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-mulawdec.html">mulawdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-mulawenc.html">mulawenc</a></span><span class="refpurpose"> — Convert 16bit PCM to 8bit mu law</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-mulawenc.html">mulawenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-multifilesink.html">multifilesink</a></span><span class="refpurpose"> — Write buffers to a sequentially named set of files</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-multifilesink.html">multifilesink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-multifilesrc.html">multifilesrc</a></span><span class="refpurpose"> — Read a sequentially named set of files into buffers</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-multifilesrc.html">multifilesrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-multipartdemux.html">multipartdemux</a></span><span class="refpurpose"> — demux multipart streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-multipartdemux.html">multipartdemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-multipartmux.html">multipartmux</a></span><span class="refpurpose"> — mux multipart streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-multipartmux.html">multipartmux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-multiudpsink.html">multiudpsink</a></span><span class="refpurpose"> — Send data over the network via UDP to one or multiple recipients which can be added or removed at runtime using action signals</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-multiudpsink.html">multiudpsink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-optv.html">optv</a></span><span class="refpurpose"> — Optical art meets real-time video effect</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-optv.html">optv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-oss4sink.html">oss4sink</a></span><span class="refpurpose"> — Output to a sound card via OSS version 4</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-oss4sink.html">oss4sink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-oss4src.html">oss4src</a></span><span class="refpurpose"> — Capture from a sound card via OSS version 4</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-oss4src.html">oss4src</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-osssink.html">osssink</a></span><span class="refpurpose"> — Output to a sound card via OSS</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-osssink.html">osssink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-osssrc.html">osssrc</a></span><span class="refpurpose"> — Capture from a sound card via OSS</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-osssrc.html">osssrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxaudiosink.html">osxaudiosink</a></span><span class="refpurpose"> — Output to a sound card in OS X</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxaudiosink.html">osxaudiosink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxaudiosrc.html">osxaudiosrc</a></span><span class="refpurpose"> — Input from a sound card in OS X</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxaudiosrc.html">osxaudiosrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxvideosink.html">osxvideosink</a></span><span class="refpurpose"> — OSX native videosink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-osxvideosink.html">osxvideosink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-pngdec.html">pngdec</a></span><span class="refpurpose"> — Decode a png video frame to a raw image</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-pngdec.html">pngdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-pngenc.html">pngenc</a></span><span class="refpurpose"> — Encode a video frame to a .png image</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-pngenc.html">pngenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-progressreport.html">progressreport</a></span><span class="refpurpose"> — Periodically query and report on processing progress</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-progressreport.html">progressreport</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-pulsesink.html">pulsesink</a></span><span class="refpurpose"> — Plays audio to a PulseAudio server</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-pulsesink.html">pulsesink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-pulsesrc.html">pulsesrc</a></span><span class="refpurpose"> — Captures audio from a PulseAudio server</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-pulsesrc.html">pulsesrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-quarktv.html">quarktv</a></span><span class="refpurpose"> — Motion dissolver</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-quarktv.html">quarktv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-qtdemux.html">qtdemux</a></span><span class="refpurpose"> — Demultiplex a QuickTime file into audio and video streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-qtdemux.html">qtdemux</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-qtmux.html">qtmux</a></span><span class="refpurpose"> — Muxer for quicktime(.mov) files</span> @@ -335,127 +335,127 @@ <span class="refentrytitle"><a href="gst-plugins-good-plugins-qtmoovrecover.html">qtmoovrecover</a></span><span class="refpurpose"> — Utility element for recovering unfinished quicktime files</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-radioactv.html">radioactv</a></span><span class="refpurpose"> — motion-enlightment effect</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-radioactv.html">radioactv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-revtv.html">revtv</a></span><span class="refpurpose"> — A video waveform monitor for each line of video processed</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-revtv.html">revtv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rganalysis.html">rganalysis</a></span><span class="refpurpose"> — Perform the ReplayGain analysis</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rganalysis.html">rganalysis</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rglimiter.html">rglimiter</a></span><span class="refpurpose"> — Apply signal compression to raw audio data</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rglimiter.html">rglimiter</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rgvolume.html">rgvolume</a></span><span class="refpurpose"> — Apply ReplayGain volume adjustment</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rgvolume.html">rgvolume</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rippletv.html">rippletv</a></span><span class="refpurpose"> — RippleTV does ripple mark effect on the video input</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rippletv.html">rippletv</a></span><span class="refpurpose"></span> </dt> <dt> -<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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdec.html">rtpdec</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpac3depay.html">rtpac3depay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpac3pay.html">rtpac3pay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpamrdepay.html">rtpamrdepay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpamrpay.html">rtpamrpay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbvdepay.html">rtpbvdepay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbvpay.html">rtpbvpay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpL16depay.html">rtpL16depay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpL16pay.html">rtpL16pay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpj2kpay.html">rtpj2kpay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpjpegpay.html">rtpjpegpay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpsbcpay.html">rtpsbcpay</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtspsrc.html">rtspsrc</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpbin.html">rtpbin</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdtmfmux.html">rtpdtmfmux</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpdtmfsrc.html">rtpdtmfsrc</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpjitterbuffer.html">rtpjitterbuffer</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpmux.html">rtpmux</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpptdemux.html">rtpptdemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpsession.html">rtpsession</a></span><span class="refpurpose"> — Implement an RTP session</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpsession.html">rtpsession</a></span><span class="refpurpose"></span> </dt> <dt> -<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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtpssrcdemux.html">rtpssrcdemux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtprtxsend.html">rtprtxsend</a></span><span class="refpurpose"> — Retransmit RTP packets when needed, according to RFC4588</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtprtxsend.html">rtprtxsend</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtprtxreceive.html">rtprtxreceive</a></span><span class="refpurpose"> — Receive retransmitted RTP packets according to RFC4588</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-rtprtxreceive.html">rtprtxreceive</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-sbcparse.html">sbcparse</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-scaletempo.html">scaletempo</a></span><span class="refpurpose"></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> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-shagadelictv.html">shagadelictv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-shapewipe.html">shapewipe</a></span><span class="refpurpose"> — Adds a shape wipe transition to a video stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-shapewipe.html">shapewipe</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-shout2send.html">shout2send</a></span><span class="refpurpose"> — Sends data to an icecast server</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-shout2send.html">shout2send</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-smpte.html">smpte</a></span><span class="refpurpose"> — Apply the standard SMPTE transitions on video images</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-smpte.html">smpte</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-smptealpha.html">smptealpha</a></span><span class="refpurpose"> — Apply the standard SMPTE transitions as alpha on video images</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-smptealpha.html">smptealpha</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-souphttpsrc.html">souphttpsrc</a></span><span class="refpurpose"> — Receive data as a client over the network via HTTP using SOUP</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-souphttpsrc.html">souphttpsrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-spectrum.html">spectrum</a></span><span class="refpurpose"> — Run an FFT on the audio signal, output spectrum data</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-spectrum.html">spectrum</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-speexenc.html">speexenc</a></span><span class="refpurpose"> — Encodes audio in Speex format</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-speexenc.html">speexenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-speexdec.html">speexdec</a></span><span class="refpurpose"> — decode speex streams to audio</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-speexdec.html">speexdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-splitfilesrc.html">splitfilesrc</a></span><span class="refpurpose"> — Read a sequentially named set of files as if it was one large file</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-splitfilesrc.html">splitfilesrc</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-splitmuxsrc.html">splitmuxsrc</a></span><span class="refpurpose"> — Split Demuxer bin that recombines files created by @@ -465,79 +465,79 @@ the splitmuxsink element.</span> <span class="refentrytitle"><a href="gst-plugins-good-plugins-splitmuxsink.html">splitmuxsink</a></span><span class="refpurpose"> — Muxer wrapper for splitting output stream by size or time</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-streaktv.html">streaktv</a></span><span class="refpurpose"> — StreakTV makes after images of moving objects</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-streaktv.html">streaktv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-taginject.html">taginject</a></span><span class="refpurpose"> — inject metadata tags</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-taginject.html">taginject</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-udpsrc.html">udpsrc</a></span><span class="refpurpose"> — Receive data over the network via UDP</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-udpsrc.html">udpsrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-udpsink.html">udpsink</a></span><span class="refpurpose"> — Send data over the network via UDP</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-udpsink.html">udpsink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2src.html">v4l2src</a></span><span class="refpurpose"> — Reads frames from a Video4Linux2 device</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2src.html">v4l2src</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2sink.html">v4l2sink</a></span><span class="refpurpose"> — Displays frames on a video4linux2 device</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2sink.html">v4l2sink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2radio.html">v4l2radio</a></span><span class="refpurpose"> — Controls a Video4Linux2 radio device</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-v4l2radio.html">v4l2radio</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-vertigotv.html">vertigotv</a></span><span class="refpurpose"> — A loopback alpha blending effector with rotating and scaling</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-vertigotv.html">vertigotv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-videobalance.html">videobalance</a></span><span class="refpurpose"> — Adjusts brightness, contrast, hue, saturation on a video stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-videobalance.html">videobalance</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-videobox.html">videobox</a></span><span class="refpurpose"> — Resizes a video by adding borders or cropping</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-videobox.html">videobox</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-videocrop.html">videocrop</a></span><span class="refpurpose"> — Crops video into a user-defined region</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-videocrop.html">videocrop</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-videoflip.html">videoflip</a></span><span class="refpurpose"> — Flips and rotates video</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-videoflip.html">videoflip</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-videomixer.html">videomixer</a></span><span class="refpurpose"> — Mix multiple video streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-videomixer.html">videomixer</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-vp8dec.html">vp8dec</a></span><span class="refpurpose"> — Decode VP8 video streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-vp8dec.html">vp8dec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-vp8enc.html">vp8enc</a></span><span class="refpurpose"> — Encode VP8 video streams</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-vp8enc.html">vp8enc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-warptv.html">warptv</a></span><span class="refpurpose"> — WarpTV does realtime goo'ing of the video input</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-warptv.html">warptv</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavenc.html">wavenc</a></span><span class="refpurpose"> — Encode raw audio into WAV</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavenc.html">wavenc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-waveformsink.html">waveformsink</a></span><span class="refpurpose"> — WaveForm audio sink</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-waveformsink.html">waveformsink</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavpackdec.html">wavpackdec</a></span><span class="refpurpose"> — Decodes Wavpack audio data</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavpackdec.html">wavpackdec</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavpackenc.html">wavpackenc</a></span><span class="refpurpose"> — Encodes audio with the Wavpack lossless/lossy audio codec</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavpackenc.html">wavpackenc</a></span><span class="refpurpose"></span> </dt> <dt> <span class="refentrytitle"><a href="gst-plugins-good-plugins-wavpackparse.html">wavpackparse</a></span><span class="refpurpose"> — Wavpack parser</span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavparse.html">wavparse</a></span><span class="refpurpose"> — Parse a .wav file into raw audio</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-wavparse.html">wavparse</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-webmmux.html">webmmux</a></span><span class="refpurpose"> — Muxes video and audio streams into a WebM stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-webmmux.html">webmmux</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-ximagesrc.html">ximagesrc</a></span><span class="refpurpose"> — Creates a screenshot video stream</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-ximagesrc.html">ximagesrc</a></span><span class="refpurpose"></span> </dt> <dt> -<span class="refentrytitle"><a href="gst-plugins-good-plugins-y4menc.html">y4menc</a></span><span class="refpurpose"> — Encodes a YUV frame into the yuv4mpeg format (mjpegtools)</span> +<span class="refentrytitle"><a href="gst-plugins-good-plugins-y4menc.html">y4menc</a></span><span class="refpurpose"></span> </dt> </dl></dd> <dt><span class="chapter"><a href="ch02.html">gst-plugins-good Plugins</a></span></dt> diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml index 6250c7fc2ea586d540e2ef0aa3d9913948c2ac50..efc7b5e2999e829f7f4e75798ae4d8202039e862 100644 --- a/docs/plugins/html/index.sgml +++ b/docs/plugins/html/index.sgml @@ -19,6 +19,10 @@ <ANCHOR id="Gst3GPPMux--presentation-time" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--presentation-time"> <ANCHOR id="Gst3GPPMux--streamable" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--streamable"> <ANCHOR id="Gst3GPPMux--trak-timescale" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--trak-timescale"> +<ANCHOR id="Gst3GPPMux--reserved-bytes-per-sec" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-bytes-per-sec"> +<ANCHOR id="Gst3GPPMux--reserved-duration-remaining" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-duration-remaining"> +<ANCHOR id="Gst3GPPMux--reserved-max-duration" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-max-duration"> +<ANCHOR id="Gst3GPPMux--reserved-moov-update-period" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-3gppmux.html#Gst3GPPMux--reserved-moov-update-period"> <ANCHOR id="gst-plugins-good-plugins-aacparse" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-aacparse.html"> <ANCHOR id="GstAacParse" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-aacparse.html#GstAacParse"> <ANCHOR id="gst-plugins-good-plugins-aacparse.other" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-aacparse.html#gst-plugins-good-plugins-aacparse.other"> @@ -860,6 +864,10 @@ <ANCHOR id="GstISMLMux--presentation-time" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-ismlmux.html#GstISMLMux--presentation-time"> <ANCHOR id="GstISMLMux--streamable" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-ismlmux.html#GstISMLMux--streamable"> <ANCHOR id="GstISMLMux--trak-timescale" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-ismlmux.html#GstISMLMux--trak-timescale"> +<ANCHOR id="GstISMLMux--reserved-bytes-per-sec" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-bytes-per-sec"> +<ANCHOR id="GstISMLMux--reserved-duration-remaining" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-duration-remaining"> +<ANCHOR id="GstISMLMux--reserved-max-duration" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-max-duration"> +<ANCHOR id="GstISMLMux--reserved-moov-update-period" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-ismlmux.html#GstISMLMux--reserved-moov-update-period"> <ANCHOR id="gst-plugins-good-plugins-jackaudiosrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-jackaudiosrc.html"> <ANCHOR id="gst-plugins-good-plugins-jackaudiosrc.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-jackaudiosrc.html#gst-plugins-good-plugins-jackaudiosrc.properties"> <ANCHOR id="GstJackAudioSrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-jackaudiosrc.html#GstJackAudioSrc"> @@ -981,6 +989,10 @@ <ANCHOR id="GstMJ2Mux--presentation-time" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--presentation-time"> <ANCHOR id="GstMJ2Mux--streamable" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--streamable"> <ANCHOR id="GstMJ2Mux--trak-timescale" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--trak-timescale"> +<ANCHOR id="GstMJ2Mux--reserved-bytes-per-sec" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-bytes-per-sec"> +<ANCHOR id="GstMJ2Mux--reserved-duration-remaining" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-duration-remaining"> +<ANCHOR id="GstMJ2Mux--reserved-max-duration" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-max-duration"> +<ANCHOR id="GstMJ2Mux--reserved-moov-update-period" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mj2mux.html#GstMJ2Mux--reserved-moov-update-period"> <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.other" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-monoscope.html#gst-plugins-good-plugins-monoscope.other"> <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"> @@ -1017,6 +1029,10 @@ <ANCHOR id="GstMP4Mux--presentation-time" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--presentation-time"> <ANCHOR id="GstMP4Mux--streamable" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--streamable"> <ANCHOR id="GstMP4Mux--trak-timescale" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--trak-timescale"> +<ANCHOR id="GstMP4Mux--reserved-bytes-per-sec" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-bytes-per-sec"> +<ANCHOR id="GstMP4Mux--reserved-duration-remaining" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-duration-remaining"> +<ANCHOR id="GstMP4Mux--reserved-max-duration" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-max-duration"> +<ANCHOR id="GstMP4Mux--reserved-moov-update-period" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mp4mux.html#GstMP4Mux--reserved-moov-update-period"> <ANCHOR id="gst-plugins-good-plugins-mulawdec" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mulawdec.html"> <ANCHOR id="GstMuLawDec" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mulawdec.html#GstMuLawDec"> <ANCHOR id="gst-plugins-good-plugins-mulawdec.other" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-mulawdec.html#gst-plugins-good-plugins-mulawdec.other"> @@ -1354,6 +1370,10 @@ <ANCHOR id="GstQTMux--presentation-time" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-qtmux.html#GstQTMux--presentation-time"> <ANCHOR id="GstQTMux--streamable" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-qtmux.html#GstQTMux--streamable"> <ANCHOR id="GstQTMux--trak-timescale" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-qtmux.html#GstQTMux--trak-timescale"> +<ANCHOR id="GstQTMux--reserved-bytes-per-sec" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-bytes-per-sec"> +<ANCHOR id="GstQTMux--reserved-duration-remaining" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-duration-remaining"> +<ANCHOR id="GstQTMux--reserved-max-duration" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-max-duration"> +<ANCHOR id="GstQTMux--reserved-moov-update-period" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-qtmux.html#GstQTMux--reserved-moov-update-period"> <ANCHOR id="gst-plugins-good-plugins-qtmoovrecover" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-qtmoovrecover.html"> <ANCHOR id="gst-plugins-good-plugins-qtmoovrecover.functions" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-qtmoovrecover.html#gst-plugins-good-plugins-qtmoovrecover.functions"> <ANCHOR id="gst-plugins-good-plugins-qtmoovrecover.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-qtmoovrecover.html#gst-plugins-good-plugins-qtmoovrecover.properties"> @@ -1621,6 +1641,7 @@ <ANCHOR id="GstRTSPSrc--tls-database" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--tls-database"> <ANCHOR id="GstRTSPSrc--tls-validation-flags" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--tls-validation-flags"> <ANCHOR id="GstRTSPSrc--do-retransmission" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--do-retransmission"> +<ANCHOR id="GstRTSPSrc--tls-interaction" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtspsrc.html#GstRTSPSrc--tls-interaction"> <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"> @@ -1663,6 +1684,7 @@ <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="GstRtpBin--rtp-profile" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin--rtp-profile"> +<ANCHOR id="GstRtpBin--ntp-time-source" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpbin.html#GstRtpBin--ntp-time-source"> <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"> @@ -1802,6 +1824,7 @@ <ANCHOR id="GstRtpSession--probation" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#GstRtpSession--probation"> <ANCHOR id="GstRtpSession--stats" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#GstRtpSession--stats"> <ANCHOR id="GstRtpSession--rtp-profile" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#GstRtpSession--rtp-profile"> +<ANCHOR id="GstRtpSession--ntp-time-source" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#GstRtpSession--ntp-time-source"> <ANCHOR id="gst-plugins-good-plugins-rtpsession.signal-details" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#gst-plugins-good-plugins-rtpsession.signal-details"> <ANCHOR id="GstRtpSession-clear-pt-map" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#GstRtpSession-clear-pt-map"> <ANCHOR id="GstRtpSession-on-bye-ssrc" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-rtpsession.html#GstRtpSession-on-bye-ssrc"> @@ -1996,6 +2019,7 @@ <ANCHOR id="GstSoupHTTPSrc--ssl-ca-file" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--ssl-ca-file"> <ANCHOR id="GstSoupHTTPSrc--ssl-strict" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--ssl-strict"> <ANCHOR id="GstSoupHTTPSrc--ssl-use-system-ca-file" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--ssl-use-system-ca-file"> +<ANCHOR id="GstSoupHTTPSrc--tls-database" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-souphttpsrc.html#GstSoupHTTPSrc--tls-database"> <ANCHOR id="gst-plugins-good-plugins-spectrum" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-spectrum.html"> <ANCHOR id="gst-plugins-good-plugins-spectrum.properties" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-spectrum.html#gst-plugins-good-plugins-spectrum.properties"> <ANCHOR id="GstSpectrum" href="gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-spectrum.html#GstSpectrum"> diff --git a/docs/plugins/inspect/plugin-1394.xml b/docs/plugins/inspect/plugin-1394.xml index cafa3b1934bf3da6490764d8ce35fcd0645e4555..6d710c042656b06fccb2295f079da4b56054b1d1 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.5.1</version> + <version>1.5.2</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 99ceb50a5daa4c2d922125ac93a43289dbd3cbfc..d4e8768573dbdddc5636d9b77a9dda193fff4c19 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.5.1</version> + <version>1.5.2</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 960f68389c9a2c819e4554979acf0eef373f0365..15fefdbc69c3e487a4433a03eea0444e62ff187b 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.5.1</version> + <version>1.5.2</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 c52a262cd5e996e5db15e980d57a16e0c09036f6..c8d58a9fff6a60cb3ee78b0178d6df6c607ae93b 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.5.1</version> + <version>1.5.2</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 58e36949ea2f6e3b7bc8a2a0ce644fb323167786..518d732f10a6b5cf816ca79de09b2e09b983259b 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.5.1</version> + <version>1.5.2</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 5c87b4efb0bdd4edf5ff7526f2404a0eebcfcb6e..b82e6422112f8dec9a9716bcce316b21cbacbcaa 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.5.1</version> + <version>1.5.2</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 4da2f7e3fd5269bcd974b061e210e02b9f604230..d7a2139b101b0f2a41ebe2d796f23b6dd83180c2 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-audioparsers.xml b/docs/plugins/inspect/plugin-audioparsers.xml index ae4de689e37d61bca38b91fb0c656c9b9699bfd6..55c7ac6d9cea9fe6d51323c9aee88fa0d187fd6b 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-auparse.xml b/docs/plugins/inspect/plugin-auparse.xml index 7ac3b7341c4afe37bc839e9ae9de8a233d04fe20..0b12310480fd23cee8c629549a076af9428b2d93 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.5.1</version> + <version>1.5.2</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 321225badf61d1bd2cd7eb56c931aa623f88deac..5fbfbaa8d96abe65d5dbc965b49c9eb63e3218f6 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.5.1</version> + <version>1.5.2</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 cd9d95e211feac9c9828c0f645fe3660011f65ab..38da335c4c614a4cd61cab8ee00cc343889f92e2 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-cacasink.xml b/docs/plugins/inspect/plugin-cacasink.xml index c98e937de165699b4f415d8ca37fda93632c8e46..d7df4f7600d73f3b7f36faa8bdea96ce943e58f1 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-cairo.xml b/docs/plugins/inspect/plugin-cairo.xml index 46bb314f09dad8b46a208bc1d391e4e7effd1ed6..d7665efff1598d7624a64e2d208f240c2f12461c 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.5.1</version> + <version>1.5.2</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 461bd15c67c2d538e173fbfca6470a4eb30383f0..bd8c287e540460242eaee5d78543668efa05b6b7 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.5.1</version> + <version>1.5.2</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 9b2b2fdbdef8dc6696d9f7a0eaa4954826372e8a..9136d0b57e065a6a830618662286e1b567ac5f5d 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.5.1</version> + <version>1.5.2</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 a8a9655e529c9afb3aaa146a2da992d01ce8cfad..248d596d5cb7cd482490f72cb0b099accdfcd73b 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.5.1</version> + <version>1.5.2</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 index aa60f481aae2a6b5f9aa4b92d235bb983fb4ce55..7196a10f574132202aa0ad97e9a549c76c751fbf 100644 --- a/docs/plugins/inspect/plugin-dtmf.xml +++ b/docs/plugins/inspect/plugin-dtmf.xml @@ -3,7 +3,7 @@ <description>DTMF plugins</description> <filename>../../gst/dtmf/.libs/libgstdtmf.so</filename> <basename>libgstdtmf.so</basename> - <version>1.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-dv.xml b/docs/plugins/inspect/plugin-dv.xml index cf8fb7f53fdb11872361de7f204b6cad27e4aa1d..4718643431f2dda44f0b450b437bfe0c49fd480c 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.5.1</version> + <version>1.5.2</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 b9a0155e9c628b99a05d39f3dfa584e1ca7d8ea5..6f32d0832c523f88181e94fe8f9332dc34d70974 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.5.1</version> + <version>1.5.2</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 7edf165e484cbac9970625c072fe524e7979d967..a0bb67e59e129013e7a71bac5d6988e3408512a4 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.5.1</version> + <version>1.5.2</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 8173f733c46e09c55293e9f0e10051fdaf6d254f..bafc078a57f83faf3a78333635af0bdaa1cc70f6 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.5.1</version> + <version>1.5.2</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 3c337b018ced9dc120ec656b8f7a714999c92155..5c53b392288d36de72a89a6e7ebbb44f6677c6fb 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.5.1</version> + <version>1.5.2</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 9cfa9ff946aacdb10f4f0ad646ada8f07771facf..32df8a28352b38a3321d97d46bc362d808aa0796 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.5.1</version> + <version>1.5.2</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 655531c56140d887ef5714b0ce26fa072b9f25b5..c4e26a8712c26c4117771bef76ea6f2e0b6d67d2 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.5.1</version> + <version>1.5.2</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 da2c84f43b70400283687da2f9d0881e486a7d95..63baa82e08fb1c301e2821223379111c81923170 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.5.1</version> + <version>1.5.2</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 97b08027187bbccea3943f149149338c0cce3bff..c909d512254cc28e02a0689d6df6ecd479167412 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.5.1</version> + <version>1.5.2</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 f49b6a1c33f5912ea3ec64a1eba238e4f61f102c..71a9810b1d740e246e18df58e3b631c5e8e717e8 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.5.1</version> + <version>1.5.2</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 e6c9cac67bcb33c2b4c3948a8e53c281a445785d..27ee4d57fc53f3bc41f5419c1b899dd3488e7b86 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.5.1</version> + <version>1.5.2</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 7c70a5a5b84fee121b0782dd04085440819dc321..c0055ace6bdb5df9b6fec5641f51772b6d070a86 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.5.1</version> + <version>1.5.2</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 e81df35e972e0410b2cd0e01eb64e4d5d435040e..9dcc351cb26001eef69c7d8dbf968de56a4a31f2 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.5.1</version> + <version>1.5.2</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 3731983d2b8e0a4c2ec0c6f21be39d0b6ef3caac..b49b4ac66bf974bef26235f4e36ef697be5a7187 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> @@ -20,7 +20,7 @@ <name>audio_%u</name> <direction>sink</direction> <presence>request</presence> - <details>audio/AMR, rate=(int)8000, channels=(int)[ 1, 2 ]; audio/AMR-WB, rate=(int)16000, channels=(int)[ 1, 2 ]; audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]</details> + <details>audio/AMR, rate=(int)8000, channels=(int)[ 1, 2 ]; audio/AMR-WB, rate=(int)16000, channels=(int)[ 1, 2 ]; audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]; audio/x-ac3, channels=(int)[ 1, 6 ], rate=(int)[ 1, 2147483647 ]</details> </caps> <caps> <name>subtitle_%u</name> @@ -107,7 +107,7 @@ <name>audio_%u</name> <direction>sink</direction> <presence>request</presence> - <details>audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]; audio/x-alac, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]</details> + <details>audio/mpeg, mpegversion=(int)1, layer=(int)3, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw, channels=(int)[ 1, 8 ], rate=(int)[ 1, 2147483647 ]; audio/x-ac3, channels=(int)[ 1, 6 ], rate=(int)[ 1, 2147483647 ]; audio/x-alac, channels=(int)[ 1, 2 ], rate=(int)[ 1, 2147483647 ]</details> </caps> <caps> <name>subtitle_%u</name> diff --git a/docs/plugins/inspect/plugin-jack.xml b/docs/plugins/inspect/plugin-jack.xml index 0c94582ead3a17d87bbc050121524c0d1439e6ac..30c0ee0de9a96d0561c069a64ea569955506a3b5 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.5.1</version> + <version>1.5.2</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 cf512a764e1b2caf6a8c4e7263d14a675528712f..8498df1f653fac5f5c949fe3d0116f8dba4845a5 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.5.1</version> + <version>1.5.2</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 449cf40e60fa2d01b36fd8bd6028311723f71a5f..f84d397179e7d0c8fbe37faec83498de1813d527 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.5.1</version> + <version>1.5.2</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 7f0591183761af5ecff571e4c569d1adbe9d8349..518d747c6de76fb67f738abc15bfede33551818d 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-mulaw.xml b/docs/plugins/inspect/plugin-mulaw.xml index 60aec9beed6cae1fad2736f0d9689ced3deffd1a..a3fe105540c7fca6c59497b81039ee05f01e2bde 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.5.1</version> + <version>1.5.2</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 acc028f98d9d07582ee11342d0ceea48067c1f8a..19487953d616eb6357c4096ab237aa238c4ccbda 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.5.1</version> + <version>1.5.2</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 8d6145dbeef7ccb0ed9326eab63b3fa7eeefdf10..c8dd4a2a1d48f4ec2497bd2fed9164fe9273676e 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.5.1</version> + <version>1.5.2</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 133fc3e75284894bdfef83a4a6c9af7f4db42e77..46750e0278e3a3c7a31138129e9f14bb73bda45c 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.5.1</version> + <version>1.5.2</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 13a27817dad2e86607aa704e48e64ccb5a7ddfe7..4767a3f8f21d1f1b5a6121f2bbbf5a852946108c 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.5.1</version> + <version>1.5.2</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 0ab71dcf7436a010a30c62bf4f0dc1de8e2a68cc..fa263e009518247ea6acd0dfbb1fb9182903731b 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.5.1</version> + <version>1.5.2</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 8084bb757a76215334b09efd15c8b1dbffb02f81..ea786467237272e5811d953e2269041c1cdb57b8 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.5.1</version> + <version>1.5.2</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 784720a691f3d7aa8bc55f5e9d417e48e8cd9bdb..41f4595e5b22f8af22d5822e29bc8a8042775e1d 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-replaygain.xml b/docs/plugins/inspect/plugin-replaygain.xml index b0a9b35f011707b9ed6ad0452f1f11b1f6e47131..f1fca6305ef8c5348fa1f7f6690f933c3b576bc9 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.5.1</version> + <version>1.5.2</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 1ebd5442ffd939a597f0b751ab268a3c781c19ed..5ab964dd1d319a737ad631e0c052ced20f6e2c43 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-rtpmanager.xml b/docs/plugins/inspect/plugin-rtpmanager.xml index 0d7aa02ecd4317b3cac71f3a114ba74f550b022b..f7a8c48a3d4065cb075dd0335a27a9e06aac7cd5 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-rtsp.xml b/docs/plugins/inspect/plugin-rtsp.xml index a8ec61c4861ab861b3fe5089dc18df17bfff35a5..94615e93852e03a43e4993273a28c9d76a12a26f 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.5.1</version> + <version>1.5.2</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 c7b3a8fc7502ef4e0689a395b1a4bb5295e4e3b2..d15c5ad8dc9c3dfa1b4f54e5cbb21be7846e1159 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.5.1</version> + <version>1.5.2</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 7abf0cb56a8cfb4da24865797e40cb09de7d193b..d40320f2bbcaf248a88df20a151a819e410802ed 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>libshout2</package> diff --git a/docs/plugins/inspect/plugin-smpte.xml b/docs/plugins/inspect/plugin-smpte.xml index 76577dff6534846e9fea7832ca4a7f326f60781b..17f6fd79f28870141e0de733e463e71fdf7af8f9 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.5.1</version> + <version>1.5.2</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 835344088e31bea6c1ac3f481c650a06a313d4af..403027882a224e8b7f36ec3dd59c5afecbd1f106 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.5.1</version> + <version>1.5.2</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 1a8c97aa60900b1761f665603bfe5f368ff1d2a7..44e5a3b8607b9a189ba68aa5f6f74ac1e0c8d5e5 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.5.1</version> + <version>1.5.2</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 6fae5bc8568115cc979e4b7559d7aeae3bda2845..1fd09c8ac00115619c9dad701e529b762eb30153 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.5.1</version> + <version>1.5.2</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 263749931e27e6d5c4c129f3c6d96b0003a0db3f..d8648ba31199888a75c06d7cad0e58ce15f01d34 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.5.1</version> + <version>1.5.2</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 76515e9bce6323a11a039a3b7f07bf66429fab28..9425901b4de11e38232b43464bb8db50ec989d27 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.5.1</version> + <version>1.5.2</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 768e4d579afa03a282cfcb3e5c9e872ddcc16bac..2a8e9989b05cc79e389083ec63e093001dbe9f30 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-videobox.xml b/docs/plugins/inspect/plugin-videobox.xml index ff2523ea9a272eecb8a6793526d5470e50c73536..cb0b98dd5e228db998150cc6c609455cb0e2e1c6 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.5.1</version> + <version>1.5.2</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 880646091111e8f92cb94cba7987d2c048e4e47a..0336819f558d5aa534af0e4c1c5988e9f812d8dd 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-videofilter.xml b/docs/plugins/inspect/plugin-videofilter.xml index ef18287ddca3e5b0833ae1e658d9e284b71b7756..4a31828c244c0792b9b35da82e006bbf04fd4bac 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/docs/plugins/inspect/plugin-videomixer.xml b/docs/plugins/inspect/plugin-videomixer.xml index e42d6af282d6687ebddc8cba79f66180be3c36da..6ae0b6a80de8a7563bfb3966d6c184f908c7422a 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.5.1</version> + <version>1.5.2</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 53169c196db830ff56b7c6a2335081142be2003a..ee372967d6eeff60024991224ddad8a6ba314cf2 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.5.1</version> + <version>1.5.2</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 ff0c25a02cfa94a4a22ae0380c85de65a275c51f..715053f15352e81afbdae2da2825908dddad109d 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.5.1</version> + <version>1.5.2</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 8bc233929a9fac254a7224ab91b9524110130bc3..7ec8a8dfe4d7bd41966bc966c5c1f5b8dcd3ffd5 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.5.1</version> + <version>1.5.2</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 b8da52903513438f0c136c9a3411c85cc9abe779..3a126f93b0c8163742ffb24a3cba43e5090c2f43 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.5.1</version> + <version>1.5.2</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 4822b553014515e25ff4487ced45427fde3afeee..a3c8d3eb758e86e2e51cbd24efa197698821109a 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.5.1</version> + <version>1.5.2</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 ee15eb789ead8b2de963b8002e5a8615b4d6e5d1..58e25ff21ff82773b76cd010415ca275e2cd9272 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.5.1</version> + <version>1.5.2</version> <license>LGPL</license> <source>gst-plugins-good</source> <package>GStreamer Good Plug-ins source release</package> diff --git a/ext/pulse/pulsesrc.c b/ext/pulse/pulsesrc.c index 682b92957f0da358676362d3cddd6eff435a6466..6658654ac67dac59204a38f3f078c619b9024ed0 100644 --- a/ext/pulse/pulsesrc.c +++ b/ext/pulse/pulsesrc.c @@ -1501,7 +1501,20 @@ gst_pulsesrc_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec) pa_operation_unref (o); - wanted.maxlength = -1; + /* There's a bit of a disconnect here between the audio ringbuffer and what + * PulseAudio provides. The audio ringbuffer provide a total of buffer_time + * worth of buffering, divided into segments of latency_time size. We're + * asking PulseAudio to provide a total latency of latency_time, which, with + * PA_STREAM_ADJUST_LATENCY, effectively sets itself up as a ringbuffer with + * one segment being the hardware buffer, and the other the software buffer. + * This segment size is returned as the fragsize. + * + * Since the two concepts don't map very well, what we do is keep segsize as + * it is (unless fragsize is even larger, in which case we use that). We'll + * get data from PulseAudio in smaller chunks than we want to pass on as an + * element, and we coalesce those chunks in the ringbuffer memory and pass it + * on in the expected chunk size. */ + wanted.maxlength = spec->segsize * spec->segtotal; wanted.tlength = -1; wanted.prebuf = 0; wanted.minreq = -1; @@ -1574,11 +1587,14 @@ gst_pulsesrc_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec) GST_INFO_OBJECT (pulsesrc, "fragsize: %d (wanted %d)", actual->fragsize, wanted.fragsize); - if (actual->fragsize >= wanted.fragsize) { + if (actual->fragsize >= spec->segsize) { spec->segsize = actual->fragsize; } else { - spec->segsize = actual->fragsize * (wanted.fragsize / actual->fragsize); + /* fragsize is smaller than what we wanted, so let the read function + * coalesce the smaller chunks as they come in */ } + + /* Fix up the total ringbuffer size based on what we actually got */ spec->segtotal = actual->maxlength / spec->segsize; if (!pulsesrc->paused) { diff --git a/ext/soup/gstsouphttpsrc.c b/ext/soup/gstsouphttpsrc.c index 6b073100097bc23ea9961c64e30fc92796816048..962ecb1c044016b813a2605be351850f280ec62b 100644 --- a/ext/soup/gstsouphttpsrc.c +++ b/ext/soup/gstsouphttpsrc.c @@ -122,6 +122,7 @@ enum PROP_SSL_STRICT, PROP_SSL_CA_FILE, PROP_SSL_USE_SYSTEM_CA_FILE, + PROP_TLS_DATABASE, PROP_RETRIES }; @@ -133,6 +134,7 @@ enum #define DEFAULT_SSL_STRICT TRUE #define DEFAULT_SSL_CA_FILE NULL #define DEFAULT_SSL_USE_SYSTEM_CA_FILE TRUE +#define DEFAULT_TLS_DATABASE NULL #define DEFAULT_TIMEOUT 15 #define DEFAULT_RETRIES 3 @@ -335,6 +337,10 @@ gst_soup_http_src_class_init (GstSoupHTTPSrcClass * klass) * A SSL anchor CA file that should be used for checking certificates * instead of the system CA file. * + * If this property is non-%NULL, #GstSoupHTTPSrc::ssl-use-system-ca-file + * value will be ignored. + * + * Deprecated: Use #GstSoupHTTPSrc::tls-database property instead. * Since: 1.4 */ g_object_class_install_property (gobject_class, PROP_SSL_CA_FILE, @@ -346,7 +352,8 @@ gst_soup_http_src_class_init (GstSoupHTTPSrcClass * klass) * GstSoupHTTPSrc::ssl-use-system-ca-file: * * If set to %TRUE, souphttpsrc will use the system's CA file for - * checking certificates. + * checking certificates, unless #GstSoupHTTPSrc::ssl-ca-file or + * #GstSoupHTTPSrc::tls-database are non-%NULL. * * Since: 1.4 */ @@ -355,6 +362,22 @@ gst_soup_http_src_class_init (GstSoupHTTPSrcClass * klass) "Use system CA file", DEFAULT_SSL_USE_SYSTEM_CA_FILE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * GstSoupHTTPSrc::tls-database: + * + * TLS database with anchor certificate authorities used to validate + * the server certificate. + * + * If this property is non-%NULL, #GstSoupHTTPSrc::ssl-use-system-ca-file + * and #GstSoupHTTPSrc::ssl-ca-file values will be ignored. + * + * Since: 1.6 + */ + g_object_class_install_property (gobject_class, PROP_TLS_DATABASE, + g_param_spec_object ("tls-database", "TLS database", + "TLS database with anchor certificate authorities used to validate the server certificate", + G_TYPE_TLS_DATABASE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** * GstSoupHTTPSrc::retries: * @@ -446,6 +469,7 @@ gst_soup_http_src_init (GstSoupHTTPSrc * src) src->log_level = DEFAULT_SOUP_LOG_LEVEL; src->ssl_strict = DEFAULT_SSL_STRICT; src->ssl_use_system_ca_file = DEFAULT_SSL_USE_SYSTEM_CA_FILE; + src->tls_database = DEFAULT_TLS_DATABASE; src->max_retries = DEFAULT_RETRIES; proxy = g_getenv ("http_proxy"); if (proxy && !gst_soup_http_src_set_proxy (src, proxy)) { @@ -501,6 +525,9 @@ gst_soup_http_src_finalize (GObject * gobject) g_free (src->ssl_ca_file); + if (src->tls_database) + g_object_unref (src->tls_database); + G_OBJECT_CLASS (parent_class)->finalize (gobject); } @@ -613,6 +640,10 @@ gst_soup_http_src_set_property (GObject * object, guint prop_id, case PROP_SSL_USE_SYSTEM_CA_FILE: src->ssl_use_system_ca_file = g_value_get_boolean (value); break; + case PROP_TLS_DATABASE: + g_clear_object (&src->tls_database); + src->tls_database = g_value_dup_object (value); + break; case PROP_RETRIES: src->max_retries = g_value_get_int (value); break; @@ -693,7 +724,10 @@ gst_soup_http_src_get_property (GObject * object, guint prop_id, g_value_set_string (value, src->ssl_ca_file); break; case PROP_SSL_USE_SYSTEM_CA_FILE: - g_value_set_boolean (value, src->ssl_strict); + g_value_set_boolean (value, src->ssl_use_system_ca_file); + break; + case PROP_TLS_DATABASE: + g_value_set_object (value, src->tls_database); break; case PROP_RETRIES: g_value_set_int (value, src->max_retries); @@ -903,7 +937,9 @@ gst_soup_http_src_session_open (GstSoupHTTPSrc * src) /* Set up logging */ gst_soup_util_log_setup (src->session, src->log_level, GST_ELEMENT (src)); - if (src->ssl_ca_file) + if (src->tls_database) + g_object_set (src->session, "tls-database", src->tls_database, NULL); + else if (src->ssl_ca_file) g_object_set (src->session, "ssl-ca-file", src->ssl_ca_file, NULL); else g_object_set (src->session, "ssl-use-system-ca-file", diff --git a/ext/soup/gstsouphttpsrc.h b/ext/soup/gstsouphttpsrc.h index e31dfcf7d8c5ad869d5aa3f747fd037019758e6f..163de3d4abd31df2d55f0438e11ad5726ae9df49 100644 --- a/ext/soup/gstsouphttpsrc.h +++ b/ext/soup/gstsouphttpsrc.h @@ -90,6 +90,7 @@ struct _GstSoupHTTPSrc { gboolean ssl_strict; gchar *ssl_ca_file; gboolean ssl_use_system_ca_file; + GTlsDatabase *tls_database; /* Shoutcast/icecast metadata extraction handling. */ gboolean iradio_mode; diff --git a/gst-plugins-good.doap b/gst-plugins-good.doap index 17c398eeb6ec189a481de4e8dc8ed6e799c25f5b..a1b6e3c43064d7d1cc6c69b1870cd9b0f2b70896 100644 --- a/gst-plugins-good.doap +++ b/gst-plugins-good.doap @@ -32,6 +32,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library). </GitRepository> </repository> + <release> + <Version> + <revision>1.5.2</revision> + <branch>1.5</branch> + <name></name> + <created>2015-06-24</created> + <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.5.2.tar.xz" /> + </Version> + </release> + <release> <Version> <revision>1.5.1</revision> diff --git a/gst-plugins-good.spec b/gst-plugins-good.spec index 7ce6fc0f5b9152ec75513beae42620d35cffae48..546c999de9b633d4242c60c9711c46c455abceb6 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.5.1 +Version: 1.5.2 Release: 1.gst Summary: GStreamer plug-ins with good code and licensing diff --git a/gst/audiofx/audiopanoramaorc-dist.c b/gst/audiofx/audiopanoramaorc-dist.c index 12d6aa0e882766f80a636140b53aa2cb4f33299f..3d5999a61ec741960fb1f94b6cb574718c162485 100644 --- a/gst/audiofx/audiopanoramaorc-dist.c +++ b/gst/audiofx/audiopanoramaorc-dist.c @@ -264,7 +264,7 @@ audiopanoramam_orc_process_s16_ch1_none (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 49, 95, 110, 111, 110, 101, 11, 4, 4, 12, 2, 2, 195, 0, 4, 4, 2, 0, }; @@ -390,7 +390,7 @@ audiopanoramam_orc_process_f32_ch1_none (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 49, 95, 110, 111, 110, 101, 11, 8, 8, 12, 4, 4, 194, 0, 4, 4, 2, 0, }; @@ -502,7 +502,7 @@ audiopanoramam_orc_process_s16_ch2_none (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 50, 95, 110, 111, 110, 101, 11, 4, 4, 12, 4, 4, 21, 1, 79, 0, 4, 2, 0, }; @@ -614,7 +614,7 @@ audiopanoramam_orc_process_f32_ch2_none (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 50, 95, 110, 111, 110, 101, 11, 8, 8, 12, 8, 8, 21, 1, 112, 0, 4, 2, 0, }; @@ -842,7 +842,7 @@ audiopanoramam_orc_process_s16_ch1_psy (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 38, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 49, 95, 112, 115, 121, 11, 4, 4, 12, 2, 2, 17, 4, 17, 4, 20, 8, 20, 4, 20, 4, 153, 33, 4, 211, 33, 33, 202, 34, 33, 25, 202, 33, 33, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, @@ -1053,7 +1053,7 @@ audiopanoramam_orc_process_f32_ch1_psy (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 38, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 49, 95, 112, 115, 121, 11, 8, 8, 12, 4, 4, 17, 4, 17, 4, 20, 4, 20, 4, 202, 33, 4, 25, 202, 32, 4, 24, 194, 0, 32, 33, 2, 0, @@ -1355,7 +1355,7 @@ audiopanoramam_orc_process_s16_ch2_psy_right (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 50, 95, 112, 115, 121, 95, 114, 105, 103, 104, 116, 11, 4, 4, 12, 4, 4, 17, 4, 17, 4, 20, 8, 20, 4, 20, 4, 20, 4, 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, @@ -1675,7 +1675,7 @@ audiopanoramam_orc_process_s16_ch2_psy_left (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 50, 95, 112, 115, 121, 95, 108, 101, 102, 116, 11, 4, 4, 12, 4, 4, 17, 4, 17, 4, 20, 8, 20, 4, 20, 4, 20, 4, 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 35, 32, @@ -1945,7 +1945,7 @@ audiopanoramam_orc_process_f32_ch2_psy_right (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 50, 95, 112, 115, 121, 95, 114, 105, 103, 104, 116, 11, 8, 8, 12, 8, 8, 17, 4, 17, 4, 20, 4, 20, 4, 20, 4, 192, 32, 4, 193, 33, 4, 202, 34, 32, 25, 202, 32, 32, 24, 200, 33, 34, @@ -2205,7 +2205,7 @@ audiopanoramam_orc_process_f32_ch2_psy_left (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 50, 95, 112, 115, 121, 95, 108, 101, 102, 116, 11, 8, 8, 12, 8, 8, 17, 4, 17, 4, 20, 4, 20, 4, 20, 4, 192, 32, 4, 193, 34, 4, 202, 33, 34, 24, 202, 34, 34, 25, 200, 32, 33, 32, @@ -2433,7 +2433,7 @@ audiopanoramam_orc_process_s16_ch1_sim_right (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 49, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, 4, 4, 12, 2, 2, 17, 4, 20, 8, 20, 4, 20, 4, 153, 33, 4, 211, 33, 33, 202, 34, 33, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, @@ -2655,7 +2655,7 @@ audiopanoramam_orc_process_s16_ch1_sim_left (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 49, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 4, 4, 12, 2, 2, 17, 4, 20, 8, 20, 4, 20, 4, 153, 34, 4, 211, 34, 34, 202, 33, 34, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, 21, @@ -2909,7 +2909,7 @@ audiopanoramam_orc_process_s16_ch2_sim_right (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 50, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, 4, 4, 12, 4, 4, 17, 4, 20, 8, 20, 4, 20, 4, 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, 32, 202, 34, 34, @@ -3168,7 +3168,7 @@ audiopanoramam_orc_process_s16_ch2_sim_left (gint16 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, + 49, 54, 95, 99, 104, 50, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 4, 4, 12, 4, 4, 17, 4, 20, 8, 20, 4, 20, 4, 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, 32, 202, 33, 33, 24, @@ -3355,7 +3355,7 @@ audiopanoramam_orc_process_f32_ch1_sim_right (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 49, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, 8, 8, 12, 4, 4, 17, 4, 20, 4, 20, 4, 112, 32, 4, 202, 33, 4, 24, 194, 0, 32, 33, 2, 0, @@ -3529,7 +3529,7 @@ audiopanoramam_orc_process_f32_ch1_sim_left (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 49, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 8, 8, 12, 4, 4, 17, 4, 20, 4, 20, 4, 202, 32, 4, 24, 112, 33, 4, 194, 0, 32, 33, 2, 0, @@ -3725,7 +3725,7 @@ audiopanoramam_orc_process_f32_ch2_sim_right (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 50, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, 8, 8, 12, 8, 8, 17, 4, 20, 4, 20, 4, 192, 32, 4, 193, 33, 4, 202, 33, 33, 24, 194, 0, 32, 33, 2, 0, @@ -3923,7 +3923,7 @@ audiopanoramam_orc_process_f32_ch2_sim_left (gfloat * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, + 51, 50, 95, 99, 104, 50, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 8, 8, 12, 8, 8, 17, 4, 20, 4, 20, 4, 192, 32, 4, 193, 33, 4, 202, 32, 32, 24, 194, 0, 32, 33, 2, 0, diff --git a/gst/audioparsers/gstdcaparse.c b/gst/audioparsers/gstdcaparse.c index 4b1a6ea98747ffe3461b92aa44e7096baafe1e77..de7385665812d988335759941ba37d8d8e63a1ff 100644 --- a/gst/audioparsers/gstdcaparse.c +++ b/gst/audioparsers/gstdcaparse.c @@ -324,7 +324,7 @@ gst_dca_parse_handle_frame (GstBaseParse * parse, gboolean parser_in_sync; gboolean terminator; guint32 sync = 0; - guint size, rate, chans, num_blocks, samples_per_block, depth; + guint size = 0, rate, chans, num_blocks, samples_per_block, depth; gint block_size; gint endianness; gint off = -1; diff --git a/gst/audioparsers/gstflacparse.c b/gst/audioparsers/gstflacparse.c index 93ff7bde4166696a07fa7d0fcb617942e7ba895b..154e133cea800b0c0de274baf6fdc7b02dd8e78f 100644 --- a/gst/audioparsers/gstflacparse.c +++ b/gst/audioparsers/gstflacparse.c @@ -366,6 +366,10 @@ gst_flac_parse_stop (GstBaseParse * parse) gst_toc_unref (flacparse->toc); flacparse->toc = NULL; } + if (flacparse->seektable) { + gst_buffer_unref (flacparse->seektable); + flacparse->seektable = NULL; + } g_list_foreach (flacparse->headers, (GFunc) gst_mini_object_unref, NULL); g_list_free (flacparse->headers); diff --git a/gst/audioparsers/gstmpegaudioparse.c b/gst/audioparsers/gstmpegaudioparse.c index 5372b39bdc7e36c08c9609c6e33dbe57186e1305..88d31bfe4dd98b982c6f1a46933e6b0623556084 100644 --- a/gst/audioparsers/gstmpegaudioparse.c +++ b/gst/audioparsers/gstmpegaudioparse.c @@ -606,7 +606,7 @@ gst_mpeg_audio_parse_handle_frame (GstBaseParse * parse, GstMpegAudioParse *mp3parse = GST_MPEG_AUDIO_PARSE (parse); GstBuffer *buf = frame->buffer; GstByteReader reader; - gint off, bpf; + gint off, bpf = 0; gboolean lost_sync, draining, valid, caps_change; guint32 header; guint bitrate, layer, rate, channels, version, mode, crc; diff --git a/gst/deinterlace/tvtime-dist.c b/gst/deinterlace/tvtime-dist.c index d92ce306fa975c1b3695bfdbe111edc1fb3a51e5..9ac33461deb5ef33f5ad689f229d9f1be24ca001 100644 --- a/gst/deinterlace/tvtime-dist.c +++ b/gst/deinterlace/tvtime-dist.c @@ -713,7 +713,7 @@ deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 29, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, 105, 110, 101, 95, 108, 105, 110, 101, 97, 114, 95, 98, 108, 101, 110, - 100, + 100, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 2, 2, 0, 0, 0, 20, 2, 20, 2, 20, 2, 150, 32, 4, 150, 33, 5, 150, 34, 6, 70, 32, 32, 33, 70, 34, 34, 34, 70, 32, 32, 34, 70, 32, 32, diff --git a/gst/flv/gstflvdemux.c b/gst/flv/gstflvdemux.c index afa1490b3027fe34e668690e05f6244ecc424bbe..3658844a42d09604466b943788d58e8113a36ba4 100644 --- a/gst/flv/gstflvdemux.c +++ b/gst/flv/gstflvdemux.c @@ -944,18 +944,16 @@ gst_flv_demux_parse_tag_audio (GstFlvDemux * demux, GstBuffer * buffer) GST_LOG_OBJECT (demux, "parsing an audio tag"); - if G_UNLIKELY - (!demux->audio_pad && demux->no_more_pads) { + if (G_UNLIKELY (!demux->audio_pad && demux->no_more_pads)) { #ifndef GST_DISABLE_DEBUG - if G_UNLIKELY - (!demux->no_audio_warned) { + if (G_UNLIKELY (!demux->no_audio_warned)) { GST_WARNING_OBJECT (demux, "Signaled no-more-pads already but had no audio pad -- ignoring"); demux->no_audio_warned = TRUE; - } + } #endif return GST_FLOW_OK; - } + } g_return_val_if_fail (gst_buffer_get_size (buffer) == demux->tag_size, GST_FLOW_ERROR); diff --git a/gst/flv/gstflvmux.c b/gst/flv/gstflvmux.c index 7a5a9e57ca45394c0d5661eab68dee4938cd237d..6694caf5eb4fbed816de99cbe7123987e96ab59d 100644 --- a/gst/flv/gstflvmux.c +++ b/gst/flv/gstflvmux.c @@ -253,7 +253,7 @@ gst_flv_mux_reset (GstElement * element) mux->have_audio = mux->have_video = FALSE; mux->duration = GST_CLOCK_TIME_NONE; mux->new_tags = FALSE; - mux->first_timestamp = GST_CLOCK_TIME_NONE; + mux->first_timestamp = GST_CLOCK_STIME_NONE; mux->state = GST_FLV_MUX_STATE_HEADER; @@ -531,6 +531,8 @@ gst_flv_mux_reset_pad (GstFlvMux * mux, GstFlvPad * cpad, gboolean video) cpad->video_codec_data = NULL; cpad->video_codec = G_MAXUINT; cpad->last_timestamp = 0; + cpad->pts = GST_CLOCK_STIME_NONE; + cpad->dts = GST_CLOCK_STIME_NONE; } static GstPad * @@ -1003,37 +1005,35 @@ gst_flv_mux_buffer_to_tag_internal (GstFlvMux * mux, GstBuffer * buffer, GstMapInfo map; guint size; guint32 pts, dts, cts; - guint8 *data, *bdata; - gsize bsize; + guint8 *data, *bdata = NULL; + gsize bsize = 0; - if (GST_BUFFER_DTS_IS_VALID (buffer)) - dts = GST_BUFFER_DTS (buffer) / GST_MSECOND; - else if (GST_BUFFER_PTS_IS_VALID (buffer)) - dts = GST_BUFFER_PTS (buffer) / GST_MSECOND; - else - dts = cpad->last_timestamp / GST_MSECOND; - - if (GST_BUFFER_PTS_IS_VALID (buffer)) - pts = GST_BUFFER_PTS (buffer) / GST_MSECOND; - else - pts = dts; + if (!GST_CLOCK_STIME_IS_VALID (cpad->dts)) { + pts = dts = cpad->last_timestamp / GST_MSECOND; + } else { + pts = cpad->pts / GST_MSECOND; + dts = cpad->dts / GST_MSECOND; + } + /* Be safe in case TS are buggy */ if (pts > dts) cts = pts - dts; else cts = 0; /* Timestamp must start at zero */ - if (GST_CLOCK_TIME_IS_VALID (mux->first_timestamp)) { + if (GST_CLOCK_STIME_IS_VALID (mux->first_timestamp)) { dts -= mux->first_timestamp / GST_MSECOND; pts = dts + cts; } GST_LOG_OBJECT (mux, "got pts %i dts %i cts %i\n", pts, dts, cts); - gst_buffer_map (buffer, &map, GST_MAP_READ); - bdata = map.data; - bsize = map.size; + if (buffer != NULL) { + gst_buffer_map (buffer, &map, GST_MAP_READ); + bdata = map.data; + bsize = map.size; + } size = 11; if (cpad->video) { @@ -1066,7 +1066,7 @@ gst_flv_mux_buffer_to_tag_internal (GstFlvMux * mux, GstBuffer * buffer, data[8] = data[9] = data[10] = 0; if (cpad->video) { - if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT)) + if (buffer && GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT)) data[11] |= 2 << 4; else data[11] |= 1 << 4; @@ -1077,6 +1077,10 @@ gst_flv_mux_buffer_to_tag_internal (GstFlvMux * mux, GstBuffer * buffer, if (is_codec_data) { data[12] = 0; GST_WRITE_UINT24_BE (data + 13, 0); + } else if (bsize == 0) { + /* AVC end of sequence */ + data[12] = 2; + GST_WRITE_UINT24_BE (data + 13, 0); } else { /* ACV NALU */ data[12] = 1; @@ -1101,24 +1105,29 @@ gst_flv_mux_buffer_to_tag_internal (GstFlvMux * mux, GstBuffer * buffer, } } - gst_buffer_unmap (buffer, &map); + if (buffer) + gst_buffer_unmap (buffer, &map); GST_WRITE_UINT32_BE (data + size - 4, size - 4); GST_BUFFER_PTS (tag) = GST_CLOCK_TIME_NONE; GST_BUFFER_DTS (tag) = GST_CLOCK_TIME_NONE; GST_BUFFER_DURATION (tag) = GST_CLOCK_TIME_NONE; - GST_BUFFER_OFFSET (tag) = GST_BUFFER_OFFSET (buffer); - GST_BUFFER_OFFSET_END (tag) = GST_BUFFER_OFFSET_END (buffer); - /* mark the buffer if it's an audio buffer and there's also video being muxed - * or it's a video interframe */ - if ((mux->have_video && !cpad->video) || - GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT)) - GST_BUFFER_FLAG_SET (tag, GST_BUFFER_FLAG_DELTA_UNIT); + if (buffer) { + GST_BUFFER_OFFSET (tag) = GST_BUFFER_OFFSET (buffer); + GST_BUFFER_OFFSET_END (tag) = GST_BUFFER_OFFSET_END (buffer); - GST_BUFFER_OFFSET (tag) = GST_BUFFER_OFFSET_END (tag) = - GST_BUFFER_OFFSET_NONE; + /* mark the buffer if it's an audio buffer and there's also video being muxed + * or it's a video interframe */ + if ((mux->have_video && !cpad->video) || + GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT)) + GST_BUFFER_FLAG_SET (tag, GST_BUFFER_FLAG_DELTA_UNIT); + } else { + GST_BUFFER_FLAG_SET (tag, GST_BUFFER_FLAG_DELTA_UNIT); + GST_BUFFER_OFFSET (tag) = GST_BUFFER_OFFSET_END (tag) = + GST_BUFFER_OFFSET_NONE; + } return tag; } @@ -1137,6 +1146,12 @@ gst_flv_mux_codec_data_buffer_to_tag (GstFlvMux * mux, GstBuffer * buffer, return gst_flv_mux_buffer_to_tag_internal (mux, buffer, cpad, TRUE); } +static inline GstBuffer * +gst_flv_mux_eos_to_tag (GstFlvMux * mux, GstFlvPad * cpad) +{ + return gst_flv_mux_buffer_to_tag_internal (mux, NULL, cpad, FALSE); +} + static void gst_flv_mux_put_buffer_in_streamheader (GValue * streamheader, GstBuffer * buffer) @@ -1346,6 +1361,29 @@ gst_flv_mux_determine_duration (GstFlvMux * mux) return duration; } +static GstFlowReturn +gst_flv_mux_write_eos (GstFlvMux * mux) +{ + GstBuffer *tag; + GstFlvPad *video_pad = NULL; + GSList *l = mux->collect->data; + + if (!mux->have_video) + return GST_FLOW_OK; + + for (; l; l = l->next) { + GstFlvPad *cpad = l->data; + if (cpad && cpad->video) { + video_pad = cpad; + break; + } + } + + tag = gst_flv_mux_eos_to_tag (mux, video_pad); + + return gst_flv_mux_push (mux, tag); +} + static GstFlowReturn gst_flv_mux_rewrite_header (GstFlvMux * mux) { @@ -1490,7 +1528,7 @@ gst_flv_mux_handle_buffer (GstCollectPads * pads, GstCollectData * cdata, { GstFlvMux *mux = GST_FLV_MUX (user_data); GstFlvPad *best; - GstClockTime best_time; + gint64 best_time = GST_CLOCK_STIME_NONE; GstFlowReturn ret; if (mux->state == GST_FLV_MUX_STATE_HEADER) { @@ -1505,8 +1543,8 @@ gst_flv_mux_handle_buffer (GstCollectPads * pads, GstCollectData * cdata, return ret; mux->state = GST_FLV_MUX_STATE_DATA; - if (GST_BUFFER_DTS_IS_VALID (buffer)) - mux->first_timestamp = GST_BUFFER_DTS (buffer); + if (GST_COLLECT_PADS_DTS_IS_VALID (cdata)) + mux->first_timestamp = GST_COLLECT_PADS_DTS (cdata); else mux->first_timestamp = 0; } @@ -1521,15 +1559,27 @@ gst_flv_mux_handle_buffer (GstCollectPads * pads, GstCollectData * cdata, best = (GstFlvPad *) cdata; if (best) { g_assert (buffer); - best_time = GST_BUFFER_DTS (buffer); + best->dts = GST_COLLECT_PADS_DTS (cdata); + + if (GST_CLOCK_STIME_IS_VALID (best->dts)) + best_time = best->dts - mux->first_timestamp; + + if (GST_BUFFER_PTS_IS_VALID (buffer)) + best->pts = GST_BUFFER_PTS (buffer); + else + best->pts = best->dts; + + GST_LOG_OBJECT (mux, "got buffer PTS %" GST_TIME_FORMAT " DTS %" + GST_STIME_FORMAT "\n", GST_TIME_ARGS (best->pts), + GST_STIME_ARGS (best->dts)); } else { - best_time = GST_CLOCK_TIME_NONE; + best_time = GST_CLOCK_STIME_NONE; } /* The FLV timestamp is an int32 field. For non-live streams error out if a bigger timestamp is seen, for live the timestamp will get wrapped in gst_flv_mux_buffer_to_tag */ - if (!mux->streamable && GST_CLOCK_TIME_IS_VALID (best_time) + if (!mux->streamable && (GST_CLOCK_STIME_IS_VALID (best_time)) && best_time / GST_MSECOND > G_MAXINT32) { GST_WARNING_OBJECT (mux, "Timestamp larger than FLV supports - EOS"); gst_buffer_unref (buffer); @@ -1540,6 +1590,8 @@ gst_flv_mux_handle_buffer (GstCollectPads * pads, GstCollectData * cdata, if (best) { return gst_flv_mux_write_buffer (mux, best, buffer); } else { + /* FIXME check return values */ + gst_flv_mux_write_eos (mux); gst_flv_mux_rewrite_header (mux); gst_pad_push_event (mux->srcpad, gst_event_new_eos ()); return GST_FLOW_EOS; diff --git a/gst/flv/gstflvmux.h b/gst/flv/gstflvmux.h index c08c5dec72b0e5d73765428a26dad43c850488fd..a87afcb615dc0950ef13cd44142ca2bf85fbeb14 100644 --- a/gst/flv/gstflvmux.h +++ b/gst/flv/gstflvmux.h @@ -53,6 +53,8 @@ typedef struct GstBuffer *video_codec_data; GstClockTime last_timestamp; + gint64 pts; + gint64 dts; } GstFlvPad; typedef enum @@ -78,7 +80,7 @@ typedef struct _GstFlvMux { GList *index; guint64 byte_count; guint64 duration; - GstClockTime first_timestamp; + gint64 first_timestamp; } GstFlvMux; typedef struct _GstFlvMuxClass { diff --git a/gst/goom/goom_core.c b/gst/goom/goom_core.c index 6f6597ff5f2c73cd2477642ec23e32b566e233fc..90b8c6fb3ff3a9c1dc4d38e7e5fcdf313c4430f5 100644 --- a/gst/goom/goom_core.c +++ b/gst/goom/goom_core.c @@ -847,6 +847,9 @@ choose_a_goom_line (PluginInfo * goomInfo, float *param1, float *param2, *amplitude = 1.5f; } break; + default: + *param1 = *param2 = 0; + break; } *couleur = goom_irand (goomInfo->gRandom, 6); diff --git a/gst/goom/gstaudiovisualizer.c b/gst/goom/gstaudiovisualizer.c index 1abccbec086de91ef7b2db8519a2f7e301d55972..3e8f3c3ef5b8213014d41affaa15b569c7f423d5 100644 --- a/gst/goom/gstaudiovisualizer.c +++ b/gst/goom/gstaudiovisualizer.c @@ -2,7 +2,7 @@ * Copyright (C) <2011> Stefan Kost <ensonic@users.sf.net> * Copyright (C) <2015> Luis de Bethencourt <luis@debethencourt.com> * - * gstaudiovisualizer.h: class for audio visualisation elements + * gstaudiovisualizer.c: class for audio visualisation elements * * 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 @@ -63,7 +63,7 @@ static void gst_audio_visualizer_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void gst_audio_visualizer_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); -static void gst_audio_visualizer_dispose (GObject * object); +static void gst_audio_visualizer_finalize (GObject * object); static gboolean gst_audio_visualizer_src_negotiate (GstAudioVisualizer * scope); static gboolean gst_audio_visualizer_src_setcaps (GstAudioVisualizer * @@ -199,9 +199,10 @@ shader_fade (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -227,9 +228,10 @@ shader_fade_and_move_up (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -255,9 +257,10 @@ shader_fade_and_move_down (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -283,9 +286,10 @@ shader_fade_and_move_left (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -315,9 +319,10 @@ shader_fade_and_move_right (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -347,9 +352,10 @@ shader_fade_and_move_horiz_out (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -384,9 +390,10 @@ shader_fade_and_move_horiz_in (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -421,9 +428,10 @@ shader_fade_and_move_vert_out (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *s1, *d, *d1; gint ss, ds, width, height; @@ -456,9 +464,10 @@ shader_fade_and_move_vert_in (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *s1, *d, *d1; gint ss, ds, width, height; @@ -489,42 +498,46 @@ shader_fade_and_move_vert_in (GstAudioVisualizer * scope, static void gst_audio_visualizer_change_shader (GstAudioVisualizer * scope) { + GstAudioVisualizerShaderFunc shader; + switch (scope->priv->shader_type) { case GST_AUDIO_VISUALIZER_SHADER_NONE: - scope->priv->shader = NULL; + shader = NULL; break; case GST_AUDIO_VISUALIZER_SHADER_FADE: - scope->priv->shader = shader_fade; + shader = shader_fade; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_UP: - scope->priv->shader = shader_fade_and_move_up; + shader = shader_fade_and_move_up; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_DOWN: - scope->priv->shader = shader_fade_and_move_down; + shader = shader_fade_and_move_down; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_LEFT: - scope->priv->shader = shader_fade_and_move_left; + shader = shader_fade_and_move_left; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_RIGHT: - scope->priv->shader = shader_fade_and_move_right; + shader = shader_fade_and_move_right; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_OUT: - scope->priv->shader = shader_fade_and_move_horiz_out; + shader = shader_fade_and_move_horiz_out; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_IN: - scope->priv->shader = shader_fade_and_move_horiz_in; + shader = shader_fade_and_move_horiz_in; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_OUT: - scope->priv->shader = shader_fade_and_move_vert_out; + shader = shader_fade_and_move_vert_out; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_IN: - scope->priv->shader = shader_fade_and_move_vert_in; + shader = shader_fade_and_move_vert_in; break; default: GST_ERROR ("invalid shader function"); - scope->priv->shader = NULL; + shader = NULL; break; } + + scope->priv->shader = shader; } /* class */ @@ -550,7 +563,7 @@ gst_audio_visualizer_get_type (void) /* TODO: rename when exporting it as a library */ _type = g_type_register_static (GST_TYPE_ELEMENT, - "GstAudioVisualizer-ExtGom", &audio_visualizer_info, + "GstAudioVisualizer-ExtGoom", &audio_visualizer_info, G_TYPE_FLAG_ABSTRACT); g_once_init_leave (&audio_visualizer_type, _type); } @@ -572,7 +585,7 @@ gst_audio_visualizer_class_init (GstAudioVisualizerClass * klass) gobject_class->set_property = gst_audio_visualizer_set_property; gobject_class->get_property = gst_audio_visualizer_get_property; - gobject_class->dispose = gst_audio_visualizer_dispose; + gobject_class->finalize = gst_audio_visualizer_finalize; element_class->change_state = GST_DEBUG_FUNCPTR (gst_audio_visualizer_change_state); @@ -679,41 +692,43 @@ gst_audio_visualizer_get_property (GObject * object, guint prop_id, } static void -gst_audio_visualizer_dispose (GObject * object) +gst_audio_visualizer_finalize (GObject * object) { GstAudioVisualizer *scope = GST_AUDIO_VISUALIZER (object); + GstAudioVisualizerPrivate *priv = scope->priv; - if (scope->priv->adapter) { - g_object_unref (scope->priv->adapter); - scope->priv->adapter = NULL; + if (priv->adapter) { + g_object_unref (priv->adapter); + priv->adapter = NULL; } - if (scope->priv->inbuf) { - gst_buffer_unref (scope->priv->inbuf); - scope->priv->inbuf = NULL; + if (priv->inbuf) { + gst_buffer_unref (priv->inbuf); + priv->inbuf = NULL; } - if (scope->priv->tempbuf) { - gst_video_frame_unmap (&scope->priv->tempframe); - gst_buffer_unref (scope->priv->tempbuf); - scope->priv->tempbuf = NULL; + if (priv->tempbuf) { + gst_video_frame_unmap (&priv->tempframe); + gst_buffer_unref (priv->tempbuf); + priv->tempbuf = NULL; } - if (scope->priv->config_lock.p) { - g_mutex_clear (&scope->priv->config_lock); - scope->priv->config_lock.p = NULL; - } - G_OBJECT_CLASS (parent_class)->dispose (object); + + g_mutex_clear (&priv->config_lock); + + G_OBJECT_CLASS (parent_class)->finalize (object); } static void gst_audio_visualizer_reset (GstAudioVisualizer * scope) { - gst_adapter_clear (scope->priv->adapter); - gst_segment_init (&scope->priv->segment, GST_FORMAT_UNDEFINED); + GstAudioVisualizerPrivate *priv = scope->priv; + + gst_adapter_clear (priv->adapter); + gst_segment_init (&priv->segment, GST_FORMAT_UNDEFINED); GST_OBJECT_LOCK (scope); - scope->priv->proportion = 1.0; - scope->priv->earliest_time = -1; - scope->priv->dropped = 0; - scope->priv->processed = 0; + priv->proportion = 1.0; + priv->earliest_time = -1; + priv->dropped = 0; + priv->processed = 0; GST_OBJECT_UNLOCK (scope); } @@ -754,6 +769,7 @@ gst_audio_visualizer_src_setcaps (GstAudioVisualizer * scope, GstCaps * caps) { GstVideoInfo info; GstAudioVisualizerClass *klass; + GstAudioVisualizerPrivate *priv; gboolean res; if (!gst_video_info_from_caps (&info, caps)) @@ -761,23 +777,24 @@ gst_audio_visualizer_src_setcaps (GstAudioVisualizer * scope, GstCaps * caps) klass = GST_AUDIO_VISUALIZER_CLASS (G_OBJECT_GET_CLASS (scope)); + priv = scope->priv; + scope->vinfo = info; - scope->priv->frame_duration = gst_util_uint64_scale_int (GST_SECOND, + priv->frame_duration = gst_util_uint64_scale_int (GST_SECOND, GST_VIDEO_INFO_FPS_D (&info), GST_VIDEO_INFO_FPS_N (&info)); - scope->priv->spf = - gst_util_uint64_scale_int (GST_AUDIO_INFO_RATE (&scope->ainfo), + priv->spf = gst_util_uint64_scale_int (GST_AUDIO_INFO_RATE (&scope->ainfo), GST_VIDEO_INFO_FPS_D (&info), GST_VIDEO_INFO_FPS_N (&info)); - scope->req_spf = scope->priv->spf; + scope->req_spf = priv->spf; - if (scope->priv->tempbuf) { - gst_video_frame_unmap (&scope->priv->tempframe); - gst_buffer_unref (scope->priv->tempbuf); + if (priv->tempbuf) { + gst_video_frame_unmap (&priv->tempframe); + gst_buffer_unref (priv->tempbuf); } - scope->priv->tempbuf = gst_buffer_new_wrapped (g_malloc0 (scope->vinfo.size), + priv->tempbuf = gst_buffer_new_wrapped (g_malloc0 (scope->vinfo.size), scope->vinfo.size); - gst_video_frame_map (&scope->priv->tempframe, &scope->vinfo, - scope->priv->tempbuf, GST_MAP_READWRITE); + gst_video_frame_map (&priv->tempframe, &scope->vinfo, priv->tempbuf, + GST_MAP_READWRITE); if (klass->setup && !klass->setup (scope)) goto setup_failed; @@ -785,10 +802,10 @@ gst_audio_visualizer_src_setcaps (GstAudioVisualizer * scope, GstCaps * caps) GST_DEBUG_OBJECT (scope, "video: dimension %dx%d, framerate %d/%d", GST_VIDEO_INFO_WIDTH (&info), GST_VIDEO_INFO_HEIGHT (&info), GST_VIDEO_INFO_FPS_N (&info), GST_VIDEO_INFO_FPS_D (&info)); - GST_DEBUG_OBJECT (scope, "blocks: spf %u, req_spf %u", - scope->priv->spf, scope->req_spf); + GST_DEBUG_OBJECT (scope, "blocks: spf %u, req_spf %u", priv->spf, + scope->req_spf); - gst_pad_set_caps (scope->priv->srcpad, caps); + gst_pad_set_caps (priv->srcpad, caps); /* find a pool for the negotiated caps now */ res = gst_audio_visualizer_do_bufferpool (scope, caps); @@ -1064,6 +1081,7 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, { GstFlowReturn ret = GST_FLOW_OK; GstAudioVisualizer *scope; + GstAudioVisualizerPrivate *priv; GstAudioVisualizerClass *klass; GstBuffer *inbuf; guint64 dist, ts; @@ -1072,19 +1090,20 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, gint bps, channels, rate; scope = GST_AUDIO_VISUALIZER (parent); + priv = scope->priv; klass = GST_AUDIO_VISUALIZER_CLASS (G_OBJECT_GET_CLASS (scope)); GST_LOG_OBJECT (scope, "chainfunc called"); /* resync on DISCONT */ if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) { - gst_adapter_clear (scope->priv->adapter); + gst_adapter_clear (priv->adapter); } /* Make sure have an output format */ - if (gst_pad_check_reconfigure (scope->priv->srcpad)) { + if (gst_pad_check_reconfigure (priv->srcpad)) { if (!gst_audio_visualizer_src_negotiate (scope)) { - gst_pad_mark_reconfigure (scope->priv->srcpad); + gst_pad_mark_reconfigure (priv->srcpad); goto not_negotiated; } } @@ -1098,26 +1117,26 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, goto beach; } - gst_adapter_push (scope->priv->adapter, buffer); + gst_adapter_push (priv->adapter, buffer); - g_mutex_lock (&scope->priv->config_lock); + g_mutex_lock (&priv->config_lock); /* this is what we want */ sbpf = scope->req_spf * channels * sizeof (gint16); - inbuf = scope->priv->inbuf; + inbuf = priv->inbuf; /* FIXME: the timestamp in the adapter would be different */ gst_buffer_copy_into (inbuf, buffer, GST_BUFFER_COPY_METADATA, 0, -1); /* this is what we have */ - avail = gst_adapter_available (scope->priv->adapter); + avail = gst_adapter_available (priv->adapter); GST_LOG_OBJECT (scope, "avail: %u, bpf: %u", avail, sbpf); while (avail >= sbpf) { GstBuffer *outbuf; GstVideoFrame outframe; /* get timestamp of the current adapter content */ - ts = gst_adapter_prev_pts (scope->priv->adapter, &dist); + ts = gst_adapter_prev_pts (priv->adapter, &dist); if (GST_CLOCK_TIME_IS_VALID (ts)) { /* convert bytes to time */ dist /= bps; @@ -1131,12 +1150,12 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, gint64 qostime; qostime = - gst_segment_to_running_time (&scope->priv->segment, - GST_FORMAT_TIME, ts) + scope->priv->frame_duration; + gst_segment_to_running_time (&priv->segment, GST_FORMAT_TIME, + ts) + priv->frame_duration; GST_OBJECT_LOCK (scope); - earliest_time = scope->priv->earliest_time; - proportion = scope->priv->proportion; + earliest_time = priv->earliest_time; + proportion = priv->proportion; GST_OBJECT_UNLOCK (scope); if (GST_CLOCK_TIME_IS_VALID (earliest_time) && qostime <= earliest_time) { @@ -1147,26 +1166,26 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, "QoS: skip ts: %" GST_TIME_FORMAT ", earliest: %" GST_TIME_FORMAT, GST_TIME_ARGS (qostime), GST_TIME_ARGS (earliest_time)); - ++scope->priv->dropped; - stream_time = gst_segment_to_stream_time (&scope->priv->segment, + ++priv->dropped; + stream_time = gst_segment_to_stream_time (&priv->segment, GST_FORMAT_TIME, ts); jitter = GST_CLOCK_DIFF (qostime, earliest_time); qos_msg = gst_message_new_qos (GST_OBJECT (scope), FALSE, qostime, stream_time, ts, GST_BUFFER_DURATION (buffer)); gst_message_set_qos_values (qos_msg, jitter, proportion, 1000000); gst_message_set_qos_stats (qos_msg, GST_FORMAT_BUFFERS, - scope->priv->processed, scope->priv->dropped); + priv->processed, priv->dropped); gst_element_post_message (GST_ELEMENT (scope), qos_msg); goto skip; } } - ++scope->priv->processed; + ++priv->processed; - g_mutex_unlock (&scope->priv->config_lock); + g_mutex_unlock (&priv->config_lock); ret = default_prepare_output_buffer (scope, &outbuf); - g_mutex_lock (&scope->priv->config_lock); + g_mutex_lock (&priv->config_lock); /* recheck as the value could have changed */ sbpf = scope->req_spf * channels * sizeof (gint16); @@ -1179,16 +1198,16 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, gst_object_sync_values (GST_OBJECT (scope), ts); GST_BUFFER_TIMESTAMP (outbuf) = ts; - GST_BUFFER_DURATION (outbuf) = scope->priv->frame_duration; + GST_BUFFER_DURATION (outbuf) = priv->frame_duration; /* this can fail as the data size we need could have changed */ - if (!(adata = (gpointer) gst_adapter_map (scope->priv->adapter, sbpf))) + if (!(adata = (gpointer) gst_adapter_map (priv->adapter, sbpf))) break; gst_video_frame_map (&outframe, &scope->vinfo, outbuf, GST_MAP_READWRITE); - if (scope->priv->shader) { - gst_video_frame_copy (&outframe, &scope->priv->tempframe); + if (priv->shader) { + gst_video_frame_copy (&outframe, &priv->tempframe); } else { /* gst_video_frame_clear() or is output frame already cleared */ gint i; @@ -1211,18 +1230,17 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, } else { /* run various post processing (shading and geometric transformation) */ /* FIXME: SHADER assumes 32bpp */ - if (scope->priv->shader && - GST_VIDEO_INFO_COMP_PSTRIDE (&scope->vinfo, 0) == 4) { - scope->priv->shader (scope, &outframe, &scope->priv->tempframe); + if (priv->shader && GST_VIDEO_INFO_COMP_PSTRIDE (&scope->vinfo, 0) == 4) { + priv->shader (scope, &outframe, &priv->tempframe); } } } gst_video_frame_unmap (&outframe); - g_mutex_unlock (&scope->priv->config_lock); - ret = gst_pad_push (scope->priv->srcpad, outbuf); + g_mutex_unlock (&priv->config_lock); + ret = gst_pad_push (priv->srcpad, outbuf); outbuf = NULL; - g_mutex_lock (&scope->priv->config_lock); + g_mutex_lock (&priv->config_lock); skip: /* recheck as the value could have changed */ @@ -1230,21 +1248,21 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, GST_LOG_OBJECT (scope, "avail: %u, bpf: %u", avail, sbpf); /* we want to take less or more, depending on spf : req_spf */ if (avail - sbpf >= sbpf) { - gst_adapter_flush (scope->priv->adapter, sbpf); - gst_adapter_unmap (scope->priv->adapter); + gst_adapter_flush (priv->adapter, sbpf); + gst_adapter_unmap (priv->adapter); } else if (avail >= sbpf) { /* just flush a bit and stop */ - gst_adapter_flush (scope->priv->adapter, (avail - sbpf)); - gst_adapter_unmap (scope->priv->adapter); + gst_adapter_flush (priv->adapter, (avail - sbpf)); + gst_adapter_unmap (priv->adapter); break; } - avail = gst_adapter_available (scope->priv->adapter); + avail = gst_adapter_available (priv->adapter); if (ret != GST_FLOW_OK) break; } - g_mutex_unlock (&scope->priv->config_lock); + g_mutex_unlock (&priv->config_lock); beach: return ret; @@ -1263,8 +1281,10 @@ gst_audio_visualizer_src_event (GstPad * pad, GstObject * parent, { gboolean res; GstAudioVisualizer *scope; + GstAudioVisualizerPrivate *priv; scope = GST_AUDIO_VISUALIZER (parent); + priv = scope->priv; switch (GST_EVENT_TYPE (event)) { case GST_EVENT_QOS: @@ -1277,17 +1297,16 @@ gst_audio_visualizer_src_event (GstPad * pad, GstObject * parent, /* save stuff for the _chain() function */ GST_OBJECT_LOCK (scope); - scope->priv->proportion = proportion; + priv->proportion = proportion; if (diff >= 0) /* we're late, this is a good estimate for next displayable * frame (see part-qos.txt) */ - scope->priv->earliest_time = timestamp + 2 * diff + - scope->priv->frame_duration; + priv->earliest_time = timestamp + 2 * diff + priv->frame_duration; else - scope->priv->earliest_time = timestamp + diff; + priv->earliest_time = timestamp + diff; GST_OBJECT_UNLOCK (scope); - res = gst_pad_push_event (scope->priv->sinkpad, event); + res = gst_pad_push_event (priv->sinkpad, event); break; } case GST_EVENT_RECONFIGURE: diff --git a/gst/goom2k1/gstaudiovisualizer.c b/gst/goom2k1/gstaudiovisualizer.c index d807ad54cb9de75d714efb877e0a54276e7dc316..66b03b611fff1aedcded9ba08a5520d652987300 100644 --- a/gst/goom2k1/gstaudiovisualizer.c +++ b/gst/goom2k1/gstaudiovisualizer.c @@ -2,7 +2,7 @@ * Copyright (C) <2011> Stefan Kost <ensonic@users.sf.net> * Copyright (C) <2015> Luis de Bethencourt <luis@debethencourt.com> * - * gstaudiovisualizer.h: class for audio visualisation elements + * gstaudiovisualizer.c: class for audio visualisation elements * * 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 @@ -63,7 +63,7 @@ static void gst_audio_visualizer_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void gst_audio_visualizer_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); -static void gst_audio_visualizer_dispose (GObject * object); +static void gst_audio_visualizer_finalize (GObject * object); static gboolean gst_audio_visualizer_src_negotiate (GstAudioVisualizer * scope); static gboolean gst_audio_visualizer_src_setcaps (GstAudioVisualizer * @@ -199,9 +199,10 @@ shader_fade (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -227,9 +228,10 @@ shader_fade_and_move_up (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -255,9 +257,10 @@ shader_fade_and_move_down (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -283,9 +286,10 @@ shader_fade_and_move_left (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -315,9 +319,10 @@ shader_fade_and_move_right (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -347,9 +352,10 @@ shader_fade_and_move_horiz_out (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -384,9 +390,10 @@ shader_fade_and_move_horiz_in (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *d; gint ss, ds, width, height; @@ -421,9 +428,10 @@ shader_fade_and_move_vert_out (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *s1, *d, *d1; gint ss, ds, width, height; @@ -456,9 +464,10 @@ shader_fade_and_move_vert_in (GstAudioVisualizer * scope, const GstVideoFrame * sframe, GstVideoFrame * dframe) { guint i, j; - guint r = (scope->priv->shade_amount >> 16) & 0xff; - guint g = (scope->priv->shade_amount >> 8) & 0xff; - guint b = (scope->priv->shade_amount >> 0) & 0xff; + guint32 shade_amount = scope->priv->shade_amount; + guint r = (shade_amount >> 16) & 0xff; + guint g = (shade_amount >> 8) & 0xff; + guint b = (shade_amount >> 0) & 0xff; guint8 *s, *s1, *d, *d1; gint ss, ds, width, height; @@ -489,42 +498,46 @@ shader_fade_and_move_vert_in (GstAudioVisualizer * scope, static void gst_audio_visualizer_change_shader (GstAudioVisualizer * scope) { + GstAudioVisualizerShaderFunc shader; + switch (scope->priv->shader_type) { case GST_AUDIO_VISUALIZER_SHADER_NONE: - scope->priv->shader = NULL; + shader = NULL; break; case GST_AUDIO_VISUALIZER_SHADER_FADE: - scope->priv->shader = shader_fade; + shader = shader_fade; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_UP: - scope->priv->shader = shader_fade_and_move_up; + shader = shader_fade_and_move_up; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_DOWN: - scope->priv->shader = shader_fade_and_move_down; + shader = shader_fade_and_move_down; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_LEFT: - scope->priv->shader = shader_fade_and_move_left; + shader = shader_fade_and_move_left; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_RIGHT: - scope->priv->shader = shader_fade_and_move_right; + shader = shader_fade_and_move_right; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_OUT: - scope->priv->shader = shader_fade_and_move_horiz_out; + shader = shader_fade_and_move_horiz_out; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_IN: - scope->priv->shader = shader_fade_and_move_horiz_in; + shader = shader_fade_and_move_horiz_in; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_OUT: - scope->priv->shader = shader_fade_and_move_vert_out; + shader = shader_fade_and_move_vert_out; break; case GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_IN: - scope->priv->shader = shader_fade_and_move_vert_in; + shader = shader_fade_and_move_vert_in; break; default: GST_ERROR ("invalid shader function"); - scope->priv->shader = NULL; + shader = NULL; break; } + + scope->priv->shader = shader; } /* class */ @@ -572,7 +585,7 @@ gst_audio_visualizer_class_init (GstAudioVisualizerClass * klass) gobject_class->set_property = gst_audio_visualizer_set_property; gobject_class->get_property = gst_audio_visualizer_get_property; - gobject_class->dispose = gst_audio_visualizer_dispose; + gobject_class->finalize = gst_audio_visualizer_finalize; element_class->change_state = GST_DEBUG_FUNCPTR (gst_audio_visualizer_change_state); @@ -679,41 +692,43 @@ gst_audio_visualizer_get_property (GObject * object, guint prop_id, } static void -gst_audio_visualizer_dispose (GObject * object) +gst_audio_visualizer_finalize (GObject * object) { GstAudioVisualizer *scope = GST_AUDIO_VISUALIZER (object); + GstAudioVisualizerPrivate *priv = scope->priv; - if (scope->priv->adapter) { - g_object_unref (scope->priv->adapter); - scope->priv->adapter = NULL; + if (priv->adapter) { + g_object_unref (priv->adapter); + priv->adapter = NULL; } - if (scope->priv->inbuf) { - gst_buffer_unref (scope->priv->inbuf); - scope->priv->inbuf = NULL; + if (priv->inbuf) { + gst_buffer_unref (priv->inbuf); + priv->inbuf = NULL; } - if (scope->priv->tempbuf) { - gst_video_frame_unmap (&scope->priv->tempframe); - gst_buffer_unref (scope->priv->tempbuf); - scope->priv->tempbuf = NULL; + if (priv->tempbuf) { + gst_video_frame_unmap (&priv->tempframe); + gst_buffer_unref (priv->tempbuf); + priv->tempbuf = NULL; } - if (scope->priv->config_lock.p) { - g_mutex_clear (&scope->priv->config_lock); - scope->priv->config_lock.p = NULL; - } - G_OBJECT_CLASS (parent_class)->dispose (object); + + g_mutex_clear (&priv->config_lock); + + G_OBJECT_CLASS (parent_class)->finalize (object); } static void gst_audio_visualizer_reset (GstAudioVisualizer * scope) { - gst_adapter_clear (scope->priv->adapter); - gst_segment_init (&scope->priv->segment, GST_FORMAT_UNDEFINED); + GstAudioVisualizerPrivate *priv = scope->priv; + + gst_adapter_clear (priv->adapter); + gst_segment_init (&priv->segment, GST_FORMAT_UNDEFINED); GST_OBJECT_LOCK (scope); - scope->priv->proportion = 1.0; - scope->priv->earliest_time = -1; - scope->priv->dropped = 0; - scope->priv->processed = 0; + priv->proportion = 1.0; + priv->earliest_time = -1; + priv->dropped = 0; + priv->processed = 0; GST_OBJECT_UNLOCK (scope); } @@ -754,6 +769,7 @@ gst_audio_visualizer_src_setcaps (GstAudioVisualizer * scope, GstCaps * caps) { GstVideoInfo info; GstAudioVisualizerClass *klass; + GstAudioVisualizerPrivate *priv; gboolean res; if (!gst_video_info_from_caps (&info, caps)) @@ -761,23 +777,24 @@ gst_audio_visualizer_src_setcaps (GstAudioVisualizer * scope, GstCaps * caps) klass = GST_AUDIO_VISUALIZER_CLASS (G_OBJECT_GET_CLASS (scope)); + priv = scope->priv; + scope->vinfo = info; - scope->priv->frame_duration = gst_util_uint64_scale_int (GST_SECOND, + priv->frame_duration = gst_util_uint64_scale_int (GST_SECOND, GST_VIDEO_INFO_FPS_D (&info), GST_VIDEO_INFO_FPS_N (&info)); - scope->priv->spf = - gst_util_uint64_scale_int (GST_AUDIO_INFO_RATE (&scope->ainfo), + priv->spf = gst_util_uint64_scale_int (GST_AUDIO_INFO_RATE (&scope->ainfo), GST_VIDEO_INFO_FPS_D (&info), GST_VIDEO_INFO_FPS_N (&info)); - scope->req_spf = scope->priv->spf; + scope->req_spf = priv->spf; - if (scope->priv->tempbuf) { - gst_video_frame_unmap (&scope->priv->tempframe); - gst_buffer_unref (scope->priv->tempbuf); + if (priv->tempbuf) { + gst_video_frame_unmap (&priv->tempframe); + gst_buffer_unref (priv->tempbuf); } - scope->priv->tempbuf = gst_buffer_new_wrapped (g_malloc0 (scope->vinfo.size), + priv->tempbuf = gst_buffer_new_wrapped (g_malloc0 (scope->vinfo.size), scope->vinfo.size); - gst_video_frame_map (&scope->priv->tempframe, &scope->vinfo, - scope->priv->tempbuf, GST_MAP_READWRITE); + gst_video_frame_map (&priv->tempframe, &scope->vinfo, priv->tempbuf, + GST_MAP_READWRITE); if (klass->setup && !klass->setup (scope)) goto setup_failed; @@ -785,10 +802,10 @@ gst_audio_visualizer_src_setcaps (GstAudioVisualizer * scope, GstCaps * caps) GST_DEBUG_OBJECT (scope, "video: dimension %dx%d, framerate %d/%d", GST_VIDEO_INFO_WIDTH (&info), GST_VIDEO_INFO_HEIGHT (&info), GST_VIDEO_INFO_FPS_N (&info), GST_VIDEO_INFO_FPS_D (&info)); - GST_DEBUG_OBJECT (scope, "blocks: spf %u, req_spf %u", - scope->priv->spf, scope->req_spf); + GST_DEBUG_OBJECT (scope, "blocks: spf %u, req_spf %u", priv->spf, + scope->req_spf); - gst_pad_set_caps (scope->priv->srcpad, caps); + gst_pad_set_caps (priv->srcpad, caps); /* find a pool for the negotiated caps now */ res = gst_audio_visualizer_do_bufferpool (scope, caps); @@ -1064,6 +1081,7 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, { GstFlowReturn ret = GST_FLOW_OK; GstAudioVisualizer *scope; + GstAudioVisualizerPrivate *priv; GstAudioVisualizerClass *klass; GstBuffer *inbuf; guint64 dist, ts; @@ -1072,19 +1090,20 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, gint bps, channels, rate; scope = GST_AUDIO_VISUALIZER (parent); + priv = scope->priv; klass = GST_AUDIO_VISUALIZER_CLASS (G_OBJECT_GET_CLASS (scope)); GST_LOG_OBJECT (scope, "chainfunc called"); /* resync on DISCONT */ if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) { - gst_adapter_clear (scope->priv->adapter); + gst_adapter_clear (priv->adapter); } /* Make sure have an output format */ - if (gst_pad_check_reconfigure (scope->priv->srcpad)) { + if (gst_pad_check_reconfigure (priv->srcpad)) { if (!gst_audio_visualizer_src_negotiate (scope)) { - gst_pad_mark_reconfigure (scope->priv->srcpad); + gst_pad_mark_reconfigure (priv->srcpad); goto not_negotiated; } } @@ -1098,26 +1117,26 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, goto beach; } - gst_adapter_push (scope->priv->adapter, buffer); + gst_adapter_push (priv->adapter, buffer); - g_mutex_lock (&scope->priv->config_lock); + g_mutex_lock (&priv->config_lock); /* this is what we want */ sbpf = scope->req_spf * channels * sizeof (gint16); - inbuf = scope->priv->inbuf; + inbuf = priv->inbuf; /* FIXME: the timestamp in the adapter would be different */ gst_buffer_copy_into (inbuf, buffer, GST_BUFFER_COPY_METADATA, 0, -1); /* this is what we have */ - avail = gst_adapter_available (scope->priv->adapter); + avail = gst_adapter_available (priv->adapter); GST_LOG_OBJECT (scope, "avail: %u, bpf: %u", avail, sbpf); while (avail >= sbpf) { GstBuffer *outbuf; GstVideoFrame outframe; /* get timestamp of the current adapter content */ - ts = gst_adapter_prev_pts (scope->priv->adapter, &dist); + ts = gst_adapter_prev_pts (priv->adapter, &dist); if (GST_CLOCK_TIME_IS_VALID (ts)) { /* convert bytes to time */ dist /= bps; @@ -1131,12 +1150,12 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, gint64 qostime; qostime = - gst_segment_to_running_time (&scope->priv->segment, - GST_FORMAT_TIME, ts) + scope->priv->frame_duration; + gst_segment_to_running_time (&priv->segment, GST_FORMAT_TIME, + ts) + priv->frame_duration; GST_OBJECT_LOCK (scope); - earliest_time = scope->priv->earliest_time; - proportion = scope->priv->proportion; + earliest_time = priv->earliest_time; + proportion = priv->proportion; GST_OBJECT_UNLOCK (scope); if (GST_CLOCK_TIME_IS_VALID (earliest_time) && qostime <= earliest_time) { @@ -1147,26 +1166,26 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, "QoS: skip ts: %" GST_TIME_FORMAT ", earliest: %" GST_TIME_FORMAT, GST_TIME_ARGS (qostime), GST_TIME_ARGS (earliest_time)); - ++scope->priv->dropped; - stream_time = gst_segment_to_stream_time (&scope->priv->segment, + ++priv->dropped; + stream_time = gst_segment_to_stream_time (&priv->segment, GST_FORMAT_TIME, ts); jitter = GST_CLOCK_DIFF (qostime, earliest_time); qos_msg = gst_message_new_qos (GST_OBJECT (scope), FALSE, qostime, stream_time, ts, GST_BUFFER_DURATION (buffer)); gst_message_set_qos_values (qos_msg, jitter, proportion, 1000000); gst_message_set_qos_stats (qos_msg, GST_FORMAT_BUFFERS, - scope->priv->processed, scope->priv->dropped); + priv->processed, priv->dropped); gst_element_post_message (GST_ELEMENT (scope), qos_msg); goto skip; } } - ++scope->priv->processed; + ++priv->processed; - g_mutex_unlock (&scope->priv->config_lock); + g_mutex_unlock (&priv->config_lock); ret = default_prepare_output_buffer (scope, &outbuf); - g_mutex_lock (&scope->priv->config_lock); + g_mutex_lock (&priv->config_lock); /* recheck as the value could have changed */ sbpf = scope->req_spf * channels * sizeof (gint16); @@ -1179,16 +1198,16 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, gst_object_sync_values (GST_OBJECT (scope), ts); GST_BUFFER_TIMESTAMP (outbuf) = ts; - GST_BUFFER_DURATION (outbuf) = scope->priv->frame_duration; + GST_BUFFER_DURATION (outbuf) = priv->frame_duration; /* this can fail as the data size we need could have changed */ - if (!(adata = (gpointer) gst_adapter_map (scope->priv->adapter, sbpf))) + if (!(adata = (gpointer) gst_adapter_map (priv->adapter, sbpf))) break; gst_video_frame_map (&outframe, &scope->vinfo, outbuf, GST_MAP_READWRITE); - if (scope->priv->shader) { - gst_video_frame_copy (&outframe, &scope->priv->tempframe); + if (priv->shader) { + gst_video_frame_copy (&outframe, &priv->tempframe); } else { /* gst_video_frame_clear() or is output frame already cleared */ gint i; @@ -1211,18 +1230,17 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, } else { /* run various post processing (shading and geometric transformation) */ /* FIXME: SHADER assumes 32bpp */ - if (scope->priv->shader && - GST_VIDEO_INFO_COMP_PSTRIDE (&scope->vinfo, 0) == 4) { - scope->priv->shader (scope, &outframe, &scope->priv->tempframe); + if (priv->shader && GST_VIDEO_INFO_COMP_PSTRIDE (&scope->vinfo, 0) == 4) { + priv->shader (scope, &outframe, &priv->tempframe); } } } gst_video_frame_unmap (&outframe); - g_mutex_unlock (&scope->priv->config_lock); - ret = gst_pad_push (scope->priv->srcpad, outbuf); + g_mutex_unlock (&priv->config_lock); + ret = gst_pad_push (priv->srcpad, outbuf); outbuf = NULL; - g_mutex_lock (&scope->priv->config_lock); + g_mutex_lock (&priv->config_lock); skip: /* recheck as the value could have changed */ @@ -1230,21 +1248,21 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent, GST_LOG_OBJECT (scope, "avail: %u, bpf: %u", avail, sbpf); /* we want to take less or more, depending on spf : req_spf */ if (avail - sbpf >= sbpf) { - gst_adapter_flush (scope->priv->adapter, sbpf); - gst_adapter_unmap (scope->priv->adapter); + gst_adapter_flush (priv->adapter, sbpf); + gst_adapter_unmap (priv->adapter); } else if (avail >= sbpf) { /* just flush a bit and stop */ - gst_adapter_flush (scope->priv->adapter, (avail - sbpf)); - gst_adapter_unmap (scope->priv->adapter); + gst_adapter_flush (priv->adapter, (avail - sbpf)); + gst_adapter_unmap (priv->adapter); break; } - avail = gst_adapter_available (scope->priv->adapter); + avail = gst_adapter_available (priv->adapter); if (ret != GST_FLOW_OK) break; } - g_mutex_unlock (&scope->priv->config_lock); + g_mutex_unlock (&priv->config_lock); beach: return ret; @@ -1263,8 +1281,10 @@ gst_audio_visualizer_src_event (GstPad * pad, GstObject * parent, { gboolean res; GstAudioVisualizer *scope; + GstAudioVisualizerPrivate *priv; scope = GST_AUDIO_VISUALIZER (parent); + priv = scope->priv; switch (GST_EVENT_TYPE (event)) { case GST_EVENT_QOS: @@ -1277,17 +1297,16 @@ gst_audio_visualizer_src_event (GstPad * pad, GstObject * parent, /* save stuff for the _chain() function */ GST_OBJECT_LOCK (scope); - scope->priv->proportion = proportion; + priv->proportion = proportion; if (diff >= 0) /* we're late, this is a good estimate for next displayable * frame (see part-qos.txt) */ - scope->priv->earliest_time = timestamp + 2 * diff + - scope->priv->frame_duration; + priv->earliest_time = timestamp + 2 * diff + priv->frame_duration; else - scope->priv->earliest_time = timestamp + diff; + priv->earliest_time = timestamp + diff; GST_OBJECT_UNLOCK (scope); - res = gst_pad_push_event (scope->priv->sinkpad, event); + res = gst_pad_push_event (priv->sinkpad, event); break; } case GST_EVENT_RECONFIGURE: diff --git a/gst/isomp4/atoms.c b/gst/isomp4/atoms.c index a8ca9cdcf0ecff59a8640e1d70cd7369b77d789e..45e668d9a46c5ca06b335940c7487f0030ef2fc6 100644 --- a/gst/isomp4/atoms.c +++ b/gst/isomp4/atoms.c @@ -196,13 +196,21 @@ atom_data_new (guint32 fourcc) static void atom_data_alloc_mem (AtomData * data, guint32 size) { - if (data->data) { - g_free (data->data); - } + g_free (data->data); data->data = g_new0 (guint8, size); data->datalen = size; } +static AtomData * +atom_data_new_from_data (guint32 fourcc, const guint8 * mem, gsize size) +{ + AtomData *data = atom_data_new (fourcc); + + atom_data_alloc_mem (data, size); + memcpy (data->data, mem, size); + return data; +} + static AtomData * atom_data_new_from_gst_buffer (guint32 fourcc, const GstBuffer * buf) { @@ -1132,6 +1140,20 @@ atom_udta_clear (AtomUDTA * udta) atom_info_list_free (udta->entries); } +/* Clear added tags, but keep the context/flavor the same */ +void +atom_udta_clear_tags (AtomUDTA * udta) +{ + if (udta->entries) { + atom_info_list_free (udta->entries); + udta->entries = NULL; + } + if (udta->meta && udta->meta->ilst->entries) { + atom_info_list_free (udta->meta->ilst->entries); + udta->meta->ilst->entries = NULL; + } +} + static void atom_tag_data_init (AtomTagData * data) { @@ -1727,23 +1749,6 @@ atom_frma_copy_data (AtomFRMA * frma, guint8 ** buffer, return *offset - original_offset; } -static guint64 -atom_mp4s_copy_data (SampleTableEntryMP4S * mp4s, guint8 ** buffer, - guint64 * size, guint64 * offset) -{ - guint64 original_offset = *offset; - - if (!atom_sample_entry_copy_data (&mp4s->se, buffer, size, offset)) { - return 0; - } - if (!atom_esds_copy_data (&mp4s->es, buffer, size, offset)) { - return 0; - } - - atom_write_size (buffer, size, offset, original_offset); - return *offset - original_offset; -} - static guint64 atom_hint_sample_entry_copy_data (AtomHintSampleEntry * hse, guint8 ** buffer, guint64 * size, guint64 * offset) @@ -1980,12 +1985,13 @@ atom_stco64_copy_data (AtomSTCO64 * stco64, guint8 ** buffer, guint64 * size, prop_copy_ensure_buffer (buffer, size, offset, 8 * atom_array_get_len (&stco64->entries)); for (i = 0; i < atom_array_get_len (&stco64->entries); i++) { - guint64 *value = &atom_array_index (&stco64->entries, i); + guint64 value = + atom_array_index (&stco64->entries, i) + stco64->chunk_offset; if (trunc_to_32) { - prop_copy_uint32 ((guint32) * value, buffer, size, offset); + prop_copy_uint32 ((guint32) value, buffer, size, offset); } else { - prop_copy_uint64 (*value, buffer, size, offset); + prop_copy_uint64 (value, buffer, size, offset); } } @@ -2046,12 +2052,6 @@ atom_stsd_copy_data (AtomSTSD * stsd, guint8 ** buffer, guint64 * size, return 0; } break; - case FOURCC_mp4s: - if (!atom_mp4s_copy_data ((SampleTableEntryMP4S *) walker->data, - buffer, size, offset)) { - return 0; - } - break; case FOURCC_mp4v: if (!sample_entry_mp4v_copy_data ((SampleTableEntryMP4V *) walker->data, buffer, size, offset)) { @@ -2749,6 +2749,12 @@ atom_moov_add_trak (AtomMOOV * moov, AtomTRAK * trak) atom_moov_add_trex (moov, atom_trex_new (trak)); } +guint +atom_moov_get_trak_count (AtomMOOV * moov) +{ + return g_list_length (moov->traks); +} + static guint64 atom_trak_get_duration (AtomTRAK * trak) { @@ -2821,28 +2827,27 @@ atom_moov_set_fragmented (AtomMOOV * moov, gboolean fragmented) } void -atom_stco64_chunks_add_offset (AtomSTCO64 * stco64, guint32 offset) +atom_stco64_chunks_set_offset (AtomSTCO64 * stco64, guint32 offset) { - guint i; - - for (i = 0; i < atom_array_get_len (&stco64->entries); i++) { - guint64 *value = &atom_array_index (&stco64->entries, i); - - *value += offset; - } + stco64->chunk_offset = offset; } void -atom_moov_chunks_add_offset (AtomMOOV * moov, guint32 offset) +atom_moov_chunks_set_offset (AtomMOOV * moov, guint32 offset) { GList *traks = moov->traks; + if (offset == moov->chunks_offset) + return; /* Nothing to do */ + while (traks) { AtomTRAK *trak = (AtomTRAK *) traks->data; - atom_stco64_chunks_add_offset (&trak->mdia.minf.stbl.stco64, offset); + atom_stco64_chunks_set_offset (&trak->mdia.minf.stbl.stco64, offset); traks = g_list_next (traks); } + + moov->chunks_offset = offset; } void @@ -3020,24 +3025,14 @@ atom_udta_add_uint_tag (AtomUDTA * udta, guint32 fourcc, guint32 flags, } } -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; -} +#define GST_BUFFER_NEW_READONLY(mem, size) \ + gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, mem, size, \ + 0, size, mem, NULL) void atom_udta_add_blob_tag (AtomUDTA * udta, guint8 * data, guint size) { AtomData *data_atom; - GstBuffer *buf; guint len; guint32 fourcc; @@ -3051,9 +3046,7 @@ atom_udta_add_blob_tag (AtomUDTA * udta, guint8 * data, guint size) if (len > size) return; - buf = _gst_buffer_new_wrapped (data + 8, len - 8, NULL); - data_atom = atom_data_new_from_gst_buffer (fourcc, buf); - gst_buffer_unref (buf); + data_atom = atom_data_new_from_data (fourcc, data + 8, len - 8); atom_udta_append_tag (udta, build_atom_info_wrapper ((Atom *) data_atom, atom_data_copy_data, @@ -3065,18 +3058,15 @@ atom_udta_add_3gp_tag (AtomUDTA * udta, guint32 fourcc, guint8 * data, guint size) { AtomData *data_atom; - GstBuffer *buf; - guint8 *bdata; + + data_atom = atom_data_new (fourcc); /* need full atom */ - bdata = g_malloc (size + 4); - /* full atom: version and flags */ - GST_WRITE_UINT32_BE (bdata, 0); - memcpy (bdata + 4, data, size); + atom_data_alloc_mem (data_atom, size + 4); - buf = _gst_buffer_new_wrapped (bdata, size + 4, g_free); - data_atom = atom_data_new_from_gst_buffer (fourcc, buf); - gst_buffer_unref (buf); + /* full atom: version and flags */ + GST_WRITE_UINT32_BE (data_atom->data, 0); + memcpy (data_atom->data + 4, data, size); atom_udta_append_tag (udta, build_atom_info_wrapper ((Atom *) data_atom, atom_data_copy_data, @@ -3279,31 +3269,41 @@ atom_tkhd_set_subtitle (AtomTKHD * tkhd, AtomsContext * context, guint32 width, static void -atom_edts_add_entry (AtomEDTS * edts, EditListEntry * entry) +atom_edts_add_entry (AtomEDTS * edts, gint index, EditListEntry * entry) { - edts->elst.entries = g_slist_append (edts->elst.entries, entry); + EditListEntry *e = + (EditListEntry *) g_slist_nth_data (edts->elst.entries, index); + /* Create a new entry if missing (appends to the list if index is larger) */ + if (e == NULL) { + e = g_new (EditListEntry, 1); + edts->elst.entries = g_slist_insert (edts->elst.entries, e, index); + } + + /* Update the entry */ + *e = *entry; } -/* - * Adds a new entry to this trak edits list +/* + * Update an entry in this trak edits list, creating it if needed. + * index is the index of the entry to update, or create if it's past the end. * duration is in the moov's timescale * media_time is the offset in the media time to start from (media's timescale) * rate is a 32 bits fixed-point */ void -atom_trak_add_elst_entry (AtomTRAK * trak, guint32 duration, guint32 media_time, - guint32 rate) +atom_trak_set_elst_entry (AtomTRAK * trak, gint index, + guint32 duration, guint32 media_time, guint32 rate) { - EditListEntry *entry = g_new (EditListEntry, 1); + EditListEntry entry; - entry->duration = duration; - entry->media_time = media_time; - entry->media_rate = rate; + entry.duration = duration; + entry.media_time = media_time; + entry.media_rate = rate; - if (trak->edts == NULL) { + if (trak->edts == NULL) trak->edts = atom_edts_new (); - } - atom_edts_add_entry (trak->edts, entry); + + atom_edts_add_entry (trak->edts, index, &entry); } /* re-negotiation is prevented at top-level, so only 1 entry expected. @@ -3422,6 +3422,22 @@ atom_trak_set_subtitle_commons (AtomTRAK * trak, AtomsContext * context) } void +sample_table_entry_add_ext_atom (SampleTableEntry * ste, AtomInfo * ext) +{ + GList **list = NULL; + if (ste->kind == AUDIO) { + list = &(((SampleTableEntryMP4A *) ste)->extension_atoms); + } else if (ste->kind == VIDEO) { + list = &(((SampleTableEntryMP4V *) ste)->extension_atoms); + } else { + g_assert_not_reached (); + return; + } + + *list = g_list_prepend (*list, ext); +} + +SampleTableEntryMP4A * atom_trak_set_audio_type (AtomTRAK * trak, AtomsContext * context, AudioSampleEntry * entry, guint32 scale, AtomInfo * ext, gint sample_size) { @@ -3450,29 +3466,28 @@ atom_trak_set_audio_type (AtomTRAK * trak, AtomsContext * context, /* 0 size means variable size */ atom_trak_set_constant_size_samples (trak, sample_size); + + return ste; } static AtomInfo * build_pasp_extension (AtomTRAK * trak, gint par_width, gint par_height) { - AtomData *atom_data; - GstBuffer *buf; + AtomData *atom_data = atom_data_new (FOURCC_pasp); guint8 *data; - data = g_malloc (8); + atom_data_alloc_mem (atom_data, 8); + data = atom_data->data; + /* ihdr = image header box */ GST_WRITE_UINT32_BE (data, par_width); GST_WRITE_UINT32_BE (data + 4, par_height); - buf = _gst_buffer_new_wrapped (data, 8, g_free); - atom_data = atom_data_new_from_gst_buffer (FOURCC_pasp, buf); - gst_buffer_unref (buf); - return build_atom_info_wrapper ((Atom *) atom_data, atom_data_copy_data, atom_data_free); } -void +SampleTableEntryMP4V * atom_trak_set_video_type (AtomTRAK * trak, AtomsContext * context, VisualSampleEntry * entry, guint32 scale, GList * ext_atoms_list) { @@ -3521,6 +3536,8 @@ atom_trak_set_video_type (AtomTRAK * trak, AtomsContext * context, ste->extension_atoms = g_list_append (ste->extension_atoms, build_pasp_extension (trak, par_n, par_d)); } + + return ste; } void @@ -3531,7 +3548,7 @@ subtitle_sample_entry_init (SubtitleSampleEntry * entry) entry->foreground_color_rgba = 0xFFFFFFFF; /* all white, opaque */ } -void +SampleTableEntryTX3G * atom_trak_set_subtitle_type (AtomTRAK * trak, AtomsContext * context, SubtitleSampleEntry * entry) { @@ -3547,6 +3564,8 @@ atom_trak_set_subtitle_type (AtomTRAK * trak, AtomsContext * context, trak->is_video = FALSE; trak->is_h264 = FALSE; + + return tx3g; } static void @@ -4254,19 +4273,16 @@ AtomInfo * build_btrt_extension (guint32 buffer_size_db, guint32 avg_bitrate, guint32 max_bitrate) { - AtomData *atom_data; - GstBuffer *buf; + AtomData *atom_data = atom_data_new (FOURCC_btrt); guint8 *data; - data = g_malloc (12); + atom_data_alloc_mem (atom_data, 12); + data = atom_data->data; + GST_WRITE_UINT32_BE (data, buffer_size_db); GST_WRITE_UINT32_BE (data + 4, max_bitrate); GST_WRITE_UINT32_BE (data + 8, avg_bitrate); - buf = _gst_buffer_new_wrapped (data, 12, g_free); - atom_data = atom_data_new_from_gst_buffer (FOURCC_btrt, buf); - gst_buffer_unref (buf); - return build_atom_info_wrapper ((Atom *) atom_data, atom_data_copy_data, atom_data_free); } @@ -4322,7 +4338,7 @@ build_mov_aac_extension (AtomTRAK * trak, const GstBuffer * codec_data, /* Add MP4A atom to the WAVE: * not really in spec, but makes offset based players happy */ - buf = _gst_buffer_new_wrapped (&tmp, 4, NULL); + buf = GST_BUFFER_NEW_READONLY (&tmp, 4); mp4a = build_codec_data_extension (FOURCC_mp4a, buf); gst_buffer_unref (buf); @@ -4343,17 +4359,14 @@ AtomInfo * build_fiel_extension (gint fields) { AtomData *atom_data; - GstBuffer *buf; guint8 f = fields; if (fields == 1) { return NULL; } - buf = _gst_buffer_new_wrapped (&f, 1, NULL); atom_data = - atom_data_new_from_gst_buffer (GST_MAKE_FOURCC ('f', 'i', 'e', 'l'), buf); - gst_buffer_unref (buf); + atom_data_new_from_data (GST_MAKE_FOURCC ('f', 'i', 'e', 'l'), &f, 1); return build_atom_info_wrapper ((Atom *) atom_data, atom_data_copy_data, atom_data_free); @@ -4550,7 +4563,7 @@ build_amr_extension (void) /* frames per sample */ GST_WRITE_UINT8 (ext + 8, 1); - buf = _gst_buffer_new_wrapped (ext, sizeof (ext), NULL); + buf = GST_BUFFER_NEW_READONLY (ext, sizeof (ext)); res = build_codec_data_extension (GST_MAKE_FOURCC ('d', 'a', 'm', 'r'), buf); gst_buffer_unref (buf); return res; @@ -4572,7 +4585,7 @@ build_h263_extension (void) GST_WRITE_UINT8 (ext + 5, 10); GST_WRITE_UINT8 (ext + 6, 0); - buf = _gst_buffer_new_wrapped (ext, sizeof (ext), NULL); + buf = GST_BUFFER_NEW_READONLY (ext, sizeof (ext)); res = build_codec_data_extension (GST_MAKE_FOURCC ('d', '2', '6', '3'), buf); gst_buffer_unref (buf); return res; @@ -4589,7 +4602,7 @@ build_gama_atom (gdouble gamma) gamma_fp = (guint32) 65536 *gamma; gamma_fp = GUINT32_TO_BE (gamma_fp); - buf = _gst_buffer_new_wrapped (&gamma_fp, 4, NULL); + buf = GST_BUFFER_NEW_READONLY (&gamma_fp, 4); res = build_codec_data_extension (FOURCC_gama, buf); gst_buffer_unref (buf); return res; @@ -4610,7 +4623,7 @@ build_SMI_atom (const GstBuffer * seqh) GST_WRITE_UINT32_LE (data, FOURCC_SEQH); GST_WRITE_UINT32_BE (data + 4, size + 8); gst_buffer_extract ((GstBuffer *) seqh, 0, data + 8, size); - buf = _gst_buffer_new_wrapped (data, size + 8, g_free); + buf = gst_buffer_new_wrapped (data, size + 8); res = build_codec_data_extension (FOURCC_SMI_, buf); gst_buffer_unref (buf); return res; @@ -4619,10 +4632,9 @@ build_SMI_atom (const GstBuffer * seqh) static AtomInfo * build_ima_adpcm_atom (gint channels, gint rate, gint blocksize) { +#define IMA_ADPCM_ATOM_SIZE 20 AtomData *atom_data; - GstBuffer *buf; guint8 *data; - const gint ima_adpcm_atom_size = 20; guint32 fourcc; gint samplesperblock; gint bytespersec; @@ -4632,7 +4644,9 @@ build_ima_adpcm_atom (gint channels, gint rate, gint blocksize) within the WAVE header (below), it's little endian. */ fourcc = MS_WAVE_FOURCC (0x11); - data = g_malloc (ima_adpcm_atom_size); + atom_data = atom_data_new (fourcc); + atom_data_alloc_mem (atom_data, IMA_ADPCM_ATOM_SIZE); + data = atom_data->data; /* This atom's content is a WAVE header, including 2 bytes of extra data. Note that all of this is little-endian, unlike most stuff in qt. */ @@ -4649,10 +4663,6 @@ build_ima_adpcm_atom (gint channels, gint rate, gint blocksize) GST_WRITE_UINT16_LE (data + 16, 2); /* Two extra bytes */ GST_WRITE_UINT16_LE (data + 18, samplesperblock); - buf = _gst_buffer_new_wrapped (data, ima_adpcm_atom_size, g_free); - atom_data = atom_data_new_from_gst_buffer (fourcc, buf); - gst_buffer_unref (buf); - return build_atom_info_wrapper ((Atom *) atom_data, atom_data_copy_data, atom_data_free); } @@ -4689,6 +4699,37 @@ build_ima_adpcm_extension (gint channels, gint rate, gint blocksize) atom_wave_free); } +AtomInfo * +build_ac3_extension (guint8 fscod, guint8 bsid, guint8 bsmod, guint8 acmod, + guint8 lfe_on, guint8 bitrate_code) +{ + AtomData *atom_data = atom_data_new (FOURCC_dac3); + guint8 *data; + + atom_data_alloc_mem (atom_data, 3); + data = atom_data->data; + + /* Bits from the spec + * fscod 2 + * bsid 5 + * bsmod 3 + * acmod 3 + * lfeon 1 + * bit_rate_code 5 + * reserved 5 + */ + + /* Some bit manipulation magic. Need bitwriter */ + data[0] = (fscod << 6) | (bsid << 1) | ((bsmod >> 2) & 1); + data[1] = + ((bsmod & 0x3) << 6) | (acmod << 3) | ((lfe_on & 1) << 2) | ((bitrate_code + >> 3) & 0x3); + data[2] = ((bitrate_code & 0x7) << 5); + + return build_atom_info_wrapper ((Atom *) atom_data, atom_data_copy_data, + atom_data_free); +} + AtomInfo * build_uuid_xmp_atom (GstBuffer * xmp_data) { diff --git a/gst/isomp4/atoms.h b/gst/isomp4/atoms.h index a54838093db295914a104b81243e4cf8d51b71f5..b2073c6934d6960e190033875fddd95af889a585 100644 --- a/gst/isomp4/atoms.h +++ b/gst/isomp4/atoms.h @@ -415,13 +415,6 @@ typedef struct _SampleTableEntryMP4A GList *extension_atoms; } SampleTableEntryMP4A; -typedef struct _SampleTableEntryMP4S -{ - SampleTableEntry se; - - AtomESDS es; -} SampleTableEntryMP4S; - typedef struct _SampleTableEntryTX3G { SampleTableEntry se; @@ -478,7 +471,8 @@ typedef struct _AtomSTSC typedef struct _AtomSTCO64 { AtomFull header; - + /* Global offset to add to entries when serialising */ + guint32 chunk_offset; ATOM_ARRAY (guint64) entries; } AtomSTCO64; @@ -754,6 +748,7 @@ typedef struct _AtomMOOV AtomUDTA udta; gboolean fragmented; + guint32 chunks_offset; } AtomMOOV; typedef struct _AtomWAVE @@ -828,7 +823,7 @@ AtomTRAK* atom_trak_new (AtomsContext *context); void atom_trak_add_samples (AtomTRAK * trak, guint32 nsamples, guint32 delta, guint32 size, guint64 chunk_offset, gboolean sync, gint64 pts_offset); -void atom_trak_add_elst_entry (AtomTRAK * trak, guint32 duration, +void atom_trak_set_elst_entry (AtomTRAK * trak, gint index, guint32 duration, guint32 media_time, guint32 rate); guint32 atom_trak_get_timescale (AtomTRAK *trak); guint32 atom_trak_get_id (AtomTRAK * trak); @@ -843,12 +838,13 @@ guint64 atom_moov_copy_data (AtomMOOV *atom, guint8 **buffer, guint64 void atom_moov_update_timescale (AtomMOOV *moov, guint32 timescale); void atom_moov_update_duration (AtomMOOV *moov); void atom_moov_set_fragmented (AtomMOOV *moov, gboolean fragmented); -void atom_moov_chunks_add_offset (AtomMOOV *moov, guint32 offset); +void atom_moov_chunks_set_offset (AtomMOOV *moov, guint32 offset); void atom_moov_add_trak (AtomMOOV *moov, AtomTRAK *trak); +guint atom_moov_get_trak_count (AtomMOOV *moov); guint64 atom_mvhd_copy_data (AtomMVHD * atom, guint8 ** buffer, guint64 * size, guint64 * offset); -void atom_stco64_chunks_add_offset (AtomSTCO64 * stco64, guint32 offset); +void atom_stco64_chunks_set_offset (AtomSTCO64 * stco64, guint32 offset); guint64 atom_trak_copy_data (AtomTRAK * atom, guint8 ** buffer, guint64 * size, guint64 * offset); void atom_stbl_clear (AtomSTBL * stbl); @@ -929,15 +925,15 @@ typedef struct void subtitle_sample_entry_init (SubtitleSampleEntry * entry); -void atom_trak_set_audio_type (AtomTRAK * trak, AtomsContext * context, +SampleTableEntryMP4A * atom_trak_set_audio_type (AtomTRAK * trak, AtomsContext * context, AudioSampleEntry * entry, guint32 scale, AtomInfo * ext, gint sample_size); -void atom_trak_set_video_type (AtomTRAK * trak, AtomsContext * context, +SampleTableEntryMP4V * atom_trak_set_video_type (AtomTRAK * trak, AtomsContext * context, VisualSampleEntry * entry, guint32 rate, GList * ext_atoms_list); -void atom_trak_set_subtitle_type (AtomTRAK * trak, AtomsContext * context, +SampleTableEntryTX3G * atom_trak_set_subtitle_type (AtomTRAK * trak, AtomsContext * context, SubtitleSampleEntry * entry); void atom_trak_update_bitrates (AtomTRAK * trak, guint32 avg_bitrate, @@ -946,6 +942,8 @@ void atom_trak_update_bitrates (AtomTRAK * trak, guint32 avg_bitrate, void atom_trak_tx3g_update_dimension (AtomTRAK * trak, guint32 width, guint32 height); +void sample_table_entry_add_ext_atom (SampleTableEntry * ste, AtomInfo * ext); + AtomInfo * build_codec_data_extension (guint32 fourcc, const GstBuffer * codec_data); AtomInfo * build_mov_aac_extension (AtomTRAK * trak, const GstBuffer * codec_data, guint32 avg_bitrate, guint32 max_bitrate); @@ -962,6 +960,9 @@ AtomInfo * build_jp2h_extension (AtomTRAK * trak, gint width, gint heig AtomInfo * build_jp2x_extension (const GstBuffer * prefix); AtomInfo * build_fiel_extension (gint fields); +AtomInfo * build_ac3_extension (guint8 fscod, guint8 bsid, + guint8 bsmod, guint8 acmod, + guint8 lfe_on, guint8 bitrate_code); AtomInfo * build_amr_extension (void); AtomInfo * build_h263_extension (void); AtomInfo * build_gama_atom (gdouble gamma); @@ -974,6 +975,7 @@ AtomInfo * build_uuid_xmp_atom (GstBuffer * xmp); /* * Meta tags functions */ +void atom_udta_clear_tags (AtomUDTA *udta); void atom_udta_add_str_tag (AtomUDTA *udta, guint32 fourcc, const gchar *value); void atom_udta_add_uint_tag (AtomUDTA *udta, guint32 fourcc, guint32 flags, guint32 value); diff --git a/gst/isomp4/atomsrecovery.c b/gst/isomp4/atomsrecovery.c index fec76a37d7cdbe0ea65b4502ac22989b682576ae..83ee3720610a58a06b4da5ddb061c956f0d99654 100644 --- a/gst/isomp4/atomsrecovery.c +++ b/gst/isomp4/atomsrecovery.c @@ -972,7 +972,7 @@ moov_recov_write_file (MoovRecovFile * moovrf, MdatRecovFile * mdatrf, TrakRecovData *trak = &(moovrf->traks_rd[i]); /* 16 for the mdat header */ gint64 offset = moov_size + ftell (outf) + 16; - atom_stco64_chunks_add_offset (&trak->stbl.stco64, offset); + atom_stco64_chunks_set_offset (&trak->stbl.stco64, offset); } /* write the moov */ diff --git a/gst/isomp4/fourcc.h b/gst/isomp4/fourcc.h index c361e9827db3a1aaf438d02f713167f87caf44e9..147027bb53db272df0edce3b8b3c446d2743e554 100644 --- a/gst/isomp4/fourcc.h +++ b/gst/isomp4/fourcc.h @@ -83,6 +83,7 @@ G_BEGIN_DECLS #define FOURCC__too GST_MAKE_FOURCC(0xa9,'t','o','o') #define FOURCC__wrt GST_MAKE_FOURCC(0xa9,'w','r','t') #define FOURCC_aART GST_MAKE_FOURCC('a','A','R','T') +#define FOURCC_ac_3 GST_MAKE_FOURCC('a','c','-','3') #define FOURCC_agsm GST_MAKE_FOURCC('a','g','s','m') #define FOURCC_alac GST_MAKE_FOURCC('a','l','a','c') #define FOURCC_alaw GST_MAKE_FOURCC('a','l','a','w') @@ -101,6 +102,8 @@ G_BEGIN_DECLS #define FOURCC_crgn GST_MAKE_FOURCC('c','r','g','n') #define FOURCC_ctab GST_MAKE_FOURCC('c','t','a','b') #define FOURCC_ctts GST_MAKE_FOURCC('c','t','t','s') +#define FOURCC_cslg GST_MAKE_FOURCC('c','s','l','g') +#define FOURCC_dac3 GST_MAKE_FOURCC('d','a','c','3') #define FOURCC_data GST_MAKE_FOURCC('d','a','t','a') #define FOURCC_dcom GST_MAKE_FOURCC('d','c','o','m') #define FOURCC_desc GST_MAKE_FOURCC('d','e','s','c') @@ -319,6 +322,12 @@ G_BEGIN_DECLS #define MS_WAVE_FOURCC(codecid) GST_MAKE_FOURCC( \ 'm', 's', ((codecid)>>8)&0xff, ((codecid)&0xff)) +/* MPEG Application Format , Stereo Video */ +#define FOURCC_ss01 GST_MAKE_FOURCC('s','s','0','1') +#define FOURCC_ss02 GST_MAKE_FOURCC('s','s','0','2') +#define FOURCC_svmi GST_MAKE_FOURCC('s','v','m','i') +#define FOURCC_scdi GST_MAKE_FOURCC('s','c','d','i') + G_END_DECLS #endif /* __FOURCC_H__ */ diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c index 14e699bd4fc6d3a2bac466368e9cf013f66ec001..c43d612ce258d4b2603e54674dfe8e25244d2e68 100644 --- a/gst/isomp4/gstqtmux.c +++ b/gst/isomp4/gstqtmux.c @@ -2,6 +2,7 @@ * Copyright (C) 2008-2010 Thiago Santos <thiagoss@embedded.ufcg.edu.br> * Copyright (C) 2008 Mark Nauwelaerts <mnauw@users.sf.net> * Copyright (C) 2010 Nokia Corporation. All rights reserved. + * Copyright (C) 2014 Jan Schmidt <jan@centricular.com> * Contact: Stefan Kost <stefan.kost@nokia.com> * This library is free software; you can redistribute it and/or @@ -80,6 +81,21 @@ * #GstQTMux:streamable allows foregoing to add index metadata (at the end of * file). * + * When the maximum duration to be recorded can be known in advance, #GstQTMux + * also supports a 'Robust Muxing' mode. In robust muxing mode, space for the + * headers are reserved at the start of muxing, and rewritten at a configurable + * interval, so that the output file is always playable, even if the recording + * is interrupted uncleanly by a crash. Robust muxing mode requires a seekable + * output, such as filesink, because it needs to rewrite the start of the file. + * + * To enable robust muxing mode, set the #GstQTMux::reserved-moov-update-period + * and #GstQTMux::reserved-max-duration property. Also present is the + * #GstQTMux::reserved-bytes-per-sec property, which can be increased if + * for some reason the default is not large enough and the initial reserved + * space for headers is too small. Applications can monitor the + * #GstQTMux::reserved-duration-remaining property to see how close to full + * the reserved space is becoming. + * * <refsect2> * <title>Example pipelines</title> * |[ @@ -101,6 +117,8 @@ #include <gst/gst.h> #include <gst/base/gstcollectpads.h> +#include <gst/base/gstbytereader.h> +#include <gst/base/gstbitreader.h> #include <gst/audio/audio.h> #include <gst/video/video.h> #include <gst/tag/tag.h> @@ -146,7 +164,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_qt_mux_debug); * - a 'mfra' box for Fragmented MP4, which is written at the end and * contains a summary of all fragments and seek tables. * - * Currently mp4mux can work in 3 different modes / generate 3 types + * Currently mp4mux can work in 4 different modes / generate 4 types * of output files/streams: * * - Normal mp4: mp4mux will write a little ftyp identifier at the @@ -160,7 +178,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_qt_mux_debug); * the mdat box at EOS. * * - Fragmented mp4: moov header with track headers at start - * but no sample table), followed by N fragments, each containing + * but no sample table, followed by N fragments, each containing * track headers with sample tables followed by some data. Downstream * does not need to be seekable if the 'streamable' flag is TRUE, * as the final mfra and total duration will be omitted. @@ -177,6 +195,19 @@ GST_DEBUG_CATEGORY_STATIC (gst_qt_mux_debug); * out of the temp file at EOS, which can be expensive. Downstream does * not need to be seekable, because of the use of the temp file. * + * - Robust Muxing mode: In this mode, qtmux uses the reserved-max-duration + * and reserved-moov-update-period properties to reserve free space + * at the start of the file and periodically write the MOOV atom out + * to it. That means that killing the muxing at any point still + * results in a playable file, at the cost of wasting some amount of + * free space at the start of file. The approximate recording duration + * has to be known in advance to estimate how much free space to reserve + * for the moov, and the downstream must be seekable. + * If the moov header grows larger than the reserved space, an error + * is generated - so it's better to over-estimate the amount of space + * to reserve. To ensure the file is playable at any point, the moov + * is updated using a 'ping-pong' strategy, so the output is never in + * an invalid state. */ #ifndef GST_REMOVE_DEPRECATED @@ -228,6 +259,10 @@ enum PROP_MOOV_RECOV_FILE, PROP_FRAGMENT_DURATION, PROP_STREAMABLE, + PROP_RESERVED_MAX_DURATION, + PROP_RESERVED_DURATION_REMAINING, + PROP_RESERVED_MOOV_UPDATE_PERIOD, + PROP_RESERVED_BYTES_PER_SEC, #ifndef GST_REMOVE_DEPRECATED PROP_DTS_METHOD, #endif @@ -248,7 +283,9 @@ enum #ifndef GST_REMOVE_DEPRECATED #define DEFAULT_DTS_METHOD DTS_METHOD_REORDER #endif - +#define DEFAULT_RESERVED_MAX_DURATION GST_CLOCK_TIME_NONE +#define DEFAULT_RESERVED_MOOV_UPDATE_PERIOD GST_CLOCK_TIME_NONE +#define DEFAULT_RESERVED_BYTES_PER_SEC_PER_TRAK 550 static void gst_qt_mux_finalize (GObject * object); @@ -275,6 +312,9 @@ static GstFlowReturn gst_qt_mux_handle_buffer (GstCollectPads * pads, static GstFlowReturn gst_qt_mux_add_buffer (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf); +static GstFlowReturn +gst_qt_mux_robust_recording_rewrite_moov (GstQTMux * qtmux); + static GstElementClass *parent_class = NULL; static void @@ -410,6 +450,34 @@ gst_qt_mux_class_init (GstQTMuxClass * klass) g_object_class_install_property (gobject_class, PROP_STREAMABLE, g_param_spec_boolean ("streamable", "Streamable", streamable_desc, streamable, streamable_flags | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_RESERVED_MAX_DURATION, + g_param_spec_uint64 ("reserved-max-duration", + "Reserved maximum file duration (ns)", + "When set to a value > 0, reserves space for index tables at the " + "beginning of the file.", + 0, G_MAXUINT64, DEFAULT_RESERVED_MAX_DURATION, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, + PROP_RESERVED_DURATION_REMAINING, + g_param_spec_uint64 ("reserved-duration-remaining", + "Report the approximate amount of remaining recording space (ns)", + "Reports the approximate amount of remaining moov header space " + "reserved using reserved-max-duration", 0, G_MAXUINT64, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, + PROP_RESERVED_MOOV_UPDATE_PERIOD, + g_param_spec_uint64 ("reserved-moov-update-period", + "Interval at which to update index tables (ns)", + "When used with reserved-max-duration, periodically updates the " + "index tables with information muxed so far.", 0, G_MAXUINT64, + DEFAULT_RESERVED_MOOV_UPDATE_PERIOD, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_RESERVED_BYTES_PER_SEC, + g_param_spec_uint ("reserved-bytes-per-sec", + "Reserved MOOV bytes per second, per track", + "Multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track", + 0, 10000, DEFAULT_RESERVED_BYTES_PER_SEC_PER_TRAK, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); gstelement_class->request_new_pad = GST_DEBUG_FUNCPTR (gst_qt_mux_request_new_pad); @@ -425,7 +493,9 @@ gst_qt_mux_pad_reset (GstQTPad * qtpad) qtpad->sample_size = 0; qtpad->sync = FALSE; qtpad->last_dts = 0; + qtpad->dts_adjustment = GST_CLOCK_TIME_NONE; qtpad->first_ts = GST_CLOCK_TIME_NONE; + qtpad->first_dts = GST_CLOCK_TIME_NONE; qtpad->prepare_buf_func = NULL; qtpad->create_empty_buffer = NULL; qtpad->avg_bitrate = 0; @@ -468,6 +538,7 @@ gst_qt_mux_reset (GstQTMux * qtmux, gboolean alloc) qtmux->state = GST_QT_MUX_STATE_NONE; qtmux->header_size = 0; qtmux->mdat_size = 0; + qtmux->moov_pos = 0; qtmux->mdat_pos = 0; qtmux->longest_chunk = GST_CLOCK_TIME_NONE; qtmux->video_pads = 0; @@ -527,6 +598,11 @@ gst_qt_mux_reset (GstQTMux * qtmux, gboolean alloc) atom_moov_add_trak (qtmux->moov, qtpad->trak); } } + + qtmux->reserved_moov_size = 0; + qtmux->last_moov_update = GST_CLOCK_TIME_NONE; + qtmux->muxed_since_last_update = 0; + qtmux->reserved_duration_remaining = GST_CLOCK_TIME_NONE; } static void @@ -551,6 +627,11 @@ gst_qt_mux_init (GstQTMux * qtmux, GstQTMuxClass * qtmux_klass) /* properties set to default upon construction */ + qtmux->reserved_max_duration = DEFAULT_RESERVED_MAX_DURATION; + qtmux->reserved_moov_update_period = DEFAULT_RESERVED_MOOV_UPDATE_PERIOD; + qtmux->reserved_bytes_per_sec_per_trak = + DEFAULT_RESERVED_BYTES_PER_SEC_PER_TRAK; + /* always need this */ qtmux->context = atoms_context_new (gst_qt_mux_map_format_to_flavor (qtmux_klass->format)); @@ -643,6 +724,82 @@ gst_qt_mux_prepare_tx3g_buffer (GstQTPad * qtpad, GstBuffer * buf, return newbuf; } +static void +gst_qt_mux_pad_add_ac3_extension (GstQTMux * qtmux, GstQTPad * qtpad, + guint8 fscod, guint8 frmsizcod, guint8 bsid, guint8 bsmod, guint8 acmod, + guint8 lfe_on) +{ + AtomInfo *ext; + + g_return_if_fail (qtpad->trak_ste); + + ext = build_ac3_extension (fscod, bsid, bsmod, acmod, lfe_on, frmsizcod >> 1); /* bitrate_code is inside frmsizcod */ + + sample_table_entry_add_ext_atom (qtpad->trak_ste, ext); +} + +static GstBuffer * +gst_qt_mux_prepare_parse_ac3_frame (GstQTPad * qtpad, GstBuffer * buf, + GstQTMux * qtmux) +{ + GstMapInfo map; + GstByteReader reader; + guint off; + + if (!gst_buffer_map (buf, &map, GST_MAP_READ)) { + GST_WARNING_OBJECT (qtpad->collect.pad, "Failed to map buffer"); + return buf; + } + + if (G_UNLIKELY (map.size < 8)) + goto done; + + gst_byte_reader_init (&reader, map.data, map.size); + off = gst_byte_reader_masked_scan_uint32 (&reader, 0xffff0000, 0x0b770000, + 0, map.size); + + if (off != -1) { + GstBitReader bits; + guint8 fscod, frmsizcod, bsid, bsmod, acmod, lfe_on; + + GST_DEBUG_OBJECT (qtpad->collect.pad, "Found ac3 sync point at offset: %u", + off); + + gst_bit_reader_init (&bits, map.data, map.size); + + /* off + sync + crc */ + gst_bit_reader_skip_unchecked (&bits, off * 8 + 16 + 16); + + fscod = gst_bit_reader_get_bits_uint8_unchecked (&bits, 2); + frmsizcod = gst_bit_reader_get_bits_uint8_unchecked (&bits, 6); + bsid = gst_bit_reader_get_bits_uint8_unchecked (&bits, 5); + bsmod = gst_bit_reader_get_bits_uint8_unchecked (&bits, 3); + acmod = gst_bit_reader_get_bits_uint8_unchecked (&bits, 3); + + if ((acmod & 0x1) && (acmod != 0x1)) /* 3 front channels */ + gst_bit_reader_skip_unchecked (&bits, 2); + if ((acmod & 0x4)) /* if a surround channel exists */ + gst_bit_reader_skip_unchecked (&bits, 2); + if (acmod == 0x2) /* if in 2/0 mode */ + gst_bit_reader_skip_unchecked (&bits, 2); + + lfe_on = gst_bit_reader_get_bits_uint8_unchecked (&bits, 1); + + gst_qt_mux_pad_add_ac3_extension (qtmux, qtpad, fscod, frmsizcod, bsid, + bsmod, acmod, lfe_on); + + /* AC-3 spec says that those values should be constant for the + * whole stream when muxed in mp4. We trust the input follows it */ + GST_DEBUG_OBJECT (qtpad->collect.pad, "Data parsed, removing " + "prepare buffer function"); + qtpad->prepare_buf_func = NULL; + } + +done: + gst_buffer_unmap (buf, &map); + return buf; +} + static GstBuffer * gst_qt_mux_create_empty_tx3g_buffer (GstQTPad * qtpad, gint64 duration) { @@ -1209,6 +1366,9 @@ gst_qt_mux_add_metadata_tags (GstQTMux * qtmux, const GstTagList * list, if (!tag_matches) return; + /* Clear existing tags so we don't add them over and over */ + atom_udta_clear_tags (udta); + for (i = 0; tag_matches[i].fourcc; i++) { fourcc = tag_matches[i].fourcc; tag = tag_matches[i].gsttag; @@ -1267,11 +1427,14 @@ gst_qt_mux_add_metadata_tags (GstQTMux * qtmux, const GstTagList * list, static void gst_qt_mux_setup_metadata (GstQTMux * qtmux) { - const GstTagList *tags; + const GstTagList *tags = NULL; GSList *walk; GST_OBJECT_LOCK (qtmux); - tags = gst_tag_setter_get_tag_list (GST_TAG_SETTER (qtmux)); + if (qtmux->tags_changed) { + tags = gst_tag_setter_get_tag_list (GST_TAG_SETTER (qtmux)); + qtmux->tags_changed = FALSE; + } GST_OBJECT_UNLOCK (qtmux); GST_LOG_OBJECT (qtmux, "tags: %" GST_PTR_FORMAT, tags); @@ -1289,7 +1452,7 @@ gst_qt_mux_setup_metadata (GstQTMux * qtmux) gst_qt_mux_add_xmp_tags (qtmux, copy); gst_tag_list_unref (copy); } else { - GST_DEBUG_OBJECT (qtmux, "No tags received"); + GST_DEBUG_OBJECT (qtmux, "No new tags received"); } for (walk = qtmux->sinkpads; walk; walk = g_slist_next (walk)) { @@ -1297,13 +1460,14 @@ gst_qt_mux_setup_metadata (GstQTMux * qtmux) GstQTPad *qpad = (GstQTPad *) cdata; GstPad *pad = qpad->collect.pad; - if (qpad->tags) { + if (qpad->tags_changed && qpad->tags) { GST_DEBUG_OBJECT (pad, "Adding tags"); gst_tag_list_remove_tag (qpad->tags, GST_TAG_CONTAINER_FORMAT); gst_qt_mux_add_metadata_tags (qtmux, qpad->tags, &qpad->trak->udta); + qpad->tags_changed = FALSE; GST_DEBUG_OBJECT (pad, "Tags added"); } else { - GST_DEBUG_OBJECT (pad, "No tags received"); + GST_DEBUG_OBJECT (pad, "No new tags received"); } } } @@ -1459,46 +1623,55 @@ fail: */ static GstFlowReturn gst_qt_mux_send_mdat_header (GstQTMux * qtmux, guint64 * off, guint64 size, - gboolean extended) + gboolean extended, gboolean fsync_after) { - Atom *node_header; GstBuffer *buf; - guint8 *data = NULL; - guint64 offset = 0; + GstMapInfo map; GST_DEBUG_OBJECT (qtmux, "Sending mdat's atom header, " "size %" G_GUINT64_FORMAT, size); - node_header = g_malloc0 (sizeof (Atom)); - node_header->type = FOURCC_mdat; + /* if the qtmux state is EOS, really write the mdat, otherwise + * allow size == 0 for a placeholder atom */ + if (qtmux->state == GST_QT_MUX_STATE_EOS || size > 0) + size += 8; + if (extended) { - /* use extended size */ - node_header->size = 1; - node_header->extended_size = 0; - if (size) - node_header->extended_size = size + 16; + gboolean large_file = (size > MDAT_LARGE_FILE_LIMIT); + /* Always write 16-bytes, but put a free atom first + * if the size is < 4GB. */ + buf = gst_buffer_new_and_alloc (16); + gst_buffer_map (buf, &map, GST_MAP_WRITE); + + if (large_file) { + /* Write extended mdat header and large_size field */ + GST_WRITE_UINT32_BE (map.data, 1); + GST_WRITE_UINT32_LE (map.data + 4, FOURCC_mdat); + GST_WRITE_UINT64_BE (map.data + 8, size + 8); + } else { + /* Write an empty free atom, then standard 32-bit mdat */ + GST_WRITE_UINT32_BE (map.data, 8); + GST_WRITE_UINT32_LE (map.data + 4, FOURCC_free); + GST_WRITE_UINT32_BE (map.data + 8, size); + GST_WRITE_UINT32_LE (map.data + 12, FOURCC_mdat); + } + gst_buffer_unmap (buf, &map); } else { - node_header->size = size + 8; + buf = gst_buffer_new_and_alloc (8); + gst_buffer_map (buf, &map, GST_MAP_WRITE); + + /* Vanilla 32-bit mdat */ + GST_WRITE_UINT32_BE (map.data, size); + GST_WRITE_UINT32_LE (map.data + 4, FOURCC_mdat); + gst_buffer_unmap (buf, &map); } - size = offset = 0; - if (atom_copy_data (node_header, &data, &size, &offset) == 0) - goto serialize_error; + GST_LOG_OBJECT (qtmux, "Pushing mdat header"); + if (fsync_after) + GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_SYNC_AFTER); - buf = _gst_buffer_new_take_data (data, offset); - g_free (node_header); - - GST_LOG_OBJECT (qtmux, "Pushing mdat start"); return gst_qt_mux_send_buffer (qtmux, buf, off, FALSE); - /* ERRORS */ -serialize_error: - { - GST_ELEMENT_ERROR (qtmux, STREAM, MUX, (NULL), - ("Failed to serialize mdat")); - g_free (node_header); - return GST_FLOW_ERROR; - } } /* @@ -1507,38 +1680,20 @@ serialize_error: */ static GstFlowReturn gst_qt_mux_update_mdat_size (GstQTMux * qtmux, guint64 mdat_pos, - guint64 mdat_size, guint64 * offset) + guint64 mdat_size, guint64 * offset, gboolean fsync_after) { - GstBuffer *buf; - gboolean large_file; GstSegment segment; - GstMapInfo map; - - large_file = (mdat_size > MDAT_LARGE_FILE_LIMIT); - if (large_file) - mdat_pos += 8; + /* We must have recorded the mdat position for this to work */ + g_assert (mdat_pos != 0); /* seek and rewrite the header */ gst_segment_init (&segment, GST_FORMAT_BYTES); segment.start = mdat_pos; gst_pad_push_event (qtmux->srcpad, gst_event_new_segment (&segment)); - if (large_file) { - buf = gst_buffer_new_and_alloc (sizeof (guint64)); - gst_buffer_map (buf, &map, GST_MAP_WRITE); - GST_WRITE_UINT64_BE (map.data, mdat_size + 16); - } else { - buf = gst_buffer_new_and_alloc (16); - gst_buffer_map (buf, &map, GST_MAP_WRITE); - GST_WRITE_UINT32_BE (map.data, 8); - GST_WRITE_UINT32_LE (map.data + 4, FOURCC_free); - GST_WRITE_UINT32_BE (map.data + 8, mdat_size + 8); - GST_WRITE_UINT32_LE (map.data + 12, FOURCC_mdat); - } - gst_buffer_unmap (buf, &map); - - return gst_qt_mux_send_buffer (qtmux, buf, offset, FALSE); + return gst_qt_mux_send_mdat_header (qtmux, offset, mdat_size, TRUE, + fsync_after); } static GstFlowReturn @@ -1645,15 +1800,83 @@ gst_qt_mux_set_header_on_caps (GstQTMux * mux, GstBuffer * buf) gst_caps_unref (caps); } +/* + * Write out a free space atom. The offset is adjusted by the full + * size, but a smaller buffer is sent + */ +static GstFlowReturn +gst_qt_mux_send_free_atom (GstQTMux * qtmux, guint64 * off, guint32 size, + gboolean fsync_after) +{ + Atom *node_header; + GstBuffer *buf; + guint8 *data = NULL; + guint64 offset = 0, bsize = 0; + GstFlowReturn ret; + + GST_DEBUG_OBJECT (qtmux, "Sending free atom header of size %u", size); + + /* We can't make a free space atom smaller than the header */ + if (size < 8) + goto too_small; + + node_header = g_malloc0 (sizeof (Atom)); + node_header->type = FOURCC_free; + node_header->size = size; + + bsize = offset = 0; + if (atom_copy_data (node_header, &data, &bsize, &offset) == 0) + goto serialize_error; + + buf = _gst_buffer_new_take_data (data, offset); + g_free (node_header); + + if (fsync_after) + GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_SYNC_AFTER); + + GST_LOG_OBJECT (qtmux, "Pushing free atom"); + ret = gst_qt_mux_send_buffer (qtmux, buf, off, FALSE); + + if (off) { + GstSegment segment; + + *off += size - 8; + + /* Make sure downstream position ends up at the end of this free box */ + gst_segment_init (&segment, GST_FORMAT_BYTES); + segment.start = *off; + gst_pad_push_event (qtmux->srcpad, gst_event_new_segment (&segment)); + } + + return ret; + + /* ERRORS */ +too_small: + { + GST_ELEMENT_ERROR (qtmux, STREAM, MUX, (NULL), + ("Not enough free reserved space")); + return GST_FLOW_ERROR; + } +serialize_error: + { + GST_ELEMENT_ERROR (qtmux, STREAM, MUX, (NULL), + ("Failed to serialize mdat")); + g_free (node_header); + return GST_FLOW_ERROR; + } +} + static void -gst_qt_mux_configure_moov (GstQTMux * qtmux, guint32 * _timescale) +gst_qt_mux_configure_moov (GstQTMux * qtmux) { - gboolean fragmented; + gboolean fragmented = FALSE; guint32 timescale; GST_OBJECT_LOCK (qtmux); timescale = qtmux->timescale; - fragmented = qtmux->fragment_sequence > 0; + if (qtmux->mux_mode == GST_QT_MUX_MODE_FRAGMENTED || + qtmux->mux_mode == GST_QT_MUX_MODE_FRAGMENTED_STREAMABLE) + fragmented = TRUE; GST_OBJECT_UNLOCK (qtmux); /* inform lower layers of our property wishes, and determine duration. @@ -1665,13 +1888,11 @@ gst_qt_mux_configure_moov (GstQTMux * qtmux, guint32 * _timescale) atom_moov_set_fragmented (qtmux->moov, fragmented); atom_moov_update_duration (qtmux->moov); - - if (_timescale) - *_timescale = timescale; } static GstFlowReturn -gst_qt_mux_send_moov (GstQTMux * qtmux, guint64 * _offset, gboolean mind_fast) +gst_qt_mux_send_moov (GstQTMux * qtmux, guint64 * _offset, + guint64 padded_moov_size, gboolean mind_fast, gboolean fsync_after) { guint64 offset = 0, size = 0; guint8 *data; @@ -1684,14 +1905,41 @@ gst_qt_mux_send_moov (GstQTMux * qtmux, guint64 * _offset, gboolean mind_fast) GST_LOG_OBJECT (qtmux, "Copying movie header into buffer"); if (!atom_moov_copy_data (qtmux->moov, &data, &size, &offset)) goto serialize_error; + qtmux->last_moov_size = offset; + /* Check we have enough reserved space for this and a Free atom */ + if (padded_moov_size > 0 && offset + 8 > padded_moov_size) + goto too_small_reserved; buf = _gst_buffer_new_take_data (data, offset); GST_DEBUG_OBJECT (qtmux, "Pushing moov atoms"); - gst_qt_mux_set_header_on_caps (qtmux, buf); + + /* If at EOS, this is the final moov, put in the streamheader + * (apparently used by a flumotion util) */ + if (qtmux->state == GST_QT_MUX_STATE_EOS) + gst_qt_mux_set_header_on_caps (qtmux, buf); + + if (fsync_after) + GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_SYNC_AFTER); ret = gst_qt_mux_send_buffer (qtmux, buf, _offset, mind_fast); - return ret; + /* Write out a free atom if needed */ + if (ret == GST_FLOW_OK && offset < padded_moov_size) { + GST_LOG_OBJECT (qtmux, "Writing out free atom of size %u", + (guint32) (padded_moov_size - offset)); + ret = + gst_qt_mux_send_free_atom (qtmux, _offset, padded_moov_size - offset, + fsync_after); + } + return ret; +too_small_reserved: + { + GST_ELEMENT_ERROR (qtmux, STREAM, MUX, + ("Not enough free reserved header space"), + ("Needed %" G_GUINT64_FORMAT " bytes, reserved %" G_GUINT64_FORMAT, + offset, padded_moov_size)); + return GST_FLOW_ERROR; + } serialize_error: { g_free (data); @@ -1820,9 +2068,16 @@ gst_qt_mux_start_file (GstQTMux * qtmux) GstCaps *caps; GstSegment segment; gchar s_id[32]; + GstClockTime reserved_max_duration; + guint reserved_bytes_per_sec_per_trak; GST_DEBUG_OBJECT (qtmux, "starting file"); + GST_OBJECT_LOCK (qtmux); + reserved_max_duration = qtmux->reserved_max_duration; + reserved_bytes_per_sec_per_trak = qtmux->reserved_bytes_per_sec_per_trak; + GST_OBJECT_UNLOCK (qtmux); + /* stream-start (FIXME: create id based on input ids) */ g_snprintf (s_id, sizeof (s_id), "qtmux-%08x", g_random_int ()); gst_pad_push_event (qtmux->srcpad, gst_event_new_stream_start (s_id)); @@ -1850,10 +2105,13 @@ gst_qt_mux_start_file (GstQTMux * qtmux) qtmux->mux_mode = GST_QT_MUX_MODE_FRAGMENTED; } else if (qtmux->fast_start) { qtmux->mux_mode = GST_QT_MUX_MODE_FAST_START; + } else if (reserved_max_duration != GST_CLOCK_TIME_NONE) { + qtmux->mux_mode = GST_QT_MUX_MODE_ROBUST_RECORDING; } switch (qtmux->mux_mode) { case GST_QT_MUX_MODE_MOOV_AT_END: + case GST_QT_MUX_MODE_ROBUST_RECORDING: /* We have to be able to seek to rewrite the mdat header, or any * moov atom we write will not be visible in the file, because an * MDAT with 0 as the size covers the rest of the file. A file @@ -1888,6 +2146,11 @@ gst_qt_mux_start_file (GstQTMux * qtmux) if (qtmux->moov_recov_file_path) { gst_qt_mux_prepare_moov_recovery (qtmux); } + + /* Make sure the first time we update the moov, we'll + * include any tagsetter tags */ + qtmux->tags_changed = TRUE; + GST_OBJECT_UNLOCK (qtmux); /* @@ -1902,11 +2165,109 @@ gst_qt_mux_start_file (GstQTMux * qtmux) if (ret != GST_FLOW_OK) break; - /* store the mdat position for rewriting later ... */ + /* Store this as the mdat offset for later updating + * when we write the moov */ qtmux->mdat_pos = qtmux->header_size; /* extended atom in case we go over 4GB while writing and need * the full 64-bit atom */ - ret = gst_qt_mux_send_mdat_header (qtmux, &qtmux->header_size, 0, TRUE); + ret = + gst_qt_mux_send_mdat_header (qtmux, &qtmux->header_size, 0, TRUE, + FALSE); + break; + case GST_QT_MUX_MODE_ROBUST_RECORDING: + + ret = gst_qt_mux_prepare_and_send_ftyp (qtmux); + if (ret != GST_FLOW_OK) + break; + + /* Pad ftyp out to an 8-byte boundary before starting the moov + * ping pong region. It should be well less than 1 disk sector, + * unless there's a bajillion compatible types listed, + * but let's be sure the free atom doesn't cross a sector + * boundary anyway */ + if (qtmux->header_size % 8) { + /* Extra 8 bytes for the padding free atom header */ + guint padding = (guint) (16 - (qtmux->header_size % 8)); + GST_LOG_OBJECT (qtmux, "Rounding ftyp by %u bytes", padding); + ret = + gst_qt_mux_send_free_atom (qtmux, &qtmux->header_size, padding, + FALSE); + if (ret != GST_FLOW_OK) + return ret; + } + + /* Store this as the moov offset for later updating. + * We record mdat position below */ + qtmux->moov_pos = qtmux->header_size; + + /* Set up the initial 'ping' state of the ping-pong buffers */ + qtmux->reserved_moov_first_active = TRUE; + + gst_qt_mux_configure_moov (qtmux); + gst_qt_mux_setup_metadata (qtmux); + /* Empty free atom to begin, starting on an 8-byte boundary */ + ret = gst_qt_mux_send_free_atom (qtmux, &qtmux->header_size, 8, FALSE); + if (ret != GST_FLOW_OK) + return ret; + /* Moov header, not padded yet */ + ret = gst_qt_mux_send_moov (qtmux, &qtmux->header_size, 0, FALSE, FALSE); + if (ret != GST_FLOW_OK) + return ret; + /* The moov we just sent contains the 'base' size of the moov, before + * we put in any time-dependent per-trak data. Use that to make + * a good estimate of how much extra to reserve */ + /* Calculate how much space to reserve for our MOOV atom. + * We actually reserve twice that, for ping-pong buffers */ + qtmux->base_moov_size = qtmux->last_moov_size; + GST_LOG_OBJECT (qtmux, "Base moov size is %u before any indexes", + qtmux->base_moov_size); + qtmux->reserved_moov_size = qtmux->base_moov_size + + gst_util_uint64_scale (reserved_max_duration, + reserved_bytes_per_sec_per_trak * + atom_moov_get_trak_count (qtmux->moov), GST_SECOND); + + /* Need space for at least 4 atom headers. More really, but + * this as an absolute minimum */ + if (qtmux->reserved_moov_size < 4 * 8) + goto reserved_moov_too_small; + + GST_DEBUG_OBJECT (qtmux, "reserving header area of size %u", + 2 * qtmux->reserved_moov_size + 16); + + GST_OBJECT_LOCK (qtmux); + qtmux->reserved_duration_remaining = + gst_util_uint64_scale (qtmux->reserved_moov_size - + qtmux->base_moov_size, GST_SECOND, + reserved_bytes_per_sec_per_trak * + atom_moov_get_trak_count (qtmux->moov)); + GST_OBJECT_UNLOCK (qtmux); + + /* Now that we know how much reserved space is targetted, + * output a free atom to fill the extra reserved */ + ret = gst_qt_mux_send_free_atom (qtmux, &qtmux->header_size, + qtmux->reserved_moov_size - qtmux->base_moov_size, FALSE); + if (ret != GST_FLOW_OK) + return ret; + + /* Then a free atom containing 'pong' buffer, with an + * extra 8 bytes to account for the free atom header itself */ + ret = gst_qt_mux_send_free_atom (qtmux, &qtmux->header_size, + qtmux->reserved_moov_size + 8, FALSE); + if (ret != GST_FLOW_OK) + return ret; + + /* extra atoms go after the free/moov(s), before the mdat */ + ret = + gst_qt_mux_send_extra_atoms (qtmux, TRUE, &qtmux->header_size, FALSE); + if (ret != GST_FLOW_OK) + return ret; + + qtmux->mdat_pos = qtmux->header_size; + /* extended atom in case we go over 4GB while writing and need + * the full 64-bit atom */ + ret = + gst_qt_mux_send_mdat_header (qtmux, &qtmux->header_size, 0, TRUE, + FALSE); break; case GST_QT_MUX_MODE_FAST_START: GST_OBJECT_LOCK (qtmux); @@ -1922,16 +2283,18 @@ gst_qt_mux_start_file (GstQTMux * qtmux) ret = gst_qt_mux_prepare_and_send_ftyp (qtmux); if (ret != GST_FLOW_OK) break; - /* well, it's moov pos if fragmented ... */ - qtmux->mdat_pos = qtmux->header_size; + /* store the moov pos so we can update the duration later + * in non-streamable mode */ + qtmux->moov_pos = qtmux->header_size; + GST_DEBUG_OBJECT (qtmux, "fragment duration %d ms, writing headers", qtmux->fragment_duration); /* also used as snapshot marker to indicate fragmented file */ qtmux->fragment_sequence = 1; /* prepare moov and/or tags */ - gst_qt_mux_configure_moov (qtmux, NULL); + gst_qt_mux_configure_moov (qtmux); gst_qt_mux_setup_metadata (qtmux); - ret = gst_qt_mux_send_moov (qtmux, &qtmux->header_size, FALSE); + ret = gst_qt_mux_send_moov (qtmux, &qtmux->header_size, 0, FALSE, FALSE); if (ret != GST_FLOW_OK) return ret; /* extra atoms */ @@ -1953,7 +2316,12 @@ invalid_isml: ("Cannot create an ISML file with 0 fragment duration"), (NULL)); return GST_FLOW_ERROR; } - +reserved_moov_too_small: + { + GST_ELEMENT_ERROR (qtmux, STREAM, MUX, + ("Not enough reserved space for creating headers"), (NULL)); + return GST_FLOW_ERROR; + } open_failed: { GST_ELEMENT_ERROR (qtmux, RESOURCE, OPEN_READ_WRITE, @@ -1965,22 +2333,11 @@ open_failed: } static GstFlowReturn -gst_qt_mux_stop_file (GstQTMux * qtmux) +gst_qt_mux_send_last_buffers (GstQTMux * qtmux) { - gboolean ret = GST_FLOW_OK; - guint64 offset = 0, size = 0; + GstFlowReturn ret = GST_FLOW_OK; GSList *walk; - gboolean large_file; - guint32 timescale; - GstClockTime first_ts = GST_CLOCK_TIME_NONE; - /* for setting some subtitles fields */ - guint max_width = 0; - guint max_height = 0; - - GST_DEBUG_OBJECT (qtmux, "Updating remaining values and sending last data"); - - /* pushing last buffers for each pad */ for (walk = qtmux->collect->data; walk; walk = g_slist_next (walk)) { GstCollectData *cdata = (GstCollectData *) walk->data; GstQTPad *qtpad = (GstQTPad *) cdata; @@ -2002,19 +2359,43 @@ gst_qt_mux_stop_file (GstQTMux * qtmux) "flow return: %s", GST_PAD_NAME (qtpad->collect.pad), gst_flow_get_name (ret)); } + } - /* having flushed above, can check for buffers now */ - if (!GST_CLOCK_TIME_IS_VALID (qtpad->first_ts)) { - GST_DEBUG_OBJECT (qtmux, "Pad %s has no buffers", + return ret; +} + +static void +gst_qt_mux_update_global_statistics (GstQTMux * qtmux) +{ + GSList *walk; + + /* for setting some subtitles fields */ + guint max_width = 0; + guint max_height = 0; + + qtmux->first_ts = qtmux->last_dts = GST_CLOCK_TIME_NONE; + + for (walk = qtmux->collect->data; walk; walk = g_slist_next (walk)) { + GstCollectData *cdata = (GstCollectData *) walk->data; + GstQTPad *qtpad = (GstQTPad *) cdata; + + if (!qtpad->fourcc) { + GST_DEBUG_OBJECT (qtmux, "Pad %s has never had buffers", GST_PAD_NAME (qtpad->collect.pad)); continue; } - /* determine max stream duration */ - if (!GST_CLOCK_TIME_IS_VALID (first_ts) || - (GST_CLOCK_TIME_IS_VALID (qtpad->first_ts) && - qtpad->last_dts > first_ts)) { - first_ts = qtpad->last_dts; + /* having flushed above, can check for buffers now */ + if (GST_CLOCK_TIME_IS_VALID (qtpad->first_ts)) { + /* determine max stream duration */ + if (!GST_CLOCK_TIME_IS_VALID (qtmux->last_dts) + || qtpad->last_dts > qtmux->last_dts) { + qtmux->last_dts = qtpad->last_dts; + } + if (!GST_CLOCK_TIME_IS_VALID (qtmux->first_ts) + || qtpad->first_ts < qtmux->first_ts) { + qtmux->first_ts = qtpad->first_ts; + } } /* subtitles need to know the video width/height, @@ -2054,16 +2435,96 @@ gst_qt_mux_stop_file (GstQTMux * qtmux) atom_trak_tx3g_update_dimension (qtpad->trak, max_width, max_height); } } +} - switch (qtmux->mux_mode) { - case GST_QT_MUX_MODE_FRAGMENTED_STREAMABLE: - { - /* Streamable mode; no need to write duration or MFRA */ - GST_DEBUG_OBJECT (qtmux, "streamable file; nothing to stop"); - return GST_FLOW_OK; +/* Called after gst_qt_mux_update_global_statistics() updates the + * first_ts tracking, to create/set edit lists for delayed streams */ +static void +gst_qt_mux_update_edit_lists (GstQTMux * qtmux) +{ + GSList *walk; + + GST_DEBUG_OBJECT (qtmux, "Media first ts selected: %" GST_TIME_FORMAT, + GST_TIME_ARGS (qtmux->first_ts)); + /* add/update EDTSs for late streams. configure_moov will have + * set the trak durations above by summing the sample tables, + * here we extend that if needing to insert an empty segment */ + for (walk = qtmux->collect->data; walk; walk = g_slist_next (walk)) { + GstCollectData *cdata = (GstCollectData *) walk->data; + GstQTPad *qtpad = (GstQTPad *) cdata; + + if (GST_CLOCK_TIME_IS_VALID (qtpad->first_ts)) { + guint32 lateness = 0; + guint32 duration = qtpad->trak->tkhd.duration; + gboolean has_gap; + gboolean has_shift; + + has_gap = (qtpad->first_ts > (qtmux->first_ts + qtpad->dts_adjustment)); + has_shift = (qtpad->dts_adjustment > 0); + + if (has_gap) { + GstClockTime diff; + + diff = qtpad->first_ts - (qtmux->first_ts + qtpad->dts_adjustment); + lateness = gst_util_uint64_scale_round (diff, + qtmux->timescale, GST_SECOND); + + GST_DEBUG_OBJECT (qtmux, "Pad %s is a late stream by %" GST_TIME_FORMAT, + GST_PAD_NAME (qtpad->collect.pad), GST_TIME_ARGS (lateness)); + + atom_trak_set_elst_entry (qtpad->trak, 0, lateness, (guint32) - 1, + (guint32) (1 * 65536.0)); + } + + if (has_gap || has_shift) { + GstClockTime ctts; + guint32 media_start; + + ctts = qtpad->first_ts - qtpad->first_dts; + media_start = gst_util_uint64_scale_round (ctts, + atom_trak_get_timescale (qtpad->trak), GST_SECOND); + + atom_trak_set_elst_entry (qtpad->trak, 1, duration, media_start, + (guint32) (1 * 65536.0)); + } + + /* need to add the empty time to the trak duration */ + duration += lateness; + + qtpad->trak->tkhd.duration = duration; + + /* And possibly grow the moov duration */ + if (duration > qtmux->moov->mvhd.time_info.duration) { + qtmux->moov->mvhd.time_info.duration = duration; + qtmux->moov->mvex.mehd.fragment_duration = duration; + } } - case GST_QT_MUX_MODE_FRAGMENTED: - { + } +} + +static GstFlowReturn +gst_qt_mux_stop_file (GstQTMux * qtmux) +{ + gboolean ret = GST_FLOW_OK; + guint64 offset = 0, size = 0; + gboolean large_file; + + GST_DEBUG_OBJECT (qtmux, "Updating remaining values and sending last data"); + + /* pushing last buffers for each pad */ + if ((ret = gst_qt_mux_send_last_buffers (qtmux)) != GST_FLOW_OK) + return ret; + + if (qtmux->mux_mode == GST_QT_MUX_MODE_FRAGMENTED_STREAMABLE) { + /* Streamable mode; no need to write duration or MFRA */ + GST_DEBUG_OBJECT (qtmux, "streamable file; nothing to stop"); + return GST_FLOW_OK; + } + + gst_qt_mux_update_global_statistics (qtmux); + + switch (qtmux->mux_mode) { + case GST_QT_MUX_MODE_FRAGMENTED:{ GstSegment segment; guint8 *data = NULL; GstBuffer *buf; @@ -2077,111 +2538,81 @@ gst_qt_mux_stop_file (GstQTMux * qtmux) if (ret != GST_FLOW_OK) return ret; - timescale = qtmux->timescale; /* only mvex duration is updated, * mvhd should be consistent with empty moov * (but TODO maybe some clients do not handle that well ?) */ qtmux->moov->mvex.mehd.fragment_duration = - gst_util_uint64_scale (first_ts, timescale, GST_SECOND); + gst_util_uint64_scale (qtmux->last_dts, qtmux->timescale, GST_SECOND); GST_DEBUG_OBJECT (qtmux, "rewriting moov with mvex duration %" - GST_TIME_FORMAT, GST_TIME_ARGS (first_ts)); + GST_TIME_FORMAT, GST_TIME_ARGS (qtmux->last_dts)); /* seek and rewrite the header */ gst_segment_init (&segment, GST_FORMAT_BYTES); - segment.start = qtmux->mdat_pos; + segment.start = qtmux->moov_pos; gst_pad_push_event (qtmux->srcpad, gst_event_new_segment (&segment)); /* no need to seek back */ - return gst_qt_mux_send_moov (qtmux, NULL, FALSE); + return gst_qt_mux_send_moov (qtmux, NULL, 0, FALSE, FALSE); + } + case GST_QT_MUX_MODE_ROBUST_RECORDING:{ + ret = gst_qt_mux_robust_recording_rewrite_moov (qtmux); + if (G_UNLIKELY (ret != GST_FLOW_OK)) + return ret; + /* Finalise by writing the final size into the mdat. Up until now + * it's been 0, which means 'rest of the file' + * No need to seek back after this, we won't write any more */ + return gst_qt_mux_update_mdat_size (qtmux, qtmux->mdat_pos, + qtmux->mdat_size, NULL, TRUE); } default: break; } /* Moov-at-end or fast-start mode from here down */ - gst_qt_mux_configure_moov (qtmux, ×cale); - /* check for late streams. First, find the earliest start time */ - first_ts = GST_CLOCK_TIME_NONE; - for (walk = qtmux->collect->data; walk; walk = g_slist_next (walk)) { - GstCollectData *cdata = (GstCollectData *) walk->data; - GstQTPad *qtpad = (GstQTPad *) cdata; - - if (!GST_CLOCK_TIME_IS_VALID (first_ts) || - (GST_CLOCK_TIME_IS_VALID (qtpad->first_ts) && - qtpad->first_ts < first_ts)) { - first_ts = qtpad->first_ts; - } - } - GST_DEBUG_OBJECT (qtmux, "Media first ts selected: %" GST_TIME_FORMAT, - GST_TIME_ARGS (first_ts)); - /* add EDTSs for late streams */ - for (walk = qtmux->collect->data; walk; walk = g_slist_next (walk)) { - GstCollectData *cdata = (GstCollectData *) walk->data; - GstQTPad *qtpad = (GstQTPad *) cdata; - guint32 lateness; - guint32 duration; - - 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)); - lateness = gst_util_uint64_scale_round (qtpad->first_ts - first_ts, - timescale, GST_SECOND); - duration = qtpad->trak->tkhd.duration; - atom_trak_add_elst_entry (qtpad->trak, lateness, (guint32) - 1, - (guint32) (1 * 65536.0)); - atom_trak_add_elst_entry (qtpad->trak, duration, 0, - (guint32) (1 * 65536.0)); - - /* need to add the empty time to the trak duration */ - duration += lateness; - - qtpad->trak->tkhd.duration = duration; + gst_qt_mux_configure_moov (qtmux); - /* And possibly grow the moov duration */ - if (duration > qtmux->moov->mvhd.time_info.duration) { - qtmux->moov->mvhd.time_info.duration = duration; - qtmux->moov->mvex.mehd.fragment_duration = duration; - } - } - } + gst_qt_mux_update_edit_lists (qtmux); /* tags into file metadata */ gst_qt_mux_setup_metadata (qtmux); + large_file = (qtmux->mdat_size > MDAT_LARGE_FILE_LIMIT); - /* if faststart, update the offset of the atoms in the movie with the offset - * that the movie headers before mdat will cause. - * Also, send the ftyp */ - if (qtmux->mux_mode == GST_QT_MUX_MODE_FAST_START) { - GstFlowReturn flow_ret; - offset = size = 0; + switch (qtmux->mux_mode) { + case GST_QT_MUX_MODE_FAST_START:{ + /* if faststart, update the offset of the atoms in the movie with the offset + * that the movie headers before mdat will cause. + * Also, send the ftyp */ + offset = size = 0; - flow_ret = gst_qt_mux_prepare_and_send_ftyp (qtmux); - if (flow_ret != GST_FLOW_OK) { - goto ftyp_error; - } - /* copy into NULL to obtain size */ - if (!atom_moov_copy_data (qtmux->moov, NULL, &size, &offset)) - goto serialize_error; - GST_DEBUG_OBJECT (qtmux, "calculated moov atom size %" G_GUINT64_FORMAT, - offset); - offset += qtmux->header_size + (large_file ? 16 : 8); + ret = gst_qt_mux_prepare_and_send_ftyp (qtmux); + if (ret != GST_FLOW_OK) { + goto ftyp_error; + } + /* copy into NULL to obtain size */ + if (!atom_moov_copy_data (qtmux->moov, NULL, &size, &offset)) + goto serialize_error; + GST_DEBUG_OBJECT (qtmux, "calculated moov atom size %" G_GUINT64_FORMAT, + offset); + offset += qtmux->header_size + (large_file ? 16 : 8); - /* sum up with the extra atoms size */ - ret = gst_qt_mux_send_extra_atoms (qtmux, FALSE, &offset, FALSE); - if (ret != GST_FLOW_OK) - return ret; - } else { - offset = qtmux->header_size; + /* sum up with the extra atoms size */ + ret = gst_qt_mux_send_extra_atoms (qtmux, FALSE, &offset, FALSE); + if (ret != GST_FLOW_OK) + return ret; + break; + } + default: + offset = qtmux->header_size; + break; } /* Now that we know the size of moov + extra atoms, we can adjust * the chunk offsets stored into the moov */ - atom_moov_chunks_add_offset (qtmux->moov, offset); + atom_moov_chunks_set_offset (qtmux->moov, offset); /* write out moov and extra atoms */ /* note: as of this point, we no longer care about tracking written data size, * since there is no more use for it anyway */ - ret = gst_qt_mux_send_moov (qtmux, NULL, FALSE); + ret = gst_qt_mux_send_moov (qtmux, NULL, 0, FALSE, FALSE); if (ret != GST_FLOW_OK) return ret; @@ -2196,7 +2627,7 @@ gst_qt_mux_stop_file (GstQTMux * qtmux) /* 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, - qtmux->mdat_size, NULL); + qtmux->mdat_size, NULL, FALSE); /* note; no seeking back to the end of file is done, * since we no longer write anything anyway */ break; @@ -2206,7 +2637,7 @@ gst_qt_mux_stop_file (GstQTMux * qtmux) /* send mdat atom and move buffered data into it */ /* mdat_size = accumulated (buffered data) */ ret = gst_qt_mux_send_mdat_header (qtmux, NULL, qtmux->mdat_size, - large_file); + large_file, FALSE); if (ret != GST_FLOW_OK) return ret; ret = gst_qt_mux_send_buffered_data (qtmux, NULL); @@ -2281,7 +2712,7 @@ flush: atom_array_get_len (&pad->fragment_buffers), total_size); if (ret == GST_FLOW_OK) ret = gst_qt_mux_send_mdat_header (qtmux, &qtmux->header_size, total_size, - FALSE); + FALSE, FALSE); for (i = 0; i < atom_array_get_len (&pad->fragment_buffers); i++) { if (G_LIKELY (ret == GST_FLOW_OK)) ret = gst_qt_mux_send_buffer (qtmux, @@ -2330,6 +2761,174 @@ init: return ret; } +/* Here's the clever bit of robust recording: Updating the moov + * header is done using a ping-pong scheme inside 2 blocks of size + * 'reserved_moov_size' at the start of the file, in such a way that the + * file on-disk is always valid if interrupted. + * Inside the reserved space, we have 2 pairs of free + moov atoms + * (in that order), free-A + moov-A @ offset 0 and free-B + moov-B at + * at offset "reserved_moov_size". + * + * 1. Free-A has 0 size payload, moov-A immediately after is + * active/current, and is padded with an internal Free atom to + * end at reserved_space/2. Free-B is at reserved_space/2, sized + * to cover the remaining free space (including moov-B). + * 2. We write moov-B (which is invisible inside free-B), and pad it to + * end at the end of free space. Then, we update free-A to size + * reserved_space/2 + sizeof(free-B), which hides moov-A and the + * free-B header, and makes moov-B active. + * 3. Rewrite moov-A inside free-A, with padding out to free-B. + * Change the size of free-A to make moov-A active again. + * 4. Rinse and repeat. + * + */ +static GstFlowReturn +gst_qt_mux_robust_recording_rewrite_moov (GstQTMux * qtmux) +{ + GstSegment segment; + GstFlowReturn ret; + guint64 freeA_offset; + guint32 new_freeA_size; + guint64 new_moov_offset; + + /* Update moov info, then seek and rewrite the MOOV atom */ + gst_qt_mux_update_global_statistics (qtmux); + gst_qt_mux_configure_moov (qtmux); + + gst_qt_mux_update_edit_lists (qtmux); + + /* tags into file metadata */ + gst_qt_mux_setup_metadata (qtmux); + + /* chunks position is set relative to the first byte of the + * MDAT atom payload. Set the overall offset into the file */ + atom_moov_chunks_set_offset (qtmux->moov, qtmux->header_size); + + /* Calculate which moov to rewrite. qtmux->moov_pos points to + * the start of the free-A header */ + freeA_offset = qtmux->moov_pos; + if (qtmux->reserved_moov_first_active) { + GST_DEBUG_OBJECT (qtmux, "Updating pong moov header"); + /* After this, freeA will include itself, moovA, plus the freeB + * header */ + new_freeA_size = qtmux->reserved_moov_size + 16; + } else { + GST_DEBUG_OBJECT (qtmux, "Updating ping moov header"); + new_freeA_size = 8; + } + /* the moov we update is after free-A, calculate its offset */ + new_moov_offset = freeA_offset + new_freeA_size; + + /* Swap ping-pong cadence marker */ + qtmux->reserved_moov_first_active = !qtmux->reserved_moov_first_active; + + /* seek and rewrite the MOOV atom */ + gst_segment_init (&segment, GST_FORMAT_BYTES); + segment.start = new_moov_offset; + gst_pad_push_event (qtmux->srcpad, gst_event_new_segment (&segment)); + + ret = + gst_qt_mux_send_moov (qtmux, NULL, qtmux->reserved_moov_size, FALSE, + TRUE); + if (ret != GST_FLOW_OK) + return ret; + + /* Update the estimated recording space remaining, based on amount used so + * far and duration muxed so far */ + if (qtmux->last_moov_size > qtmux->base_moov_size && qtmux->last_dts > 0) { + GstClockTime remain; + GstClockTime time_muxed = qtmux->last_dts; + + remain = + gst_util_uint64_scale (qtmux->reserved_moov_size - + qtmux->last_moov_size, time_muxed, + qtmux->last_moov_size - qtmux->base_moov_size); + /* Always under-estimate slightly, so users + * have time to stop muxing before we run out */ + if (remain < GST_SECOND / 2) + remain = 0; + else + remain -= GST_SECOND / 2; + + GST_INFO_OBJECT (qtmux, + "Reserved %u header bytes. Used %u in %" GST_TIME_FORMAT + ". Remaining now %u or approx %" G_GUINT64_FORMAT " ns\n", + qtmux->reserved_moov_size, qtmux->last_moov_size, + GST_TIME_ARGS (qtmux->last_dts), + qtmux->reserved_moov_size - qtmux->last_moov_size, remain); + + GST_OBJECT_LOCK (qtmux); + qtmux->reserved_duration_remaining = remain; + qtmux->muxed_since_last_update = 0; + GST_DEBUG_OBJECT (qtmux, "reserved remaining duration now %" + G_GUINT64_FORMAT, qtmux->reserved_duration_remaining); + GST_OBJECT_UNLOCK (qtmux); + } + + + /* Now update the moov-A size. Don't pass offset, since we don't need + * send_free_atom() to seek for us - all our callers seek back to + * where they need after this, or they don't need it */ + gst_segment_init (&segment, GST_FORMAT_BYTES); + segment.start = freeA_offset; + gst_pad_push_event (qtmux->srcpad, gst_event_new_segment (&segment)); + + ret = gst_qt_mux_send_free_atom (qtmux, NULL, new_freeA_size, TRUE); + + return ret; +} + +static GstFlowReturn +gst_qt_mux_robust_recording_update (GstQTMux * qtmux, GstClockTime position) +{ + GstSegment segment; + GstFlowReturn flow_ret; + + guint64 mdat_offset = qtmux->mdat_pos + 16 + qtmux->mdat_size; + + GST_OBJECT_LOCK (qtmux); + if (qtmux->reserved_moov_update_period == GST_CLOCK_TIME_NONE) { + GST_OBJECT_UNLOCK (qtmux); + return GST_FLOW_OK; + } + + /* Update if position is > the threshold or there's been no update yet */ + if (qtmux->last_moov_update != GST_CLOCK_TIME_NONE && + (position <= qtmux->last_moov_update || + (position - qtmux->last_moov_update) < + qtmux->reserved_moov_update_period)) { + /* Update the offset of how much we've muxed, so the + * report of remaining space keeps counting down */ + if (position > qtmux->last_moov_update && + position - qtmux->last_moov_update > qtmux->muxed_since_last_update) { + GST_LOG_OBJECT (qtmux, + "Muxed time %" G_GUINT64_FORMAT " since last moov update", + qtmux->muxed_since_last_update); + qtmux->muxed_since_last_update = position - qtmux->last_moov_update; + } + GST_OBJECT_UNLOCK (qtmux); + return GST_FLOW_OK; /* No update needed yet */ + } + + qtmux->last_moov_update = position; + GST_OBJECT_UNLOCK (qtmux); + + GST_DEBUG_OBJECT (qtmux, "Update moov atom, position %" GST_TIME_FORMAT + " mdat starts @ %" G_GUINT64_FORMAT " we were a %" G_GUINT64_FORMAT, + GST_TIME_ARGS (position), qtmux->mdat_pos, mdat_offset); + + flow_ret = gst_qt_mux_robust_recording_rewrite_moov (qtmux); + if (G_UNLIKELY (flow_ret != GST_FLOW_OK)) + return flow_ret; + + /* Seek back to previous position */ + gst_segment_init (&segment, GST_FORMAT_BYTES); + segment.start = mdat_offset; + gst_pad_push_event (qtmux->srcpad, gst_event_new_segment (&segment)); + + return flow_ret; +} + static GstFlowReturn gst_qt_mux_register_and_push_sample (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buffer, gboolean is_last_buffer, guint nsamples, @@ -2353,10 +2952,14 @@ gst_qt_mux_register_and_push_sample (GstQTMux * qtmux, GstQTPad * pad, switch (qtmux->mux_mode) { case GST_QT_MUX_MODE_MOOV_AT_END: case GST_QT_MUX_MODE_FAST_START: - + case GST_QT_MUX_MODE_ROBUST_RECORDING: atom_trak_add_samples (pad->trak, nsamples, (gint32) scaled_duration, sample_size, chunk_offset, sync, pts_offset); ret = gst_qt_mux_send_buffer (qtmux, buffer, &qtmux->mdat_size, TRUE); + /* Check if it's time to re-write the headers in robust-recording mode */ + if (ret == GST_FLOW_OK + && qtmux->mux_mode == GST_QT_MUX_MODE_ROBUST_RECORDING) + ret = gst_qt_mux_robust_recording_update (qtmux, pad->total_duration); break; case GST_QT_MUX_MODE_FRAGMENTED: case GST_QT_MUX_MODE_FRAGMENTED_STREAMABLE: @@ -2414,9 +3017,6 @@ gst_qt_mux_add_buffer (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf) GST_BUFFER_DTS (buf)) { GST_BUFFER_DTS (buf) = GST_BUFFER_DTS (last_buf) + last_buf_duration; } - - if (GST_BUFFER_PTS_IS_VALID (buf)) - GST_BUFFER_DTS (buf) = MIN (GST_BUFFER_DTS (buf), GST_BUFFER_PTS (buf)); } if (last_buf && !buf && !GST_BUFFER_DURATION_IS_VALID (last_buf)) { @@ -2444,10 +3044,16 @@ gst_qt_mux_add_buffer (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf) /* if this is the first buffer, store the timestamp */ if (G_UNLIKELY (pad->first_ts == GST_CLOCK_TIME_NONE) && last_buf) { - if (GST_BUFFER_DTS_IS_VALID (last_buf)) { + if (GST_BUFFER_PTS_IS_VALID (last_buf)) { + pad->first_ts = GST_BUFFER_PTS (last_buf); + } else if (GST_BUFFER_DTS_IS_VALID (last_buf)) { pad->first_ts = GST_BUFFER_DTS (last_buf); + } + + if (GST_BUFFER_DTS_IS_VALID (last_buf)) { + pad->first_dts = pad->last_dts = GST_BUFFER_DTS (last_buf); } else if (GST_BUFFER_PTS_IS_VALID (last_buf)) { - pad->first_ts = GST_BUFFER_PTS (last_buf); + pad->first_dts = pad->last_dts = GST_BUFFER_PTS (last_buf); } if (GST_CLOCK_TIME_IS_VALID (pad->first_ts)) { @@ -2455,7 +3061,7 @@ gst_qt_mux_add_buffer (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf) } else { GST_WARNING_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; + pad->first_ts = pad->first_dts = 0; } GST_DEBUG_OBJECT (qtmux, "Stored first timestamp for pad %s %" GST_TIME_FORMAT, GST_PAD_NAME (pad->collect.pad), @@ -2666,6 +3272,57 @@ not_negotiated: } } +/* + * DTS running time can be negative. There is no way to represent that in + * MP4 however, thus we need to offset DTS so that it starts from 0. + */ +static void +gst_qt_pad_adjust_buffer_dts (GstQTMux * qtmux, GstQTPad * pad, + GstCollectData * cdata, GstBuffer ** buf) +{ + GstClockTime pts; + gint64 dts; + + pts = GST_BUFFER_PTS (*buf); + dts = GST_COLLECT_PADS_DTS (cdata); + + GST_LOG_OBJECT (qtmux, "selected pad %s with PTS %" GST_TIME_FORMAT + " and DTS %" GST_STIME_FORMAT, GST_PAD_NAME (cdata->pad), + GST_TIME_ARGS (pts), GST_STIME_ARGS (dts)); + + if (!GST_CLOCK_TIME_IS_VALID (pad->dts_adjustment)) { + if (GST_CLOCK_STIME_IS_VALID (dts) && dts < 0) + pad->dts_adjustment = -dts; + else + pad->dts_adjustment = 0; + } + + if (pad->dts_adjustment > 0) { + *buf = gst_buffer_make_writable (*buf); + + dts += pad->dts_adjustment; + + if (GST_CLOCK_TIME_IS_VALID (pts)) + pts += pad->dts_adjustment; + + if (GST_CLOCK_STIME_IS_VALID (dts) && dts < 0) { + GST_WARNING_OBJECT (pad, "Decreasing DTS."); + dts = 0; + } + + if (pts < dts) { + GST_WARNING_OBJECT (pad, "DTS is bigger then PTS"); + pts = dts; + } + + GST_BUFFER_PTS (*buf) = pts; + GST_BUFFER_DTS (*buf) = dts; + + GST_LOG_OBJECT (qtmux, "time adjusted to PTS %" GST_TIME_FORMAT + " and DTS %" GST_TIME_FORMAT, GST_TIME_ARGS (pts), GST_TIME_ARGS (dts)); + } +} + static GstFlowReturn gst_qt_mux_handle_buffer (GstCollectPads * pads, GstCollectData * cdata, GstBuffer * buf, gpointer user_data) @@ -2673,13 +3330,12 @@ gst_qt_mux_handle_buffer (GstCollectPads * pads, GstCollectData * cdata, GstFlowReturn ret = GST_FLOW_OK; GstQTMux *qtmux = GST_QT_MUX_CAST (user_data); GstQTPad *best_pad = NULL; - GstClockTime best_time = GST_CLOCK_TIME_NONE; if (G_UNLIKELY (qtmux->state == GST_QT_MUX_STATE_STARTED)) { if ((ret = gst_qt_mux_start_file (qtmux)) != GST_FLOW_OK) return ret; - else - qtmux->state = GST_QT_MUX_STATE_DATA; + + qtmux->state = GST_QT_MUX_STATE_DATA; } if (G_UNLIKELY (qtmux->state == GST_QT_MUX_STATE_EOS)) @@ -2690,11 +3346,10 @@ 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_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)); + gst_qt_pad_adjust_buffer_dts (qtmux, best_pad, cdata, &buf); ret = gst_qt_mux_add_buffer (qtmux, best_pad, buf); } else { + qtmux->state = GST_QT_MUX_STATE_EOS; ret = gst_qt_mux_stop_file (qtmux); if (ret == GST_FLOW_OK) { GST_DEBUG_OBJECT (qtmux, "Pushing eos"); @@ -2704,7 +3359,6 @@ gst_qt_mux_handle_buffer (GstCollectPads * pads, GstCollectData * cdata, GST_WARNING_OBJECT (qtmux, "Failed to stop file: %s", gst_flow_get_name (ret)); } - qtmux->state = GST_QT_MUX_STATE_EOS; } return ret; @@ -2993,6 +3647,18 @@ gst_qt_mux_audio_sink_set_caps (GstQTPad * qtpad, GstCaps * caps) entry.samples_per_packet = GST_READ_UINT32_BE (map.data + 4); gst_buffer_unmap (codec_config, &map); gst_buffer_unref (codec_config); + } else if (strcmp (mimetype, "audio/x-ac3") == 0) { + entry.fourcc = FOURCC_ac_3; + + /* Fixed values according to TS 102 366 but it also mentions that + * they should be ignored */ + entry.channels = 2; + entry.sample_size = 16; + + /* AC-3 needs an extension atom but its data can only be obtained from + * the stream itself. Abuse the prepare_buf_func so we parse a frame + * and get the needed data */ + qtpad->prepare_buf_func = gst_qt_mux_prepare_parse_ac3_frame; } if (!entry.fourcc) @@ -3001,7 +3667,9 @@ gst_qt_mux_audio_sink_set_caps (GstQTPad * qtpad, GstCaps * caps) /* ok, set the pad info accordingly */ qtpad->fourcc = entry.fourcc; qtpad->sample_size = constant_size; - atom_trak_set_audio_type (qtpad->trak, qtmux->context, &entry, + qtpad->trak_ste = + (SampleTableEntry *) atom_trak_set_audio_type (qtpad->trak, + qtmux->context, &entry, qtmux->trak_timescale ? qtmux->trak_timescale : entry.sample_rate, ext_atom, constant_size); @@ -3362,8 +4030,9 @@ gst_qt_mux_video_sink_set_caps (GstQTPad * qtpad, GstCaps * caps) /* ok, set the pad info accordingly */ qtpad->fourcc = entry.fourcc; qtpad->sync = sync; - atom_trak_set_video_type (qtpad->trak, qtmux->context, &entry, rate, - ext_atom_list); + qtpad->trak_ste = + (SampleTableEntry *) atom_trak_set_video_type (qtpad->trak, + qtmux->context, &entry, rate, ext_atom_list); gst_object_unref (qtmux); return TRUE; @@ -3394,8 +4063,6 @@ gst_qt_mux_subtitle_sink_set_caps (GstQTPad * qtpad, GstCaps * caps) GstStructure *structure; SubtitleSampleEntry entry = { 0, }; - qtpad->prepare_buf_func = NULL; - /* does not go well to renegotiate stream mid-way, unless * the old caps are a subset of the new one (this means upstream * added more info to the caps, as both should be 'fixed' caps) */ @@ -3440,7 +4107,9 @@ gst_qt_mux_subtitle_sink_set_caps (GstQTPad * qtpad, GstCaps * caps) goto refuse_caps; qtpad->fourcc = entry.fourcc; - atom_trak_set_subtitle_type (qtpad->trak, qtmux->context, &entry); + qtpad->trak_ste = + (SampleTableEntry *) atom_trak_set_subtitle_type (qtpad->trak, + qtmux->context, &entry); gst_object_unref (qtmux); return TRUE; @@ -3508,10 +4177,12 @@ gst_qt_mux_sink_event (GstCollectPads * pads, GstCollectData * data, if (gst_tag_list_get_scope (list) == GST_TAG_SCOPE_GLOBAL) { gst_tag_setter_merge_tags (setter, list, mode); + qtmux->tags_changed = TRUE; } else { if (!collect_pad->tags) collect_pad->tags = gst_tag_list_new_empty (); gst_tag_list_insert (collect_pad->tags, list, mode); + collect_pad->tags_changed = TRUE; } GST_OBJECT_UNLOCK (qtmux); @@ -3700,6 +4371,34 @@ gst_qt_mux_get_property (GObject * object, case PROP_STREAMABLE: g_value_set_boolean (value, qtmux->streamable); break; + case PROP_RESERVED_MAX_DURATION: + g_value_set_uint64 (value, qtmux->reserved_max_duration); + break; + case PROP_RESERVED_DURATION_REMAINING: + if (qtmux->reserved_duration_remaining == GST_CLOCK_TIME_NONE) + g_value_set_uint64 (value, qtmux->reserved_max_duration); + else { + GstClockTime remaining = qtmux->reserved_duration_remaining; + + /* Report the remaining space as the calculated remaining, minus + * however much we've muxed since the last update */ + if (remaining > qtmux->muxed_since_last_update) + remaining -= qtmux->muxed_since_last_update; + else + remaining = 0; + GST_LOG_OBJECT (qtmux, "reserved duration remaining - reporting %" + G_GUINT64_FORMAT "(%" G_GUINT64_FORMAT " - %" G_GUINT64_FORMAT, + remaining, qtmux->reserved_duration_remaining, + qtmux->muxed_since_last_update); + g_value_set_uint64 (value, remaining); + } + break; + case PROP_RESERVED_MOOV_UPDATE_PERIOD: + g_value_set_uint64 (value, qtmux->reserved_moov_update_period); + break; + case PROP_RESERVED_BYTES_PER_SEC: + g_value_set_uint (value, qtmux->reserved_bytes_per_sec_per_trak); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -3768,6 +4467,15 @@ gst_qt_mux_set_property (GObject * object, } break; } + case PROP_RESERVED_MAX_DURATION: + qtmux->reserved_max_duration = g_value_get_uint64 (value); + break; + case PROP_RESERVED_MOOV_UPDATE_PERIOD: + qtmux->reserved_moov_update_period = g_value_get_uint64 (value); + break; + case PROP_RESERVED_BYTES_PER_SEC: + qtmux->reserved_bytes_per_sec_per_trak = g_value_get_uint (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; diff --git a/gst/isomp4/gstqtmux.h b/gst/isomp4/gstqtmux.h index 0e30eb4a065efa321b421429f077a1809715fdca..81a23faa4fd23be67cbd59a8e581635236d8e369 100644 --- a/gst/isomp4/gstqtmux.h +++ b/gst/isomp4/gstqtmux.h @@ -109,15 +109,21 @@ struct _GstQTPad /* dts of last_buf */ GstClockTime last_dts; + /* This is compensate for CTTS */ + GstClockTime dts_adjustment; + /* store the first timestamp for comparing with other streams and * know if there are late streams */ GstClockTime first_ts; + GstClockTime first_dts; + guint buf_head; guint buf_tail; /* all the atom and chunk book-keeping is delegated here * unowned/uncounted reference, parent MOOV owns */ AtomTRAK *trak; + SampleTableEntry *trak_ste; /* fragmented support */ /* meta data book-keeping delegated here */ AtomTRAF *traf; @@ -128,6 +134,9 @@ struct _GstQTPad /* optional fragment index book-keeping */ AtomTFRA *tfra; + /* Set when tags are received, cleared when written to moov */ + gboolean tags_changed; + GstTagList *tags; /* if nothing is set, it won't be called */ @@ -148,7 +157,8 @@ typedef enum _GstQtMuxMode { GST_QT_MUX_MODE_MOOV_AT_END, GST_QT_MUX_MODE_FRAGMENTED, GST_QT_MUX_MODE_FRAGMENTED_STREAMABLE, - GST_QT_MUX_MODE_FAST_START + GST_QT_MUX_MODE_FAST_START, + GST_QT_MUX_MODE_ROBUST_RECORDING } GstQtMuxMode; struct _GstQTMux @@ -168,14 +178,23 @@ struct _GstQTMux /* size of header (prefix, atoms (ftyp, possibly moov, mdat header)) */ guint64 header_size; - /* accumulated size of raw media data (a priori not including mdat header) */ + /* accumulated size of raw media data (not including mdat header) */ guint64 mdat_size; - /* position of mdat atom (for later updating) */ + /* position of the moov (for fragmented mode) or reserved moov atom + * area (for robust-muxing mode) */ + guint64 moov_pos; + /* position of mdat atom header (for later updating of size) in + * moov-at-end, fragmented and robust-muxing modes */ guint64 mdat_pos; /* keep track of the largest chunk to fine-tune brands */ GstClockTime longest_chunk; + /* Earliest timestamp across all pads/traks */ + GstClockTime first_ts; + /* Last DTS across all pads (= duration) */ + GstClockTime last_dts; + /* atom helper objects */ AtomsContext *context; AtomFTYP *ftyp; @@ -183,6 +202,10 @@ struct _GstQTMux GSList *extra_atoms; /* list of extra top-level atoms (e.g. UUID for xmp) * Stored as AtomInfo structs */ + /* Set when tags are received, cleared when written to moov */ + gboolean tags_changed; + + /* fragmented file index */ AtomMFRA *mfra; @@ -212,6 +235,30 @@ struct _GstQTMux * mode. */ gboolean streamable; + /* Requested target maximum duration */ + GstClockTime reserved_max_duration; + /* Estimate of remaining reserved header space (in ns of recording) */ + GstClockTime reserved_duration_remaining; + /* Multiplier for conversion from reserved_max_duration to bytes */ + guint reserved_bytes_per_sec_per_trak; + + /* Reserved minimum MOOV size in bytes + * This is converted from reserved_max_duration + * using the bytes/trak/sec estimate */ + guint32 reserved_moov_size; + /* Basic size of the moov (static headers + tags) */ + guint32 base_moov_size; + /* Size of the most recently generated moov header */ + guint32 last_moov_size; + /* True if the first moov in the ping-pong buffers + * is the active one. See gst_qt_mux_robust_recording_rewrite_moov() */ + gboolean reserved_moov_first_active; + + /* Tracking of periodic MOOV updates */ + GstClockTime last_moov_update; + GstClockTime reserved_moov_update_period; + GstClockTime muxed_since_last_update; + /* for request pad naming */ guint video_pads, audio_pads, subtitle_pads; }; diff --git a/gst/isomp4/gstqtmuxmap.c b/gst/isomp4/gstqtmuxmap.c index bc0f101c0df3d170b195f6db99e69f734adcf09c..e088a424a5372c2839d2b21c5fb76e3c6ae3693e 100644 --- a/gst/isomp4/gstqtmuxmap.c +++ b/gst/isomp4/gstqtmuxmap.c @@ -115,6 +115,10 @@ "stream-format = (string) raw, " \ COMMON_AUDIO_CAPS (8, MAX) +#define AC3_CAPS \ + "audio/x-ac3, " \ + COMMON_AUDIO_CAPS (6, MAX) + #define AMR_CAPS \ "audio/AMR, " \ "rate = (int) 8000, " \ @@ -184,7 +188,7 @@ GstQTMuxFormatProp gst_qt_mux_format_list[] = { GST_STATIC_CAPS ("video/quicktime, variant = (string) iso"), GST_STATIC_CAPS (MPEG4V_CAPS "; " H264_CAPS ";" "video/x-mp4-part," COMMON_VIDEO_CAPS), - GST_STATIC_CAPS (MP3_CAPS "; " AAC_CAPS " ; " ALAC_CAPS), + GST_STATIC_CAPS (MP3_CAPS "; " AAC_CAPS " ; " AC3_CAPS " ; " ALAC_CAPS), GST_STATIC_CAPS (TEXT_UTF8)} , /* Microsoft Smooth Streaming fmp4/isml */ @@ -210,7 +214,7 @@ GstQTMuxFormatProp gst_qt_mux_format_list[] = { "Gst3GPPMux", GST_STATIC_CAPS ("video/quicktime, variant = (string) 3gpp"), GST_STATIC_CAPS (H263_CAPS "; " MPEG4V_CAPS "; " H264_CAPS), - GST_STATIC_CAPS (AMR_CAPS "; " MP3_CAPS "; " AAC_CAPS), + GST_STATIC_CAPS (AMR_CAPS "; " MP3_CAPS "; " AAC_CAPS "; " AC3_CAPS), GST_STATIC_CAPS (TEXT_UTF8)} , /* ISO 15444-3: Motion-JPEG-2000 (also ISO base media extension) */ diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index 2b771aea2d684f3055c9256622032d0825032d9e..edd0a585a44a3352a9b1493e3c6f9450fa600040 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -127,7 +127,7 @@ struct _QtDemuxSample /* timestamp is the DTS */ #define QTSAMPLE_DTS(stream,sample) (QTSTREAMTIME_TO_GSTTIME((stream), (sample)->timestamp)) /* timestamp + offset is the PTS */ -#define QTSAMPLE_PTS(stream,sample) (QTSTREAMTIME_TO_GSTTIME((stream), (sample)->timestamp + (sample)->pts_offset)) +#define QTSAMPLE_PTS(stream,sample) (QTSTREAMTIME_TO_GSTTIME((stream), (sample)->timestamp + (stream)->cslg_shift + (sample)->pts_offset)) /* timestamp + duration - dts is the duration */ #define QTSAMPLE_DUR_DTS(stream, sample, dts) (QTSTREAMTIME_TO_GSTTIME ((stream), (sample)->timestamp + (sample)->duration) - (dts)) @@ -304,6 +304,7 @@ struct _QtDemuxStream guint32 segment_index; guint32 sample_index; GstClockTime time_position; /* in gst time */ + guint64 accumulated_base; /* the Gst segment we are processing out, used for clipping */ GstSegment segment; @@ -376,6 +377,9 @@ struct _QtDemuxStream guint32 ctts_count; gint32 ctts_soffset; + /* cslg */ + guint32 cslg_shift; + /* fragmented */ gboolean parsed_trex; guint32 def_sample_duration; @@ -383,6 +387,10 @@ struct _QtDemuxStream guint32 def_sample_flags; gboolean disabled; + + /* stereoscopic video streams */ + GstVideoMultiviewMode multiview_mode; + GstVideoMultiviewFlags multiview_flags; }; enum QtDemuxState @@ -1127,21 +1135,21 @@ gst_qtdemux_find_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, gint i; guint32 seg_idx; - GST_LOG_OBJECT (qtdemux, "finding segment for %" GST_TIME_FORMAT, + GST_LOG_OBJECT (stream->pad, "finding segment for %" GST_TIME_FORMAT, GST_TIME_ARGS (time_position)); seg_idx = -1; for (i = 0; i < stream->n_segments; i++) { QtDemuxSegment *segment = &stream->segments[i]; - GST_LOG_OBJECT (qtdemux, + GST_LOG_OBJECT (stream->pad, "looking at segment %" GST_TIME_FORMAT "-%" GST_TIME_FORMAT, GST_TIME_ARGS (segment->time), GST_TIME_ARGS (segment->stop_time)); /* For the last segment we include stop_time in the last segment */ if (i < stream->n_segments - 1) { if (segment->time <= time_position && time_position < segment->stop_time) { - GST_LOG_OBJECT (qtdemux, "segment %d matches", i); + GST_LOG_OBJECT (stream->pad, "segment %d matches", i); seg_idx = i; break; } @@ -1421,6 +1429,7 @@ gst_qtdemux_perform_seek (GstQTDemux * qtdemux, GstSegment * segment, QtDemuxStream *stream = qtdemux->streams[n]; stream->time_position = desired_offset; + stream->accumulated_base = 0; stream->sample_index = -1; stream->offset_in_sample = 0; stream->segment_index = -1; @@ -1432,11 +1441,15 @@ gst_qtdemux_perform_seek (GstQTDemux * qtdemux, GstSegment * segment, } segment->position = desired_offset; segment->time = desired_offset; - segment->start = desired_offset; + if (segment->rate >= 0) { + segment->start = desired_offset; - /* we stop at the end */ - if (segment->stop == -1) - segment->stop = segment->duration; + /* we stop at the end */ + if (segment->stop == -1) + segment->stop = segment->duration; + } else { + segment->stop = desired_offset; + } if (qtdemux->fragmented) qtdemux->fragmented_seek_pending = TRUE; @@ -1740,6 +1753,8 @@ _create_stream (void) stream->sample_index = -1; stream->offset_in_sample = 0; stream->new_stream = TRUE; + stream->multiview_mode = GST_VIDEO_MULTIVIEW_MODE_NONE; + stream->multiview_flags = GST_VIDEO_MULTIVIEW_FLAGS_NONE; return stream; } @@ -1908,6 +1923,7 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard) qtdemux->streams[n]->sent_eos = FALSE; qtdemux->streams[n]->segment_seqnum = 0; qtdemux->streams[n]->time_position = 0; + qtdemux->streams[n]->accumulated_base = 0; } } } @@ -2169,6 +2185,7 @@ gst_qtdemux_stream_flush_samples_data (GstQTDemux * qtdemux, stream->n_samples = 0; stream->time_position = 0; stream->segment_index = -1; + stream->accumulated_base = 0; } static void @@ -3653,7 +3670,7 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, GstClockTime start, stop, time; gdouble rate; - GST_LOG_OBJECT (qtdemux, "activate segment %d, offset %" GST_TIME_FORMAT, + GST_LOG_OBJECT (stream->pad, "activate segment %d, offset %" GST_TIME_FORMAT, seg_idx, GST_TIME_ARGS (offset)); /* update the current segment */ @@ -3663,7 +3680,7 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, segment = &stream->segments[seg_idx]; if (G_UNLIKELY (offset < segment->time)) { - GST_WARNING_OBJECT (qtdemux, "offset < segment->time %" GST_TIME_FORMAT, + GST_WARNING_OBJECT (stream->pad, "offset < segment->time %" GST_TIME_FORMAT, GST_TIME_ARGS (segment->time)); return FALSE; } @@ -3671,7 +3688,7 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, /* segment lies beyond total indicated duration */ if (G_UNLIKELY (qtdemux->segment.duration != GST_CLOCK_TIME_NONE && segment->time > qtdemux->segment.duration)) { - GST_WARNING_OBJECT (qtdemux, "file duration %" GST_TIME_FORMAT + GST_WARNING_OBJECT (stream->pad, "file duration %" GST_TIME_FORMAT " < segment->time %" GST_TIME_FORMAT, GST_TIME_ARGS (qtdemux->segment.duration), GST_TIME_ARGS (segment->time)); @@ -3681,11 +3698,12 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, /* get time in this segment */ seg_time = offset - segment->time; - GST_LOG_OBJECT (qtdemux, "seg_time %" GST_TIME_FORMAT, + GST_LOG_OBJECT (stream->pad, "seg_time %" GST_TIME_FORMAT, GST_TIME_ARGS (seg_time)); if (G_UNLIKELY (seg_time > segment->duration)) { - GST_LOG_OBJECT (qtdemux, "seg_time > segment->duration %" GST_TIME_FORMAT, + GST_LOG_OBJECT (stream->pad, + "seg_time > segment->duration %" GST_TIME_FORMAT, GST_TIME_ARGS (segment->duration)); seg_time = segment->duration; } @@ -3723,7 +3741,7 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, stop = MIN (segment->media_start + seg_time, stop); } - GST_DEBUG_OBJECT (qtdemux, "newsegment %d from %" GST_TIME_FORMAT + GST_DEBUG_OBJECT (stream->pad, "new segment %d from %" GST_TIME_FORMAT " to %" GST_TIME_FORMAT ", time %" GST_TIME_FORMAT, seg_idx, GST_TIME_ARGS (start), GST_TIME_ARGS (stop), GST_TIME_ARGS (time)); @@ -3733,16 +3751,25 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, /* Copy flags from main segment */ stream->segment.flags = qtdemux->segment.flags; - /* update the segment values used for clipping */ /* accumulate previous segments */ + if (GST_CLOCK_TIME_IS_VALID (stream->segment.stop)) + stream->accumulated_base += (stream->segment.stop - stream->segment.start) / + ABS (stream->segment.rate); + + /* update the segment values used for clipping */ stream->segment.offset = qtdemux->segment.offset; - stream->segment.base = qtdemux->segment.base; + stream->segment.base = qtdemux->segment.base + stream->accumulated_base; stream->segment.applied_rate = qtdemux->segment.applied_rate; stream->segment.rate = rate; - stream->segment.start = start; - stream->segment.stop = stop; + stream->segment.start = start + QTSTREAMTIME_TO_GSTTIME (stream, + stream->cslg_shift); + stream->segment.stop = stop + QTSTREAMTIME_TO_GSTTIME (stream, + stream->cslg_shift); stream->segment.time = time; - stream->segment.position = start; + stream->segment.position = stream->segment.start; + + GST_DEBUG_OBJECT (stream->pad, "New segment: %" GST_SEGMENT_FORMAT, + &stream->segment); /* now prepare and send the segment */ if (stream->pad) { @@ -3773,20 +3800,20 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, if (qtdemux->segment.rate >= 0) { index = gst_qtdemux_find_index_linear (qtdemux, stream, start); stream->to_sample = G_MAXUINT32; - GST_DEBUG_OBJECT (qtdemux, + GST_DEBUG_OBJECT (stream->pad, "moving data pointer to %" GST_TIME_FORMAT ", index: %u, pts %" GST_TIME_FORMAT, GST_TIME_ARGS (start), index, GST_TIME_ARGS (QTSAMPLE_PTS (stream, &stream->samples[index]))); } else { index = gst_qtdemux_find_index_linear (qtdemux, stream, stop); stream->to_sample = index; - GST_DEBUG_OBJECT (qtdemux, + GST_DEBUG_OBJECT (stream->pad, "moving data pointer to %" GST_TIME_FORMAT ", index: %u, pts %" GST_TIME_FORMAT, GST_TIME_ARGS (stop), index, GST_TIME_ARGS (QTSAMPLE_PTS (stream, &stream->samples[index]))); } } else { - GST_DEBUG_OBJECT (qtdemux, "No need to look for keyframe, " + GST_DEBUG_OBJECT (stream->pad, "No need to look for keyframe, " "this is an empty segment"); return TRUE; } @@ -3798,7 +3825,7 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, /* we're at the right spot */ if (index == stream->sample_index) { - GST_DEBUG_OBJECT (qtdemux, "we are at the right index"); + GST_DEBUG_OBJECT (stream->pad, "we are at the right index"); return TRUE; } @@ -3814,19 +3841,19 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream, if (index > stream->sample_index) { /* moving forwards check if we move past a keyframe */ if (kf_index > stream->sample_index) { - GST_DEBUG_OBJECT (qtdemux, + GST_DEBUG_OBJECT (stream->pad, "moving forwards to keyframe at %u (pts %" GST_TIME_FORMAT " dts %"GST_TIME_FORMAT" )", kf_index, GST_TIME_ARGS (QTSAMPLE_PTS(stream, &stream->samples[kf_index])), GST_TIME_ARGS (QTSAMPLE_DTS(stream, &stream->samples[kf_index]))); gst_qtdemux_move_stream (qtdemux, stream, kf_index); } else { - GST_DEBUG_OBJECT (qtdemux, + GST_DEBUG_OBJECT (stream->pad, "moving forwards, keyframe at %u (pts %" GST_TIME_FORMAT " dts %"GST_TIME_FORMAT" ) already sent", kf_index, GST_TIME_ARGS (QTSAMPLE_PTS (stream, &stream->samples[kf_index])), GST_TIME_ARGS (QTSAMPLE_DTS (stream, &stream->samples[kf_index]))); } } else { - GST_DEBUG_OBJECT (qtdemux, + GST_DEBUG_OBJECT (stream->pad, "moving backwards to keyframe at %u (pts %" GST_TIME_FORMAT " dts %"GST_TIME_FORMAT" )", kf_index, GST_TIME_ARGS (QTSAMPLE_PTS(stream, &stream->samples[kf_index])), GST_TIME_ARGS (QTSAMPLE_DTS(stream, &stream->samples[kf_index]))); @@ -6270,8 +6297,12 @@ gst_qtdemux_configure_stream (GstQTDemux * qtdemux, QtDemuxStream * stream) GST_DEBUG_OBJECT (qtdemux, "video size %dx%d, target display size %dx%d", stream->width, stream->height, stream->display_width, stream->display_height); - - if (stream->display_width > 0 && stream->display_height > 0 && + /* qt file might have pasp atom */ + if (stream->par_w > 0 && stream->par_h > 0) { + GST_DEBUG_OBJECT (qtdemux, "par %d:%d", stream->par_w, stream->par_h); + gst_caps_set_simple (stream->caps, "pixel-aspect-ratio", + GST_TYPE_FRACTION, stream->par_w, stream->par_h, NULL); + } else if (stream->display_width > 0 && stream->display_height > 0 && stream->width > 0 && stream->height > 0) { gint n, d; @@ -6281,18 +6312,35 @@ gst_qtdemux_configure_stream (GstQTDemux * qtdemux, QtDemuxStream * stream) if (n == d) n = d = 1; GST_DEBUG_OBJECT (qtdemux, "setting PAR to %d/%d", n, d); + stream->par_w = n; + stream->par_h = d; gst_caps_set_simple (stream->caps, "pixel-aspect-ratio", - GST_TYPE_FRACTION, n, d, NULL); + GST_TYPE_FRACTION, stream->par_w, stream->par_h, NULL); } - /* qt file might have pasp atom */ - if (stream->par_w > 0 && stream->par_h > 0) { - GST_DEBUG_OBJECT (qtdemux, "par %d:%d", stream->par_w, stream->par_h); - gst_caps_set_simple (stream->caps, "pixel-aspect-ratio", - GST_TYPE_FRACTION, stream->par_w, stream->par_h, NULL); + if (stream->multiview_mode != GST_VIDEO_MULTIVIEW_MODE_NONE) { + guint par_w = 1, par_h = 1; + + if (stream->par_w > 0 && stream->par_h > 0) { + par_w = stream->par_w; + par_h = stream->par_h; + } + + if (gst_video_multiview_guess_half_aspect (stream->multiview_mode, + stream->width, stream->height, par_w, par_h)) { + stream->multiview_flags |= GST_VIDEO_MULTIVIEW_FLAGS_HALF_ASPECT; + } + + gst_caps_set_simple (stream->caps, + "multiview-mode", G_TYPE_STRING, + gst_video_multiview_mode_to_caps_string (stream->multiview_mode), + "multiview-flags", GST_TYPE_VIDEO_MULTIVIEW_FLAGSET, + stream->multiview_flags, GST_FLAG_SET_MASK_EXACT, NULL); } } - } else if (stream->subtype == FOURCC_soun) { + } + + else if (stream->subtype == FOURCC_soun) { if (stream->caps) { stream->caps = gst_caps_make_writable (stream->caps); if (stream->rate > 0) @@ -6728,11 +6776,12 @@ qtdemux_stbl_init (GstQTDemux * qtdemux, QtDemuxStream * stream, GNode * stbl) return FALSE; } - /* composition time-to-sample */ if ((stream->ctts_present = ! !qtdemux_tree_get_child_by_type_full (stbl, FOURCC_ctts, &stream->ctts) ? TRUE : FALSE) == TRUE) { + GstByteReader cslg = GST_BYTE_READER_INIT (NULL, 0); + /* copy atom data into a new buffer for later use */ stream->ctts.data = g_memdup (stream->ctts.data, stream->ctts.size); @@ -6746,6 +6795,46 @@ qtdemux_stbl_init (GstQTDemux * qtdemux, QtDemuxStream * stream, GNode * stbl) if (!qt_atom_parser_has_chunks (&stream->ctts, stream->n_composition_times, 4 + 4)) goto corrupt_file; + + /* This is optional, if missing we iterate the ctts */ + if (qtdemux_tree_get_child_by_type_full (stbl, FOURCC_cslg, &cslg)) { + if (!gst_byte_reader_skip (&cslg, 1 + 3) + || !gst_byte_reader_get_uint32_be (&cslg, &stream->cslg_shift)) { + g_free ((gpointer) cslg.data); + goto corrupt_file; + } + } else { + gint32 cslg_least = 0; + guint num_entries, pos; + gint i; + + pos = gst_byte_reader_get_pos (&stream->ctts); + num_entries = stream->n_composition_times; + + stream->cslg_shift = 0; + + for (i = 0; i < num_entries; i++) { + gint32 offset; + + gst_byte_reader_skip_unchecked (&stream->ctts, 4); + offset = gst_byte_reader_get_int32_be_unchecked (&stream->ctts); + + if (offset < cslg_least) + cslg_least = offset; + } + + if (cslg_least < 0) + stream->cslg_shift = ABS (cslg_least); + else + stream->cslg_shift = 0; + + /* reset the reader so we can generate sample table */ + gst_byte_reader_set_pos (&stream->ctts, pos); + } + } else { + /* Ensure the cslg_shift value is consistent so we can use it + * unconditionnally to produce TS and Segment */ + stream->cslg_shift = 0; } return TRUE; @@ -7690,6 +7779,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) GNode *pasp; GNode *tref; GNode *udta; + GNode *svmi; QtDemuxStream *stream = NULL; gboolean new_stream = FALSE; @@ -7845,6 +7935,51 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) if (!(stbl = qtdemux_tree_get_child_by_type (minf, FOURCC_stbl))) goto corrupt_file; + /*parse svmi header if existing */ + svmi = qtdemux_tree_get_child_by_type (stbl, FOURCC_svmi); + if (svmi) { + len = QT_UINT32 ((guint8 *) svmi->data); + version = QT_UINT32 ((guint8 *) svmi->data + 8); + if (!version) { + GstVideoMultiviewMode mode = GST_VIDEO_MULTIVIEW_MODE_NONE; + GstVideoMultiviewFlags flags = GST_VIDEO_MULTIVIEW_FLAGS_NONE; + guint8 frame_type, frame_layout; + + /* MPEG-A stereo video */ + if (qtdemux->major_brand == FOURCC_ss02) + flags |= GST_VIDEO_MULTIVIEW_FLAGS_MIXED_MONO; + + frame_type = QT_UINT8 ((guint8 *) svmi->data + 12); + frame_layout = QT_UINT8 ((guint8 *) svmi->data + 13) & 0x01; + switch (frame_type) { + case 0: + mode = GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE; + break; + case 1: + mode = GST_VIDEO_MULTIVIEW_MODE_ROW_INTERLEAVED; + break; + case 2: + mode = GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME; + break; + case 3: + /* mode 3 is primary/secondary view sequence, ie + * left/right views in separate tracks. See section 7.2 + * of ISO/IEC 23000-11:2009 */ + GST_FIXME_OBJECT (qtdemux, + "Implement stereo video in separate streams"); + } + + if ((frame_layout & 0x1) == 0) + flags |= GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST; + + GST_LOG_OBJECT (qtdemux, + "StereoVideo: composition type: %u, is_left_first: %u", + frame_type, frame_layout); + stream->multiview_mode = mode; + stream->multiview_flags = flags; + } + } + /* parse stsd */ if (!(stsd = qtdemux_tree_get_child_by_type (stbl, FOURCC_stsd))) goto corrupt_file; @@ -11562,6 +11697,7 @@ qtdemux_video_caps (GstQTDemux * qtdemux, QtDemuxStream * stream, gst_video_info_init (&info); gst_video_info_set_format (&info, format, stream->width, stream->height); + caps = gst_video_info_to_caps (&info); *codec_name = gst_pb_utils_get_codec_description (caps); diff --git a/gst/isomp4/qtdemux_dump.c b/gst/isomp4/qtdemux_dump.c index a73812e2a3f09744985f850ffbbeb82b4de47f8d..880bb74cbee6dabf764bc10e35c7d80e954d9d15 100644 --- a/gst/isomp4/qtdemux_dump.c +++ b/gst/isomp4/qtdemux_dump.c @@ -499,14 +499,16 @@ qtdemux_dump_stco (GstQTDemux * qtdemux, GstByteReader * data, int depth) gboolean qtdemux_dump_ctts (GstQTDemux * qtdemux, GstByteReader * data, int depth) { - guint32 ver_flags = 0, num_entries = 0, i, count, offset; + guint32 ver_flags = 0, num_entries = 0, i, count; + gint32 offset; + if (!gst_byte_reader_get_uint32_be (data, &ver_flags) || !gst_byte_reader_get_uint32_be (data, &num_entries)) return FALSE; GST_LOG ("%*s version/flags: %08x", depth, "", ver_flags); - GST_LOG ("%*s n entries: %d", depth, "", num_entries); + GST_LOG ("%*s n entries: %u", depth, "", num_entries); if (!qt_atom_parser_has_chunks (data, num_entries, 4 + 4)) return FALSE; @@ -519,6 +521,28 @@ qtdemux_dump_ctts (GstQTDemux * qtdemux, GstByteReader * data, int depth) return TRUE; } +gboolean +qtdemux_dump_cslg (GstQTDemux * qtdemux, GstByteReader * data, int depth) +{ + guint32 ver_flags = 0, shift = 0; + gint32 least_offset = 0, start_time = 0, end_time = 0; + + if (!gst_byte_reader_get_uint32_be (data, &ver_flags) || + !gst_byte_reader_get_uint32_be (data, &shift) || + !gst_byte_reader_get_int32_be (data, &least_offset) || + !gst_byte_reader_get_int32_be (data, &start_time) || + !gst_byte_reader_get_int32_be (data, &end_time)) + return FALSE; + + GST_LOG ("%*s version/flags: %08x", depth, "", ver_flags); + GST_LOG ("%*s shift: %u", depth, "", shift); + GST_LOG ("%*s least offset: %d", depth, "", least_offset); + GST_LOG ("%*s start time: %d", depth, "", start_time); + GST_LOG ("%*s end time: %d", depth, "", end_time); + + return TRUE; +} + gboolean qtdemux_dump_co64 (GstQTDemux * qtdemux, GstByteReader * data, int depth) { @@ -836,6 +860,36 @@ qtdemux_dump_sdtp (GstQTDemux * qtdemux, GstByteReader * data, int depth) return TRUE; } +gboolean +qtdemux_dump_svmi (GstQTDemux * qtdemux, GstByteReader * data, int depth) +{ + guint32 version; + guint stereo_mono_change_count; + guint i; + + version = GET_UINT32 (data); + GST_LOG ("%*s version/flags: %08x", depth, "", version); + + if (!version) { + /* stereoscopic visual type information */ + GST_LOG ("%*s stereo_composition_type: %d", depth, "", + GET_UINT8 (data)); + GST_LOG ("%*s is_left_first: %d", depth, "", + ((guint8) GET_UINT8 (data)) & 0x01); + + /* stereo_mono_change information */ + stereo_mono_change_count = GET_UINT32 (data); + GST_LOG ("%*s stereo_mono_change_count: %d", depth, "", + stereo_mono_change_count); + for (i = 1; i <= stereo_mono_change_count; i++) { + GST_LOG ("%*s sample_count: %d", depth, "", GET_UINT32 (data)); + GST_LOG ("%*s stereo_flag: %d", depth, "", + ((guint8) GET_UINT8 (data)) & 0x01); + } + } + return TRUE; +} + gboolean qtdemux_dump_unknown (GstQTDemux * qtdemux, GstByteReader * data, int depth) { diff --git a/gst/isomp4/qtdemux_dump.h b/gst/isomp4/qtdemux_dump.h index 6b12874185505b696c708498dff74eeffc5d6ce7..4234023b4072c4955146243aa5fdcfbb6fbf527b 100644 --- a/gst/isomp4/qtdemux_dump.h +++ b/gst/isomp4/qtdemux_dump.h @@ -61,6 +61,8 @@ gboolean qtdemux_dump_cmvd (GstQTDemux * qtdemux, GstByteReader * data, int depth); gboolean qtdemux_dump_ctts (GstQTDemux * qtdemux, GstByteReader * data, int depth); +gboolean qtdemux_dump_cslg (GstQTDemux * qtdemux, GstByteReader * data, + int depth); gboolean qtdemux_dump_mfro (GstQTDemux * qtdemux, GstByteReader * data, int depth); gboolean qtdemux_dump_mfhd (GstQTDemux * qtdemux, GstByteReader * data, @@ -81,6 +83,8 @@ gboolean qtdemux_dump_tfdt (GstQTDemux * qtdemux, GstByteReader * data, int depth); gboolean qtdemux_dump_unknown (GstQTDemux * qtdemux, GstByteReader * data, int depth); +gboolean qtdemux_dump_svmi (GstQTDemux *qtdemux, GstByteReader *data, + int depth); gboolean qtdemux_node_dump (GstQTDemux * qtdemux, GNode * node); diff --git a/gst/isomp4/qtdemux_types.c b/gst/isomp4/qtdemux_types.c index 651a85f8bfefb17cc49f5e65362fd0365cc45d2a..ecd02f26545cff5a5a488c351094f8b705c8ec79 100644 --- a/gst/isomp4/qtdemux_types.c +++ b/gst/isomp4/qtdemux_types.c @@ -146,6 +146,7 @@ static const QtNodeType qt_node_types[] = { {FOURCC_rdrf, "rdrf", 0,}, {FOURCC__gen, "Custom Genre", QT_FLAG_CONTAINER,}, {FOURCC_ctts, "Composition time to sample", 0, qtdemux_dump_ctts}, + {FOURCC_cslg, "Composition Shift Least Greatest", 0, qtdemux_dump_cslg}, {FOURCC_XiTh, "XiTh", 0}, {FOURCC_XdxT, "XdxT", 0}, {FOURCC_loci, "loci", 0}, @@ -184,6 +185,10 @@ static const QtNodeType qt_node_types[] = { {FOURCC_frma, "Audio codec format", 0}, {FOURCC_name, "name", 0}, {FOURCC_mean, "mean", 0}, + {FOURCC_svmi, "Stereoscopic Video Media Information", 0, + qtdemux_dump_svmi}, + {FOURCC_scdi, "Stereoscopic Camera and Display Information", 0, + qtdemux_dump_unknown}, {0, "unknown", 0,}, }; diff --git a/gst/matroska/lzo.c b/gst/matroska/lzo.c index 3c564bbdf657fa9aeeeccc5c1a245a20182b0d4b..7462df2b689f6ff068daa3a704d702542d8486bd 100644 --- a/gst/matroska/lzo.c +++ b/gst/matroska/lzo.c @@ -286,6 +286,8 @@ main (int argc, char *argv[]) av_log (NULL, AV_LOG_ERROR, "decompression incorrect\n"); else av_log (NULL, AV_LOG_ERROR, "decompression ok\n"); + + fclose (in); return 0; } #endif diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index 0ee13b378397642a0e3f46907d59a5dbadc39bb0..76fd8b830e04613d8ab910ff8e92974a0ae67080 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -731,12 +731,61 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml) g_free (data); break; } + case GST_MATROSKA_ID_VIDEOSTEREOMODE: + { + guint64 num; + + if ((ret = gst_ebml_read_uint (ebml, &id, &num)) != GST_FLOW_OK) + break; + + GST_DEBUG_OBJECT (demux, "StereoMode: %" G_GUINT64_FORMAT, num); + + switch (num) { + case GST_MATROSKA_STEREO_MODE_SBS_RL: + videocontext->multiview_flags = + GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST; + /* fall through */ + case GST_MATROSKA_STEREO_MODE_SBS_LR: + videocontext->multiview_mode = + GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE; + break; + case GST_MATROSKA_STEREO_MODE_TB_RL: + videocontext->multiview_flags = + GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST; + /* fall through */ + case GST_MATROSKA_STEREO_MODE_TB_LR: + videocontext->multiview_mode = + GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM; + break; + case GST_MATROSKA_STEREO_MODE_CHECKER_RL: + videocontext->multiview_flags = + GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST; + /* fall through */ + case GST_MATROSKA_STEREO_MODE_CHECKER_LR: + videocontext->multiview_mode = + GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD; + break; + case GST_MATROSKA_STEREO_MODE_FBF_RL: + videocontext->multiview_flags = + GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST; + /* fall through */ + case GST_MATROSKA_STEREO_MODE_FBF_LR: + videocontext->multiview_mode = + GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME; + /* FIXME: In frame-by-frame mode, left/right frame buffers are + * laced within one block, and we'll need to apply FIRST_IN_BUNDLE + * accordingly. See http://www.matroska.org/technical/specs/index.html#StereoMode */ + GST_FIXME_OBJECT (demux, + "Frame-by-frame stereoscopic mode not fully implemented"); + break; + } + break; + } default: GST_WARNING_OBJECT (demux, "Unknown TrackVideo subelement 0x%x - ignoring", id); /* fall through */ - case GST_MATROSKA_ID_VIDEOSTEREOMODE: case GST_MATROSKA_ID_VIDEODISPLAYUNIT: case GST_MATROSKA_ID_VIDEOPIXELCROPBOTTOM: case GST_MATROSKA_ID_VIDEOPIXELCROPTOP: @@ -1074,9 +1123,7 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml) demux->common.num_streams--; g_ptr_array_remove_index (demux->common.src, demux->common.num_streams); g_assert (demux->common.src->len == demux->common.num_streams); - if (context) { - gst_matroska_track_free (context); - } + gst_matroska_track_free (context); return ret; } @@ -5184,6 +5231,20 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext * gst_structure_set (structure, "interlace-mode", G_TYPE_STRING, "mixed", NULL); } + if (videocontext->multiview_mode != GST_VIDEO_MULTIVIEW_MODE_NONE) { + if (gst_video_multiview_guess_half_aspect (videocontext->multiview_mode, + videocontext->pixel_width, videocontext->pixel_height, + videocontext->display_width * videocontext->pixel_height, + videocontext->display_height * videocontext->pixel_width)) { + videocontext->multiview_flags |= GST_VIDEO_MULTIVIEW_FLAGS_HALF_ASPECT; + } + gst_caps_set_simple (caps, + "multiview-mode", G_TYPE_STRING, + gst_video_multiview_mode_to_caps_string + (videocontext->multiview_mode), "multiview-flags", + GST_TYPE_VIDEO_MULTIVIEW_FLAGSET, videocontext->multiview_flags, + GST_FLAG_SET_MASK_EXACT, NULL); + } caps = gst_caps_simplify (caps); } diff --git a/gst/matroska/matroska-ids.c b/gst/matroska/matroska-ids.c index 65af1cc4c543f0fb540b74f79434670e2992449a..52e5dc30d1778f1eaff33a22d50b49d2ac536ebd 100644 --- a/gst/matroska/matroska-ids.c +++ b/gst/matroska/matroska-ids.c @@ -59,6 +59,9 @@ gst_matroska_track_init_video_context (GstMatroskaTrackContext ** p_context) video_context->fourcc = 0; video_context->default_fps = 0.0; video_context->earliest_time = GST_CLOCK_TIME_NONE; + video_context->multiview_mode = GST_VIDEO_MULTIVIEW_MODE_NONE; + video_context->multiview_flags = GST_VIDEO_MULTIVIEW_FLAGS_NONE; + return TRUE; } diff --git a/gst/matroska/matroska-ids.h b/gst/matroska/matroska-ids.h index 41315a052b76fb7b2fb721e85ad8a5aaa86f5029..661a4a1b0f3323b4117cdf424e67d3e1ace74d0c 100644 --- a/gst/matroska/matroska-ids.h +++ b/gst/matroska/matroska-ids.h @@ -23,6 +23,7 @@ #define __GST_MATROSKA_IDS_H__ #include <gst/gst.h> +#include <gst/video/video-info.h> #include "ebml-ids.h" @@ -489,6 +490,16 @@ typedef enum { GST_MATROSKA_VIDEOTRACK_INTERLACED = (GST_MATROSKA_TRACK_SHIFT<<0) } GstMatroskaVideoTrackFlags; +typedef enum { + GST_MATROSKA_STEREO_MODE_SBS_LR = 0x1, + GST_MATROSKA_STEREO_MODE_TB_RL = 0x2, + GST_MATROSKA_STEREO_MODE_TB_LR = 0x3, + GST_MATROSKA_STEREO_MODE_CHECKER_RL = 0x4, + GST_MATROSKA_STEREO_MODE_CHECKER_LR = 0x5, + GST_MATROSKA_STEREO_MODE_SBS_RL = 0x9, + GST_MATROSKA_STEREO_MODE_FBF_LR = 0xD, + GST_MATROSKA_STEREO_MODE_FBF_RL = 0xE +} GstMatroskaStereoMode; typedef struct _GstMatroskaTrackContext GstMatroskaTrackContext; @@ -571,6 +582,9 @@ typedef struct _GstMatroskaTrackVideoContext { GstMatroskaAspectRatioMode asr_mode; guint32 fourcc; + GstVideoMultiviewMode multiview_mode; + GstVideoMultiviewFlags multiview_flags; + /* QoS */ GstClockTime earliest_time; diff --git a/gst/matroska/matroska-mux.c b/gst/matroska/matroska-mux.c index 0e28ed32143aea37cc23805809056d05620f141b..f555f0df95ce88250ce8d115e9434e3547cae0d8 100644 --- a/gst/matroska/matroska-mux.c +++ b/gst/matroska/matroska-mux.c @@ -929,7 +929,7 @@ gst_matroska_mux_video_pad_setcaps (GstPad * pad, GstCaps * caps) GstMatroskaPad *collect_pad; GstStructure *structure; const gchar *mimetype; - const gchar *interlace_mode; + const gchar *interlace_mode, *s; const GValue *value = NULL; GstBuffer *codec_buf = NULL; gint width, height, pixel_width, pixel_height; @@ -1002,6 +1002,14 @@ gst_matroska_mux_video_pad_setcaps (GstPad * pad, GstCaps * caps) videocontext->display_height = 0; } + /* Collect stereoscopic info, if any */ + if ((s = gst_structure_get_string (structure, "multiview-mode"))) + videocontext->multiview_mode = + gst_video_multiview_mode_from_caps_string (s); + gst_structure_get_flagset (structure, "multiview-flags", + &videocontext->multiview_flags, NULL); + + skip_details: videocontext->asr_mode = GST_MATROSKA_ASPECT_RATIO_MODE_FREE; @@ -2432,6 +2440,53 @@ gst_matroska_mux_track_header (GstMatroskaMux * mux, gst_ebml_write_binary (ebml, GST_MATROSKA_ID_VIDEOCOLOURSPACE, (gpointer) & fcc_le, 4); } + if (videocontext->multiview_mode != GST_VIDEO_MULTIVIEW_MODE_NONE) { + guint64 stereo_mode = 0; + + switch (videocontext->multiview_mode) { + case GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE: + if (videocontext->multiview_flags & + GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST) + stereo_mode = GST_MATROSKA_STEREO_MODE_SBS_RL; + else + stereo_mode = GST_MATROSKA_STEREO_MODE_SBS_LR; + break; + case GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM: + if (videocontext->multiview_flags & + GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST) + stereo_mode = GST_MATROSKA_STEREO_MODE_TB_RL; + else + stereo_mode = GST_MATROSKA_STEREO_MODE_TB_LR; + break; + case GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD: + if (videocontext->multiview_flags & + GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST) + stereo_mode = GST_MATROSKA_STEREO_MODE_CHECKER_RL; + else + stereo_mode = GST_MATROSKA_STEREO_MODE_CHECKER_LR; + break; + case GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME: + if (videocontext->multiview_flags & + GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST) + stereo_mode = GST_MATROSKA_STEREO_MODE_FBF_RL; + else + stereo_mode = GST_MATROSKA_STEREO_MODE_FBF_LR; + /* FIXME: In frame-by-frame mode, left/right frame buffers need to be + * laced within one block. See http://www.matroska.org/technical/specs/index.html#StereoMode */ + GST_FIXME_OBJECT (mux, + "Frame-by-frame stereoscopic mode not fully implemented"); + break; + default: + GST_WARNING_OBJECT (mux, + "Multiview mode %d not supported in Matroska/WebM", + videocontext->multiview_mode); + break; + } + + if (stereo_mode != 0) + gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOSTEREOMODE, + stereo_mode); + } gst_ebml_write_master_finish (ebml, master); break; diff --git a/gst/matroska/matroska-parse.c b/gst/matroska/matroska-parse.c index 53b4eaca72afe612934837ba65c53e4d3ee9d2f9..11de18b50336519c44b1fff28429aab3187bd469 100644 --- a/gst/matroska/matroska-parse.c +++ b/gst/matroska/matroska-parse.c @@ -940,9 +940,7 @@ gst_matroska_parse_add_stream (GstMatroskaParse * parse, GstEbmlRead * ebml) parse->common.num_streams--; g_ptr_array_remove_index (parse->common.src, parse->common.num_streams); g_assert (parse->common.src->len == parse->common.num_streams); - if (context) { - gst_matroska_track_free (context); - } + gst_matroska_track_free (context); return ret; } diff --git a/gst/multifile/gstsplitmuxpartreader.c b/gst/multifile/gstsplitmuxpartreader.c index fc87f81d37919e53bfdafe4bd3a09216702ab53e..54bd6af9766a71f1fe86d455d0100e62a18ddb6a 100644 --- a/gst/multifile/gstsplitmuxpartreader.c +++ b/gst/multifile/gstsplitmuxpartreader.c @@ -903,9 +903,11 @@ type_found (GstElement * typefind, guint probability, return; } + gst_element_set_locked_state (demux, TRUE); gst_bin_add (GST_BIN_CAST (reader), demux); gst_element_link_pads (reader->typefind, "src", demux, NULL); - gst_element_set_state (reader->demux, GST_STATE_PLAYING); + gst_element_sync_state_with_parent (reader->demux); + gst_element_set_locked_state (demux, FALSE); /* Connect to demux signals */ g_signal_connect (demux, @@ -1025,12 +1027,11 @@ gst_splitmux_part_reader_change_state (GstElement * element, break; } case GST_STATE_CHANGE_READY_TO_PAUSED:{ - g_object_set (reader->src, "location", reader->path, NULL); + /* Hold the splitmux part lock until after the + * parent state change function has finished + * changing the states of things */ SPLITMUX_PART_LOCK (reader); - reader->prep_state = PART_STATE_PREPARING_COLLECT_STREAMS; - gst_splitmux_part_reader_set_flushing_locked (reader, FALSE); - reader->running = TRUE; - SPLITMUX_PART_UNLOCK (reader); + g_object_set (reader->src, "location", reader->path, NULL); break; } case GST_STATE_CHANGE_READY_TO_NULL: @@ -1053,25 +1054,31 @@ gst_splitmux_part_reader_change_state (GstElement * element, } ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); - if (ret == GST_STATE_CHANGE_FAILURE) + if (ret == GST_STATE_CHANGE_FAILURE) { + if (transition == GST_STATE_CHANGE_READY_TO_PAUSED) { + /* Make sure to release the lock we took above */ + SPLITMUX_PART_UNLOCK (reader); + } goto beach; + } switch (transition) { case GST_STATE_CHANGE_READY_TO_PAUSED: /* Sleep and wait until all streams have been collected, then do the seeks - * to measure the stream lengths */ - SPLITMUX_PART_LOCK (reader); + * to measure the stream lengths. This took the part lock above already... */ + reader->prep_state = PART_STATE_PREPARING_COLLECT_STREAMS; + gst_splitmux_part_reader_set_flushing_locked (reader, FALSE); + reader->running = TRUE; while (reader->prep_state == PART_STATE_PREPARING_COLLECT_STREAMS) { GST_LOG_OBJECT (reader, "Waiting to collect all output streams"); SPLITMUX_PART_WAIT (reader); } - if (reader->prep_state == PART_STATE_PREPARING_MEASURE_STREAMS) + if (reader->prep_state == PART_STATE_PREPARING_MEASURE_STREAMS || + reader->prep_state == PART_STATE_PREPARING_RESET_FOR_READY) { gst_splitmux_part_reader_measure_streams (reader); - else if (reader->prep_state == PART_STATE_PREPARING_RESET_FOR_READY) - reader->prep_state = PART_STATE_READY; - else if (reader->prep_state == PART_STATE_FAILED) + } else if (reader->prep_state == PART_STATE_FAILED) ret = GST_STATE_CHANGE_FAILURE; SPLITMUX_PART_UNLOCK (reader); break; @@ -1256,7 +1263,7 @@ gst_splitmux_part_reader_lookup_pad (GstSplitMuxPartReader * reader, for (cur = g_list_first (reader->pads); cur != NULL; cur = g_list_next (cur)) { GstSplitMuxPartPad *part_pad = SPLITMUX_PART_PAD_CAST (cur->data); if (part_pad->target == target) { - result = (GstPad *) part_pad; + result = (GstPad *) gst_object_ref (part_pad); break; } } diff --git a/gst/multifile/gstsplitmuxsink.c b/gst/multifile/gstsplitmuxsink.c index 96f4d1d7053782f1dbd8fdfa5462105c4cba9a2c..91d7fc4cd8710a86c2456a983db883236347d0c5 100644 --- a/gst/multifile/gstsplitmuxsink.c +++ b/gst/multifile/gstsplitmuxsink.c @@ -487,8 +487,10 @@ complete_or_wait_on_out (GstSplitMuxSink * splitmux, MqStreamCtx * ctx) GST_TIME_ARGS (splitmux->max_out_running_time)); if (splitmux->max_out_running_time == GST_CLOCK_TIME_NONE || - ctx->out_running_time < splitmux->max_out_running_time) + ctx->out_running_time < splitmux->max_out_running_time) { + splitmux->have_muxed_something = TRUE; return; + } if (ctx->flushing || splitmux->state == SPLITMUX_STATE_STOPPED) return; @@ -678,10 +680,15 @@ start_next_fragment (GstSplitMuxSink * splitmux) /* Switch state and go back to processing */ splitmux->state = SPLITMUX_STATE_COLLECTING_GOP_START; - if (!splitmux->video_ctx->in_eos) + + if (!splitmux->video_ctx->in_eos) { splitmux->max_out_running_time = splitmux->video_ctx->in_running_time; - else + } else { splitmux->max_out_running_time = GST_CLOCK_TIME_NONE; + splitmux->have_muxed_something = FALSE; + } + splitmux->have_muxed_something = + (splitmux->video_ctx->in_running_time > splitmux->muxed_out_time); /* Store the overflow parameters as the basis for the next fragment */ splitmux->mux_start_time = splitmux->muxed_out_time; @@ -759,7 +766,7 @@ handle_gathered_gop (GstSplitMuxSink * splitmux) /* Check for overrun - have we output at least one byte and overrun * either threshold? */ - if ((splitmux->mux_start_bytes < splitmux->muxed_out_bytes) && + if (splitmux->have_muxed_something && ((splitmux->threshold_bytes > 0 && queued_bytes >= splitmux->threshold_bytes) || (splitmux->threshold_time > 0 && @@ -782,6 +789,8 @@ handle_gathered_gop (GstSplitMuxSink * splitmux) /* Wake everyone up to push this one GOP, then sleep */ splitmux->state = SPLITMUX_STATE_COLLECTING_GOP_START; + splitmux->have_muxed_something = TRUE; + if (!splitmux->video_ctx->in_eos) splitmux->max_out_running_time = splitmux->video_ctx->in_running_time; else @@ -872,7 +881,7 @@ check_queue_length (GstSplitMuxSink * splitmux, MqStreamCtx * ctx) splitmux->queued_gops <= 1) { allow_grow = TRUE; } else if (splitmux->state == SPLITMUX_STATE_COLLECTING_GOP_START && - ctx->is_video) { + ctx->is_video && splitmux->queued_gops <= 1) { allow_grow = TRUE; } diff --git a/gst/multifile/gstsplitmuxsink.h b/gst/multifile/gstsplitmuxsink.h index f3837673374697c85da88b1801ab8fcf4fa92fdf..a305ed4e04eda5c2edf4cb6b26faf005e91fabdf 100644 --- a/gst/multifile/gstsplitmuxsink.h +++ b/gst/multifile/gstsplitmuxsink.h @@ -118,6 +118,7 @@ struct _GstSplitMuxSink { GstClockTime muxed_out_time; gsize muxed_out_bytes; + gboolean have_muxed_something; GstClockTime mux_start_time; gsize mux_start_bytes; diff --git a/gst/multifile/gstsplitmuxsrc.c b/gst/multifile/gstsplitmuxsrc.c index 9e310c1092af9405bedfbe97b6f9d46c709695b2..b827f4362ca9aa235d3608e2d426851fb34b8605 100644 --- a/gst/multifile/gstsplitmuxsrc.c +++ b/gst/multifile/gstsplitmuxsrc.c @@ -518,9 +518,17 @@ gst_splitmux_pad_loop (GstPad * pad) GstSplitMuxSrc *splitmux = (GstSplitMuxSrc *) gst_pad_get_parent (pad); GstDataQueueItem *item = NULL; GstSplitMuxPartReader *reader = splitpad->reader; - GstPad *part_pad = splitpad->part_pad; + GstPad *part_pad; GstFlowReturn ret; + GST_OBJECT_LOCK (splitpad); + if (splitpad->part_pad == NULL) { + GST_OBJECT_UNLOCK (splitpad); + return; + } + part_pad = gst_object_ref (splitpad->part_pad); + GST_OBJECT_UNLOCK (splitpad); + GST_LOG_OBJECT (splitpad, "Popping data queue item from %" GST_PTR_FORMAT " pad %" GST_PTR_FORMAT, reader, part_pad); ret = gst_splitmux_part_reader_pop (reader, part_pad, &item); @@ -552,6 +560,7 @@ gst_splitmux_pad_loop (GstPad * pad) } g_slice_free (GstDataQueueItem, item); + gst_object_unref (part_pad); gst_object_unref (splitmux); return; @@ -561,11 +570,12 @@ error: ("Error reading part file %s", GST_STR_NULL (reader->path))); flushing: gst_pad_pause_task (pad); + gst_object_unref (part_pad); gst_object_unref (splitmux); return; } -static void +static gboolean gst_splitmux_src_activate_part (GstSplitMuxSrc * splitmux, guint part) { GList *cur; @@ -573,8 +583,9 @@ gst_splitmux_src_activate_part (GstSplitMuxSrc * splitmux, guint part) GST_DEBUG_OBJECT (splitmux, "Activating part %d", part); splitmux->cur_part = part; - gst_splitmux_part_reader_activate (splitmux->parts[part], - &splitmux->play_segment); + if (!gst_splitmux_part_reader_activate (splitmux->parts[part], + &splitmux->play_segment)) + return FALSE; SPLITMUX_SRC_PADS_LOCK (splitmux); for (cur = g_list_first (splitmux->pads); @@ -582,6 +593,8 @@ gst_splitmux_src_activate_part (GstSplitMuxSrc * splitmux, guint part) SplitMuxSrcPad *splitpad = (SplitMuxSrcPad *) (cur->data); splitpad->cur_part = part; splitpad->reader = splitmux->parts[splitpad->cur_part]; + if (splitpad->part_pad) + gst_object_unref (splitpad->part_pad); splitpad->part_pad = gst_splitmux_part_reader_lookup_pad (splitpad->reader, (GstPad *) (splitpad)); @@ -594,6 +607,8 @@ gst_splitmux_src_activate_part (GstSplitMuxSrc * splitmux, guint part) (GstTaskFunction) gst_splitmux_pad_loop, splitpad, NULL); } SPLITMUX_SRC_PADS_UNLOCK (splitmux); + + return TRUE; } static gboolean @@ -606,6 +621,7 @@ gst_splitmux_src_start (GstSplitMuxSrc * splitmux) gchar **files; GstClockTime next_offset = 0; guint i; + GstClockTime total_duration = 0; GST_DEBUG_OBJECT (splitmux, "Starting"); @@ -622,6 +638,7 @@ gst_splitmux_src_start (GstSplitMuxSrc * splitmux) goto no_files; SPLITMUX_SRC_LOCK (splitmux); + splitmux->pads_complete = FALSE; splitmux->running = TRUE; SPLITMUX_SRC_UNLOCK (splitmux); @@ -649,13 +666,19 @@ gst_splitmux_src_start (GstSplitMuxSrc * splitmux) } /* Extend our total duration to cover this part */ - splitmux->total_duration = + total_duration = next_offset + gst_splitmux_part_reader_get_duration (splitmux->parts[i]); - splitmux->play_segment.duration = splitmux->total_duration; + splitmux->play_segment.duration = total_duration; next_offset = gst_splitmux_part_reader_get_end_offset (splitmux->parts[i]); } + + /* Update total_duration state variable */ + GST_OBJECT_LOCK (splitmux); + splitmux->total_duration = total_duration; + GST_OBJECT_UNLOCK (splitmux); + /* Store how many parts we actually created */ splitmux->num_parts = i; @@ -665,10 +688,10 @@ gst_splitmux_src_start (GstSplitMuxSrc * splitmux) /* All done preparing, activate the first part */ GST_INFO_OBJECT (splitmux, "All parts prepared. Total duration %" GST_TIME_FORMAT - " Activating first part", GST_TIME_ARGS (splitmux->total_duration)); - gst_splitmux_src_activate_part (splitmux, 0); - - ret = TRUE; + " Activating first part", GST_TIME_ARGS (total_duration)); + ret = gst_splitmux_src_activate_part (splitmux, 0); + if (ret == FALSE) + goto failed_first_part; done: if (err != NULL) g_error_free (err); @@ -692,6 +715,12 @@ failed_part: ("Failed to open any files for reading")); goto done; } +failed_first_part: + { + GST_ELEMENT_ERROR (splitmux, RESOURCE, OPEN_READ, (NULL), + ("Failed to activate first part for playback")); + goto done; + } } static gboolean @@ -699,7 +728,7 @@ gst_splitmux_src_stop (GstSplitMuxSrc * splitmux) { gboolean ret = TRUE; guint i; - GList *cur; + GList *cur, *pads_list; SPLITMUX_SRC_LOCK (splitmux); if (!splitmux->running) @@ -717,12 +746,16 @@ gst_splitmux_src_stop (GstSplitMuxSrc * splitmux) } SPLITMUX_SRC_PADS_LOCK (splitmux); - for (cur = g_list_first (splitmux->pads); - cur != NULL; cur = g_list_next (cur)) { + pads_list = splitmux->pads; + splitmux->pads = NULL; + SPLITMUX_SRC_PADS_UNLOCK (splitmux); + + for (cur = g_list_first (pads_list); cur != NULL; cur = g_list_next (cur)) { SplitMuxSrcPad *tmp = (SplitMuxSrcPad *) (cur->data); gst_pad_stop_task (GST_PAD (tmp)); + gst_element_remove_pad (GST_ELEMENT (splitmux), GST_PAD (tmp)); } - SPLITMUX_SRC_PADS_UNLOCK (splitmux); + g_list_free (pads_list); g_free (splitmux->parts); splitmux->parts = NULL; @@ -791,6 +824,7 @@ gst_splitmux_part_prepared (GstSplitMuxPartReader * reader, { gboolean need_no_more_pads; + GST_LOG_OBJECT (splitmux, "Part %" GST_PTR_FORMAT " prepared", reader); SPLITMUX_SRC_LOCK (splitmux); need_no_more_pads = !splitmux->pads_complete; splitmux->pads_complete = TRUE; @@ -883,6 +917,8 @@ gst_splitmux_end_of_part (GstSplitMuxSrc * splitmux, SplitMuxSrcPad * splitpad) " moving to part %d", splitpad, next_part); splitpad->cur_part = next_part; splitpad->reader = splitmux->parts[splitpad->cur_part]; + if (splitpad->part_pad) + gst_object_unref (splitpad->part_pad); splitpad->part_pad = gst_splitmux_part_reader_lookup_pad (splitpad->reader, (GstPad *) (splitpad)); @@ -901,13 +937,19 @@ gst_splitmux_end_of_part (GstSplitMuxSrc * splitmux, SplitMuxSrcPad * splitpad) GST_DEBUG_OBJECT (splitpad, "First pad to change part. Activating part %d with seg %" GST_SEGMENT_FORMAT, next_part, &tmp); - gst_splitmux_part_reader_activate (splitpad->reader, &tmp); + if (!gst_splitmux_part_reader_activate (splitpad->reader, &tmp)) + goto error; } res = TRUE; } SPLITMUX_SRC_UNLOCK (splitmux); return res; +error: + SPLITMUX_SRC_UNLOCK (splitmux); + GST_ELEMENT_ERROR (splitmux, RESOURCE, READ, (NULL), + ("Failed to activate part %d", splitmux->cur_part)); + return FALSE; } G_DEFINE_TYPE (SplitMuxSrcPad, splitmux_src_pad, GST_TYPE_PAD); @@ -923,12 +965,28 @@ splitmux_src_pad_constructed (GObject * pad) G_OBJECT_CLASS (splitmux_src_pad_parent_class)->constructed (pad); } +static void +gst_splitmux_src_pad_dispose (GObject * object) +{ + SplitMuxSrcPad *pad = (SplitMuxSrcPad *) (object); + + GST_OBJECT_LOCK (pad); + if (pad->part_pad) { + gst_object_unref (pad->part_pad); + pad->part_pad = NULL; + } + GST_OBJECT_UNLOCK (pad); + + G_OBJECT_CLASS (splitmux_src_pad_parent_class)->dispose (object); +} + static void splitmux_src_pad_class_init (SplitMuxSrcPadClass * klass) { GObjectClass *gobject_klass = (GObjectClass *) (klass); gobject_klass->constructed = splitmux_src_pad_constructed; + gobject_klass->dispose = gst_splitmux_src_pad_dispose; } static void @@ -1048,9 +1106,7 @@ splitmux_src_pad_event (GstPad * pad, GstObject * parent, GstEvent * event) GST_TIME_FORMAT, GST_TIME_ARGS (position), i, GST_TIME_ARGS (position - part_start)); - gst_splitmux_src_activate_part (splitmux, i); - - ret = TRUE; + ret = gst_splitmux_src_activate_part (splitmux, i); SPLITMUX_SRC_UNLOCK (splitmux); } default: @@ -1094,13 +1150,13 @@ splitmux_src_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) if (fmt != GST_FORMAT_TIME) break; - SPLITMUX_SRC_LOCK (splitmux); + GST_OBJECT_LOCK (splitmux); if (splitmux->total_duration > 0) { gst_query_set_duration (query, GST_FORMAT_TIME, splitmux->total_duration); ret = TRUE; } - SPLITMUX_SRC_UNLOCK (splitmux); + GST_OBJECT_UNLOCK (splitmux); break; } case GST_QUERY_SEEKING:{ @@ -1110,11 +1166,11 @@ splitmux_src_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) if (format != GST_FORMAT_TIME) break; - SPLITMUX_SRC_LOCK (splitmux); + GST_OBJECT_LOCK (splitmux); gst_query_set_seeking (query, GST_FORMAT_TIME, TRUE, 0, splitmux->total_duration); ret = TRUE; - SPLITMUX_SRC_UNLOCK (splitmux); + GST_OBJECT_UNLOCK (splitmux); break; } diff --git a/gst/rtp/gstasteriskh263.c b/gst/rtp/gstasteriskh263.c index 0deb6563f98be475dde6f605753d8ebaee1c328d..0ab609dc0870537680fec40095d29bf5e0538d97 100644 --- a/gst/rtp/gstasteriskh263.c +++ b/gst/rtp/gstasteriskh263.c @@ -169,7 +169,7 @@ gst_asteriskh263_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) gst_buffer_unmap (outbuf, &map); - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_PTS (outbuf) = timestamp; if (!gst_pad_has_current_caps (asteriskh263->srcpad)) { GstCaps *caps; diff --git a/gst/rtp/gstrtpac3pay.c b/gst/rtp/gstrtpac3pay.c index e283afd0d81dfe31820d56fe85d7dc281e7bda4d..c63d734a266c9bbe6aed6475c2cb6bbcff5ccf1c 100644 --- a/gst/rtp/gstrtpac3pay.c +++ b/gst/rtp/gstrtpac3pay.c @@ -322,7 +322,7 @@ gst_rtp_ac3_pay_flush (GstRtpAC3Pay * rtpac3pay) gst_rtp_buffer_set_marker (&rtp, TRUE); gst_rtp_buffer_unmap (&rtp); - GST_BUFFER_TIMESTAMP (outbuf) = rtpac3pay->first_ts; + GST_BUFFER_PTS (outbuf) = rtpac3pay->first_ts; GST_BUFFER_DURATION (outbuf) = rtpac3pay->duration; ret = gst_rtp_base_payload_push (GST_RTP_BASE_PAYLOAD (rtpac3pay), outbuf); @@ -347,7 +347,7 @@ gst_rtp_ac3_pay_handle_buffer (GstRTPBasePayload * basepayload, gst_buffer_map (buffer, &map, GST_MAP_READ); duration = GST_BUFFER_DURATION (buffer); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); if (GST_BUFFER_IS_DISCONT (buffer)) { GST_DEBUG_OBJECT (rtpac3pay, "DISCONT"); diff --git a/gst/rtp/gstrtpamrpay.c b/gst/rtp/gstrtpamrpay.c index ead9f94042ed31971097c23d3d50a1aeee6e4037..0f56c4cd89394f40b1064a9e7c5e77a4c990d144 100644 --- a/gst/rtp/gstrtpamrpay.c +++ b/gst/rtp/gstrtpamrpay.c @@ -259,7 +259,7 @@ gst_rtp_amr_pay_handle_buffer (GstRTPBasePayload * basepayload, gst_buffer_map (buffer, &map, GST_MAP_READ); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); duration = GST_BUFFER_DURATION (buffer); /* setup frame size pointer */ @@ -315,7 +315,7 @@ gst_rtp_amr_pay_handle_buffer (GstRTPBasePayload * basepayload, gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); /* copy timestamp */ - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_PTS (outbuf) = timestamp; if (duration != GST_CLOCK_TIME_NONE) GST_BUFFER_DURATION (outbuf) = duration; diff --git a/gst/rtp/gstrtpceltdepay.c b/gst/rtp/gstrtpceltdepay.c index 5e15cc6fa8cc4c5c585500a47f9e0dd652581444..bb6e42c0090d1b45c3471344e6fb209fcfbd7f18 100644 --- a/gst/rtp/gstrtpceltdepay.c +++ b/gst/rtp/gstrtpceltdepay.c @@ -210,7 +210,7 @@ gst_rtp_celt_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) frame_size = rtpceltdepay->frame_size; framesize_ns = gst_util_uint64_scale_int (frame_size, GST_SECOND, clock_rate); - timestamp = GST_BUFFER_TIMESTAMP (buf); + timestamp = GST_BUFFER_PTS (buf); gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp); @@ -253,12 +253,12 @@ gst_rtp_celt_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) offset += size; if (frame_size != -1 && clock_rate != -1) { - GST_BUFFER_TIMESTAMP (outbuf) = timestamp + framesize_ns * n; + GST_BUFFER_PTS (outbuf) = timestamp + framesize_ns * n; GST_BUFFER_DURATION (outbuf) = framesize_ns; } GST_LOG_OBJECT (depayload, "push timestamp=%" GST_TIME_FORMAT ", duration=%" GST_TIME_FORMAT, - GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)), + GST_TIME_ARGS (GST_BUFFER_PTS (outbuf)), GST_TIME_ARGS (GST_BUFFER_DURATION (outbuf))); gst_rtp_base_depayload_push (depayload, outbuf); diff --git a/gst/rtp/gstrtpceltpay.c b/gst/rtp/gstrtpceltpay.c index 3aabd9fea355dca77b9afb05a50bf51ef8d2a257..3e701d75fc61b5cd37de71d8b5d92b2fb189a7d4 100644 --- a/gst/rtp/gstrtpceltpay.c +++ b/gst/rtp/gstrtpceltpay.c @@ -334,8 +334,8 @@ gst_rtp_celt_pay_flush_queued (GstRtpCELTPay * rtpceltpay) guint size; /* copy first timestamp to output */ - if (GST_BUFFER_TIMESTAMP (outbuf) == -1) - GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf); + if (GST_BUFFER_PTS (outbuf) == -1) + GST_BUFFER_PTS (outbuf) = GST_BUFFER_PTS (buf); /* write the size to the header */ size = gst_buffer_get_size (buf); diff --git a/gst/rtp/gstrtpdvpay.c b/gst/rtp/gstrtpdvpay.c index db75cf65936f8767824000bb5a3b7b01de325e73..ef93bc1d25e34ded09ff0d663cf9b018c5590e75 100644 --- a/gst/rtp/gstrtpdvpay.c +++ b/gst/rtp/gstrtpdvpay.c @@ -313,7 +313,7 @@ gst_rtp_dv_pay_handle_buffer (GstRTPBasePayload * basepayload, "DV RTP payloader got buffer of %" G_GSIZE_FORMAT " bytes, splitting in %u byte " "payload fragments, at time %" GST_TIME_FORMAT, size, max_payload_size, - GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer))); + GST_TIME_ARGS (GST_BUFFER_PTS (buffer))); if (!rtpdvpay->negotiated) { gst_dv_pay_negotiate (rtpdvpay, data, size); @@ -330,7 +330,7 @@ gst_rtp_dv_pay_handle_buffer (GstRTPBasePayload * basepayload, /* Allocate a new buffer, set the timestamp */ if (outbuf == NULL) { outbuf = gst_rtp_buffer_new_allocate (max_payload_size, 0, 0); - GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buffer); + GST_BUFFER_PTS (outbuf) = GST_BUFFER_PTS (buffer); if (!gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp)) { gst_buffer_unref (outbuf); diff --git a/gst/rtp/gstrtpg723pay.c b/gst/rtp/gstrtpg723pay.c index 4a10b3bc2d1e5be41201a8a541c1b792586e8922..e791fc4006dc9f17880e80448c6a1779d5bbe8fb 100644 --- a/gst/rtp/gstrtpg723pay.c +++ b/gst/rtp/gstrtpg723pay.c @@ -159,7 +159,7 @@ gst_rtp_g723_pay_flush (GstRTPG723Pay * pay) gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); payload = gst_rtp_buffer_get_payload (&rtp); - GST_BUFFER_TIMESTAMP (outbuf) = pay->timestamp; + GST_BUFFER_PTS (outbuf) = pay->timestamp; GST_BUFFER_DURATION (outbuf) = pay->duration; /* copy G723 data as payload */ @@ -204,7 +204,7 @@ gst_rtp_g723_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buf) pay = GST_RTP_G723_PAY (payload); gst_buffer_map (buf, &map, GST_MAP_READ); - timestamp = GST_BUFFER_TIMESTAMP (buf); + timestamp = GST_BUFFER_PTS (buf); if (GST_BUFFER_IS_DISCONT (buf)) { /* flush everything on discont */ diff --git a/gst/rtp/gstrtpg729pay.c b/gst/rtp/gstrtpg729pay.c index 306e17571ad36d9305a0bba0520d1214dfb44043..e899d42f4aa69c7ccf4e344e6bc05134a420ba4e 100644 --- a/gst/rtp/gstrtpg729pay.c +++ b/gst/rtp/gstrtpg729pay.c @@ -185,7 +185,7 @@ gst_rtp_g729_pay_push (GstRTPG729Pay * rtpg729pay, frames = (payload_len / G729_FRAME_SIZE) + ((payload_len % G729_FRAME_SIZE) >> 1); duration = frames * G729_FRAME_DURATION; - GST_BUFFER_TIMESTAMP (outbuf) = rtpg729pay->next_ts; + GST_BUFFER_PTS (outbuf) = rtpg729pay->next_ts; GST_BUFFER_DURATION (outbuf) = duration; GST_BUFFER_OFFSET (outbuf) = rtpg729pay->next_rtp_time; rtpg729pay->next_ts += duration; @@ -314,7 +314,7 @@ gst_rtp_g729_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buf) adapter = rtpg729pay->adapter; available = gst_adapter_available (adapter); - timestamp = GST_BUFFER_TIMESTAMP (buf); + timestamp = GST_BUFFER_PTS (buf); /* resync rtp time on discont or a discontinuous cn packet */ if (GST_BUFFER_IS_DISCONT (buf)) { diff --git a/gst/rtp/gstrtpgsmpay.c b/gst/rtp/gstrtpgsmpay.c index b6964c598d366ae71dcf709bace6e4ac5fc07172..41f9b1361f8fd87383f7d938ea25362cbd158881 100644 --- a/gst/rtp/gstrtpgsmpay.c +++ b/gst/rtp/gstrtpgsmpay.c @@ -137,7 +137,7 @@ gst_rtp_gsm_pay_handle_buffer (GstRTPBasePayload * basepayload, gst_buffer_map (buffer, &map, GST_MAP_READ); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); duration = GST_BUFFER_DURATION (buffer); /* FIXME, only one GSM frame per RTP packet for now */ @@ -150,7 +150,7 @@ gst_rtp_gsm_pay_handle_buffer (GstRTPBasePayload * basepayload, outbuf = gst_rtp_buffer_new_allocate (payload_len, 0, 0); /* copy timestamp and duration */ - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_PTS (outbuf) = timestamp; GST_BUFFER_DURATION (outbuf) = duration; /* get payload */ diff --git a/gst/rtp/gstrtpgstpay.c b/gst/rtp/gstrtpgstpay.c index 61670088ce5ab0e3c579d64cc2f2d45295f438b1..82669c8eba321b3b4ee4509129fb4b0b7502554f 100644 --- a/gst/rtp/gstrtpgstpay.c +++ b/gst/rtp/gstrtpgstpay.c @@ -338,7 +338,7 @@ gst_rtp_gst_pay_create_from_adapter (GstRtpGSTPay * rtpgstpay, /* create a new group to hold the rtp header and the payload */ gst_buffer_append (outbuf, paybuf); - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_PTS (outbuf) = timestamp; /* and add to list */ gst_buffer_list_insert (list, -1, outbuf); @@ -614,7 +614,7 @@ gst_rtp_gst_pay_handle_buffer (GstRTPBasePayload * basepayload, rtpgstpay = GST_RTP_GST_PAY (basepayload); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); /* check if we need to send the caps and taglist now */ if (rtpgstpay->config_interval > 0) { diff --git a/gst/rtp/gstrtph263pay.c b/gst/rtp/gstrtph263pay.c index 0b7d24ea1837e91a15f91769741241461f03f417..152093a35bf00560bb784881d36c6b41ff163ffc 100644 --- a/gst/rtp/gstrtph263pay.c +++ b/gst/rtp/gstrtph263pay.c @@ -1303,7 +1303,7 @@ gst_rtp_h263_pay_push (GstRtpH263Pay * rtph263pay, /* * timestamp the buffer */ - GST_BUFFER_TIMESTAMP (package->outbuf) = rtph263pay->first_ts; + GST_BUFFER_PTS (package->outbuf) = rtph263pay->first_ts; gst_rtp_buffer_set_marker (&rtp, package->marker); if (package->marker) @@ -1820,7 +1820,7 @@ gst_rtp_h263_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer) GST_DEBUG ("-------------------- NEW FRAME ---------------"); rtph263pay = GST_RTP_H263_PAY (payload); - rtph263pay->first_ts = GST_BUFFER_TIMESTAMP (buffer); + rtph263pay->first_ts = GST_BUFFER_PTS (buffer); /* we always encode and flush a full picture */ gst_adapter_push (rtph263pay->adapter, buffer); diff --git a/gst/rtp/gstrtph263ppay.c b/gst/rtp/gstrtph263ppay.c index 54adb2030fe6528ff1579b937e711f21452d2ead..b342c9ac6fda057daf40d32f85f41bc573bc89fa 100644 --- a/gst/rtp/gstrtph263ppay.c +++ b/gst/rtp/gstrtph263ppay.c @@ -734,7 +734,7 @@ gst_rtp_h263p_pay_flush (GstRtpH263PPay * rtph263ppay) payload[0] = (fragmented && !found_gob) ? 0x00 : 0x04; payload[1] = 0; - GST_BUFFER_TIMESTAMP (outbuf) = rtph263ppay->first_timestamp; + GST_BUFFER_PTS (outbuf) = rtph263ppay->first_timestamp; GST_BUFFER_DURATION (outbuf) = rtph263ppay->first_duration; gst_rtp_buffer_unmap (&rtp); @@ -759,7 +759,7 @@ gst_rtp_h263p_pay_handle_buffer (GstRTPBasePayload * payload, rtph263ppay = GST_RTP_H263P_PAY (payload); - rtph263ppay->first_timestamp = GST_BUFFER_TIMESTAMP (buffer); + rtph263ppay->first_timestamp = GST_BUFFER_PTS (buffer); rtph263ppay->first_duration = GST_BUFFER_DURATION (buffer); /* we always encode and flush a full picture */ diff --git a/gst/rtp/gstrtph264depay.c b/gst/rtp/gstrtph264depay.c index 56b641060753461d6bd1ff3407c3ecfa76ecf3d7..b45a7206a4a02880990e39f16fe089474ab6c9a1 100644 --- a/gst/rtp/gstrtph264depay.c +++ b/gst/rtp/gstrtph264depay.c @@ -770,7 +770,7 @@ gst_rtp_h264_depay_handle_nal (GstRtpH264Depay * rtph264depay, GstBuffer * nal, } outbuf = gst_buffer_make_writable (outbuf); - GST_BUFFER_TIMESTAMP (outbuf) = out_timestamp; + GST_BUFFER_PTS (outbuf) = out_timestamp; if (out_keyframe) GST_BUFFER_FLAG_UNSET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT); @@ -854,7 +854,7 @@ gst_rtp_h264_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) GstClockTime timestamp; gboolean marker; - timestamp = GST_BUFFER_TIMESTAMP (buf); + timestamp = GST_BUFFER_PTS (buf); gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp); diff --git a/gst/rtp/gstrtpj2kpay.c b/gst/rtp/gstrtpj2kpay.c index 98880b29beec689e23257a894107ffec056c8a4e..41b37dd9f2d28b5cbe6aa8d352ec22862f122144 100644 --- a/gst/rtp/gstrtpj2kpay.c +++ b/gst/rtp/gstrtpj2kpay.c @@ -333,7 +333,7 @@ gst_rtp_j2k_pay_handle_buffer (GstRTPBasePayload * basepayload, mtu = GST_RTP_BASE_PAYLOAD_MTU (pay); gst_buffer_map (buffer, &map, GST_MAP_READ); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); offset = pos = end = 0; GST_LOG_OBJECT (pay, @@ -427,7 +427,7 @@ gst_rtp_j2k_pay_handle_buffer (GstRTPBasePayload * basepayload, /* make buffer for header */ outbuf = gst_rtp_buffer_new_allocate (HEADER_SIZE, 0, 0); - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_PTS (outbuf) = timestamp; gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); diff --git a/gst/rtp/gstrtpjpegpay.c b/gst/rtp/gstrtpjpegpay.c index bf4ed555aefcf1911c5387b84c443e416cd42177..bdca220353b062a2397c74de62d909c5f7234704 100644 --- a/gst/rtp/gstrtpjpegpay.c +++ b/gst/rtp/gstrtpjpegpay.c @@ -689,7 +689,7 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload, gst_buffer_map (buffer, &map, GST_MAP_READ); data = map.data; size = map.size; - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); offset = 0; discont = GST_BUFFER_IS_DISCONT (buffer); @@ -888,7 +888,7 @@ gst_rtp_jpeg_pay_handle_buffer (GstRTPBasePayload * basepayload, /* join memory parts */ outbuf = gst_buffer_append (outbuf, paybuf); - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_PTS (outbuf) = timestamp; if (discont) { GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); diff --git a/gst/rtp/gstrtpmp2tpay.c b/gst/rtp/gstrtpmp2tpay.c index 1c6ec5132397fa57a4f2cf33565414c291e1bd8d..386e09e78eb3530f471cd3bdfecc7b1c8783669b 100644 --- a/gst/rtp/gstrtpmp2tpay.c +++ b/gst/rtp/gstrtpmp2tpay.c @@ -157,7 +157,7 @@ gst_rtp_mp2t_pay_flush (GstRTPMP2TPay * rtpmp2tpay) outbuf = gst_buffer_append (outbuf, paybuf); avail -= payload_len; - GST_BUFFER_TIMESTAMP (outbuf) = rtpmp2tpay->first_ts; + GST_BUFFER_PTS (outbuf) = rtpmp2tpay->first_ts; GST_BUFFER_DURATION (outbuf) = rtpmp2tpay->duration; GST_DEBUG_OBJECT (rtpmp2tpay, "pushing buffer of size %u", @@ -181,7 +181,7 @@ gst_rtp_mp2t_pay_handle_buffer (GstRTPBasePayload * basepayload, rtpmp2tpay = GST_RTP_MP2T_PAY (basepayload); size = gst_buffer_get_size (buffer); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); duration = GST_BUFFER_DURATION (buffer); again: diff --git a/gst/rtp/gstrtpmp4adepay.c b/gst/rtp/gstrtpmp4adepay.c index e70d5b3358771a364bd10709ce06d75ed45e838d..8aa22a0f64b31011d6b9b05f94910807da3c0e2a 100644 --- a/gst/rtp/gstrtpmp4adepay.c +++ b/gst/rtp/gstrtpmp4adepay.c @@ -311,7 +311,7 @@ gst_rtp_mp4a_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) outbuf = gst_rtp_buffer_get_payload_buffer (&rtp); outbuf = gst_buffer_make_writable (outbuf); - GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf); + GST_BUFFER_PTS (outbuf) = GST_BUFFER_PTS (buf); gst_adapter_push (rtpmp4adepay->adapter, outbuf); /* RTP marker bit indicates the last packet of the AudioMuxElement => create @@ -372,7 +372,7 @@ gst_rtp_mp4a_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) data += skip; avail -= skip; - GST_BUFFER_TIMESTAMP (tmp) = timestamp; + GST_BUFFER_PTS (tmp) = timestamp; gst_rtp_base_depayload_push (depayload, tmp); /* shift ts for next buffers */ diff --git a/gst/rtp/gstrtpmp4apay.c b/gst/rtp/gstrtpmp4apay.c index 17a80a81abf47b807c1fcc8bd526e92449acd41e..162d088c78705690b290b7f602e68889eb7cc4a3 100644 --- a/gst/rtp/gstrtpmp4apay.c +++ b/gst/rtp/gstrtpmp4apay.c @@ -366,7 +366,7 @@ gst_rtp_mp4a_pay_handle_buffer (GstRTPBasePayload * basepayload, size = map.size; data = map.data; - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); fragmented = FALSE; mtu = GST_RTP_BASE_PAYLOAD_MTU (rtpmp4apay); @@ -431,7 +431,7 @@ gst_rtp_mp4a_pay_handle_buffer (GstRTPBasePayload * basepayload, gst_rtp_buffer_unmap (&rtp); /* copy incomming timestamp (if any) to outgoing buffers */ - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_PTS (outbuf) = timestamp; ret = gst_rtp_base_payload_push (GST_RTP_BASE_PAYLOAD (rtpmp4apay), outbuf); diff --git a/gst/rtp/gstrtpmp4gdepay.c b/gst/rtp/gstrtpmp4gdepay.c index db472daa580330d8b9036c1e58a64cbb58866d76..3819c8a04ba9bd5b63414b89ec5c38ba00f8bc33 100644 --- a/gst/rtp/gstrtpmp4gdepay.c +++ b/gst/rtp/gstrtpmp4gdepay.c @@ -433,7 +433,7 @@ gst_rtp_mp4g_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) gst_adapter_clear (rtpmp4gdepay->adapter); } - timestamp = GST_BUFFER_TIMESTAMP (buf); + timestamp = GST_BUFFER_PTS (buf); { gint payload_len, payload_AU; @@ -663,7 +663,7 @@ gst_rtp_mp4g_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) /* copy some of the fields we calculated above on the buffer. We also * copy the AU_index so that we can sort the packets in our queue. */ - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_PTS (outbuf) = timestamp; GST_BUFFER_OFFSET (outbuf) = AU_index; /* make sure we don't use the timestamp again for other AUs in this diff --git a/gst/rtp/gstrtpmp4gpay.c b/gst/rtp/gstrtpmp4gpay.c index e374e5cd7c7a42bc95840d8b43306aba99e775bd..a9977e388ac6b398c26e1c635ac597cf79515ba7 100644 --- a/gst/rtp/gstrtpmp4gpay.c +++ b/gst/rtp/gstrtpmp4gpay.c @@ -535,7 +535,7 @@ gst_rtp_mp4g_pay_flush (GstRtpMP4GPay * rtpmp4gpay) 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_PTS (outbuf) = rtpmp4gpay->first_timestamp; GST_BUFFER_DURATION (outbuf) = rtpmp4gpay->first_duration; if (rtpmp4gpay->frame_len) { @@ -567,7 +567,7 @@ gst_rtp_mp4g_pay_handle_buffer (GstRTPBasePayload * basepayload, rtpmp4gpay = GST_RTP_MP4G_PAY (basepayload); - rtpmp4gpay->first_timestamp = GST_BUFFER_TIMESTAMP (buffer); + rtpmp4gpay->first_timestamp = GST_BUFFER_PTS (buffer); rtpmp4gpay->first_duration = GST_BUFFER_DURATION (buffer); rtpmp4gpay->discont = GST_BUFFER_IS_DISCONT (buffer); diff --git a/gst/rtp/gstrtpmp4vpay.c b/gst/rtp/gstrtpmp4vpay.c index 1ed1ac54bf8949fa32d94cc2f21e4d25aafb4be2..7d24176296a81b932960dccaa8fc13711ba95d67 100644 --- a/gst/rtp/gstrtpmp4vpay.c +++ b/gst/rtp/gstrtpmp4vpay.c @@ -288,7 +288,7 @@ gst_rtp_mp4v_pay_flush (GstRtpMP4VPay * rtpmp4vpay) outbuf = gst_buffer_append (outbuf, outbuf_data); - GST_BUFFER_TIMESTAMP (outbuf) = rtpmp4vpay->first_timestamp; + GST_BUFFER_PTS (outbuf) = rtpmp4vpay->first_timestamp; /* add to list */ gst_buffer_list_insert (list, -1, outbuf); @@ -434,7 +434,7 @@ gst_rtp_mp4v_pay_handle_buffer (GstRTPBasePayload * basepayload, gst_buffer_map (buffer, &map, GST_MAP_READ); size = map.size; - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); duration = GST_BUFFER_DURATION (buffer); avail = gst_adapter_available (rtpmp4vpay->adapter); @@ -464,7 +464,7 @@ gst_rtp_mp4v_pay_handle_buffer (GstRTPBasePayload * basepayload, /* strip off header */ subbuf = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_MEMORY, strip, size - strip); - GST_BUFFER_TIMESTAMP (subbuf) = timestamp; + GST_BUFFER_PTS (subbuf) = timestamp; gst_buffer_unref (buffer); buffer = subbuf; @@ -513,7 +513,7 @@ gst_rtp_mp4v_pay_handle_buffer (GstRTPBasePayload * basepayload, /* insert header */ buffer = gst_buffer_append (gst_buffer_ref (rtpmp4vpay->config), buffer); - GST_BUFFER_TIMESTAMP (buffer) = timestamp; + GST_BUFFER_PTS (buffer) = timestamp; size = gst_buffer_get_size (buffer); if (timestamp != -1) { diff --git a/gst/rtp/gstrtpmpapay.c b/gst/rtp/gstrtpmpapay.c index 2a7061c2f2903c75b9dc36c64ea78bbe658825f2..41ed1db43e7ad3d2eed636fbab193be03adb0faa 100644 --- a/gst/rtp/gstrtpmpapay.c +++ b/gst/rtp/gstrtpmpapay.c @@ -233,7 +233,7 @@ gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay) 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_PTS (outbuf) = rtpmpapay->first_ts; GST_BUFFER_DURATION (outbuf) = rtpmpapay->duration; ret = gst_rtp_base_payload_push (GST_RTP_BASE_PAYLOAD (rtpmpapay), outbuf); @@ -256,7 +256,7 @@ gst_rtp_mpa_pay_handle_buffer (GstRTPBasePayload * basepayload, size = gst_buffer_get_size (buffer); duration = GST_BUFFER_DURATION (buffer); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); if (GST_BUFFER_IS_DISCONT (buffer)) { GST_DEBUG_OBJECT (rtpmpapay, "DISCONT"); diff --git a/gst/rtp/gstrtpmparobustdepay.c b/gst/rtp/gstrtpmparobustdepay.c index afdd2ba30079d1711e68dea5b32d4cd579932673..3df1c3bd649901aaa9437e007b53d1f578de5cf0 100644 --- a/gst/rtp/gstrtpmparobustdepay.c +++ b/gst/rtp/gstrtpmparobustdepay.c @@ -290,7 +290,7 @@ gst_rtp_mpa_robust_depay_generate_dummy_frame (GstRtpMPARobustDepay * GST_WRITE_UINT32_BE (map.data, dummy->header); gst_buffer_unmap (dummy->buffer, &map); - GST_BUFFER_TIMESTAMP (dummy->buffer) = GST_BUFFER_TIMESTAMP (frame->buffer); + GST_BUFFER_PTS (dummy->buffer) = GST_BUFFER_PTS (frame->buffer); return dummy; } @@ -609,7 +609,7 @@ gst_rtp_mpa_robust_depay_push_mp3_frames (GstRtpMPARobustDepay * rtpmpadepay) flush: buf = gst_byte_writer_free_and_get_buffer (rtpmpadepay->mp3_frame); rtpmpadepay->mp3_frame = NULL; - GST_BUFFER_TIMESTAMP (buf) = GST_BUFFER_TIMESTAMP (head->buffer); + GST_BUFFER_PTS (buf) = GST_BUFFER_PTS (head->buffer); /* no longer need head ADU frame header and side info */ /* NOTE maybe head == current, then size and offset go off a bit, * but current gets reset to NULL, and then also offset and size */ @@ -653,7 +653,7 @@ gst_rtp_mpa_robust_depay_process (GstRTPBaseDepayload * depayload, rtpmpadepay = GST_RTP_MPA_ROBUST_DEPAY (depayload); - timestamp = GST_BUFFER_TIMESTAMP (buf); + timestamp = GST_BUFFER_PTS (buf); gst_rtp_buffer_map (buf, GST_MAP_READ, &rtp); @@ -716,7 +716,7 @@ gst_rtp_mpa_robust_depay_process (GstRTPBaseDepayload * depayload, if (av == size) { timestamp = gst_adapter_prev_pts (rtpmpadepay->adapter, NULL); buf = gst_adapter_take_buffer (rtpmpadepay->adapter, size); - GST_BUFFER_TIMESTAMP (buf) = timestamp; + GST_BUFFER_PTS (buf) = timestamp; gst_rtp_mpa_robust_depay_submit_adu (rtpmpadepay, buf); } else if (av > size) { GST_DEBUG_OBJECT (rtpmpadepay, @@ -730,7 +730,7 @@ gst_rtp_mpa_robust_depay_process (GstRTPBaseDepayload * depayload, /* not continuation, first fragment or whole ADU */ if (payload_len == size) { /* whole ADU */ - GST_BUFFER_TIMESTAMP (buf) = timestamp; + GST_BUFFER_PTS (buf) = timestamp; gst_rtp_mpa_robust_depay_submit_adu (rtpmpadepay, buf); } else if (payload_len < size) { /* first fragment */ diff --git a/gst/rtp/gstrtpmpvpay.c b/gst/rtp/gstrtpmpvpay.c index 0751bcd805401c28ed3ebd7161269ff1b2d4d2c0..75ae678c307b9a3c51267f91c2d43afaa84a3d79 100644 --- a/gst/rtp/gstrtpmpvpay.c +++ b/gst/rtp/gstrtpmpvpay.c @@ -216,7 +216,7 @@ gst_rtp_mpv_pay_flush (GstRTPMPVPay * rtpmpvpay) paybuf = gst_adapter_take_buffer_fast (rtpmpvpay->adapter, payload_len); outbuf = gst_buffer_append (outbuf, paybuf); - GST_BUFFER_TIMESTAMP (outbuf) = rtpmpvpay->first_ts; + GST_BUFFER_PTS (outbuf) = rtpmpvpay->first_ts; ret = gst_rtp_base_payload_push (GST_RTP_BASE_PAYLOAD (rtpmpvpay), outbuf); } @@ -235,7 +235,7 @@ gst_rtp_mpv_pay_handle_buffer (GstRTPBasePayload * basepayload, rtpmpvpay = GST_RTP_MPV_PAY (basepayload); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); duration = GST_BUFFER_DURATION (buffer); if (GST_BUFFER_IS_DISCONT (buffer)) { diff --git a/gst/rtp/gstrtpqcelpdepay.c b/gst/rtp/gstrtpqcelpdepay.c index fc88f4a116a6276a916765c2ba582ea734489ebd..a5f791f4afbb2673f1ef2057fca9ecb30e1404c9 100644 --- a/gst/rtp/gstrtpqcelpdepay.c +++ b/gst/rtp/gstrtpqcelpdepay.c @@ -267,7 +267,7 @@ gst_rtp_qcelp_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) if (payload_len < 2) goto too_small; - timestamp = GST_BUFFER_TIMESTAMP (buf); + timestamp = GST_BUFFER_PTS (buf); payload = gst_rtp_buffer_get_payload (&rtp); @@ -354,7 +354,7 @@ gst_rtp_qcelp_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) outbuf = gst_rtp_buffer_get_payload_subbuffer (&rtp, offset, frame_len); } - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_PTS (outbuf) = timestamp; GST_BUFFER_DURATION (outbuf) = FRAME_DURATION; if (!depay->interleaved || index == 0) { diff --git a/gst/rtp/gstrtpqdmdepay.c b/gst/rtp/gstrtpqdmdepay.c index ba85018eadd864d2b586dcf33c5acf95aa7c1b57..3049f9b9e3733801d73705b5f460b0540ef6dedb 100644 --- a/gst/rtp/gstrtpqdmdepay.c +++ b/gst/rtp/gstrtpqdmdepay.c @@ -251,7 +251,7 @@ gst_rtp_qdm2_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) flush_data (rtpqdm2depay); /* And store new timestamp */ rtpqdm2depay->ptimestamp = rtpqdm2depay->timestamp; - rtpqdm2depay->timestamp = GST_BUFFER_TIMESTAMP (buf); + rtpqdm2depay->timestamp = GST_BUFFER_PTS (buf); /* And that previous data will be pushed at the bottom */ } rtpqdm2depay->nextseq = seq + 1; @@ -273,7 +273,7 @@ gst_rtp_qdm2_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) GST_DEBUG ("Headers"); /* Store the incoming timestamp */ rtpqdm2depay->ptimestamp = rtpqdm2depay->timestamp; - rtpqdm2depay->timestamp = GST_BUFFER_TIMESTAMP (buf); + rtpqdm2depay->timestamp = GST_BUFFER_PTS (buf); /* flush the internal data if needed */ flush_data (rtpqdm2depay); if (G_UNLIKELY (!rtpqdm2depay->configured)) { @@ -356,7 +356,7 @@ gst_rtp_qdm2_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) if (G_UNLIKELY (avail)) { GST_DEBUG ("Pushing out %d bytes of collected data", avail); outbuf = gst_adapter_take_buffer (rtpqdm2depay->adapter, avail); - GST_BUFFER_TIMESTAMP (outbuf) = rtpqdm2depay->ptimestamp; + GST_BUFFER_PTS (outbuf) = rtpqdm2depay->ptimestamp; GST_DEBUG ("Outgoing buffer timestamp %" GST_TIME_FORMAT, GST_TIME_ARGS (rtpqdm2depay->ptimestamp)); } diff --git a/gst/rtp/gstrtpsbcpay.c b/gst/rtp/gstrtpsbcpay.c index 8a8f5cdaf774e6b6f11cd556c5ded19407e41994..7c4d3dab2044371c9cc3777e0da84ff29e363d4d 100644 --- a/gst/rtp/gstrtpsbcpay.c +++ b/gst/rtp/gstrtpsbcpay.c @@ -205,7 +205,7 @@ gst_rtp_sbc_pay_flush_buffers (GstRtpSBCPay * sbcpay) gst_adapter_flush (sbcpay->adapter, payload_length); /* FIXME: what about duration? */ - GST_BUFFER_TIMESTAMP (outbuf) = sbcpay->timestamp; + GST_BUFFER_PTS (outbuf) = sbcpay->timestamp; GST_DEBUG_OBJECT (sbcpay, "Pushing %d bytes", payload_length); return gst_rtp_base_payload_push (GST_RTP_BASE_PAYLOAD (sbcpay), outbuf); @@ -220,7 +220,7 @@ gst_rtp_sbc_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer) /* FIXME check for negotiation */ sbcpay = GST_RTP_SBC_PAY (payload); - sbcpay->timestamp = GST_BUFFER_TIMESTAMP (buffer); + sbcpay->timestamp = GST_BUFFER_PTS (buffer); gst_adapter_push (sbcpay->adapter, buffer); diff --git a/gst/rtp/gstrtpspeexpay.c b/gst/rtp/gstrtpspeexpay.c index 1f838664fa5cb1bb18df004d595ba95e6007c6e1..842389416bfa79162519dc7c4d7a2ca7ecc64e9a 100644 --- a/gst/rtp/gstrtpspeexpay.c +++ b/gst/rtp/gstrtpspeexpay.c @@ -271,7 +271,7 @@ gst_rtp_speex_pay_handle_buffer (GstRTPBasePayload * basepayload, goto done; } - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); duration = GST_BUFFER_DURATION (buffer); /* FIXME, only one SPEEX frame per RTP packet for now */ @@ -282,7 +282,7 @@ gst_rtp_speex_pay_handle_buffer (GstRTPBasePayload * basepayload, g_assert (payload_len <= GST_RTP_BASE_PAYLOAD_MTU (rtpspeexpay)); /* copy timestamp and duration */ - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + GST_BUFFER_PTS (outbuf) = timestamp; GST_BUFFER_DURATION (outbuf) = duration; gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); diff --git a/gst/rtp/gstrtpsv3vdepay.c b/gst/rtp/gstrtpsv3vdepay.c index 7e3bc89918d07899333b10577c862011cf9dc895..aeaa63ea1b9f808ee5525c2cc2b883680ee0cf32 100644 --- a/gst/rtp/gstrtpsv3vdepay.c +++ b/gst/rtp/gstrtpsv3vdepay.c @@ -157,7 +157,7 @@ gst_rtp_sv3v_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) seq = gst_rtp_buffer_get_seq (&rtp); GST_DEBUG ("timestamp %" GST_TIME_FORMAT ", sequence number:%d", - GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)), seq); + GST_TIME_ARGS (GST_BUFFER_PTS (buf)), seq); if (seq != rtpsv3vdepay->nextseq) { GST_DEBUG ("Sequence discontinuity, clearing adapter"); diff --git a/gst/rtp/gstrtptheorapay.c b/gst/rtp/gstrtptheorapay.c index 10055c0f4e7f60353eabecadef72b81470a59ef6..dc8ae8e75421d64e9fe635b9abf12ec1f94bcddc 100644 --- a/gst/rtp/gstrtptheorapay.c +++ b/gst/rtp/gstrtptheorapay.c @@ -285,7 +285,7 @@ gst_rtp_theora_pay_init_packet (GstRtpTheoraPay * rtptheorapay, guint8 TDT, (rtptheorapay), 0, 0); gst_rtp_theora_pay_reset_packet (rtptheorapay, TDT); - GST_BUFFER_TIMESTAMP (rtptheorapay->packet) = timestamp; + GST_BUFFER_PTS (rtptheorapay->packet) = timestamp; } static GstFlowReturn @@ -731,7 +731,7 @@ gst_rtp_theora_pay_handle_buffer (GstRTPBasePayload * basepayload, data = map.data; size = map.size; duration = GST_BUFFER_DURATION (buffer); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); GST_DEBUG_OBJECT (rtptheorapay, "size %" G_GSIZE_FORMAT ", duration %" GST_TIME_FORMAT, size, GST_TIME_ARGS (duration)); diff --git a/gst/rtp/gstrtpvorbispay.c b/gst/rtp/gstrtpvorbispay.c index a89b3a691170f08ab63f921ba30be017b9c15ce4..de03f203078c24f60e516e32cb426a9969dc2d3e 100644 --- a/gst/rtp/gstrtpvorbispay.c +++ b/gst/rtp/gstrtpvorbispay.c @@ -280,7 +280,7 @@ gst_rtp_vorbis_pay_init_packet (GstRtpVorbisPay * rtpvorbispay, guint8 VDT, (rtpvorbispay), 0, 0); gst_rtp_vorbis_pay_reset_packet (rtpvorbispay, VDT); - GST_BUFFER_TIMESTAMP (rtpvorbispay->packet) = timestamp; + GST_BUFFER_PTS (rtpvorbispay->packet) = timestamp; } static GstFlowReturn @@ -724,7 +724,7 @@ gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload, data = map.data; size = map.size; duration = GST_BUFFER_DURATION (buffer); - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); GST_LOG_OBJECT (rtpvorbispay, "size %" G_GSIZE_FORMAT ", duration %" GST_TIME_FORMAT, size, GST_TIME_ARGS (duration)); diff --git a/gst/rtp/gstrtpvp8pay.c b/gst/rtp/gstrtpvp8pay.c index 133c2fd82a9ed77091dd57ae8e090e1361f1ef96..d611520cdef405834c78bca75523661175e15736 100644 --- a/gst/rtp/gstrtpvp8pay.c +++ b/gst/rtp/gstrtpvp8pay.c @@ -350,13 +350,12 @@ 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; + for (i = 1; i < self->n_partitions; i++) { + if (offset < self->partition_offset[i]) + return i - 1; } - return i; + return i - 1; } static gsize diff --git a/gst/rtp/gstrtpvrawdepay.c b/gst/rtp/gstrtpvrawdepay.c index ee106c59591aa6fc81cc93ccb6fed50dc2339c01..8533b269e9010d443c74563f635a1f569e78bcae 100644 --- a/gst/rtp/gstrtpvrawdepay.c +++ b/gst/rtp/gstrtpvrawdepay.c @@ -364,7 +364,7 @@ gst_rtp_vraw_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) goto alloc_failed; /* clear timestamp from alloc... */ - GST_BUFFER_TIMESTAMP (new_buffer) = -1; + GST_BUFFER_PTS (new_buffer) = -1; if (!gst_video_frame_map (&rtpvrawdepay->frame, &rtpvrawdepay->vinfo, new_buffer, GST_MAP_WRITE | GST_VIDEO_FRAME_MAP_FLAG_NO_REF)) { diff --git a/gst/rtp/gstrtpvrawpay.c b/gst/rtp/gstrtpvrawpay.c index c03c8d2fd1bc8e04c21915f9c3a29cd91dfb641a..0592fc08fc711ae62b7c73311b834b1869b41b0f 100644 --- a/gst/rtp/gstrtpvrawpay.c +++ b/gst/rtp/gstrtpvrawpay.c @@ -346,9 +346,9 @@ gst_rtp_vraw_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer) out = gst_rtp_buffer_new_allocate (left, 0, 0); if (field == 0) { - GST_BUFFER_TIMESTAMP (out) = GST_BUFFER_TIMESTAMP (buffer); + GST_BUFFER_PTS (out) = GST_BUFFER_PTS (buffer); } else { - GST_BUFFER_TIMESTAMP (out) = GST_BUFFER_TIMESTAMP (buffer) + + GST_BUFFER_PTS (out) = GST_BUFFER_PTS (buffer) + GST_BUFFER_DURATION (buffer) / 2; } diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c index fcb8a4b2e32c27a0b92caee619560527aaccdf33..73f8dc5e28bb6b161bad6230ff4ec5a72746cb8d 100644 --- a/gst/rtpmanager/gstrtpbin.c +++ b/gst/rtpmanager/gstrtpbin.c @@ -235,8 +235,8 @@ struct _GstRtpBinPrivate gboolean autoremove; - /* UNIX (ntp) time of last SR sync used */ - guint64 last_unix; + /* NTP time in ns of last SR sync used */ + guint64 last_ntpnstime; /* list of extra elements */ GList *elements; @@ -288,7 +288,8 @@ enum #define DEFAULT_RTCP_SYNC_INTERVAL 0 #define DEFAULT_DO_SYNC_EVENT FALSE #define DEFAULT_DO_RETRANSMISSION FALSE -#define DEFAULT_RTP_PROFILE GST_RTP_PROFILE_AVPF +#define DEFAULT_RTP_PROFILE GST_RTP_PROFILE_AVP +#define DEFAULT_NTP_TIME_SOURCE GST_RTP_NTP_TIME_SOURCE_NTP enum { @@ -306,7 +307,8 @@ enum PROP_USE_PIPELINE_CLOCK, PROP_DO_SYNC_EVENT, PROP_DO_RETRANSMISSION, - PROP_RTP_PROFILE + PROP_RTP_PROFILE, + PROP_NTP_TIME_SOURCE }; #define GST_RTP_BIN_RTCP_SYNC_TYPE (gst_rtp_bin_rtcp_sync_get_type()) @@ -622,8 +624,13 @@ create_session (GstRtpBin * rtpbin, gint id) /* configure SDES items */ GST_OBJECT_LOCK (rtpbin); - g_object_set (session, "sdes", rtpbin->sdes, "use-pipeline-clock", - rtpbin->use_pipeline_clock, "rtp-profile", rtpbin->rtp_profile, NULL); + g_object_set (session, "sdes", rtpbin->sdes, "rtp-profile", + rtpbin->rtp_profile, NULL); + if (rtpbin->use_pipeline_clock) + g_object_set (session, "use-pipeline-clock", rtpbin->use_pipeline_clock, + NULL); + else + g_object_set (session, "ntp-time-source", rtpbin->ntp_time_source, NULL); GST_OBJECT_UNLOCK (rtpbin); /* provide clock_rate to the session manager when needed */ @@ -1004,24 +1011,41 @@ get_current_times (GstRtpBin * bin, GstClockTime * running_time, gst_object_ref (clock); GST_OBJECT_UNLOCK (bin); + /* get current clock time and convert to running time */ clock_time = gst_clock_get_time (clock); + rt = clock_time - base_time; if (bin->use_pipeline_clock) { - ntpns = clock_time - base_time; + ntpns = rt; + /* add constant to convert from 1970 based time to 1900 based time */ + ntpns += (2208988800LL * GST_SECOND); } else { - GTimeVal current; - - /* get current NTP time */ - g_get_current_time (¤t); - ntpns = GST_TIMEVAL_TO_TIME (current); + switch (bin->ntp_time_source) { + case GST_RTP_NTP_TIME_SOURCE_NTP: + case GST_RTP_NTP_TIME_SOURCE_UNIX:{ + GTimeVal current; + + /* get current NTP time */ + g_get_current_time (¤t); + ntpns = GST_TIMEVAL_TO_TIME (current); + + /* add constant to convert from 1970 based time to 1900 based time */ + if (bin->ntp_time_source == GST_RTP_NTP_TIME_SOURCE_NTP) + ntpns += (2208988800LL * GST_SECOND); + break; + } + case GST_RTP_NTP_TIME_SOURCE_RUNNING_TIME: + ntpns = rt; + break; + case GST_RTP_NTP_TIME_SOURCE_CLOCK_TIME: + ntpns = clock_time; + break; + default: + g_assert_not_reached (); + break; + } } - /* 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 (bin); @@ -1102,12 +1126,8 @@ gst_rtp_bin_associate (GstRtpBin * bin, GstRtpBinStream * stream, guint8 len, GstRtpBinClient *client; gboolean created; GSList *walk; - guint64 local_rt; - guint64 local_rtp; - GstClockTime running_time; + GstClockTime running_time, running_time_rtp; guint64 ntpnstime; - gint64 ntpdiff, rtdiff; - guint64 last_unix; /* first find or create the CNAME */ client = get_client (bin, len, data, &created); @@ -1149,51 +1169,56 @@ gst_rtp_bin_associate (GstRtpBin * bin, GstRtpBinStream * stream, guint8 len, * local rtptime. The local rtp time is used to construct timestamps on the * buffers so we will calculate what running_time corresponds to the RTP * timestamp in the SR packet. */ - local_rtp = last_extrtptime - base_rtptime; + running_time_rtp = last_extrtptime - base_rtptime; GST_DEBUG_OBJECT (bin, "base %" G_GUINT64_FORMAT ", extrtptime %" G_GUINT64_FORMAT ", local RTP %" G_GUINT64_FORMAT ", clock-rate %d, " "clock-base %" G_GINT64_FORMAT, base_rtptime, - last_extrtptime, local_rtp, clock_rate, rtp_clock_base); + last_extrtptime, running_time_rtp, clock_rate, rtp_clock_base); /* calculate local RTP time in gstreamer timestamp, we essentially perform the * same conversion that a jitterbuffer would use to convert an rtp timestamp * into a corresponding gstreamer timestamp. Note that the base_time also * contains the drift between sender and receiver. */ - local_rt = gst_util_uint64_scale_int (local_rtp, GST_SECOND, clock_rate); - local_rt += base_time; + running_time = + gst_util_uint64_scale_int (running_time_rtp, GST_SECOND, clock_rate); + running_time += base_time; - /* convert ntptime to unix time since 1900 */ - last_unix = gst_util_uint64_scale (ntptime, GST_SECOND, + /* convert ntptime to nanoseconds */ + ntpnstime = gst_util_uint64_scale (ntptime, GST_SECOND, (G_GINT64_CONSTANT (1) << 32)); stream->have_sync = TRUE; GST_DEBUG_OBJECT (bin, - "local UNIX %" G_GUINT64_FORMAT ", remote UNIX %" G_GUINT64_FORMAT, - local_rt, last_unix); + "SR RTP running time %" G_GUINT64_FORMAT ", SR NTP %" G_GUINT64_FORMAT, + running_time, ntpnstime); /* recalc inter stream playout offset, but only if there is more than one * stream or we're doing NTP sync. */ if (bin->ntp_sync) { + gint64 ntpdiff, rtdiff; + guint64 local_ntpnstime; + GstClockTime local_running_time; + /* For NTP sync we need to first get a snapshot of running_time and NTP * time. We know at what running_time we play a certain RTP time, we also * calculated when we would play the RTP time in the SR packet. Now we need * to know how the running_time and the NTP time relate to eachother. */ - get_current_times (bin, &running_time, &ntpnstime); + get_current_times (bin, &local_running_time, &local_ntpnstime); /* see how far away the NTP time is. This is the difference between the * current NTP time and the NTP time in the last SR packet. */ - ntpdiff = ntpnstime - last_unix; + ntpdiff = local_ntpnstime - ntpnstime; /* see how far away the running_time is. This is the difference between the * current running_time and the running_time of the RTP timestamp in the * last SR packet. */ - rtdiff = running_time - local_rt; + rtdiff = local_running_time - running_time; GST_DEBUG_OBJECT (bin, - "NTP time %" G_GUINT64_FORMAT ", last unix %" G_GUINT64_FORMAT, - ntpnstime, last_unix); + "local NTP time %" G_GUINT64_FORMAT ", SR NTP time %" G_GUINT64_FORMAT, + local_ntpnstime, ntpnstime); GST_DEBUG_OBJECT (bin, "NTP diff %" G_GINT64_FORMAT ", RT diff %" G_GINT64_FORMAT, ntpdiff, rtdiff); @@ -1207,12 +1232,12 @@ gst_rtp_bin_associate (GstRtpBin * bin, GstRtpBinStream * stream, guint8 len, gboolean all_sync, use_rtp; gboolean rtcp_sync = g_atomic_int_get (&bin->rtcp_sync); - /* calculate delta between server and receiver. last_unix is created by + /* calculate delta between server and receiver. ntpnstime is created by * converting the ntptime in the last SR packet to a gstreamer timestamp. This * delta expresses the difference to our timeline and the server timeline. The * difference in itself doesn't mean much but we can combine the delta of * multiple streams to create a stream specific offset. */ - stream->rt_delta = last_unix - local_rt; + stream->rt_delta = ntpnstime - running_time; /* calculate the min of all deltas, ignoring streams that did not yet have a * valid rt_delta because we did not yet receive an SR packet for those @@ -1326,14 +1351,14 @@ gst_rtp_bin_associate (GstRtpBin * bin, GstRtpBinStream * stream, guint8 len, } /* bail out if we adjusted recently enough */ - if (all_sync && (last_unix - bin->priv->last_unix) < + if (all_sync && (ntpnstime - bin->priv->last_ntpnstime) < bin->rtcp_sync_interval * GST_MSECOND) { GST_DEBUG_OBJECT (bin, "discarding RTCP sender packet for sync; " "previous sender info too recent " - "(previous UNIX %" G_GUINT64_FORMAT ")", bin->priv->last_unix); + "(previous NTP %" G_GUINT64_FORMAT ")", bin->priv->last_ntpnstime); return; } - bin->priv->last_unix = last_unix; + bin->priv->last_ntpnstime = ntpnstime; /* calculate offsets for each stream */ for (walk = client->streams; walk; walk = g_slist_next (walk)) { @@ -2060,9 +2085,10 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) 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", + "Use the pipeline running-time to set the NTP time in the RTCP SR messages " + "(DEPRECATED: Use ntp-source property)", DEFAULT_USE_PIPELINE_CLOCK, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_DEPRECATED)); /** * GstRtpBin:buffer-mode: * @@ -2139,6 +2165,12 @@ gst_rtp_bin_class_init (GstRtpBinClass * klass) GST_TYPE_RTP_PROFILE, DEFAULT_RTP_PROFILE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_NTP_TIME_SOURCE, + g_param_spec_enum ("ntp-time-source", "NTP Time Source", + "NTP time source for RTCP packets", + gst_rtp_ntp_time_source_get_type (), DEFAULT_NTP_TIME_SOURCE, + 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); @@ -2202,6 +2234,7 @@ gst_rtp_bin_init (GstRtpBin * rtpbin) rtpbin->send_sync_event = DEFAULT_DO_SYNC_EVENT; rtpbin->do_retransmission = DEFAULT_DO_RETRANSMISSION; rtpbin->rtp_profile = DEFAULT_RTP_PROFILE; + rtpbin->ntp_time_source = DEFAULT_NTP_TIME_SOURCE; /* some default SDES entries */ cname = g_strdup_printf ("user%u@host-%x", g_random_int (), g_random_int ()); @@ -2365,6 +2398,20 @@ gst_rtp_bin_set_property (GObject * object, guint prop_id, case PROP_RTP_PROFILE: rtpbin->rtp_profile = g_value_get_enum (value); break; + case PROP_NTP_TIME_SOURCE:{ + GSList *sessions; + GST_RTP_BIN_LOCK (rtpbin); + rtpbin->ntp_time_source = g_value_get_enum (value); + for (sessions = rtpbin->sessions; sessions; + sessions = g_slist_next (sessions)) { + GstRtpBinSession *session = (GstRtpBinSession *) sessions->data; + + g_object_set (G_OBJECT (session->session), + "ntp-time-source", rtpbin->ntp_time_source, NULL); + } + GST_RTP_BIN_UNLOCK (rtpbin); + break; + } default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -2430,6 +2477,9 @@ gst_rtp_bin_get_property (GObject * object, guint prop_id, case PROP_RTP_PROFILE: g_value_set_enum (value, rtpbin->rtp_profile); break; + case PROP_NTP_TIME_SOURCE: + g_value_set_enum (value, rtpbin->ntp_time_source); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -2647,7 +2697,7 @@ gst_rtp_bin_change_state (GstElement * element, GstStateChange transition) case GST_STATE_CHANGE_NULL_TO_READY: break; case GST_STATE_CHANGE_READY_TO_PAUSED: - priv->last_unix = 0; + priv->last_ntpnstime = 0; GST_LOG_OBJECT (rtpbin, "clearing shutdown flag"); g_atomic_int_set (&priv->shutdown, 0); break; diff --git a/gst/rtpmanager/gstrtpbin.h b/gst/rtpmanager/gstrtpbin.h index 61cf5dd3f73753f963151f52508fc16810008066..87c1fada4c70932b386fbbc64d8a089e2bcc4973 100644 --- a/gst/rtpmanager/gstrtpbin.h +++ b/gst/rtpmanager/gstrtpbin.h @@ -23,6 +23,7 @@ #include <gst/gst.h> #include "rtpsession.h" +#include "gstrtpsession.h" #include "rtpjitterbuffer.h" #define GST_TYPE_RTP_BIN \ @@ -63,6 +64,7 @@ struct _GstRtpBin { RTPJitterBufferMode buffer_mode; gboolean buffering; gboolean use_pipeline_clock; + GstRtpNtpTimeSource ntp_time_source; gboolean send_sync_event; GstClockTime buffer_start; gboolean do_retransmission; diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index 1aabb0be049e828dcfe07403618f408804623256..8f9c51f0600c3ef666640bf5974446d7006d8d9c 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -899,6 +899,8 @@ alloc_item (gpointer data, guint type, GstClockTime dts, GstClockTime pts, static void free_item (RTPJitterBufferItem * item) { + g_return_if_fail (item != NULL); + if (item->data && item->type != ITEM_TYPE_QUERY) gst_mini_object_unref (item->data); g_slice_free (RTPJitterBufferItem, item); @@ -2715,10 +2717,12 @@ compute_elapsed (GstRtpJitterBuffer * jitterbuffer, RTPJitterBufferItem * item) GST_LOG_OBJECT (jitterbuffer, "rtp %" G_GUINT32_FORMAT ", ext %" G_GUINT64_FORMAT, rtp_time, priv->ext_timestamp); - if (rtp_time < priv->ext_timestamp) { + ext_time = priv->ext_timestamp; + ext_time = gst_rtp_buffer_ext_timestamp (&ext_time, rtp_time); + if (ext_time < priv->ext_timestamp) { ext_time = priv->ext_timestamp; } else { - ext_time = gst_rtp_buffer_ext_timestamp (&priv->ext_timestamp, rtp_time); + priv->ext_timestamp = ext_time; } if (ext_time > priv->clock_base) @@ -3408,8 +3412,7 @@ gst_rtp_jitter_buffer_loop (GstRtpJitterBuffer * jitterbuffer) JBUF_WAIT_EVENT (priv, flushing); result = GST_FLOW_OK; } - } - while (result == GST_FLOW_OK); + } while (result == GST_FLOW_OK); /* store result for upstream */ priv->srcresult = result; /* if we get here we need to pause */ diff --git a/gst/rtpmanager/gstrtpmux.c b/gst/rtpmanager/gstrtpmux.c index db3585bc169c5a2a00cff2054df3a11b71f55525..575b6521eb3963e9ce0683056d468d2d49ef719a 100644 --- a/gst/rtpmanager/gstrtpmux.c +++ b/gst/rtpmanager/gstrtpmux.c @@ -394,8 +394,8 @@ process_list_item (GstBuffer ** buffer, guint idx, gpointer user_data) 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_PTS_IS_VALID (*buffer)) + bd->rtp_mux->last_stop = GST_BUFFER_PTS (*buffer) + GST_BUFFER_DURATION (*buffer); else bd->rtp_mux->last_stop = GST_CLOCK_TIME_NONE; @@ -504,8 +504,8 @@ gst_rtp_mux_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) } if (GST_BUFFER_DURATION_IS_VALID (buffer) && - GST_BUFFER_TIMESTAMP_IS_VALID (buffer)) - rtp_mux->last_stop = GST_BUFFER_TIMESTAMP (buffer) + + GST_BUFFER_PTS_IS_VALID (buffer)) + rtp_mux->last_stop = GST_BUFFER_PTS (buffer) + GST_BUFFER_DURATION (buffer); else rtp_mux->last_stop = GST_CLOCK_TIME_NONE; diff --git a/gst/rtpmanager/gstrtprtxqueue.c b/gst/rtpmanager/gstrtprtxqueue.c index 8e9854399d0fb6445e7e414d8e8345849570770f..0566f74a64ab576489beb83fefa5a9bbcd763f36 100644 --- a/gst/rtpmanager/gstrtprtxqueue.c +++ b/gst/rtpmanager/gstrtprtxqueue.c @@ -276,6 +276,7 @@ gst_rtp_rtx_queue_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) rtx->pending = NULL; g_mutex_unlock (&rtx->lock); + pending = g_list_reverse (pending); g_list_foreach (pending, (GFunc) do_push, rtx); g_list_free (pending); @@ -312,6 +313,7 @@ gst_rtp_rtx_queue_chain_list (GstPad * pad, GstObject * parent, rtx->pending = NULL; g_mutex_unlock (&rtx->lock); + pending = g_list_reverse (pending); g_list_foreach (pending, (GFunc) do_push, rtx); g_list_free (pending); diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index 022f3c3610f0f206e233bd61f06ce080e4bfacbe..b1ebceafc8dad86fcc16943be11e506e064be218 100644 --- a/gst/rtpmanager/gstrtpsession.c +++ b/gst/rtpmanager/gstrtpsession.c @@ -122,6 +122,26 @@ GST_DEBUG_CATEGORY_STATIC (gst_rtp_session_debug); #define GST_CAT_DEFAULT gst_rtp_session_debug +GType +gst_rtp_ntp_time_source_get_type (void) +{ + static GType type = 0; + static const GEnumValue values[] = { + {GST_RTP_NTP_TIME_SOURCE_NTP, "NTP time based on realtime clock", "ntp"}, + {GST_RTP_NTP_TIME_SOURCE_UNIX, "UNIX time based on realtime clock", "unix"}, + {GST_RTP_NTP_TIME_SOURCE_RUNNING_TIME, + "Running time based on pipeline clock", + "running-time"}, + {GST_RTP_NTP_TIME_SOURCE_CLOCK_TIME, "Pipeline clock time", "clock-time"}, + {0, NULL, NULL}, + }; + + if (!type) { + type = g_enum_register_static ("GstRtpNtpTimeSource", values); + } + return type; +} + /* sink pads */ static GstStaticPadTemplate rtpsession_recv_rtp_sink_template = GST_STATIC_PAD_TEMPLATE ("recv_rtp_sink", @@ -202,6 +222,7 @@ enum #define DEFAULT_RTCP_MIN_INTERVAL (RTP_STATS_MIN_INTERVAL * GST_SECOND) #define DEFAULT_PROBATION RTP_DEFAULT_PROBATION #define DEFAULT_RTP_PROFILE GST_RTP_PROFILE_AVP +#define DEFAULT_NTP_TIME_SOURCE GST_RTP_NTP_TIME_SOURCE_NTP enum { @@ -218,7 +239,8 @@ enum PROP_RTCP_MIN_INTERVAL, PROP_PROBATION, PROP_STATS, - PROP_RTP_PROFILE + PROP_RTP_PROFILE, + PROP_NTP_TIME_SOURCE }; #define GST_RTP_SESSION_GET_PRIVATE(obj) \ @@ -251,6 +273,7 @@ struct _GstRtpSessionPrivate GstClockTime send_latency; gboolean use_pipeline_clock; + GstRtpNtpTimeSource ntp_time_source; guint rtx_count; }; @@ -611,9 +634,10 @@ gst_rtp_session_class_init (GstRtpSessionClass * klass) 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", + "Use the pipeline running-time to set the NTP time in the RTCP SR messages " + "(DEPRECATED: Use ntp-source property)", DEFAULT_USE_PIPELINE_CLOCK, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_DEPRECATED)); g_object_class_install_property (gobject_class, PROP_RTCP_MIN_INTERVAL, g_param_spec_uint64 ("rtcp-min-interval", "Minimum RTCP interval", @@ -652,6 +676,12 @@ gst_rtp_session_class_init (GstRtpSessionClass * klass) "RTP profile to use", GST_TYPE_RTP_PROFILE, DEFAULT_RTP_PROFILE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_NTP_TIME_SOURCE, + g_param_spec_enum ("ntp-time-source", "NTP Time Source", + "NTP time source for RTCP packets", + gst_rtp_ntp_time_source_get_type (), DEFAULT_NTP_TIME_SOURCE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_rtp_session_change_state); gstelement_class->request_new_pad = @@ -727,6 +757,8 @@ gst_rtp_session_init (GstRtpSession * rtpsession) rtpsession->priv->thread_stopped = TRUE; rtpsession->priv->rtx_count = 0; + + rtpsession->priv->ntp_time_source = DEFAULT_NTP_TIME_SOURCE; } static void @@ -786,6 +818,9 @@ gst_rtp_session_set_property (GObject * object, guint prop_id, case PROP_RTP_PROFILE: g_object_set_property (G_OBJECT (priv->session), "rtp-profile", value); break; + case PROP_NTP_TIME_SOURCE: + priv->ntp_time_source = g_value_get_enum (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -846,6 +881,9 @@ gst_rtp_session_get_property (GObject * object, guint prop_id, case PROP_RTP_PROFILE: g_object_get_property (G_OBJECT (priv->session), "rtp-profile", value); break; + case PROP_NTP_TIME_SOURCE: + g_value_set_enum (value, priv->ntp_time_source); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -884,17 +922,35 @@ get_current_times (GstRtpSession * rtpsession, GstClockTime * running_time, if (rtpsession->priv->use_pipeline_clock) { ntpns = rt; + /* add constant to convert from 1970 based time to 1900 based time */ + ntpns += (2208988800LL * GST_SECOND); } else { - GTimeVal current; - - /* get current NTP time */ - g_get_current_time (¤t); - ntpns = GST_TIMEVAL_TO_TIME (current); + switch (rtpsession->priv->ntp_time_source) { + case GST_RTP_NTP_TIME_SOURCE_NTP: + case GST_RTP_NTP_TIME_SOURCE_UNIX:{ + GTimeVal current; + + /* get current NTP time */ + g_get_current_time (¤t); + ntpns = GST_TIMEVAL_TO_TIME (current); + + /* add constant to convert from 1970 based time to 1900 based time */ + if (rtpsession->priv->ntp_time_source == GST_RTP_NTP_TIME_SOURCE_NTP) + ntpns += (2208988800LL * GST_SECOND); + break; + } + case GST_RTP_NTP_TIME_SOURCE_RUNNING_TIME: + ntpns = rt; + break; + case GST_RTP_NTP_TIME_SOURCE_CLOCK_TIME: + ntpns = clock_time; + break; + default: + g_assert_not_reached (); + break; + } } - /* add constant to convert from 1970 based time to 1900 based time */ - ntpns += (2208988800LL * GST_SECOND); - gst_object_unref (clock); } else { GST_OBJECT_UNLOCK (rtpsession); @@ -1742,7 +1798,7 @@ gst_rtp_session_chain_recv_rtp (GstPad * pad, GstObject * parent, GST_RTP_SESSION_UNLOCK (rtpsession); /* get NTP time when this packet was captured, this depends on the timestamp. */ - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); if (GST_CLOCK_TIME_IS_VALID (timestamp)) { /* convert to running time using the segment values */ running_time = @@ -2106,11 +2162,11 @@ gst_rtp_session_chain_send_rtp_common (GstRtpSession * rtpsession, * So, just take it from the first group. */ buffer = gst_buffer_list_get (GST_BUFFER_LIST_CAST (data), 0); if (buffer) - timestamp = GST_BUFFER_TIMESTAMP (buffer); + timestamp = GST_BUFFER_PTS (buffer); else timestamp = -1; } else { - timestamp = GST_BUFFER_TIMESTAMP (GST_BUFFER_CAST (data)); + timestamp = GST_BUFFER_PTS (GST_BUFFER_CAST (data)); } if (GST_CLOCK_TIME_IS_VALID (timestamp)) { diff --git a/gst/rtpmanager/gstrtpsession.h b/gst/rtpmanager/gstrtpsession.h index bbaafa6163a94feb05a0dcd08e9319ede2b57fb1..a144c28caa67be3f17a4cd2de370404f9f72fd9c 100644 --- a/gst/rtpmanager/gstrtpsession.h +++ b/gst/rtpmanager/gstrtpsession.h @@ -76,4 +76,13 @@ struct _GstRtpSessionClass { GType gst_rtp_session_get_type (void); +typedef enum { + GST_RTP_NTP_TIME_SOURCE_NTP, + GST_RTP_NTP_TIME_SOURCE_UNIX, + GST_RTP_NTP_TIME_SOURCE_RUNNING_TIME, + GST_RTP_NTP_TIME_SOURCE_CLOCK_TIME +} GstRtpNtpTimeSource; + +GType gst_rtp_ntp_time_source_get_type (void); + #endif /* __GST_RTP_SESSION_H__ */ diff --git a/gst/rtpmanager/rtpjitterbuffer.c b/gst/rtpmanager/rtpjitterbuffer.c index f41b799c908aed8224f7cbac5a952a936b2cd534..80d82663c44fabc0c75beaa358c7bc6e898128b5 100644 --- a/gst/rtpmanager/rtpjitterbuffer.c +++ b/gst/rtpmanager/rtpjitterbuffer.c @@ -261,7 +261,7 @@ get_buffer_level (RTPJitterBuffer * jbuf) RTPJitterBufferItem *high_buf = NULL, *low_buf = NULL; guint64 level; - /* first first buffer with timestamp */ + /* first buffer with timestamp */ high_buf = (RTPJitterBufferItem *) g_queue_peek_tail_link (jbuf->packets); while (high_buf) { if (high_buf->dts != -1 || high_buf->pts != -1) @@ -741,7 +741,7 @@ rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, RTPJitterBufferItem * item, case RTP_JITTER_BUFFER_MODE_NONE: case RTP_JITTER_BUFFER_MODE_BUFFER: /* send 0 as the first timestamp and -1 for the other ones. This will - * interpollate them from the RTP timestamps with a 0 origin. In buffering + * interpolate them from the RTP timestamps with a 0 origin. In buffering * mode we will adjust the outgoing timestamps according to the amount of * time we spent buffering. */ if (jbuf->base_time == -1) diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c index 96ffedbc1b07a1d3c7a80ebfcc123f8f915b3f1b..879b1deea754732446cb9d01cfe54acc964bd40f 100644 --- a/gst/rtpmanager/rtpsession.c +++ b/gst/rtpmanager/rtpsession.c @@ -2557,7 +2557,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) = pinfo->running_time; + GST_BUFFER_PTS (fci_buffer) = pinfo->running_time; } RTP_SESSION_UNLOCK (sess); diff --git a/gst/rtpmanager/rtpsource.c b/gst/rtpmanager/rtpsource.c index 3dd95173f263cbccc171a6e4d09be0bf55e05ea6..e26817b55d476e32220df659b6fb34c100639306 100644 --- a/gst/rtpmanager/rtpsource.c +++ b/gst/rtpmanager/rtpsource.c @@ -110,7 +110,7 @@ rtp_source_class_init (RTPSourceClass * klass) * 'tool' G_TYPE_STRING : The name of application or tool * 'note' G_TYPE_STRING : A notice about the source * - * other fields may be present and these represent private items in + * Other fields may be present and these represent private items in * the SDES where the field name is the prefix. */ g_object_class_install_property (gobject_class, PROP_SDES, @@ -121,25 +121,37 @@ rtp_source_class_init (RTPSourceClass * klass) /** * RTPSource::stats * - * The statistics of the source. This property returns a GstStructure with - * name application/x-rtp-source-stats with the following fields: + * This property returns a GstStructure named application/x-rtp-source-stats with + * fields useful for statistics and diagnostics. * - * "ssrc" G_TYPE_UINT The SSRC of this source - * "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 - * "is-sender" G_TYPE_BOOLEAN If this source is a sender + * Take note of each respective field's units: + * + * - NTP times are in the appropriate 32-bit or 64-bit fixed-point format + * starting from January 1, 1970 (except for timespans). + * - RTP times are in clock rate units (i.e. clock rate = 1 second) + * starting at a random offset. + * - For fields indicating packet loss, note that late packets are not considered lost, + * and duplicates are not taken into account. Hence, the loss may be negative + * if there are duplicates. + * + * The following fields are always present. + * + * "ssrc" G_TYPE_UINT the SSRC of this source + * "internal" G_TYPE_BOOLEAN this source is a source of the session + * "validated" G_TYPE_BOOLEAN the source is validated + * "received-bye" G_TYPE_BOOLEAN we received a BYE from this source + * "is-csrc" G_TYPE_BOOLEAN this source was found as CSRC + * "is-sender" G_TYPE_BOOLEAN this source is a sender * "seqnum-base" G_TYPE_INT first seqnum if known * "clock-rate" G_TYPE_INT the clock rate of the media * - * The following two fields are only present when known. + * The following fields are only present when known. * * "rtp-from" G_TYPE_STRING where we received the last RTP packet from * "rtcp-from" G_TYPE_STRING where we received the last RTCP packet from * * The following fields make sense for internal sources and will only increase - * when "is-sender" is TRUE: + * when "is-sender" is TRUE. * * "octets-sent" G_TYPE_UINT64 number of bytes we sent * "packets-sent" G_TYPE_UINT64 number of packets we sent @@ -153,15 +165,15 @@ rtp_source_class_init (RTPSourceClass * klass) * Following fields are updated when "is-sender" is TRUE. * * "bitrate" G_TYPE_UINT64 bitrate in bits per second - * "jitter" G_TYPE_UINT estimated jitter + * "jitter" G_TYPE_UINT estimated jitter (in clock rate units) * "packets-lost" G_TYPE_INT estimated amount of packets lost * * The last SR report this source sent. This only updates when "is-sender" is * TRUE. * * "have-sr" G_TYPE_BOOLEAN the source has sent SR - * "sr-ntptime" G_TYPE_UINT64 ntptime of SR - * "sr-rtptime" G_TYPE_UINT rtptime of SR + * "sr-ntptime" G_TYPE_UINT64 NTP time of SR (in NTP Timestamp Format, 32.32 fixed point) + * "sr-rtptime" G_TYPE_UINT RTP time of SR (in clock rate units) * "sr-octet-count" G_TYPE_UINT the number of bytes in the SR * "sr-packet-count" G_TYPE_UINT the number of packets in the SR * @@ -173,9 +185,9 @@ rtp_source_class_init (RTPSourceClass * klass) * "sent-rb-fractionlost" G_TYPE_UINT calculated lost fraction * "sent-rb-packetslost" G_TYPE_INT lost packets * "sent-rb-exthighestseq" G_TYPE_UINT last seen seqnum - * "sent-rb-jitter" G_TYPE_UINT jitter - * "sent-rb-lsr" G_TYPE_UINT last SR time - * "sent-rb-dlsr" G_TYPE_UINT delay since last SR + * "sent-rb-jitter" G_TYPE_UINT jitter (in clock rate units) + * "sent-rb-lsr" G_TYPE_UINT last SR time (in NTP Short Format, 16.16 fixed point) + * "sent-rb-dlsr" G_TYPE_UINT delay since last SR (in NTP Short Format, 16.16 fixed point) * * The following fields are only present for non-internal sources and * represents the last RB that this source sent. This is only updated @@ -185,15 +197,16 @@ rtp_source_class_init (RTPSourceClass * klass) * "rb-fractionlost" G_TYPE_UINT lost fraction * "rb-packetslost" G_TYPE_INT lost packets * "rb-exthighestseq" G_TYPE_UINT highest received seqnum - * "rb-jitter" G_TYPE_UINT reception jitter - * "rb-lsr" G_TYPE_UINT last SR time - * "rb-dlsr" G_TYPE_UINT delay since last SR + * "rb-jitter" G_TYPE_UINT reception jitter (in clock rate units) + * "rb-lsr" G_TYPE_UINT last SR time (in NTP Short Format, 16.16 fixed point) + * "rb-dlsr" G_TYPE_UINT delay since last SR (in NTP Short Format, 16.16 fixed point) * - * The round trip of this source. This is calculated from the last RB - * values and the recption time of the last RB packet. Only present for + * The round trip of this source is calculated from the last RB + * values and the reception time of the last RB packet. It is only present for * non-internal sources. * - * "rb-round-trip" G_TYPE_UINT the round trip time in nanoseconds + * "rb-round-trip" G_TYPE_UINT the round-trip time (in NTP Short Format, 16.16 fixed point) + * */ g_object_class_install_property (gobject_class, PROP_STATS, g_param_spec_boxed ("stats", "Stats", @@ -1203,12 +1216,14 @@ rtp_source_send_rtp (RTPSource * src, RTPPacketInfo * pinfo) /* we are a sender now */ src->is_sender = TRUE; + /* we are also a receiver of our packets */ + if (!update_receiver_stats (src, pinfo)) + return GST_FLOW_OK; + /* update stats for the SR */ src->stats.packets_sent += pinfo->packets; src->stats.octets_sent += pinfo->payload_len; src->bytes_sent += pinfo->payload_len; - /* we are also a receiver of our packets */ - update_receiver_stats (src, pinfo); running_time = pinfo->running_time; @@ -1262,10 +1277,10 @@ no_callback: * rtp_source_process_sr: * @src: an #RTPSource * @time: time of packet arrival - * @ntptime: the NTP time in 32.32 fixed point - * @rtptime: the RTP time + * @ntptime: the NTP time (in NTP Timestamp Format, 32.32 fixed point) + * @rtptime: the RTP time (in clock rate units) * @packet_count: the packet count - * @octet_count: the octect count + * @octet_count: the octet count * * Update the sender report in @src. */ @@ -1309,11 +1324,13 @@ rtp_source_process_sr (RTPSource * src, GstClockTime time, guint64 ntptime, * @src: an #RTPSource * @ntpnstime: the current time in nanoseconds since 1970 * @fractionlost: fraction lost since last SR/RR - * @packetslost: the cumululative number of packets lost + * @packetslost: the cumulative number of packets lost * @exthighestseq: the extended last sequence number received - * @jitter: the interarrival jitter - * @lsr: the last SR packet from this source - * @dlsr: the delay since last SR packet + * @jitter: the interarrival jitter (in clock rate units) + * @lsr: the time of the last SR packet on this source + * (in NTP Short Format, 16.16 fixed point) + * @dlsr: the delay since the last SR packet + * (in NTP Short Format, 16.16 fixed point) * * Update the report block in @src. */ @@ -1369,17 +1386,17 @@ rtp_source_process_rb (RTPSource * src, guint64 ntpnstime, * rtp_source_get_new_sr: * @src: an #RTPSource * @ntpnstime: the current time in nanoseconds since 1970 - * @running_time: the current running_time of the pipeline. - * @ntptime: the NTP time in 32.32 fixed point - * @rtptime: the RTP time corresponding to @ntptime + * @running_time: the current running_time of the pipeline + * @ntptime: the NTP time (in NTP Timestamp Format, 32.32 fixed point) + * @rtptime: the RTP time corresponding to @ntptime (in clock rate units) * @packet_count: the packet count - * @octet_count: the octect count + * @octet_count: the octet count * * Get new values to put into a new SR report from this source. * * @running_time and @ntpnstime are captured at the same time and represent the * running time of the pipeline clock and the absolute current system time in - * nanoseconds respectively. Together with the last running_time and rtp timestamp + * nanoseconds respectively. Together with the last running_time and RTP timestamp * we have observed in the source, we can generate @ntptime and @rtptime for an SR * packet. @ntptime is basically the fixed point representation of @ntpnstime * and @rtptime the associated RTP timestamp. @@ -1457,11 +1474,13 @@ rtp_source_get_new_sr (RTPSource * src, guint64 ntpnstime, * @src: an #RTPSource * @time: the current time of the system clock * @fractionlost: fraction lost since last SR/RR - * @packetslost: the cumululative number of packets lost + * @packetslost: the cumulative number of packets lost * @exthighestseq: the extended last sequence number received - * @jitter: the interarrival jitter - * @lsr: the last SR packet from this source - * @dlsr: the delay since last SR packet + * @jitter: the interarrival jitter (in clock rate units) + * @lsr: the time of the last SR packet on this source + * (in NTP Short Format, 16.16 fixed point) + * @dlsr: the delay since the last SR packet + * (in NTP Short Format, 16.16 fixed point) * * Get new values to put into a new report block from this source. * @@ -1547,10 +1566,10 @@ rtp_source_get_new_rb (RTPSource * src, GstClockTime time, * rtp_source_get_last_sr: * @src: an #RTPSource * @time: time of packet arrival - * @ntptime: the NTP time in 32.32 fixed point - * @rtptime: the RTP time + * @ntptime: the NTP time (in NTP Timestamp Format, 32.32 fixed point) + * @rtptime: the RTP time (in clock rate units) * @packet_count: the packet count - * @octet_count: the octect count + * @octet_count: the octet count * * Get the values of the last sender report as set with rtp_source_process_sr(). * @@ -1586,12 +1605,15 @@ rtp_source_get_last_sr (RTPSource * src, GstClockTime * time, guint64 * ntptime, * rtp_source_get_last_rb: * @src: an #RTPSource * @fractionlost: fraction lost since last SR/RR - * @packetslost: the cumululative number of packets lost + * @packetslost: the cumulative number of packets lost * @exthighestseq: the extended last sequence number received - * @jitter: the interarrival jitter - * @lsr: the last SR packet from this source - * @dlsr: the delay since last SR packet - * @round_trip: the round trip time + * @jitter: the interarrival jitter (in clock rate units) + * @lsr: the time of the last SR packet on this source + * (in NTP Short Format, 16.16 fixed point) + * @dlsr: the delay since the last SR packet + * (in NTP Short Format, 16.16 fixed point) + * @round_trip: the round-trip time + * (in NTP Short Format, 16.16 fixed point) * * Get the values of the last RB report set with rtp_source_process_rb(). * @@ -1744,7 +1766,7 @@ rtp_source_timeout (RTPSource * src, GstClockTime current_time, /* Time out AVPF packets that are older than the desired length */ while ((pkt = g_queue_peek_tail (src->retained_feedback)) && - GST_BUFFER_TIMESTAMP (pkt) < feedback_retention_window) + GST_BUFFER_PTS (pkt) < feedback_retention_window) gst_buffer_unref (g_queue_pop_tail (src->retained_feedback)); } @@ -1754,7 +1776,7 @@ compare_buffers (gconstpointer a, gconstpointer b, gpointer user_data) const GstBuffer *bufa = a; const GstBuffer *bufb = b; - return GST_BUFFER_TIMESTAMP (bufa) - GST_BUFFER_TIMESTAMP (bufb); + return GST_BUFFER_PTS (bufa) - GST_BUFFER_PTS (bufb); } void @@ -1766,7 +1788,7 @@ rtp_source_retain_rtcp_packet (RTPSource * src, GstRTCPPacket * packet, buffer = gst_buffer_copy_region (packet->rtcp->buffer, GST_BUFFER_COPY_MEMORY, packet->offset, (gst_rtcp_packet_get_length (packet) + 1) * 4); - GST_BUFFER_TIMESTAMP (buffer) = running_time; + GST_BUFFER_PTS (buffer) = running_time; g_queue_insert_sorted (src->retained_feedback, buffer, compare_buffers, NULL); } diff --git a/gst/rtpmanager/rtpstats.h b/gst/rtpmanager/rtpstats.h index 47c4b823fa24d0dc1d3e493461c2beb2f2520564..d221aea03ffdfea93a44f156c90a2c17d2fede02 100644 --- a/gst/rtpmanager/rtpstats.h +++ b/gst/rtpmanager/rtpstats.h @@ -106,7 +106,7 @@ typedef struct { * protocol level overhead * @max_seqnr: highest sequence number received * @transit: previous transit time used for calculating @jitter - * @jitter: current jitter + * @jitter: current jitter (in clock rate units scaled by 16 for precision) * @prev_rtptime: previous time when an RTP packet was received * @prev_rtcptime: previous time when an RTCP packet was received * @last_rtptime: time when last RTP packet received diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index b7adc4366cb012ff2a2a5c09ddd17ca1e846aef2..610b084614a0e1a476bc895e848463cfa1880e3a 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -197,6 +197,7 @@ gst_rtsp_src_buffer_mode_get_type (void) #define DEFAULT_USE_PIPELINE_CLOCK FALSE #define DEFAULT_TLS_VALIDATION_FLAGS G_TLS_CERTIFICATE_VALIDATE_ALL #define DEFAULT_TLS_DATABASE NULL +#define DEFAULT_TLS_INTERACTION NULL #define DEFAULT_DO_RETRANSMISSION TRUE enum @@ -232,6 +233,7 @@ enum PROP_SDES, PROP_TLS_VALIDATION_FLAGS, PROP_TLS_DATABASE, + PROP_TLS_INTERACTION, PROP_DO_RETRANSMISSION }; @@ -639,6 +641,20 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass) "TLS database with anchor certificate authorities used to validate the server certificate", G_TYPE_TLS_DATABASE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * GstRTSPSrc::tls-interaction: + * + * A #GTlsInteraction object to be used when the connection or certificate + * database need to interact with the user. This will be used to prompt the + * user for passwords where necessary. + * + * Since: 1.6 + */ + g_object_class_install_property (gobject_class, PROP_TLS_INTERACTION, + g_param_spec_object ("tls-interaction", "TLS interaction", + "A GTlsInteraction object to promt the user for password or certificate", + G_TYPE_TLS_INTERACTION, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** * GstRTSPSrc::do-retransmission: * @@ -797,6 +813,7 @@ gst_rtspsrc_init (GstRTSPSrc * src) src->sdes = NULL; src->tls_validation_flags = DEFAULT_TLS_VALIDATION_FLAGS; src->tls_database = DEFAULT_TLS_DATABASE; + src->tls_interaction = DEFAULT_TLS_INTERACTION; src->do_retransmission = DEFAULT_DO_RETRANSMISSION; /* get a list of all extensions */ @@ -846,6 +863,9 @@ gst_rtspsrc_finalize (GObject * object) if (rtspsrc->tls_database) g_object_unref (rtspsrc->tls_database); + if (rtspsrc->tls_interaction) + g_object_unref (rtspsrc->tls_interaction); + /* free locks */ g_rec_mutex_clear (&rtspsrc->stream_rec_lock); g_rec_mutex_clear (&rtspsrc->state_rec_lock); @@ -1062,6 +1082,10 @@ gst_rtspsrc_set_property (GObject * object, guint prop_id, const GValue * value, g_clear_object (&rtspsrc->tls_database); rtspsrc->tls_database = g_value_dup_object (value); break; + case PROP_TLS_INTERACTION: + g_clear_object (&rtspsrc->tls_interaction); + rtspsrc->tls_interaction = g_value_dup_object (value); + break; case PROP_DO_RETRANSMISSION: rtspsrc->do_retransmission = g_value_get_boolean (value); break; @@ -1196,6 +1220,9 @@ gst_rtspsrc_get_property (GObject * object, guint prop_id, GValue * value, case PROP_TLS_DATABASE: g_value_set_object (value, rtspsrc->tls_database); break; + case PROP_TLS_INTERACTION: + g_value_set_object (value, rtspsrc->tls_interaction); + break; case PROP_DO_RETRANSMISSION: g_value_set_boolean (value, rtspsrc->do_retransmission); break; @@ -4351,6 +4378,10 @@ gst_rtsp_conninfo_connect (GstRTSPSrc * src, GstRTSPConnInfo * info, if (src->tls_database) gst_rtsp_connection_set_tls_database (info->connection, src->tls_database); + + if (src->tls_interaction) + gst_rtsp_connection_set_tls_interaction (info->connection, + src->tls_interaction); } if (info->url->transports & GST_RTSP_LOWER_TRANS_HTTP) diff --git a/gst/rtsp/gstrtspsrc.h b/gst/rtsp/gstrtspsrc.h index 44b76d527a9a0edff9172b0163bfd695ff56a692..579666ecae640bee4dc46338980d5e4b9b386938 100644 --- a/gst/rtsp/gstrtspsrc.h +++ b/gst/rtsp/gstrtspsrc.h @@ -234,6 +234,7 @@ struct _GstRTSPSrc { GstStructure *sdes; GTlsCertificateFlags tls_validation_flags; GTlsDatabase *tls_database; + GTlsInteraction *tls_interaction; gboolean do_retransmission; /* state */ diff --git a/gst/videomixer/videomixerorc-dist.c b/gst/videomixer/videomixerorc-dist.c index 7ddc1b0802aae003c8daf32f346fad87e8d5e33b..115b6fcc95018240e12d76a46179d365f986a165 100644 --- a/gst/videomixer/videomixerorc-dist.c +++ b/gst/videomixer/videomixerorc-dist.c @@ -1713,7 +1713,7 @@ video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, static const orc_uint8 bc[] = { 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103, - 98, + 98, 11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 255, 0, 0, 0, 14, 4, 0, 255, 255, 255, 14, 2, 8, 0, 0, 0, 16, 2, 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 4, 20, 8, @@ -2283,7 +2283,7 @@ video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, static const orc_uint8 bc[] = { 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114, - 97, + 97, 11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 0, 0, 0, 255, 14, 4, 255, 255, 255, 0, 14, 4, 24, 0, 0, 0, 14, 2, 8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 8, diff --git a/po/af.gmo b/po/af.gmo index 482eaea6413fd33aa495c0fd66aa0ee389f3f1d6..a772c8e3f36fedec328dc5088efdd31c498a3ddd 100644 Binary files a/po/af.gmo and b/po/af.gmo differ diff --git a/po/af.po b/po/af.po index baab051c54dd1e58514cb10588550818f50472aa..7ded82c6906f7dc5f757ebb273364c8fc286d6d0 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2004-03-18 14:16+0200\n" "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n" "Language-Team: Afrikaans <i18n@af.org.za>\n" diff --git a/po/az.gmo b/po/az.gmo index ddd2e5ecf3ef20df903909be8c586ed69aa432fa..b294945d02b2739adba9f08f027bbdb4ade112e1 100644 Binary files a/po/az.gmo and b/po/az.gmo differ diff --git a/po/az.po b/po/az.po index 2c679825fe79eb271c36735e81e556ae70b3994f..633b34e04942170bbb089cd57005140d4d30c199 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2004-03-19 18:29+0200\n" "Last-Translator: Metin Amiroff <metin@karegen.com>\n" "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n" diff --git a/po/bg.gmo b/po/bg.gmo index 8f3bf3caedc803567aee8428dce81e3c61c59520..635822d88da26a8514f0106cfd6a4b313aada759 100644 Binary files a/po/bg.gmo and b/po/bg.gmo differ diff --git a/po/bg.po b/po/bg.po index e3e1dd3343f59accc2dd6b1b8dff293ef2c5b361..2e75e64ded5fd3318ba3b9e78a5a0e60654e2cf6 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/ca.gmo b/po/ca.gmo index a032fdeed0a7fdbe2353539f212e6b2e7e21996e..cddc8625099c13f20d14c2c71c2473246e9f52f2 100644 Binary files a/po/ca.gmo and b/po/ca.gmo differ diff --git a/po/ca.po b/po/ca.po index 05349678a007944ca737e4a8adaf1e0e879ab33f..c826dffbe314d363b2203fc6d460b7e51e5ac24a 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2012-01-01 14:19+0100\n" "Last-Translator: Gil Forcada <gforcada@gnome.org>\n" "Language-Team: Catalan <ca@dodds.net>\n" diff --git a/po/cs.gmo b/po/cs.gmo index 3fee2016b2aa4e93c631fdac7b2b3cebdabdcb78..f9cc72ac6bdfff21128d2d67ef64e0f5252f2a20 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index ec71c0982a4bef2a33002b24ee148a4b73700241..ca2fb78d74c70f2a7bc0d0b62ac933b5152de0c5 100644 --- a/po/cs.po +++ b/po/cs.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.4.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2015-02-16 10:40+0100\n" "Last-Translator: Marek ÄŒernocký <marek@manet.cz>\n" "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" diff --git a/po/da.gmo b/po/da.gmo index 6434f650914b313d285a9398e462c4cc2b98e3b5..00377121dbe3bc541c04a9d1b19e398bba197013 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index ae7b12331daeaa77d30cc617b145ee8e8076b901..2f9288cdf3f5685a912602376f8a7d3a71fe0263 100644 --- a/po/da.po +++ b/po/da.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-06-29 23:54+0200\n" "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" diff --git a/po/de.gmo b/po/de.gmo index b4f683564250d7ffe4993d5f9f5e97e876e904f9..6efa97af99b23f32257ce827d09daa7bdb21e60c 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index ed92bba001059a8282f0ed1dcd2e13fc0ee0434f..977d1fcf0972e0276067e2980e904d169732bb7a 100644 --- a/po/de.po +++ b/po/de.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-06-29 21:20+0100\n" "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" diff --git a/po/el.gmo b/po/el.gmo index 55cda84ae8835a7626f91efe66989941649b6220..f3f92529570301800fb527b479198982fb590f17 100644 Binary files a/po/el.gmo and b/po/el.gmo differ diff --git a/po/el.po b/po/el.po index 28302a83a2654e484d8224d5b5cbc081ce623099..2e714768fa3c894d7dd0eba64579663d69f6d517 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/en_GB.gmo b/po/en_GB.gmo index 1ae72613e0b476210bcf292c21ad3763489e9472..b413274a785f97c2ccf0b3b156db5d30b5f431d8 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 259f487b0b45044de59e31267b04a5fbd1e4e622..38e0e6694f922455cb32f9a7a7f85f26b8d7e297 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2004-04-26 10:41-0400\n" "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n" "Language-Team: English (British) <en_gb@li.org>\n" diff --git a/po/eo.gmo b/po/eo.gmo index c9575b4fbca12d123c8c9ca859b5aa04d399c45f..3c0d8cd302c391ceb6cfca5925f3669899808e32 100644 Binary files a/po/eo.gmo and b/po/eo.gmo differ diff --git a/po/eo.po b/po/eo.po index 9b68f353400f4c1175369117d81f405b0e792c10..cba611bf5373639b4417729da57de114fcea3252 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/es.gmo b/po/es.gmo index 2e271a452ba268ebc828a18ccc1435b08ebd4cbd..499d8b400e5865be1e79a65688cac3582a733159 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 6f0dd698950c88d8052e3949887e80ebd0cf68a6..501abead2609bdeac20e7f18c1c97d97e1e25572 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/eu.gmo b/po/eu.gmo index 6ede6c815d26249335e75bcde30e7192c6b3bd78..2279a900c6840f4711b86882868650a7fc13a99e 100644 Binary files a/po/eu.gmo and b/po/eu.gmo differ diff --git a/po/eu.po b/po/eu.po index 4ccef9e81ba3dedc77768ddec4c923dc8df88756..74f0233291ee67a0bb08b94ed1d14ed6b8f7728d 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/fi.gmo b/po/fi.gmo index c98c3fe8de8ab17518aba398031c5c97b5e8f02c..54f7732b4e5fa3b60ab243c78fd589bbf6e96039 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index 05a29099f3b056855c04ed8cf3a894e1cae83b39..63fa0ce9f2b50f693aaad538c0b72f4f6744796d 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/fr.gmo b/po/fr.gmo index 5701e57e7d1647d84c689690f998859e33a46052..da0d7d92fd9856880fedfa5817bbcf7d99ae4925 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index 24725e4872ac2d9d6a09fff6b6500503bf08b665..10b4c2a5d5665811fb2acd378dd2b571b020bbc7 100644 --- a/po/fr.po +++ b/po/fr.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.4.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2015-04-26 19:35+0200\n" "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" "Language-Team: French <traduc@traduc.org>\n" diff --git a/po/gl.gmo b/po/gl.gmo index 85fd2907181232344caa61fad7bc290db47fc6cd..f278cc2a0fbb8787863f0ac34bd93f8017600fe1 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index ae001d32feee6fe75f718df748f0f6ae28ba2ae9..64b8857e7ee8e511f13de530096a080b47eb40bc 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/gst-plugins-good-1.0.pot b/po/gst-plugins-good-1.0.pot index 3823d9da8ffffbf682b0c1e807f0d8c363cbd080..02865216f24ec01a85b84079ea99b7a236f44017 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.5.1\n" +"Project-Id-Version: gst-plugins-good 1.5.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" @@ -37,32 +37,32 @@ msgstr "" msgid "Could not connect to server" msgstr "" -#: ext/soup/gstsouphttpsrc.c:859 +#: ext/soup/gstsouphttpsrc.c:893 msgid "No URL set." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1216 +#: ext/soup/gstsouphttpsrc.c:1252 msgid "Server does not support seeking." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1491 +#: ext/soup/gstsouphttpsrc.c:1527 msgid "Could not resolve server name." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1497 +#: ext/soup/gstsouphttpsrc.c:1533 msgid "Could not establish connection to server." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1502 +#: ext/soup/gstsouphttpsrc.c:1538 msgid "Secure connection setup failed." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1512 +#: ext/soup/gstsouphttpsrc.c:1548 msgid "" "A network error occured, or the server closed the connection unexpectedly." msgstr "" -#: ext/soup/gstsouphttpsrc.c:1519 +#: ext/soup/gstsouphttpsrc.c:1555 msgid "Server sent bad data." msgstr "" @@ -74,54 +74,54 @@ msgstr "" msgid "No or invalid input audio, AVI stream will be corrupt." msgstr "" -#: gst/isomp4/qtdemux.c:599 gst/isomp4/qtdemux.c:603 +#: gst/isomp4/qtdemux.c:607 gst/isomp4/qtdemux.c:611 msgid "This file contains no playable streams." msgstr "" -#: gst/isomp4/qtdemux.c:649 gst/isomp4/qtdemux.c:5080 -#: gst/isomp4/qtdemux.c:5147 gst/isomp4/qtdemux.c:5385 +#: gst/isomp4/qtdemux.c:657 gst/isomp4/qtdemux.c:5107 +#: gst/isomp4/qtdemux.c:5174 gst/isomp4/qtdemux.c:5412 msgid "This file is invalid and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:2338 +#: gst/isomp4/qtdemux.c:2355 msgid "Cannot play stream because it is encrypted with PlayReady DRM." msgstr "" -#: gst/isomp4/qtdemux.c:3042 gst/isomp4/qtdemux.c:6092 -#: gst/isomp4/qtdemux.c:6099 gst/isomp4/qtdemux.c:6756 -#: gst/isomp4/qtdemux.c:7183 gst/isomp4/qtdemux.c:7190 -#: gst/isomp4/qtdemux.c:9307 +#: gst/isomp4/qtdemux.c:3059 gst/isomp4/qtdemux.c:6119 +#: gst/isomp4/qtdemux.c:6126 gst/isomp4/qtdemux.c:6845 +#: gst/isomp4/qtdemux.c:7272 gst/isomp4/qtdemux.c:7279 +#: gst/isomp4/qtdemux.c:9442 msgid "This file is corrupt and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:3284 +#: gst/isomp4/qtdemux.c:3301 msgid "Invalid atom size." msgstr "" -#: gst/isomp4/qtdemux.c:3360 +#: gst/isomp4/qtdemux.c:3377 msgid "This file is incomplete and cannot be played." msgstr "" -#: gst/isomp4/qtdemux.c:7959 +#: gst/isomp4/qtdemux.c:8094 msgid "The video in this file might not play correctly." msgstr "" -#: gst/isomp4/qtdemux.c:9348 +#: gst/isomp4/qtdemux.c:9483 #, c-format msgid "This file contains too many streams. Only playing first %d" msgstr "" -#: gst/multifile/gstsplitmuxsrc.c:548 gst/wavparse/gstwavparse.c:2248 +#: gst/multifile/gstsplitmuxsrc.c:556 gst/wavparse/gstwavparse.c:2248 msgid "Internal data flow error." msgstr "" -#: gst/rtsp/gstrtspsrc.c:6719 +#: gst/rtsp/gstrtspsrc.c:6750 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:6724 +#: gst/rtsp/gstrtspsrc.c:6755 msgid "" "No supported stream was found. You might need to allow more transport " "protocols or may otherwise be missing the right GStreamer RTSP extension " @@ -251,7 +251,7 @@ msgstr "" msgid "AUX 2 Out" msgstr "" -#: sys/v4l2/gstv4l2bufferpool.c:1657 +#: sys/v4l2/gstv4l2bufferpool.c:1663 #, c-format msgid "Error reading %d bytes from device '%s'." msgstr "" @@ -261,75 +261,75 @@ msgstr "" msgid "Failed to enumerate possible video formats device '%s' can work with" msgstr "" -#: sys/v4l2/gstv4l2object.c:2452 +#: sys/v4l2/gstv4l2object.c:2574 #, c-format msgid "Could not map buffers from device '%s'" msgstr "" -#: sys/v4l2/gstv4l2object.c:2460 +#: sys/v4l2/gstv4l2object.c:2582 #, c-format msgid "The driver of device '%s' does not support the IO method %d" msgstr "" -#: sys/v4l2/gstv4l2object.c:2467 +#: sys/v4l2/gstv4l2object.c:2589 #, c-format msgid "The driver of device '%s' does not support any known IO method." msgstr "" -#: sys/v4l2/gstv4l2object.c:2973 sys/v4l2/gstv4l2object.c:2984 +#: sys/v4l2/gstv4l2object.c:3210 sys/v4l2/gstv4l2object.c:3221 #, c-format msgid "Device '%s' is busy" msgstr "" -#: sys/v4l2/gstv4l2object.c:2990 sys/v4l2/gstv4l2object.c:3002 +#: sys/v4l2/gstv4l2object.c:3227 sys/v4l2/gstv4l2object.c:3239 #, c-format msgid "Device '%s' cannot capture at %dx%d" msgstr "" -#: sys/v4l2/gstv4l2object.c:3013 +#: sys/v4l2/gstv4l2object.c:3250 #, c-format msgid "Device '%s' cannot capture in the specified format" msgstr "" -#: sys/v4l2/gstv4l2object.c:3026 +#: sys/v4l2/gstv4l2object.c:3263 #, c-format msgid "Device '%s' does support non-contiguous planes" msgstr "" -#: sys/v4l2/gstv4l2object.c:3037 +#: sys/v4l2/gstv4l2object.c:3274 #, c-format msgid "Could not get parameters on device '%s'" msgstr "" -#: sys/v4l2/gstv4l2object.c:3045 +#: sys/v4l2/gstv4l2object.c:3282 msgid "Video device did not accept new frame rate setting." msgstr "" -#: sys/v4l2/gstv4l2object.c:3150 +#: sys/v4l2/gstv4l2object.c:3387 msgid "Video device did not provide output format." msgstr "" -#: sys/v4l2/gstv4l2object.c:3156 +#: sys/v4l2/gstv4l2object.c:3393 msgid "Video device returned invalid dimensions." msgstr "" -#: sys/v4l2/gstv4l2object.c:3164 +#: sys/v4l2/gstv4l2object.c:3401 msgid "Video devices uses an unsupported interlacing method." msgstr "" -#: sys/v4l2/gstv4l2object.c:3171 +#: sys/v4l2/gstv4l2object.c:3408 msgid "Video devices uses an unsupported pixel format." msgstr "" -#: sys/v4l2/gstv4l2object.c:3583 +#: sys/v4l2/gstv4l2object.c:3820 msgid "Failed to configure internal buffer pool." msgstr "" -#: sys/v4l2/gstv4l2object.c:3589 +#: sys/v4l2/gstv4l2object.c:3826 msgid "Video device did not suggest any buffer size." msgstr "" -#: sys/v4l2/gstv4l2object.c:3604 +#: sys/v4l2/gstv4l2object.c:3841 msgid "No downstream pool to import from." msgstr "" diff --git a/po/hr.gmo b/po/hr.gmo index 1c84bc530487da3d2f609a77a8005381257f13ae..3be8676fb42766f984e74b63d36313259069a623 100644 Binary files a/po/hr.gmo and b/po/hr.gmo differ diff --git a/po/hr.po b/po/hr.po index 5926e19e65f7b7490a45c6192f3e05f44a51dcb6..07f2bbebf103ce68389c7105bfc20f988f55bc71 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/hu.gmo b/po/hu.gmo index 8070b3f49ca00bc2a43776493347b47a799ab962..5faee7557055ddff778ebf00c7f720701ddd7a4b 100644 Binary files a/po/hu.gmo and b/po/hu.gmo differ diff --git a/po/hu.po b/po/hu.po index 72c42e1d42859045eeb63e2b88dad25f535d8f77..c635f263bf5945e6e3af1819db095f960d347053 100644 --- a/po/hu.po +++ b/po/hu.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-06-29 12:56+0200\n" "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n" "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n" diff --git a/po/id.gmo b/po/id.gmo index a666feba473d079de4aeb5357c33e7bf320bf46b..b296158e5e023b89d547909b5248cd29f92e44af 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index dabc04477531c88c0f48f927260757f9867a69ae..ae28a5a7b3d521127ffe9f1b4c77b3c2d6bae418 100644 --- a/po/id.po +++ b/po/id.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-07-06 21:37+0700\n" "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n" "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n" diff --git a/po/it.gmo b/po/it.gmo index 9c0e9c51c78a64cddbda3f8f1f60a98225e4ee00..8b66c8de26ef02115d7cad38a32e8da68efb1613 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index a3fbf6a4ec767f896f4d9b97b78826d62a4abf09..6aea8332f4f4bde10d74a1919daa05ee05ffdda2 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/ja.gmo b/po/ja.gmo index b174e737043777f84ecfbba0611bc44a3423610d..a37abb9229dbd136034210f6db88f3d74d4cdbc7 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index 17703d6656f6337757ea382e939086258f8edcfc..a3fb0c09a4d13e81cafe1e6e91d3303f63d971e2 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/lt.gmo b/po/lt.gmo index 2f606de0d28edf84dd5e6b40354ee3cf57915eeb..9412c32f05dde333f059d89d71abb613372f9dc9 100644 Binary files a/po/lt.gmo and b/po/lt.gmo differ diff --git a/po/lt.po b/po/lt.po index 87843d503a0ddddee0522d3ffeb9d955c5018c14..97f9df58f6d6fb2ffc2bacf775ad2d1747bd6305 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/lv.gmo b/po/lv.gmo index 5c2016eb7a6e21df8e79ced9bcdd52b73ee21d8b..0adb13c1c501b61729f83f1a8c15e1f96e5b21f0 100644 Binary files a/po/lv.gmo and b/po/lv.gmo differ diff --git a/po/lv.po b/po/lv.po index 340229a215afb2b674653c5705266e9584357f36..9591bf46b73b0b9cad5806483b923341dceed59b 100644 --- a/po/lv.po +++ b/po/lv.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.2.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-04-20 16:38+0300\n" "Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n" "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n" diff --git a/po/mt.gmo b/po/mt.gmo index 3b11f18fba1a933a750622c3e92556fb9ac73567..068b7ae752c11fe14a36fa8d6c95e04fd557731a 100644 Binary files a/po/mt.gmo and b/po/mt.gmo differ diff --git a/po/mt.po b/po/mt.po index df3d12ab14340052f0bd9f9c5170468b70bb5508..c665077401d575c78ebe57cc46662a92c22d5b6c 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/nb.gmo b/po/nb.gmo index 44d6d65cb90e61284707ba14b35e88f915d5c5b6..10c6376dddf04fd45c631edf9de3bc661656bb52 100644 Binary files a/po/nb.gmo and b/po/nb.gmo differ diff --git a/po/nb.po b/po/nb.po index be6bf36d5bdb87c66a5af2a2778a57aff7026b55..a5e90b636ceb1b62ba3c3c2bb80b196dee0325df 100644 --- a/po/nb.po +++ b/po/nb.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-07-22 13:14+0100\n" "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n" "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n" diff --git a/po/nl.gmo b/po/nl.gmo index 35d436e35bf5f5c734d3346bed725247c734b1d2..6eeace24ce5737cdd583815f6ea225b20d9992e6 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index e215abd20f08ab93e7f8aebc4fb161618822a127..e775c0a32b4a369943bd702d2f4c8f57f692fb94 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,13 +1,13 @@ -# translation of gst-plugins-good-1.3.90.nl.po to Dutch +# translation of gst-plugins-good-1.5.1.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, 2013, 2014. msgid "" msgstr "" -"Project-Id-Version: gst-plugins-good 1.3.90\n" +"Project-Id-Version: gst-plugins-good 1.5.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" -"PO-Revision-Date: 2014-07-22 10:55+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" +"PO-Revision-Date: 2015-06-13 10:55+0200\n" "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n" "Language-Team: Dutch <vertaling@vrijschrift.org>\n" "Language: nl\n" diff --git a/po/or.gmo b/po/or.gmo index 342727264a16250665907a31fae7866c9e266bf5..d3557c1b6350cf9eb8026c8e5de5a5c8ae78aebb 100644 Binary files a/po/or.gmo and b/po/or.gmo differ diff --git a/po/or.po b/po/or.po index acbeb4185299237f1bb1e0cdea3dabc15b845f4b..4fb49a2863359c3e1c1e68ad596a8680c7bd3686 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2004-09-27 13:32+0530\n" "Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n" "Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n" diff --git a/po/pl.gmo b/po/pl.gmo index c15d9d4a1cca3b3467b682297497bfbba53d5bd6..088392e1f5fa9f2fd3891233bd21685f8e1053f9 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index b3297daba6ef1e9482d2d2a612fdff1cf6758b85..dbfbbe7de710e9d1c502ce70dfa5bcdcd88d7579 100644 --- a/po/pl.po +++ b/po/pl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-06-29 10:45+0200\n" "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index cb45d64499d3b8debf3e871a1792c4fed7b84c00..cf358faef3b473b61bd5e4b93d077762acb02f23 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 8fee325d4c25c3747f3ddf2555b6787c07b1a882..48828789d4e0867df9aed0dbae1f1d9b17fa3027 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.4.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2015-02-01 23:02-0200\n" "Last-Translator: FabrÃcio Godoy <skarllot@gmail.com>\n" "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge." diff --git a/po/ro.gmo b/po/ro.gmo index 966983157589052fe2bbc2ecd71bcd18a4febedd..e4aabf9a92af6427b223d237bf23496e1f5187db 100644 Binary files a/po/ro.gmo and b/po/ro.gmo differ diff --git a/po/ro.po b/po/ro.po index 9879f7bad2c640f3dd20ece7530f55214077c467..d806f61e2752d31c39de037618c8a45161fefe8c 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/ru.gmo b/po/ru.gmo index d116aadbe3d8056b72a13305336889d1d9306521..717cb3d32b7a1b0749a2514bb04a8a59799aef5a 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index 3b704b711baf414afc40df363a853a46a7ffb5f5..913e9e3f694e7dfa0eaa43de54ee9300e8cb74cb 100644 --- a/po/ru.po +++ b/po/ru.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-06-29 18:59+0400\n" "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n" "Language-Team: Russian <gnu@mx.ru>\n" diff --git a/po/sk.gmo b/po/sk.gmo index 04556e9a76da1e2763cef42f840b82cdaafb49f3..70b7e25baee3d5a1f598e749134a514a5f7a754b 100644 Binary files a/po/sk.gmo and b/po/sk.gmo differ diff --git a/po/sk.po b/po/sk.po index bc82780d1bc1682028a8cbccbcab7ba9650ffe34..9479e22bc04f19bda310457e5ab074cc6db10f47 100644 --- a/po/sk.po +++ b/po/sk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.2.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-01-30 11:08+0100\n" "Last-Translator: Peter Tuharsky <tuharsky@misbb.sk>\n" "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n" diff --git a/po/sl.gmo b/po/sl.gmo index 525c4702c0f65140555c5df5e2d4c75213d2c199..53e5fb0a02bd8a0e621c14f031a4c5b4a4911007 100644 Binary files a/po/sl.gmo and b/po/sl.gmo differ diff --git a/po/sl.po b/po/sl.po index e842d9b501828aaf0dd3b793a486e3f0b4e4874d..49b2afb60d909bbf4ccbaa2a9ec26f7fdf5a34b1 100644 --- a/po/sl.po +++ b/po/sl.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.2.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-04-09 22:52+0100\n" "Last-Translator: Klemen KoÅ¡ir <klemen913@gmail.com>\n" "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n" diff --git a/po/sq.gmo b/po/sq.gmo index 5d0ce76728ed4696b92ffc7bf4b7a1b599e984bd..66f57e3c656ac12d3d078d73048c3b574176f460 100644 Binary files a/po/sq.gmo and b/po/sq.gmo differ diff --git a/po/sq.po b/po/sq.po index 1eb253c182f809bb31a5a50e472d5eeea9c251ff..83237a74edfa8dac2dc22ec8f1c7deb3f51d4d31 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/sr.gmo b/po/sr.gmo index 59bb95504b207bdd8fbcdfedf4395017b81bf695..7c54affc353b0ca1673994ff9a93652a2dc4ebc1 100644 Binary files a/po/sr.gmo and b/po/sr.gmo differ diff --git a/po/sr.po b/po/sr.po index 9bb356bec1240a1f94fb645c7da04c1200a44639..af67108deaf81019ae9ba441725afac56c6fcb9a 100644 --- a/po/sr.po +++ b/po/sr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good-1.4.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-09-13 10:50+0200\n" "Last-Translator: МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>\n" "Language-Team: Serbian <(nothing)>\n" diff --git a/po/sv.gmo b/po/sv.gmo index b50f2827c5e3ad16e8c24dca5b2ea80705c129a5..a1e35b916bdb2019ba97285c1640d22f26d6a58e 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index 57579a4ee3eeeae912678f12a86092ba5af4e3bf..a84421e1502a0ffdb511af34fd6fc81a6604ffbd 100644 --- a/po/sv.po +++ b/po/sv.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-07-11 02:52+0200\n" "Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" diff --git a/po/tr.gmo b/po/tr.gmo index 0075719a421d0ade1a8a668e30da19b7ed34a776..6318e943aa71cec40dc6e9086f82df98f83bcb64 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index da4b86a5d96f2cdb550c52916164f420b9b6b9a1..fe30ac1d720ca8cdb4938249f8928b307c7e30e1 100644 --- a/po/tr.po +++ b/po/tr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.4.1\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2015-01-10 21:07+0100\n" "Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n" "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n" diff --git a/po/uk.gmo b/po/uk.gmo index e0c68a45192c043990c3d9ce8f49b956e27b6c3e..f630c7a43633f625395003f27fa4c62f1c05606a 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index beda58c9f19daa288c6287435d3bc9072f321ade..ac257f159f13a7b2d21d9442dc3dc715ba07fcf8 100644 --- a/po/uk.po +++ b/po/uk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-06-29 11:40+0300\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n" diff --git a/po/vi.gmo b/po/vi.gmo index 3a20269f23e1564e23d0f8136f37d4dc38d06f4e..1fc5f306ada813193f70d4ec7184d043de1948d2 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index 7fc895c7a7423f174372a47231c358087e4d6b05..c8c15795c937079a467cd2ad620c47a8e1718262 100644 --- a/po/vi.po +++ b/po/vi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-good 1.3.90\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+0200\n" "PO-Revision-Date: 2014-06-30 09:12+0700\n" "Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index e7d5d3d5b4bb0c7cd33d5966d8c64c85b3ea49d0..53c3a198a39008068bedb0e7677f8d2481e82c22 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 423668d1130d0099bff9f333abeee943efb6cf75..0c2c2cab8d07aba60f4f25cbdd5092f656f2727a 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/zh_HK.gmo b/po/zh_HK.gmo index 0cbd6f2a54e918c26181b49b992fd25e44e76af8..f74ffdea8cf098026ae07ddfe83fe8b0bb1c7bb0 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 6b09f732f266e93787f6f65d8b2c69d715c18e3e..fd32c9fbd8c50a9b076a901231fe6936cd471b2e 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index 933bce2729afd40ff8a22cff6c5221a7c55b3e4a..a72c5be510c4b4fcf02c4850b50c769d0db813c0 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 34872a03f54bd81ea0863ab474391769bb3b98eb..fff2db4f9b0dbe7bd0eaf872e9be99edbac99b22 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: 2015-06-07 10:36+0200\n" +"POT-Creation-Date: 2015-06-24 22:51+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" diff --git a/sys/osxaudio/gstosxcoreaudioremoteio.c b/sys/osxaudio/gstosxcoreaudioremoteio.c index 1d3c8439c42a299b05d45c832c04cf9bdb586e08..81a8aa2e3ce5edbbd4021b3ca3537b48dd875dd1 100644 --- a/sys/osxaudio/gstosxcoreaudioremoteio.c +++ b/sys/osxaudio/gstosxcoreaudioremoteio.c @@ -64,7 +64,7 @@ gst_core_audio_get_samples_and_latency_impl (GstCoreAudio * core_audio, gdouble rate, guint * samples, gdouble * latency) { OSStatus status; - UInt32 size; + UInt32 size = sizeof (double); status = AudioUnitGetProperty (core_audio->audiounit, kAudioUnitProperty_Latency, kAudioUnitScope_Global, 0, /* N/A for global */ latency, &size); diff --git a/sys/v4l2/ext/types-compat.h b/sys/v4l2/ext/types-compat.h index 27482483ed168fca68df790ada8b5acbbf8a22f1..f1095cb06ebc0ec568c9e2a07bc258e63e8151c7 100644 --- a/sys/v4l2/ext/types-compat.h +++ b/sys/v4l2/ext/types-compat.h @@ -44,4 +44,6 @@ #define __s32 gint32 #define __le32 guint32 __bitwise +#define __user + #endif /* __TYPES_COMPAT_H__ */ diff --git a/sys/v4l2/ext/v4l2-common.h b/sys/v4l2/ext/v4l2-common.h index 4f0667e010dd39333ef672af24969c5c6683819a..e2da5930314167f70575677d5c33bebe1ced0f78 100644 --- a/sys/v4l2/ext/v4l2-common.h +++ b/sys/v4l2/ext/v4l2-common.h @@ -29,6 +29,8 @@ #ifndef __V4L2_COMMON__ #define __V4L2_COMMON__ +#include "ext/types-compat.h" + /* * * Selection interface definitions @@ -41,6 +43,8 @@ #define V4L2_SEL_TGT_CROP_DEFAULT 0x0001 /* Cropping bounds */ #define V4L2_SEL_TGT_CROP_BOUNDS 0x0002 +/* Native frame size */ +#define V4L2_SEL_TGT_NATIVE_SIZE 0x0003 /* Current composing area */ #define V4L2_SEL_TGT_COMPOSE 0x0100 /* Default composing area */ @@ -68,4 +72,12 @@ #define V4L2_SUBDEV_SEL_FLAG_SIZE_LE V4L2_SEL_FLAG_LE #define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG +struct v4l2_edid { + __u32 pad; + __u32 start_block; + __u32 blocks; + __u32 reserved[5]; + __u8 *edid; +}; + #endif /* __V4L2_COMMON__ */ diff --git a/sys/v4l2/ext/v4l2-controls.h b/sys/v4l2/ext/v4l2-controls.h index 1666aabbbb868ae9a215794e36726bd37a6fe2bd..9f6e108ff4a0837d9b8d1ace71168f17df153972 100644 --- a/sys/v4l2/ext/v4l2-controls.h +++ b/sys/v4l2/ext/v4l2-controls.h @@ -60,6 +60,8 @@ #define V4L2_CTRL_CLASS_IMAGE_PROC 0x009f0000 /* Image processing controls */ #define V4L2_CTRL_CLASS_DV 0x00a00000 /* Digital Video controls */ #define V4L2_CTRL_CLASS_FM_RX 0x00a10000 /* FM Receiver controls */ +#define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */ +#define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */ /* User-class control IDs */ @@ -164,6 +166,14 @@ enum v4l2_colorfx { * this driver */ #define V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_USER_BASE + 0x1050) +/* The base for the saa7134 driver controls. + * We reserve 16 controls for this driver. */ +#define V4L2_CID_USER_SAA7134_BASE (V4L2_CID_USER_BASE + 0x1060) + +/* The base for the adv7180 driver controls. + * We reserve 16 controls for this driver. */ +#define V4L2_CID_USER_ADV7180_BASE (V4L2_CID_USER_BASE + 0x1070) + /* MPEG-class control IDs */ /* The MPEG controls are applicable to all codec controls * and the 'MPEG' part of the define is historical */ @@ -372,6 +382,8 @@ enum v4l2_mpeg_video_multi_slice_mode { #define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224) #define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_MPEG_BASE+225) #define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_MPEG_BASE+226) +#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_MPEG_BASE+227) +#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_MPEG_BASE+228) #define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300) #define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301) @@ -554,6 +566,11 @@ enum v4l2_vp8_golden_frame_sel { V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV = 0, V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD = 1, }; +#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_MPEG_BASE+507) +#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_MPEG_BASE+508) +#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_MPEG_BASE+509) +#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_MPEG_BASE+510) +#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE (V4L2_CID_MPEG_BASE+511) /* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */ #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) @@ -733,6 +750,8 @@ enum v4l2_auto_focus_range { V4L2_AUTO_FOCUS_RANGE_INFINITY = 3, }; +#define V4L2_CID_PAN_SPEED (V4L2_CID_CAMERA_CLASS_BASE+32) +#define V4L2_CID_TILT_SPEED (V4L2_CID_CAMERA_CLASS_BASE+33) /* FM Modulator class control IDs */ @@ -744,6 +763,15 @@ enum v4l2_auto_focus_range { #define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3) #define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5) #define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6) +#define V4L2_CID_RDS_TX_MONO_STEREO (V4L2_CID_FM_TX_CLASS_BASE + 7) +#define V4L2_CID_RDS_TX_ARTIFICIAL_HEAD (V4L2_CID_FM_TX_CLASS_BASE + 8) +#define V4L2_CID_RDS_TX_COMPRESSED (V4L2_CID_FM_TX_CLASS_BASE + 9) +#define V4L2_CID_RDS_TX_DYNAMIC_PTY (V4L2_CID_FM_TX_CLASS_BASE + 10) +#define V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT (V4L2_CID_FM_TX_CLASS_BASE + 11) +#define V4L2_CID_RDS_TX_TRAFFIC_PROGRAM (V4L2_CID_FM_TX_CLASS_BASE + 12) +#define V4L2_CID_RDS_TX_MUSIC_SPEECH (V4L2_CID_FM_TX_CLASS_BASE + 13) +#define V4L2_CID_RDS_TX_ALT_FREQS_ENABLE (V4L2_CID_FM_TX_CLASS_BASE + 14) +#define V4L2_CID_RDS_TX_ALT_FREQS (V4L2_CID_FM_TX_CLASS_BASE + 15) #define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64) #define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65) @@ -803,6 +831,9 @@ enum v4l2_flash_strobe_source { #define V4L2_FLASH_FAULT_SHORT_CIRCUIT (1 << 3) #define V4L2_FLASH_FAULT_OVER_CURRENT (1 << 4) #define V4L2_FLASH_FAULT_INDICATOR (1 << 5) +#define V4L2_FLASH_FAULT_UNDER_VOLTAGE (1 << 6) +#define V4L2_FLASH_FAULT_INPUT_VOLTAGE (1 << 7) +#define V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE (1 << 8) #define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11) #define V4L2_CID_FLASH_READY (V4L2_CID_FLASH_CLASS_BASE + 12) @@ -840,6 +871,10 @@ enum v4l2_jpeg_chroma_subsampling { #define V4L2_CID_VBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 1) #define V4L2_CID_HBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 2) #define V4L2_CID_ANALOGUE_GAIN (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 3) +#define V4L2_CID_TEST_PATTERN_RED (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 4) +#define V4L2_CID_TEST_PATTERN_GREENR (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5) +#define V4L2_CID_TEST_PATTERN_BLUE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6) +#define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7) /* Image processing controls */ @@ -885,5 +920,40 @@ enum v4l2_deemphasis { }; #define V4L2_CID_RDS_RECEPTION (V4L2_CID_FM_RX_CLASS_BASE + 2) +#define V4L2_CID_RDS_RX_PTY (V4L2_CID_FM_RX_CLASS_BASE + 3) +#define V4L2_CID_RDS_RX_PS_NAME (V4L2_CID_FM_RX_CLASS_BASE + 4) +#define V4L2_CID_RDS_RX_RADIO_TEXT (V4L2_CID_FM_RX_CLASS_BASE + 5) +#define V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT (V4L2_CID_FM_RX_CLASS_BASE + 6) +#define V4L2_CID_RDS_RX_TRAFFIC_PROGRAM (V4L2_CID_FM_RX_CLASS_BASE + 7) +#define V4L2_CID_RDS_RX_MUSIC_SPEECH (V4L2_CID_FM_RX_CLASS_BASE + 8) + +#define V4L2_CID_RF_TUNER_CLASS_BASE (V4L2_CTRL_CLASS_RF_TUNER | 0x900) +#define V4L2_CID_RF_TUNER_CLASS (V4L2_CTRL_CLASS_RF_TUNER | 1) + +#define V4L2_CID_RF_TUNER_BANDWIDTH_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 11) +#define V4L2_CID_RF_TUNER_BANDWIDTH (V4L2_CID_RF_TUNER_CLASS_BASE + 12) +#define V4L2_CID_RF_TUNER_LNA_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 41) +#define V4L2_CID_RF_TUNER_LNA_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 42) +#define V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 51) +#define V4L2_CID_RF_TUNER_MIXER_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 52) +#define V4L2_CID_RF_TUNER_IF_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 61) +#define V4L2_CID_RF_TUNER_IF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 62) +#define V4L2_CID_RF_TUNER_PLL_LOCK (V4L2_CID_RF_TUNER_CLASS_BASE + 91) + + +/* Detection-class control IDs defined by V4L2 */ +#define V4L2_CID_DETECT_CLASS_BASE (V4L2_CTRL_CLASS_DETECT | 0x900) +#define V4L2_CID_DETECT_CLASS (V4L2_CTRL_CLASS_DETECT | 1) + +#define V4L2_CID_DETECT_MD_MODE (V4L2_CID_DETECT_CLASS_BASE + 1) +enum v4l2_detect_md_mode { + V4L2_DETECT_MD_MODE_DISABLED = 0, + V4L2_DETECT_MD_MODE_GLOBAL = 1, + V4L2_DETECT_MD_MODE_THRESHOLD_GRID = 2, + V4L2_DETECT_MD_MODE_REGION_GRID = 3, +}; +#define V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD (V4L2_CID_DETECT_CLASS_BASE + 2) +#define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3) +#define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4) #endif diff --git a/sys/v4l2/ext/videodev2.h b/sys/v4l2/ext/videodev2.h index 2b4d1f5e0d0b098a84802039a3912d11c35d1173..68e82be4467e8d6ec5cc0dfbb81221090f941ed3 100644 --- a/sys/v4l2/ext/videodev2.h +++ b/sys/v4l2/ext/videodev2.h @@ -77,6 +77,7 @@ /* Four-character-code (FOURCC) */ #define v4l2_fourcc(a, b, c, d)\ ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24)) +#define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1 << 31)) /* * E N U M S @@ -122,6 +123,10 @@ enum v4l2_field { (field) == V4L2_FIELD_INTERLACED_BT ||\ (field) == V4L2_FIELD_SEQ_TB ||\ (field) == V4L2_FIELD_SEQ_BT) +#define V4L2_FIELD_HAS_T_OR_B(field) \ + ((field) == V4L2_FIELD_BOTTOM ||\ + (field) == V4L2_FIELD_TOP ||\ + (field) == V4L2_FIELD_ALTERNATE) enum v4l2_buf_type { V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, @@ -137,6 +142,7 @@ enum v4l2_buf_type { #endif V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10, + V4L2_BUF_TYPE_SDR_CAPTURE = 11, /* Deprecated, do not use */ V4L2_BUF_TYPE_PRIVATE = 0x80, }; @@ -157,6 +163,8 @@ enum v4l2_tuner_type { V4L2_TUNER_RADIO = 1, V4L2_TUNER_ANALOG_TV = 2, V4L2_TUNER_DIGITAL_TV = 3, + V4L2_TUNER_ADC = 4, + V4L2_TUNER_RF = 5, }; enum v4l2_memory { @@ -168,32 +176,181 @@ enum v4l2_memory { /* see also http://vektor.theorem.ca/graphics/ycbcr/ */ enum v4l2_colorspace { - /* ITU-R 601 -- broadcast NTSC/PAL */ + /* + * Default colorspace, i.e. let the driver figure it out. + * Can only be used with video capture. + */ + V4L2_COLORSPACE_DEFAULT = 0, + + /* SMPTE 170M: used for broadcast NTSC/PAL SDTV */ V4L2_COLORSPACE_SMPTE170M = 1, - /* 1125-Line (US) HDTV */ + /* Obsolete pre-1998 SMPTE 240M HDTV standard, superseded by Rec 709 */ V4L2_COLORSPACE_SMPTE240M = 2, - /* HD and modern captures. */ + /* Rec.709: used for HDTV */ V4L2_COLORSPACE_REC709 = 3, - /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */ + /* + * Deprecated, do not use. No driver will ever return this. This was + * based on a misunderstanding of the bt878 datasheet. + */ V4L2_COLORSPACE_BT878 = 4, - /* These should be useful. Assume 601 extents. */ + /* + * NTSC 1953 colorspace. This only makes sense when dealing with + * really, really old NTSC recordings. Superseded by SMPTE 170M. + */ V4L2_COLORSPACE_470_SYSTEM_M = 5, + + /* + * EBU Tech 3213 PAL/SECAM colorspace. This only makes sense when + * dealing with really old PAL/SECAM recordings. Superseded by + * SMPTE 170M. + */ V4L2_COLORSPACE_470_SYSTEM_BG = 6, - /* I know there will be cameras that send this. So, this is - * unspecified chromaticities and full 0-255 on each of the - * Y'CbCr components + /* + * Effectively shorthand for V4L2_COLORSPACE_SRGB, V4L2_YCBCR_ENC_601 + * and V4L2_QUANTIZATION_FULL_RANGE. To be used for (Motion-)JPEG. */ V4L2_COLORSPACE_JPEG = 7, - /* For RGB colourspaces, this is probably a good start. */ + /* For RGB colorspaces such as produces by most webcams. */ V4L2_COLORSPACE_SRGB = 8, + + /* AdobeRGB colorspace */ + V4L2_COLORSPACE_ADOBERGB = 9, + + /* BT.2020 colorspace, used for UHDTV. */ + V4L2_COLORSPACE_BT2020 = 10, + + /* Raw colorspace: for RAW unprocessed images */ + V4L2_COLORSPACE_RAW = 11, +}; + +/* + * Determine how COLORSPACE_DEFAULT should map to a proper colorspace. + * This depends on whether this is a SDTV image (use SMPTE 170M), an + * HDTV image (use Rec. 709), or something else (use sRGB). + */ +#define V4L2_MAP_COLORSPACE_DEFAULT(is_sdtv, is_hdtv) \ + ((is_sdtv) ? V4L2_COLORSPACE_SMPTE170M : \ + ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB)) + +enum v4l2_xfer_func { + /* + * Mapping of V4L2_XFER_FUNC_DEFAULT to actual transfer functions + * for the various colorspaces: + * + * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M, + * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_REC709 and + * V4L2_COLORSPACE_BT2020: V4L2_XFER_FUNC_709 + * + * V4L2_COLORSPACE_SRGB, V4L2_COLORSPACE_JPEG: V4L2_XFER_FUNC_SRGB + * + * V4L2_COLORSPACE_ADOBERGB: V4L2_XFER_FUNC_ADOBERGB + * + * V4L2_COLORSPACE_SMPTE240M: V4L2_XFER_FUNC_SMPTE240M + * + * V4L2_COLORSPACE_RAW: V4L2_XFER_FUNC_NONE + */ + V4L2_XFER_FUNC_DEFAULT = 0, + V4L2_XFER_FUNC_709 = 1, + V4L2_XFER_FUNC_SRGB = 2, + V4L2_XFER_FUNC_ADOBERGB = 3, + V4L2_XFER_FUNC_SMPTE240M = 4, + V4L2_XFER_FUNC_NONE = 5, +}; + +/* + * Determine how XFER_FUNC_DEFAULT should map to a proper transfer function. + * This depends on the colorspace. + */ +#define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \ + ((colsp) == V4L2_XFER_FUNC_ADOBERGB ? V4L2_XFER_FUNC_ADOBERGB : \ + ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \ + ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \ + ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? \ + V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709)))) + +enum v4l2_ycbcr_encoding { + /* + * Mapping of V4L2_YCBCR_ENC_DEFAULT to actual encodings for the + * various colorspaces: + * + * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M, + * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_ADOBERGB and + * V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601 + * + * V4L2_COLORSPACE_REC709: V4L2_YCBCR_ENC_709 + * + * V4L2_COLORSPACE_SRGB: V4L2_YCBCR_ENC_SYCC + * + * V4L2_COLORSPACE_BT2020: V4L2_YCBCR_ENC_BT2020 + * + * V4L2_COLORSPACE_SMPTE240M: V4L2_YCBCR_ENC_SMPTE240M + */ + V4L2_YCBCR_ENC_DEFAULT = 0, + + /* ITU-R 601 -- SDTV */ + V4L2_YCBCR_ENC_601 = 1, + + /* Rec. 709 -- HDTV */ + V4L2_YCBCR_ENC_709 = 2, + + /* ITU-R 601/EN 61966-2-4 Extended Gamut -- SDTV */ + V4L2_YCBCR_ENC_XV601 = 3, + + /* Rec. 709/EN 61966-2-4 Extended Gamut -- HDTV */ + V4L2_YCBCR_ENC_XV709 = 4, + + /* sYCC (Y'CbCr encoding of sRGB) */ + V4L2_YCBCR_ENC_SYCC = 5, + + /* BT.2020 Non-constant Luminance Y'CbCr */ + V4L2_YCBCR_ENC_BT2020 = 6, + + /* BT.2020 Constant Luminance Y'CbcCrc */ + V4L2_YCBCR_ENC_BT2020_CONST_LUM = 7, + + /* SMPTE 240M -- Obsolete HDTV */ + V4L2_YCBCR_ENC_SMPTE240M = 8, }; +/* + * Determine how YCBCR_ENC_DEFAULT should map to a proper Y'CbCr encoding. + * This depends on the colorspace. + */ +#define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) \ + ((colsp) == V4L2_COLORSPACE_REC709 ? V4L2_YCBCR_ENC_709 : \ + ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : \ + ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : \ + V4L2_YCBCR_ENC_601))) + +enum v4l2_quantization { + /* + * The default for R'G'B' quantization is always full range, except + * for the BT2020 colorspace. For Y'CbCr the quantization is always + * limited range, except for COLORSPACE_JPEG, SYCC, XV601 or XV709: + * those are full range. + */ + V4L2_QUANTIZATION_DEFAULT = 0, + V4L2_QUANTIZATION_FULL_RANGE = 1, + V4L2_QUANTIZATION_LIM_RANGE = 2, +}; + +/* + * Determine how QUANTIZATION_DEFAULT should map to a proper quantization. + * This depends on whether the image is RGB or not, the colorspace and the + * Y'CbCr encoding. + */ +#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb, colsp, ycbcr_enc) \ + (((is_rgb) && (colsp) == V4L2_COLORSPACE_BT2020) ? V4L2_QUANTIZATION_LIM_RANGE : \ + (((is_rgb) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \ + (ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) ? \ + V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)) + enum v4l2_priority { V4L2_PRIORITY_UNSET = 0, /* not initialized */ V4L2_PRIORITY_BACKGROUND = 1, @@ -205,8 +362,8 @@ enum v4l2_priority { struct v4l2_rect { __s32 left; __s32 top; - __s32 width; - __s32 height; + __u32 width; + __u32 height; }; struct v4l2_fract { @@ -262,6 +419,9 @@ struct v4l2_capability { #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ #define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */ +#define V4L2_CAP_SDR_CAPTURE 0x00100000 /* Is a SDR capture device */ +#define V4L2_CAP_EXT_PIX_FORMAT 0x00200000 /* Supports the extended pixel format */ + #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ #define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */ @@ -280,6 +440,10 @@ struct v4l2_pix_format { __u32 sizeimage; __u32 colorspace; /* enum v4l2_colorspace */ __u32 priv; /* private data, depends on pixelformat */ + __u32 flags; /* format flags (V4L2_PIX_FMT_FLAG_*) */ + __u32 ycbcr_enc; /* enum v4l2_ycbcr_encoding */ + __u32 quantization; /* enum v4l2_quantization */ + __u32 xfer_func; /* enum v4l2_xfer_func */ }; /* Pixel format FOURCC depth Description */ @@ -287,15 +451,25 @@ struct v4l2_pix_format { /* RGB formats */ #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ +#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */ +#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */ #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ +#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */ +#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */ #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ +#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */ +#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */ #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ #define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */ #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ +#define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */ +#define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */ #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ +#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */ +#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */ /* Grey formats */ #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ @@ -304,6 +478,7 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ +#define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */ /* Grey bit-packed formats */ #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ @@ -364,10 +539,11 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10 GBGB.. RGRG.. */ #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10 GRGR.. BGBG.. */ #define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10 RGRG.. GBGB.. */ -#define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12 BGBG.. GRGR.. */ -#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */ -#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */ -#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */ + /* 10bit raw bayer packed, 5 bytes for every 4 pixels */ +#define V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A') +#define V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A') +#define V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A') +#define V4L2_PIX_FMT_SRGGB10P v4l2_fourcc('p', 'R', 'A', 'A') /* 10bit raw bayer a-law compressed to 8 bits */ #define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8') #define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8') @@ -378,10 +554,10 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8') #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0') #define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8') - /* - * 10bit raw bayer, expanded to 16 bits - * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... - */ +#define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12 BGBG.. GRGR.. */ +#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */ +#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */ +#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */ #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ /* compressed formats */ @@ -429,6 +605,19 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */ #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ +/* SDR formats - used only for Software Defined Radio devices */ +#define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ +#define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */ +#define V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8') /* complex s8 */ +#define V4L2_SDR_FMT_CS14LE v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */ +#define V4L2_SDR_FMT_RU12LE v4l2_fourcc('R', 'U', '1', '2') /* real u12le */ + +/* priv field value to indicates that subsequent fields are valid. */ +#define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe + +/* Flags */ +#define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001 + /* * F O R M A T E N U M E R A T I O N */ @@ -638,7 +827,6 @@ struct v4l2_plane { * @length: size in bytes of the buffer (NOT its payload) for single-plane * buffers (when type != *_MPLANE); number of elements in the * planes array for multi-plane buffers - * @input: input number from which the video data has has been captured * * Contains data exchanged by application and driver using one of the Streaming * I/O methods. @@ -667,24 +855,38 @@ struct v4l2_buffer { }; /* Flags for 'flags' field */ -#define V4L2_BUF_FLAG_MAPPED 0x0001 /* Buffer is mapped (flag) */ -#define V4L2_BUF_FLAG_QUEUED 0x0002 /* Buffer is queued for processing */ -#define V4L2_BUF_FLAG_DONE 0x0004 /* Buffer is ready */ -#define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */ -#define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */ -#define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */ +/* Buffer is mapped (flag) */ +#define V4L2_BUF_FLAG_MAPPED 0x00000001 +/* Buffer is queued for processing */ +#define V4L2_BUF_FLAG_QUEUED 0x00000002 +/* Buffer is ready */ +#define V4L2_BUF_FLAG_DONE 0x00000004 +/* Image is a keyframe (I-frame) */ +#define V4L2_BUF_FLAG_KEYFRAME 0x00000008 +/* Image is a P-frame */ +#define V4L2_BUF_FLAG_PFRAME 0x00000010 +/* Image is a B-frame */ +#define V4L2_BUF_FLAG_BFRAME 0x00000020 /* Buffer is ready, but the data contained within is corrupted. */ -#define V4L2_BUF_FLAG_ERROR 0x0040 -#define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */ -#define V4L2_BUF_FLAG_PREPARED 0x0400 /* Buffer is prepared for queuing */ +#define V4L2_BUF_FLAG_ERROR 0x00000040 +/* timecode field is valid */ +#define V4L2_BUF_FLAG_TIMECODE 0x00000100 +/* Buffer is prepared for queuing */ +#define V4L2_BUF_FLAG_PREPARED 0x00000400 /* Cache handling flags */ -#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x0800 -#define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x1000 +#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x00000800 +#define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x00001000 /* Timestamp type */ -#define V4L2_BUF_FLAG_TIMESTAMP_MASK 0xe000 -#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x0000 -#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x2000 -#define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x4000 +#define V4L2_BUF_FLAG_TIMESTAMP_MASK 0x0000e000 +#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x00000000 +#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x00002000 +#define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x00004000 +/* Timestamp sources. */ +#define V4L2_BUF_FLAG_TSTAMP_SRC_MASK 0x00070000 +#define V4L2_BUF_FLAG_TSTAMP_SRC_EOF 0x00000000 +#define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000 +/* mem2mem encoder/decoder */ +#define V4L2_BUF_FLAG_LAST 0x00100000 /** * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor @@ -722,7 +924,16 @@ struct v4l2_framebuffer { /* FIXME: in theory we should pass something like PCI device + memory * region + offset instead of some physical address */ void *base; - struct v4l2_pix_format fmt; + struct { + __u32 width; + __u32 height; + __u32 pixelformat; + __u32 field; /* enum v4l2_field */ + __u32 bytesperline; /* for padding, zero if unused */ + __u32 sizeimage; + __u32 colorspace; /* enum v4l2_colorspace */ + __u32 priv; /* reserved field, set to 0 */ + } fmt; }; /* Flags for the 'capability' field. Read only */ #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001 @@ -744,16 +955,16 @@ struct v4l2_framebuffer { struct v4l2_clip { struct v4l2_rect c; - struct v4l2_clip *next; + struct v4l2_clip __user *next; }; struct v4l2_window { struct v4l2_rect w; __u32 field; /* enum v4l2_field */ __u32 chromakey; - struct v4l2_clip *clips; + struct v4l2_clip __user *clips; __u32 clipcount; - void *bitmap; + void __user *bitmap; __u8 global_alpha; }; @@ -1054,17 +1265,23 @@ struct v4l2_bt_timings { exactly the same number of half-lines. Whether half-lines can be detected or used depends on the hardware. */ #define V4L2_DV_FL_HALF_LINE (1 << 3) +/* If set, then this is a Consumer Electronics (CE) video format. Such formats + * differ from other formats (commonly called IT formats) in that if RGB + * encoding is used then by default the RGB values use limited range (i.e. + * use the range 16-235) as opposed to 0-255. All formats defined in CEA-861 + * except for the 640x480 format are CE formats. */ +#define V4L2_DV_FL_IS_CE_VIDEO (1 << 4) /* A few useful defines to calculate the total blanking and frame sizes */ #define V4L2_DV_BT_BLANKING_WIDTH(bt) \ - (bt->hfrontporch + bt->hsync + bt->hbackporch) + ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch) #define V4L2_DV_BT_FRAME_WIDTH(bt) \ - (bt->width + V4L2_DV_BT_BLANKING_WIDTH(bt)) + ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt)) #define V4L2_DV_BT_BLANKING_HEIGHT(bt) \ - (bt->vfrontporch + bt->vsync + bt->vbackporch + \ - bt->il_vfrontporch + bt->il_vsync + bt->il_vbackporch) + ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \ + (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) #define V4L2_DV_BT_FRAME_HEIGHT(bt) \ - (bt->height + V4L2_DV_BT_BLANKING_HEIGHT(bt)) + ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt)) /** struct v4l2_dv_timings - DV timings * @type: the type of the timings @@ -1084,12 +1301,15 @@ struct v4l2_dv_timings { /** struct v4l2_enum_dv_timings - DV timings enumeration * @index: enumeration index + * @pad: the pad number for which to enumerate timings (used with + * v4l-subdev nodes only) * @reserved: must be zeroed * @timings: the timings for the given index */ struct v4l2_enum_dv_timings { __u32 index; - __u32 reserved[3]; + __u32 pad; + __u32 reserved[2]; struct v4l2_dv_timings timings; }; @@ -1127,11 +1347,14 @@ struct v4l2_bt_timings_cap { /** struct v4l2_dv_timings_cap - DV timings capabilities * @type: the type of the timings (same as in struct v4l2_dv_timings) + * @pad: the pad number for which to query capabilities (used with + * v4l-subdev nodes only) * @bt: the BT656/1120 timings capabilities */ struct v4l2_dv_timings_cap { __u32 type; - __u32 reserved[3]; + __u32 pad; + __u32 reserved[2]; union { struct v4l2_bt_timings_cap bt; __u32 raw_data[32]; @@ -1186,6 +1409,7 @@ struct v4l2_input { #define V4L2_IN_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ #define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS /* For compatibility */ #define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */ +#define V4L2_IN_CAP_NATIVE_SIZE 0x00000008 /* Supports setting native size */ /* * V I D E O O U T P U T S @@ -1209,6 +1433,7 @@ struct v4l2_output { #define V4L2_OUT_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ #define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */ #define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */ +#define V4L2_OUT_CAP_NATIVE_SIZE 0x00000008 /* Supports setting native size */ /* * C O N T R O L S @@ -1225,7 +1450,11 @@ struct v4l2_ext_control { union { __s32 value; __s64 value64; - char *string; + char __user *string; + __u8 __user *p_u8; + __u16 __user *p_u16; + __u32 __user *p_u32; + void __user *ptr; }; } __attribute__ ((packed)); @@ -1240,6 +1469,7 @@ struct v4l2_ext_controls { #define V4L2_CTRL_ID_MASK (0x0fffffff) #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) +#define V4L2_CTRL_MAX_DIMS (4) enum v4l2_ctrl_type { V4L2_CTRL_TYPE_INTEGER = 1, @@ -1250,7 +1480,13 @@ enum v4l2_ctrl_type { V4L2_CTRL_TYPE_CTRL_CLASS = 6, V4L2_CTRL_TYPE_STRING = 7, V4L2_CTRL_TYPE_BITMASK = 8, - V4L2_CTRL_TYPE_INTEGER_MENU = 9, + V4L2_CTRL_TYPE_INTEGER_MENU = 9, + + /* Compound types are >= 0x0100 */ + V4L2_CTRL_COMPOUND_TYPES = 0x0100, + V4L2_CTRL_TYPE_U8 = 0x0100, + V4L2_CTRL_TYPE_U16 = 0x0101, + V4L2_CTRL_TYPE_U32 = 0x0102, }; /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ @@ -1266,6 +1502,23 @@ struct v4l2_queryctrl { __u32 reserved[2]; }; +/* Used in the VIDIOC_QUERY_EXT_CTRL ioctl for querying extended controls */ +struct v4l2_query_ext_ctrl { + __u32 id; + __u32 type; + char name[32]; + __s64 minimum; + __s64 maximum; + __u64 step; + __s64 default_value; + __u32 flags; + __u32 elem_size; + __u32 elems; + __u32 nr_of_dims; + __u32 dims[V4L2_CTRL_MAX_DIMS]; + __u32 reserved[32]; +}; + /* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */ struct v4l2_querymenu { __u32 id; @@ -1286,9 +1539,12 @@ struct v4l2_querymenu { #define V4L2_CTRL_FLAG_SLIDER 0x0020 #define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040 #define V4L2_CTRL_FLAG_VOLATILE 0x0080 +#define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100 +#define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200 -/* Query flag, to be ORed with the control ID */ +/* Query flags, to be ORed with the control ID */ #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000 +#define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000 /* User-class control IDs defined by V4L2 */ #define V4L2_CID_MAX_CTRLS 1024 @@ -1337,6 +1593,7 @@ struct v4l2_modulator { #define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200 #define V4L2_TUNER_CAP_FREQ_BANDS 0x0400 #define V4L2_TUNER_CAP_HWSEEK_PROG_LIM 0x0800 +#define V4L2_TUNER_CAP_1HZ 0x1000 /* Flags for the 'rxsubchans' field */ #define V4L2_TUNER_SUB_MONO 0x0001 @@ -1553,6 +1810,12 @@ struct v4l2_vbi_format { #define V4L2_VBI_UNSYNC (1 << 0) #define V4L2_VBI_INTERLACED (1 << 1) +/* ITU-R start lines for each field */ +#define V4L2_VBI_ITU_525_F1_START (1) +#define V4L2_VBI_ITU_525_F2_START (264) +#define V4L2_VBI_ITU_625_F1_START (1) +#define V4L2_VBI_ITU_625_F2_START (314) + /* Sliced VBI * * This implements is a proposal V4L2 API to allow SLICED VBI @@ -1663,8 +1926,8 @@ struct v4l2_mpeg_vbi_fmt_ivtv { */ struct v4l2_plane_pix_format { __u32 sizeimage; - __u16 bytesperline; - __u16 reserved[7]; + __u32 bytesperline; + __u16 reserved[6]; } __attribute__ ((packed)); /** @@ -1676,6 +1939,10 @@ struct v4l2_plane_pix_format { * @colorspace: enum v4l2_colorspace; supplemental to pixelformat * @plane_fmt: per-plane information * @num_planes: number of planes for this format + * @flags: format flags (V4L2_PIX_FMT_FLAG_*) + * @ycbcr_enc: enum v4l2_ycbcr_encoding, Y'CbCr encoding + * @quantization: enum v4l2_quantization, colorspace quantization + * @xfer_func: enum v4l2_xfer_func, colorspace transfer function */ struct v4l2_pix_format_mplane { __u32 width; @@ -1686,7 +1953,22 @@ struct v4l2_pix_format_mplane { struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES]; __u8 num_planes; - __u8 reserved[11]; + __u8 flags; + __u8 ycbcr_enc; + __u8 quantization; + __u8 xfer_func; + __u8 reserved[7]; +} __attribute__ ((packed)); + +/** + * struct v4l2_sdr_format - SDR format definition + * @pixelformat: little endian four character code (fourcc) + * @buffersize: maximum size in bytes required for data + */ +struct v4l2_sdr_format { + __u32 pixelformat; + __u32 buffersize; + __u8 reserved[24]; } __attribute__ ((packed)); /** @@ -1707,6 +1989,7 @@ struct v4l2_format { struct v4l2_window win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */ struct v4l2_vbi_format vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */ struct v4l2_sliced_vbi_format sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ + struct v4l2_sdr_format sdr; /* V4L2_BUF_TYPE_SDR_CAPTURE */ __u8 raw_data[200]; /* user-defined */ } fmt; }; @@ -1731,6 +2014,8 @@ struct v4l2_streamparm { #define V4L2_EVENT_EOS 2 #define V4L2_EVENT_CTRL 3 #define V4L2_EVENT_FRAME_SYNC 4 +#define V4L2_EVENT_SOURCE_CHANGE 5 +#define V4L2_EVENT_MOTION_DET 6 #define V4L2_EVENT_PRIVATE_START 0x08000000 /* Payload for V4L2_EVENT_VSYNC */ @@ -1762,12 +2047,35 @@ struct v4l2_event_frame_sync { __u32 frame_sequence; }; +#define V4L2_EVENT_SRC_CH_RESOLUTION (1 << 0) + +struct v4l2_event_src_change { + __u32 changes; +}; + +#define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ (1 << 0) + +/** + * struct v4l2_event_motion_det - motion detection event + * @flags: if V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ is set, then the + * frame_sequence field is valid. + * @frame_sequence: the frame sequence number associated with this event. + * @region_mask: which regions detected motion. + */ +struct v4l2_event_motion_det { + __u32 flags; + __u32 frame_sequence; + __u32 region_mask; +}; + struct v4l2_event { __u32 type; union { struct v4l2_event_vsync vsync; struct v4l2_event_ctrl ctrl; struct v4l2_event_frame_sync frame_sync; + struct v4l2_event_src_change src_change; + struct v4l2_event_motion_det motion_det; __u8 data[64]; } u; __u32 pending; @@ -1883,6 +2191,8 @@ struct v4l2_create_buffers { #define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu) #define VIDIOC_G_INPUT _IOR('V', 38, int) #define VIDIOC_S_INPUT _IOWR('V', 39, int) +#define VIDIOC_G_EDID _IOWR('V', 40, struct v4l2_edid) +#define VIDIOC_S_EDID _IOWR('V', 41, struct v4l2_edid) #define VIDIOC_G_OUTPUT _IOR('V', 46, int) #define VIDIOC_S_OUTPUT _IOWR('V', 47, int) #define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output) @@ -1956,6 +2266,8 @@ struct v4l2_create_buffers { Never use these in applications! */ #define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info) +#define VIDIOC_QUERY_EXT_CTRL _IOWR('V', 103, struct v4l2_query_ext_ctrl) + /* Reminder: when adding new ioctls please add support for them to drivers/media/video/v4l2-compat-ioctl32.c as well! */ diff --git a/sys/v4l2/gstv4l2allocator.c b/sys/v4l2/gstv4l2allocator.c index b3d02ebc754b7c2298929b79e9bf38eac9ee7af1..6dd39bf3c4132d3d0db452e3ff5357861bc84ce0 100644 --- a/sys/v4l2/gstv4l2allocator.c +++ b/sys/v4l2/gstv4l2allocator.c @@ -1269,8 +1269,9 @@ done: return ret; } -GstV4l2MemoryGroup * -gst_v4l2_allocator_dqbuf (GstV4l2Allocator * allocator) +GstFlowReturn +gst_v4l2_allocator_dqbuf (GstV4l2Allocator * allocator, + GstV4l2MemoryGroup ** group_out) { struct v4l2_buffer buffer = { 0 }; struct v4l2_plane planes[VIDEO_MAX_PLANES] = { {0} }; @@ -1278,7 +1279,7 @@ gst_v4l2_allocator_dqbuf (GstV4l2Allocator * allocator) GstV4l2MemoryGroup *group = NULL; - g_return_val_if_fail (g_atomic_int_get (&allocator->active), FALSE); + g_return_val_if_fail (g_atomic_int_get (&allocator->active), GST_FLOW_ERROR); buffer.type = allocator->type; buffer.memory = allocator->memory; @@ -1296,7 +1297,7 @@ gst_v4l2_allocator_dqbuf (GstV4l2Allocator * allocator) if (!IS_QUEUED (group->buffer)) { GST_ERROR_OBJECT (allocator, "buffer %i was not queued, this indicate a driver bug.", buffer.index); - return NULL; + return GST_FLOW_ERROR; } group->buffer = buffer; @@ -1334,9 +1335,15 @@ gst_v4l2_allocator_dqbuf (GstV4l2Allocator * allocator) for (i = 0; i < group->n_mem; i++) gst_memory_unref (group->mem[i]); - return group; + *group_out = group; + return GST_FLOW_OK; error: + if (errno == EPIPE) { + GST_DEBUG_OBJECT (allocator, "broken pipe signals last buffer"); + return GST_FLOW_EOS; + } + GST_ERROR_OBJECT (allocator, "failed dequeuing a %s buffer: %s", memory_type_to_str (allocator->memory), g_strerror (errno)); @@ -1378,7 +1385,7 @@ error: break; } - return NULL; + return GST_FLOW_ERROR; } void diff --git a/sys/v4l2/gstv4l2allocator.h b/sys/v4l2/gstv4l2allocator.h index 71c64a407744d8111c1e72b410a713bfa1d54135..a26038977f86b5808df92ccafb7ea8090ed93faf 100644 --- a/sys/v4l2/gstv4l2allocator.h +++ b/sys/v4l2/gstv4l2allocator.h @@ -148,7 +148,8 @@ void gst_v4l2_allocator_flush (GstV4l2Allocator * alloc gboolean gst_v4l2_allocator_qbuf (GstV4l2Allocator * allocator, GstV4l2MemoryGroup * group); -GstV4l2MemoryGroup* gst_v4l2_allocator_dqbuf (GstV4l2Allocator * allocator); +GstFlowReturn gst_v4l2_allocator_dqbuf (GstV4l2Allocator * allocator, + GstV4l2MemoryGroup ** group); void gst_v4l2_allocator_reset_group (GstV4l2Allocator * allocator, GstV4l2MemoryGroup * group); diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c index 7c963cc572f9f62bb23c5b42aef35e3a62a4f2e5..bcf167d58433f901fbf27b4d7002f26af7146ef7 100644 --- a/sys/v4l2/gstv4l2bufferpool.c +++ b/sys/v4l2/gstv4l2bufferpool.c @@ -1139,8 +1139,10 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer) GST_LOG_OBJECT (pool, "dequeueing a buffer"); - group = gst_v4l2_allocator_dqbuf (pool->vallocator); - if (group == NULL) + res = gst_v4l2_allocator_dqbuf (pool->vallocator, &group); + if (res == GST_FLOW_EOS) + goto eos; + if (res != GST_FLOW_OK) goto dqbuf_failed; /* get our GstBuffer with that index from the pool, if the buffer was @@ -1261,6 +1263,10 @@ poll_failed: GST_DEBUG_OBJECT (pool, "poll error %s", gst_flow_get_name (res)); return res; } +eos: + { + return GST_FLOW_EOS; + } dqbuf_failed: { return GST_FLOW_ERROR; diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index d76b9a2c61cbb96358aeb1eac531f636beb58c23..ce2882d0c8b184c0e8f5990d0e3edbbf5336e395 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -1686,10 +1686,12 @@ gst_v4l2_object_get_interlace_mode (enum v4l2_field field, static gboolean gst_v4l2_object_get_colorspace (enum v4l2_colorspace colorspace, - GstVideoColorimetry * cinfo) + enum v4l2_quantization range, enum v4l2_ycbcr_encoding matrix, + enum v4l2_xfer_func transfer, GstVideoColorimetry * cinfo) { - gboolean ret = FALSE; + gboolean ret = TRUE; + /* First step, set the defaults for each primaries */ switch (colorspace) { case V4L2_COLORSPACE_SMPTE170M: ret = gst_video_colorimetry_from_string (cinfo, @@ -1699,19 +1701,128 @@ gst_v4l2_object_get_colorspace (enum v4l2_colorspace colorspace, ret = gst_video_colorimetry_from_string (cinfo, GST_VIDEO_COLORIMETRY_BT709); break; + case V4L2_COLORSPACE_SRGB: + case V4L2_COLORSPACE_JPEG: + /* This is in fact sYCC */ + cinfo->range = GST_VIDEO_COLOR_RANGE_0_255; + cinfo->matrix = GST_VIDEO_COLOR_MATRIX_BT601; + cinfo->transfer = GST_VIDEO_TRANSFER_SRGB; + cinfo->primaries = GST_VIDEO_COLOR_PRIMARIES_BT709; + break; + case V4L2_COLORSPACE_ADOBERGB: + GST_FIXME ("AdobeRGB is not yet supported by GStreamer"); + /* We are missing the primaries and the transfer function */ + ret = FALSE; + break; + case V4L2_COLORSPACE_BT2020: + ret = gst_video_colorimetry_from_string (cinfo, + GST_VIDEO_COLORIMETRY_BT2020); + break; case V4L2_COLORSPACE_SMPTE240M: ret = gst_video_colorimetry_from_string (cinfo, GST_VIDEO_COLORIMETRY_SMPTE240M); break; - case V4L2_COLORSPACE_SRGB: - ret = gst_video_colorimetry_from_string (cinfo, - GST_VIDEO_COLORIMETRY_SRGB); + case V4L2_COLORSPACE_470_SYSTEM_M: + cinfo->range = GST_VIDEO_COLOR_RANGE_16_235; + cinfo->matrix = GST_VIDEO_COLOR_MATRIX_BT601; + cinfo->transfer = GST_VIDEO_TRANSFER_BT709; + cinfo->primaries = GST_VIDEO_COLOR_PRIMARIES_BT470M; + break; + case V4L2_COLORSPACE_470_SYSTEM_BG: + cinfo->range = GST_VIDEO_COLOR_RANGE_16_235; + cinfo->matrix = GST_VIDEO_COLOR_MATRIX_BT601; + cinfo->transfer = GST_VIDEO_TRANSFER_BT709; + cinfo->primaries = GST_VIDEO_COLOR_PRIMARIES_BT470BG; + break; + case V4L2_COLORSPACE_RAW: + /* Explicitly unknown */ + cinfo->range = GST_VIDEO_COLOR_RANGE_UNKNOWN; + cinfo->matrix = GST_VIDEO_COLOR_MATRIX_UNKNOWN; + cinfo->transfer = GST_VIDEO_TRANSFER_UNKNOWN; + cinfo->primaries = GST_VIDEO_COLOR_PRIMARIES_UNKNOWN; break; default: GST_DEBUG ("Unknown enum v4l2_colorspace %d", colorspace); ret = FALSE; break; } + + if (!ret) + goto done; + + /* Second step, apply any custom variation */ + switch (range) { + case V4L2_QUANTIZATION_FULL_RANGE: + cinfo->range = GST_VIDEO_COLOR_RANGE_0_255; + break; + case V4L2_QUANTIZATION_LIM_RANGE: + cinfo->range = GST_VIDEO_COLOR_RANGE_16_235; + break; + case V4L2_QUANTIZATION_DEFAULT: + /* nothing, just use defaults for colorspace */ + break; + default: + GST_WARNING ("Unknown enum v4l2_quantization value %d", range); + cinfo->range = GST_VIDEO_COLOR_RANGE_UNKNOWN; + break; + } + + switch (matrix) { + case V4L2_YCBCR_ENC_XV601: + case V4L2_YCBCR_ENC_SYCC: + GST_FIXME ("XV601 and SYCC not defined, assuming 601"); + case V4L2_YCBCR_ENC_601: + cinfo->matrix = GST_VIDEO_COLOR_MATRIX_BT601; + break; + case V4L2_YCBCR_ENC_XV709: + GST_FIXME ("XV709 not defined, assuming 709"); + case V4L2_YCBCR_ENC_709: + cinfo->matrix = GST_VIDEO_COLOR_MATRIX_BT709; + break; + case V4L2_YCBCR_ENC_BT2020_CONST_LUM: + GST_FIXME ("BT2020 with constant lumma is not defined, assuming BT2020"); + case V4L2_YCBCR_ENC_BT2020: + cinfo->matrix = GST_VIDEO_COLOR_MATRIX_BT2020; + break; + case V4L2_YCBCR_ENC_SMPTE240M: + cinfo->matrix = GST_VIDEO_COLOR_MATRIX_SMPTE240M; + break; + case V4L2_YCBCR_ENC_DEFAULT: + /* nothing, just use defaults for colorspace */ + break; + default: + GST_WARNING ("Unknown enum v4l2_ycbcr_encoding value %d", matrix); + cinfo->matrix = GST_VIDEO_COLOR_MATRIX_UNKNOWN; + break; + } + + switch (transfer) { + case V4L2_XFER_FUNC_709: + cinfo->transfer = GST_VIDEO_TRANSFER_BT709; + break; + case V4L2_XFER_FUNC_SRGB: + cinfo->transfer = GST_VIDEO_TRANSFER_SRGB; + break; + case V4L2_XFER_FUNC_ADOBERGB: + GST_FIXME ("AdobeRGB is not yet supported by GStreamer"); + cinfo->transfer = GST_VIDEO_TRANSFER_UNKNOWN; + break; + case V4L2_XFER_FUNC_SMPTE240M: + cinfo->transfer = GST_VIDEO_TRANSFER_SMPTE240M; + break; + case V4L2_XFER_FUNC_NONE: + cinfo->transfer = GST_VIDEO_TRANSFER_GAMMA10; + break; + case V4L2_XFER_FUNC_DEFAULT: + /* nothing, just use defaults for colorspace */ + break; + default: + GST_WARNING ("Unknown enum v4l2_xfer_func value %d", transfer); + cinfo->transfer = GST_VIDEO_TRANSFER_UNKNOWN; + break; + } + +done: return ret; } @@ -1823,13 +1934,24 @@ gst_v4l2_object_add_colorspace (GstV4l2Object * v4l2object, GstStructure * s, if (gst_v4l2_object_try_fmt (v4l2object, &fmt) == 0) { enum v4l2_colorspace colorspace; + enum v4l2_quantization range; + enum v4l2_ycbcr_encoding matrix; + enum v4l2_xfer_func transfer; - if (V4L2_TYPE_IS_MULTIPLANAR (v4l2object->type)) + if (V4L2_TYPE_IS_MULTIPLANAR (v4l2object->type)) { colorspace = fmt.fmt.pix_mp.colorspace; - else + range = fmt.fmt.pix_mp.quantization; + matrix = fmt.fmt.pix_mp.ycbcr_enc; + transfer = fmt.fmt.pix_mp.xfer_func; + } else { colorspace = fmt.fmt.pix.colorspace; + range = fmt.fmt.pix.quantization; + matrix = fmt.fmt.pix.ycbcr_enc; + transfer = fmt.fmt.pix.xfer_func; + } - if (gst_v4l2_object_get_colorspace (colorspace, &cinfo)) { + if (gst_v4l2_object_get_colorspace (colorspace, range, matrix, transfer, + &cinfo)) { g_value_init (&colorimetry, G_TYPE_STRING); g_value_take_string (&colorimetry, gst_video_colorimetry_to_string (&cinfo)); @@ -2692,6 +2814,9 @@ gst_v4l2_object_set_format_full (GstV4l2Object * v4l2object, GstCaps * caps, gint i = 0; gboolean is_mplane; enum v4l2_colorspace colorspace = 0; + enum v4l2_quantization range = 0; + enum v4l2_ycbcr_encoding matrix = 0; + enum v4l2_xfer_func transfer = 0; GST_V4L2_CHECK_OPEN (v4l2object); if (!try_only) @@ -2729,14 +2854,118 @@ gst_v4l2_object_set_format_full (GstV4l2Object * v4l2object, GstCaps * caps, } if (V4L2_TYPE_IS_OUTPUT (v4l2object->type)) { - /* We should set colorspace if we have it */ - if (gst_video_colorimetry_matches (&info.colorimetry, "bt601")) { - colorspace = V4L2_COLORSPACE_SMPTE170M; - } else if (gst_video_colorimetry_matches (&info.colorimetry, "bt709")) { - colorspace = V4L2_COLORSPACE_REC709; - } else if (gst_video_colorimetry_matches (&info.colorimetry, "smpte240m")) { - colorspace = V4L2_COLORSPACE_SMPTE240M; - } else { + /* We first pick th main colorspace from the primaries */ + switch (info.colorimetry.primaries) { + case GST_VIDEO_COLOR_PRIMARIES_BT709: + /* There is two colorspaces using these primaries, use the range to + * differentiate */ + if (info.colorimetry.range == GST_VIDEO_COLOR_RANGE_16_235) + colorspace = V4L2_COLORSPACE_REC709; + else + colorspace = V4L2_COLORSPACE_SRGB; + break; + case GST_VIDEO_COLOR_PRIMARIES_BT470M: + colorspace = V4L2_COLORSPACE_470_SYSTEM_M; + break; + case GST_VIDEO_COLOR_PRIMARIES_BT470BG: + colorspace = V4L2_COLORSPACE_470_SYSTEM_BG; + break; + case GST_VIDEO_COLOR_PRIMARIES_SMPTE170M: + colorspace = V4L2_COLORSPACE_SMPTE170M; + break; + case GST_VIDEO_COLOR_PRIMARIES_SMPTE240M: + colorspace = V4L2_COLORSPACE_SMPTE240M; + break; + + case GST_VIDEO_COLOR_PRIMARIES_FILM: + case GST_VIDEO_COLOR_PRIMARIES_UNKNOWN: + /* We don't know, we will guess */ + break; + + default: + GST_WARNING_OBJECT (v4l2object->element, + "Unknown colorimetry primaries %d", info.colorimetry.primaries); + break; + } + + switch (info.colorimetry.range) { + case GST_VIDEO_COLOR_RANGE_0_255: + range = V4L2_QUANTIZATION_FULL_RANGE; + break; + case GST_VIDEO_COLOR_RANGE_16_235: + range = V4L2_QUANTIZATION_LIM_RANGE; + break; + case GST_VIDEO_COLOR_RANGE_UNKNOWN: + /* We let the driver pick a default one */ + break; + default: + GST_WARNING_OBJECT (v4l2object->element, + "Unknown colorimetry range %d", info.colorimetry.range); + break; + } + + switch (info.colorimetry.matrix) { + case GST_VIDEO_COLOR_MATRIX_RGB: + /* Unspecified, leave to default */ + break; + /* FCC is about the same as BT601 with less digit */ + case GST_VIDEO_COLOR_MATRIX_FCC: + case GST_VIDEO_COLOR_MATRIX_BT601: + matrix = V4L2_YCBCR_ENC_601; + break; + case GST_VIDEO_COLOR_MATRIX_BT709: + matrix = V4L2_YCBCR_ENC_709; + break; + case GST_VIDEO_COLOR_MATRIX_SMPTE240M: + matrix = V4L2_YCBCR_ENC_SMPTE240M; + break; + case GST_VIDEO_COLOR_MATRIX_BT2020: + matrix = V4L2_YCBCR_ENC_BT2020; + break; + case GST_VIDEO_COLOR_MATRIX_UNKNOWN: + /* We let the driver pick a default one */ + break; + default: + GST_WARNING_OBJECT (v4l2object->element, + "Unknown colorimetry matrix %d", info.colorimetry.matrix); + break; + } + + switch (info.colorimetry.transfer) { + case GST_VIDEO_TRANSFER_GAMMA18: + case GST_VIDEO_TRANSFER_GAMMA20: + case GST_VIDEO_TRANSFER_GAMMA22: + case GST_VIDEO_TRANSFER_GAMMA28: + GST_WARNING_OBJECT (v4l2object->element, + "GAMMA 18, 20, 22, 28 transfer functions not supported"); + case GST_VIDEO_TRANSFER_GAMMA10: + transfer = V4L2_XFER_FUNC_NONE; + break; + case GST_VIDEO_TRANSFER_BT709: + transfer = V4L2_XFER_FUNC_709; + break; + case GST_VIDEO_TRANSFER_SMPTE240M: + transfer = V4L2_XFER_FUNC_SMPTE240M; + break; + case GST_VIDEO_TRANSFER_SRGB: + transfer = V4L2_XFER_FUNC_SRGB; + break; + case GST_VIDEO_TRANSFER_LOG100: + case GST_VIDEO_TRANSFER_LOG316: + GST_WARNING_OBJECT (v4l2object->element, + "LOG 100, 316 transfer functions not supported"); + /* FIXME No known sensible default, maybe AdobeRGB ? */ + break; + case GST_VIDEO_TRANSFER_UNKNOWN: + /* We let the driver pick a default one */ + break; + default: + GST_WARNING_OBJECT (v4l2object->element, + "Unknown colorimetry tranfer %d", info.colorimetry.transfer); + break; + } + + if (colorspace == 0) { /* Try to guess colorspace according to pixelformat and size */ if (GST_VIDEO_INFO_IS_YUV (&info)) { /* SD streams likely use SMPTE170M and HD streams REC709 */ @@ -2746,6 +2975,7 @@ gst_v4l2_object_set_format_full (GstV4l2Object * v4l2object, GstCaps * caps, colorspace = V4L2_COLORSPACE_REC709; } else if (GST_VIDEO_INFO_IS_RGB (&info)) { colorspace = V4L2_COLORSPACE_SRGB; + transfer = V4L2_XFER_FUNC_NONE; } } } @@ -2817,13 +3047,20 @@ gst_v4l2_object_set_format_full (GstV4l2Object * v4l2object, GstCaps * caps, #endif if (V4L2_TYPE_IS_OUTPUT (v4l2object->type)) { - if (is_mplane) + if (is_mplane) { format.fmt.pix_mp.colorspace = colorspace; - else + format.fmt.pix_mp.quantization = range; + format.fmt.pix_mp.ycbcr_enc = matrix; + format.fmt.pix_mp.xfer_func = transfer; + } else { format.fmt.pix.colorspace = colorspace; + format.fmt.pix.quantization = range; + format.fmt.pix.ycbcr_enc = matrix; + format.fmt.pix.xfer_func = transfer; + } - GST_DEBUG_OBJECT (v4l2object->element, "Desired colorspace is %d", - colorspace); + GST_DEBUG_OBJECT (v4l2object->element, "Desired colorspace is %d:%d:%d:%d", + colorspace, range, matrix, transfer); } if (try_only) { diff --git a/sys/v4l2/gstv4l2transform.c b/sys/v4l2/gstv4l2transform.c index cfcc3dde9a3a3d187843f33612111407ea0482d2..f7b0233b3a6f1ab6d761f02980d258ca3d3adae6 100644 --- a/sys/v4l2/gstv4l2transform.c +++ b/sys/v4l2/gstv4l2transform.c @@ -375,7 +375,7 @@ gst_v4l2_transform_caps_remove_format_info (GstCaps * caps) && gst_caps_features_is_equal (f, GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY)) gst_structure_remove_fields (st, "format", "colorimetry", "chroma-site", - NULL); + "width", "height", NULL); gst_caps_append_structure_full (res, st, gst_caps_features_copy (f)); } @@ -414,24 +414,437 @@ static GstCaps * gst_v4l2_transform_fixate_caps (GstBaseTransform * trans, GstPadDirection direction, GstCaps * caps, GstCaps * othercaps) { - GstCaps *result; + GstStructure *ins, *outs; + const GValue *from_par, *to_par; + GValue fpar = { 0, }, tpar = { + 0,}; + + othercaps = gst_caps_truncate (othercaps); + othercaps = gst_caps_make_writable (othercaps); GST_DEBUG_OBJECT (trans, "trying to fixate othercaps %" GST_PTR_FORMAT " based on caps %" GST_PTR_FORMAT, othercaps, caps); - result = gst_caps_intersect (othercaps, caps); - if (gst_caps_is_empty (result)) { - gst_caps_unref (result); - result = othercaps; + ins = gst_caps_get_structure (caps, 0); + outs = gst_caps_get_structure (othercaps, 0); + + from_par = gst_structure_get_value (ins, "pixel-aspect-ratio"); + to_par = gst_structure_get_value (outs, "pixel-aspect-ratio"); + + /* If we're fixating from the sinkpad we always set the PAR and + * assume that missing PAR on the sinkpad means 1/1 and + * missing PAR on the srcpad means undefined + */ + if (direction == GST_PAD_SINK) { + if (!from_par) { + g_value_init (&fpar, GST_TYPE_FRACTION); + gst_value_set_fraction (&fpar, 1, 1); + from_par = &fpar; + } + if (!to_par) { + g_value_init (&tpar, GST_TYPE_FRACTION_RANGE); + gst_value_set_fraction_range_full (&tpar, 1, G_MAXINT, G_MAXINT, 1); + to_par = &tpar; + } } else { - gst_caps_unref (othercaps); + if (!to_par) { + g_value_init (&tpar, GST_TYPE_FRACTION); + gst_value_set_fraction (&tpar, 1, 1); + to_par = &tpar; + + gst_structure_set (outs, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, + NULL); + } + if (!from_par) { + g_value_init (&fpar, GST_TYPE_FRACTION); + gst_value_set_fraction (&fpar, 1, 1); + from_par = &fpar; + } } - GST_DEBUG_OBJECT (trans, "now fixating %" GST_PTR_FORMAT, result); + /* we have both PAR but they might not be fixated */ + { + gint from_w, from_h, from_par_n, from_par_d, to_par_n, to_par_d; + gint w = 0, h = 0; + gint from_dar_n, from_dar_d; + gint num, den; + + /* from_par should be fixed */ + g_return_val_if_fail (gst_value_is_fixed (from_par), othercaps); + + from_par_n = gst_value_get_fraction_numerator (from_par); + from_par_d = gst_value_get_fraction_denominator (from_par); + + gst_structure_get_int (ins, "width", &from_w); + gst_structure_get_int (ins, "height", &from_h); + + gst_structure_get_int (outs, "width", &w); + gst_structure_get_int (outs, "height", &h); + + /* if both width and height are already fixed, we can't do anything + * about it anymore */ + if (w && h) { + guint n, d; + + GST_DEBUG_OBJECT (trans, "dimensions already set to %dx%d, not fixating", + w, h); + if (!gst_value_is_fixed (to_par)) { + if (gst_video_calculate_display_ratio (&n, &d, from_w, from_h, + from_par_n, from_par_d, w, h)) { + GST_DEBUG_OBJECT (trans, "fixating to_par to %dx%d", n, d); + if (gst_structure_has_field (outs, "pixel-aspect-ratio")) + gst_structure_fixate_field_nearest_fraction (outs, + "pixel-aspect-ratio", n, d); + else if (n != d) + gst_structure_set (outs, "pixel-aspect-ratio", GST_TYPE_FRACTION, + n, d, NULL); + } + } + goto done; + } + + /* Calculate input DAR */ + if (!gst_util_fraction_multiply (from_w, from_h, from_par_n, from_par_d, + &from_dar_n, &from_dar_d)) { + GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), + ("Error calculating the output scaled size - integer overflow")); + goto done; + } + + GST_DEBUG_OBJECT (trans, "Input DAR is %d/%d", from_dar_n, from_dar_d); - result = gst_caps_fixate (result); + /* If either width or height are fixed there's not much we + * can do either except choosing a height or width and PAR + * that matches the DAR as good as possible + */ + if (h) { + GstStructure *tmp; + gint set_w, set_par_n, set_par_d; - return result; + GST_DEBUG_OBJECT (trans, "height is fixed (%d)", h); + + /* If the PAR is fixed too, there's not much to do + * except choosing the width that is nearest to the + * width with the same DAR */ + if (gst_value_is_fixed (to_par)) { + to_par_n = gst_value_get_fraction_numerator (to_par); + to_par_d = gst_value_get_fraction_denominator (to_par); + + GST_DEBUG_OBJECT (trans, "PAR is fixed %d/%d", to_par_n, to_par_d); + + if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, to_par_d, + to_par_n, &num, &den)) { + GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), + ("Error calculating the output scaled size - integer overflow")); + goto done; + } + + w = (guint) gst_util_uint64_scale_int (h, num, den); + gst_structure_fixate_field_nearest_int (outs, "width", w); + + goto done; + } + + /* The PAR is not fixed and it's quite likely that we can set + * an arbitrary PAR. */ + + /* Check if we can keep the input width */ + tmp = gst_structure_copy (outs); + gst_structure_fixate_field_nearest_int (tmp, "width", from_w); + gst_structure_get_int (tmp, "width", &set_w); + + /* Might have failed but try to keep the DAR nonetheless by + * adjusting the PAR */ + if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, h, set_w, + &to_par_n, &to_par_d)) { + GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), + ("Error calculating the output scaled size - integer overflow")); + gst_structure_free (tmp); + goto done; + } + + if (!gst_structure_has_field (tmp, "pixel-aspect-ratio")) + gst_structure_set_value (tmp, "pixel-aspect-ratio", to_par); + gst_structure_fixate_field_nearest_fraction (tmp, "pixel-aspect-ratio", + to_par_n, to_par_d); + gst_structure_get_fraction (tmp, "pixel-aspect-ratio", &set_par_n, + &set_par_d); + gst_structure_free (tmp); + + /* Check if the adjusted PAR is accepted */ + if (set_par_n == to_par_n && set_par_d == to_par_d) { + if (gst_structure_has_field (outs, "pixel-aspect-ratio") || + set_par_n != set_par_d) + gst_structure_set (outs, "width", G_TYPE_INT, set_w, + "pixel-aspect-ratio", GST_TYPE_FRACTION, set_par_n, set_par_d, + NULL); + goto done; + } + + /* Otherwise scale the width to the new PAR and check if the + * adjusted with is accepted. If all that fails we can't keep + * the DAR */ + if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, set_par_d, + set_par_n, &num, &den)) { + GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), + ("Error calculating the output scaled size - integer overflow")); + goto done; + } + + w = (guint) gst_util_uint64_scale_int (h, num, den); + gst_structure_fixate_field_nearest_int (outs, "width", w); + if (gst_structure_has_field (outs, "pixel-aspect-ratio") || + set_par_n != set_par_d) + gst_structure_set (outs, "pixel-aspect-ratio", GST_TYPE_FRACTION, + set_par_n, set_par_d, NULL); + + goto done; + } else if (w) { + GstStructure *tmp; + gint set_h, set_par_n, set_par_d; + + GST_DEBUG_OBJECT (trans, "width is fixed (%d)", w); + + /* If the PAR is fixed too, there's not much to do + * except choosing the height that is nearest to the + * height with the same DAR */ + if (gst_value_is_fixed (to_par)) { + to_par_n = gst_value_get_fraction_numerator (to_par); + to_par_d = gst_value_get_fraction_denominator (to_par); + + GST_DEBUG_OBJECT (trans, "PAR is fixed %d/%d", to_par_n, to_par_d); + + if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, to_par_d, + to_par_n, &num, &den)) { + GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), + ("Error calculating the output scaled size - integer overflow")); + goto done; + } + + h = (guint) gst_util_uint64_scale_int (w, den, num); + gst_structure_fixate_field_nearest_int (outs, "height", h); + + goto done; + } + + /* The PAR is not fixed and it's quite likely that we can set + * an arbitrary PAR. */ + + /* Check if we can keep the input height */ + tmp = gst_structure_copy (outs); + gst_structure_fixate_field_nearest_int (tmp, "height", from_h); + gst_structure_get_int (tmp, "height", &set_h); + + /* Might have failed but try to keep the DAR nonetheless by + * adjusting the PAR */ + if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, set_h, w, + &to_par_n, &to_par_d)) { + GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), + ("Error calculating the output scaled size - integer overflow")); + gst_structure_free (tmp); + goto done; + } + if (!gst_structure_has_field (tmp, "pixel-aspect-ratio")) + gst_structure_set_value (tmp, "pixel-aspect-ratio", to_par); + gst_structure_fixate_field_nearest_fraction (tmp, "pixel-aspect-ratio", + to_par_n, to_par_d); + gst_structure_get_fraction (tmp, "pixel-aspect-ratio", &set_par_n, + &set_par_d); + gst_structure_free (tmp); + + /* Check if the adjusted PAR is accepted */ + if (set_par_n == to_par_n && set_par_d == to_par_d) { + if (gst_structure_has_field (outs, "pixel-aspect-ratio") || + set_par_n != set_par_d) + gst_structure_set (outs, "height", G_TYPE_INT, set_h, + "pixel-aspect-ratio", GST_TYPE_FRACTION, set_par_n, set_par_d, + NULL); + goto done; + } + + /* Otherwise scale the height to the new PAR and check if the + * adjusted with is accepted. If all that fails we can't keep + * the DAR */ + if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, set_par_d, + set_par_n, &num, &den)) { + GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), + ("Error calculating the output scaled size - integer overflow")); + goto done; + } + + h = (guint) gst_util_uint64_scale_int (w, den, num); + gst_structure_fixate_field_nearest_int (outs, "height", h); + if (gst_structure_has_field (outs, "pixel-aspect-ratio") || + set_par_n != set_par_d) + gst_structure_set (outs, "pixel-aspect-ratio", GST_TYPE_FRACTION, + set_par_n, set_par_d, NULL); + + goto done; + } else if (gst_value_is_fixed (to_par)) { + GstStructure *tmp; + gint set_h, set_w, f_h, f_w; + + to_par_n = gst_value_get_fraction_numerator (to_par); + to_par_d = gst_value_get_fraction_denominator (to_par); + + /* Calculate scale factor for the PAR change */ + if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, to_par_n, + to_par_d, &num, &den)) { + GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), + ("Error calculating the output scaled size - integer overflow")); + goto done; + } + + /* Try to keep the input height (because of interlacing) */ + tmp = gst_structure_copy (outs); + gst_structure_fixate_field_nearest_int (tmp, "height", from_h); + gst_structure_get_int (tmp, "height", &set_h); + + /* This might have failed but try to scale the width + * to keep the DAR nonetheless */ + w = (guint) gst_util_uint64_scale_int (set_h, num, den); + gst_structure_fixate_field_nearest_int (tmp, "width", w); + gst_structure_get_int (tmp, "width", &set_w); + gst_structure_free (tmp); + + /* We kept the DAR and the height is nearest to the original height */ + if (set_w == w) { + gst_structure_set (outs, "width", G_TYPE_INT, set_w, "height", + G_TYPE_INT, set_h, NULL); + goto done; + } + + f_h = set_h; + f_w = set_w; + + /* If the former failed, try to keep the input width at least */ + tmp = gst_structure_copy (outs); + gst_structure_fixate_field_nearest_int (tmp, "width", from_w); + gst_structure_get_int (tmp, "width", &set_w); + + /* This might have failed but try to scale the width + * to keep the DAR nonetheless */ + h = (guint) gst_util_uint64_scale_int (set_w, den, num); + gst_structure_fixate_field_nearest_int (tmp, "height", h); + gst_structure_get_int (tmp, "height", &set_h); + gst_structure_free (tmp); + + /* We kept the DAR and the width is nearest to the original width */ + if (set_h == h) { + gst_structure_set (outs, "width", G_TYPE_INT, set_w, "height", + G_TYPE_INT, set_h, NULL); + goto done; + } + + /* If all this failed, keep the height that was nearest to the orignal + * height and the nearest possible width. This changes the DAR but + * there's not much else to do here. + */ + gst_structure_set (outs, "width", G_TYPE_INT, f_w, "height", G_TYPE_INT, + f_h, NULL); + goto done; + } else { + GstStructure *tmp; + gint set_h, set_w, set_par_n, set_par_d, tmp2; + + /* width, height and PAR are not fixed but passthrough is not possible */ + + /* First try to keep the height and width as good as possible + * and scale PAR */ + tmp = gst_structure_copy (outs); + gst_structure_fixate_field_nearest_int (tmp, "height", from_h); + gst_structure_get_int (tmp, "height", &set_h); + gst_structure_fixate_field_nearest_int (tmp, "width", from_w); + gst_structure_get_int (tmp, "width", &set_w); + + if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, set_h, set_w, + &to_par_n, &to_par_d)) { + GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), + ("Error calculating the output scaled size - integer overflow")); + goto done; + } + + if (!gst_structure_has_field (tmp, "pixel-aspect-ratio")) + gst_structure_set_value (tmp, "pixel-aspect-ratio", to_par); + gst_structure_fixate_field_nearest_fraction (tmp, "pixel-aspect-ratio", + to_par_n, to_par_d); + gst_structure_get_fraction (tmp, "pixel-aspect-ratio", &set_par_n, + &set_par_d); + gst_structure_free (tmp); + + if (set_par_n == to_par_n && set_par_d == to_par_d) { + gst_structure_set (outs, "width", G_TYPE_INT, set_w, "height", + G_TYPE_INT, set_h, NULL); + + if (gst_structure_has_field (outs, "pixel-aspect-ratio") || + set_par_n != set_par_d) + gst_structure_set (outs, "pixel-aspect-ratio", GST_TYPE_FRACTION, + set_par_n, set_par_d, NULL); + goto done; + } + + /* Otherwise try to scale width to keep the DAR with the set + * PAR and height */ + if (!gst_util_fraction_multiply (from_dar_n, from_dar_d, set_par_d, + set_par_n, &num, &den)) { + GST_ELEMENT_ERROR (trans, CORE, NEGOTIATION, (NULL), + ("Error calculating the output scaled size - integer overflow")); + goto done; + } + + w = (guint) gst_util_uint64_scale_int (set_h, num, den); + tmp = gst_structure_copy (outs); + gst_structure_fixate_field_nearest_int (tmp, "width", w); + gst_structure_get_int (tmp, "width", &tmp2); + gst_structure_free (tmp); + + if (tmp2 == w) { + gst_structure_set (outs, "width", G_TYPE_INT, tmp2, "height", + G_TYPE_INT, set_h, NULL); + if (gst_structure_has_field (outs, "pixel-aspect-ratio") || + set_par_n != set_par_d) + gst_structure_set (outs, "pixel-aspect-ratio", GST_TYPE_FRACTION, + set_par_n, set_par_d, NULL); + goto done; + } + + /* ... or try the same with the height */ + h = (guint) gst_util_uint64_scale_int (set_w, den, num); + tmp = gst_structure_copy (outs); + gst_structure_fixate_field_nearest_int (tmp, "height", h); + gst_structure_get_int (tmp, "height", &tmp2); + gst_structure_free (tmp); + + if (tmp2 == h) { + gst_structure_set (outs, "width", G_TYPE_INT, set_w, "height", + G_TYPE_INT, tmp2, NULL); + if (gst_structure_has_field (outs, "pixel-aspect-ratio") || + set_par_n != set_par_d) + gst_structure_set (outs, "pixel-aspect-ratio", GST_TYPE_FRACTION, + set_par_n, set_par_d, NULL); + goto done; + } + + /* If all fails we can't keep the DAR and take the nearest values + * for everything from the first try */ + gst_structure_set (outs, "width", G_TYPE_INT, set_w, "height", + G_TYPE_INT, set_h, NULL); + if (gst_structure_has_field (outs, "pixel-aspect-ratio") || + set_par_n != set_par_d) + gst_structure_set (outs, "pixel-aspect-ratio", GST_TYPE_FRACTION, + set_par_n, set_par_d, NULL); + } + } + +done: + GST_DEBUG_OBJECT (trans, "fixated othercaps to %" GST_PTR_FORMAT, othercaps); + + if (from_par == &fpar) + g_value_unset (&fpar); + if (to_par == &tpar) + g_value_unset (&tpar); + + return othercaps; } static GstFlowReturn @@ -654,7 +1067,7 @@ gst_v4l2_transform_class_init (GstV4l2TransformClass * klass) gst_element_class_set_static_metadata (element_class, "V4L2 Video Converter", - "Filter/Converter/Video", + "Filter/Converter/Video/Scaler", "Transform streams via V4L2 API", "Nicolas Dufresne <nicolas.dufresne@collabora.com>"); diff --git a/tests/check/elements/qtmux.c b/tests/check/elements/qtmux.c index 39c7c5effb5313ed08e4123d8807373653ef3d5e..ff8b07b104e8b10f3e3b7cd16f772fd6bddd260a 100644 --- a/tests/check/elements/qtmux.c +++ b/tests/check/elements/qtmux.c @@ -220,7 +220,7 @@ check_qtmux_pad (GstStaticPadTemplate * srctemplate, const gchar * sinkname, int num_buffers; int i; guint8 data0[12] = "\000\000\000\024ftypqt "; - guint8 data1[8] = "\000\000\000\001mdat"; + guint8 data1[16] = "\000\000\000\010free\000\000\000\000mdat"; guint8 data2[4] = "moov"; GstSegment segment; @@ -661,6 +661,8 @@ static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", ); static GType test_mp3_enc_get_type (void); +static void test_input_push_segment_start (gpointer user_data, + GstClockTime start); G_DEFINE_TYPE (TestMp3Enc, test_mp3_enc, GST_TYPE_ELEMENT); @@ -926,6 +928,13 @@ struct TestInputData /* When comparing ts, the input will be subtracted from this */ gint64 ts_offset; + /* Due to DTS, the segment start might be shifted so this list + * is used to vefity each received segments */ + GList *expected_segment_start; + + GstClockTime expected_gap_ts; + GstClockTime expected_gap_duration; + gboolean gap_received; GstPad *sinkpad; @@ -936,10 +945,16 @@ static void test_input_data_init (struct TestInputData *data) { data->ts_offset = 0; + data->expected_segment_start = NULL; + data->expected_gap_ts = 0; + data->expected_gap_duration = 0; + data->gap_received = FALSE; data->srcpad = NULL; data->sinkpad = NULL; data->input = NULL; data->thread = NULL; + + test_input_push_segment_start (data, 0); } static void @@ -981,6 +996,36 @@ test_input_push_data (gpointer user_data) return NULL; } +static void +test_input_push_segment_start (gpointer user_data, GstClockTime start) +{ + struct TestInputData *data = user_data; + GstClockTime *start_data = g_malloc (sizeof (GstClockTime)); + + *start_data = start; + data->expected_segment_start = g_list_append (data->expected_segment_start, + start_data); +} + +static GstClockTime +test_input_pop_segment_start (gpointer user_data) +{ + struct TestInputData *data = user_data; + GstClockTime start = GST_CLOCK_TIME_NONE; + GstClockTime *start_data; + + if (data->expected_segment_start) { + start_data = data->expected_segment_start->data; + data->expected_segment_start = + g_list_delete_link (data->expected_segment_start, + data->expected_segment_start); + start = *start_data; + g_free (start_data); + } + + return start; +} + static GstBuffer * create_buffer (GstClockTime pts, GstClockTime dts, GstClockTime duration, guint bytes) @@ -1050,7 +1095,6 @@ _test_sink_pad_event (GstPad * pad, GstObject * parent, GstEvent * event) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_STREAM_START: - case GST_EVENT_SEGMENT: case GST_EVENT_CAPS: case GST_EVENT_EOS: fail_unless (test_data->output_iter); @@ -1058,6 +1102,25 @@ _test_sink_pad_event (GstPad * pad, GstObject * parent, GstEvent * event) compare_event (event, test_data->output_iter->data); test_data->output_iter = g_list_next (test_data->output_iter); break; + case GST_EVENT_SEGMENT:{ + const GstSegment *segment; + + fail_unless (test_data->output_iter); + fail_unless (GST_IS_EVENT (test_data->output_iter->data)); + gst_event_parse_segment (event, &segment); + fail_unless (segment->start == test_input_pop_segment_start (test_data)); + test_data->output_iter = g_list_next (test_data->output_iter); + break; + } + case GST_EVENT_GAP:{ + GstClockTime timestamp; + GstClockTime duration; + gst_event_parse_gap (event, ×tamp, &duration); + fail_unless (timestamp == test_data->expected_gap_ts); + fail_unless (duration == test_data->expected_gap_duration); + test_data->gap_received = TRUE; + break; + } case GST_EVENT_TAG: /* ignore this event */ break; @@ -1380,6 +1443,143 @@ GST_START_TEST (test_muxing_non_zero_segment_different) GST_END_TEST; +GST_START_TEST (test_muxing_dts_outside_segment) +{ + struct TestInputData input1, input2; + GstCaps *caps; + + test_input_data_init (&input1); + test_input_data_init (&input2); + + /* Create the inputs, after calling the run below, all this data is + * transfered to it and we have no need to clean up */ + input1.input = NULL; + input1.input = + g_list_append (input1.input, gst_event_new_stream_start ("test-1")); + caps = gst_caps_from_string + ("video/x-h264, width=(int)800, height=(int)600, " + "framerate=(fraction)1/1, stream-format=(string)avc, codec_data=(buffer)0000," + " alignment=(string)au, level=(int)2, profile=(string)high"); + input1.input = g_list_append (input1.input, gst_event_new_caps (caps)); + gst_caps_unref (caps); + gst_segment_init (&input1.segment, GST_FORMAT_TIME); + input1.segment.start = 1 * GST_SECOND; + input1.input = + g_list_append (input1.input, gst_event_new_segment (&input1.segment)); + input1.input = + g_list_append (input1.input, create_buffer (1 * GST_SECOND, + 0, GST_SECOND, 4096)); + input1.input = + g_list_append (input1.input, create_buffer (2 * GST_SECOND, + 1 * GST_SECOND, GST_SECOND, 4096)); + input1.input = + g_list_append (input1.input, create_buffer (3 * GST_SECOND, + 2 * GST_SECOND, GST_SECOND, 4096)); + input1.input = g_list_append (input1.input, gst_event_new_eos ()); + /* First DTS is 0, first PTS is 1s. The segment start being 1, this means + * running time -1s and 0. So the output segment should start from 1s to keep + * the same running time */ + test_input_pop_segment_start (&input1); + test_input_push_segment_start (&input1, GST_SECOND); + + input2.input = NULL; + input2.input = + g_list_append (input2.input, gst_event_new_stream_start ("test-2")); + caps = gst_caps_from_string + ("audio/mpeg, rate=(int)44100, channels=(int)1, mpegversion=(int)4, " + "stream-format=(string)raw, framed=(boolean)true"); + input2.input = g_list_append (input2.input, gst_event_new_caps (caps)); + gst_caps_unref (caps); + gst_segment_init (&input2.segment, GST_FORMAT_TIME); + input2.input = + g_list_append (input2.input, gst_event_new_segment (&input2.segment)); + input2.input = + g_list_append (input2.input, create_buffer (0, 0, GST_SECOND, + 44100 * 4 * 2)); + input2.input = + g_list_append (input2.input, create_buffer (GST_SECOND, GST_SECOND, + GST_SECOND, 44100 * 4 * 2)); + input2.input = + g_list_append (input2.input, create_buffer (2 * GST_SECOND, + 2 * GST_SECOND, GST_SECOND, 44100 * 4 * 2)); + input2.input = g_list_append (input2.input, gst_event_new_eos ()); + + run_muxing_test (&input1, &input2); +} + +GST_END_TEST; + +GST_START_TEST (test_muxing_initial_gap) +{ + struct TestInputData input1, input2; + GstCaps *caps; + + test_input_data_init (&input1); + test_input_data_init (&input2); + + /* Create the inputs, after calling the run below, all this data is + * transfered to it and we have no need to clean up */ + input1.input = NULL; + input1.input = + g_list_append (input1.input, gst_event_new_stream_start ("test-1")); + caps = gst_caps_from_string + ("video/x-h264, width=(int)800, height=(int)600, " + "framerate=(fraction)1/1, stream-format=(string)avc, codec_data=(buffer)0000," + " alignment=(string)au, level=(int)2, profile=(string)high"); + input1.input = g_list_append (input1.input, gst_event_new_caps (caps)); + gst_caps_unref (caps); + gst_segment_init (&input1.segment, GST_FORMAT_TIME); + input1.input = + g_list_append (input1.input, gst_event_new_segment (&input1.segment)); + /* Duplicate the segment to please the harness */ + input1.input = + g_list_append (input1.input, gst_event_new_segment (&input1.segment)); + input1.input = + g_list_append (input1.input, create_buffer (1 * GST_SECOND, + 0, GST_SECOND, 4096)); + input1.input = + g_list_append (input1.input, create_buffer (2 * GST_SECOND, + 1 * GST_SECOND, GST_SECOND, 4096)); + input1.input = + g_list_append (input1.input, create_buffer (3 * GST_SECOND, + 2 * GST_SECOND, GST_SECOND, 4096)); + input1.input = g_list_append (input1.input, gst_event_new_eos ()); + + /* We expect a 1s gap at the start */ + input1.expected_gap_duration = GST_SECOND; + /* There will be two segments, first is 0, so leave it there, second should + * match the first CTTS (PTS - DTS) */ + test_input_push_segment_start (&input1, GST_SECOND); + + input2.input = NULL; + input2.input = + g_list_append (input2.input, gst_event_new_stream_start ("test-2")); + caps = gst_caps_from_string + ("audio/mpeg, rate=(int)44100, channels=(int)1, mpegversion=(int)4, " + "stream-format=(string)raw, framed=(boolean)true"); + input2.input = g_list_append (input2.input, gst_event_new_caps (caps)); + gst_caps_unref (caps); + gst_segment_init (&input2.segment, GST_FORMAT_TIME); + input2.input = + g_list_append (input2.input, gst_event_new_segment (&input2.segment)); + input2.input = + g_list_append (input2.input, create_buffer (0, 0, GST_SECOND, + 44100 * 4 * 2)); + input2.input = + g_list_append (input2.input, create_buffer (GST_SECOND, GST_SECOND, + GST_SECOND, 44100 * 4 * 2)); + input2.input = + g_list_append (input2.input, create_buffer (2 * GST_SECOND, + 2 * GST_SECOND, GST_SECOND, 44100 * 4 * 2)); + input2.input = g_list_append (input2.input, gst_event_new_eos ()); + + run_muxing_test (&input1, &input2); + + fail_unless (input1.gap_received); +} + +GST_END_TEST; + static Suite * qtmux_suite (void) { @@ -1420,6 +1620,8 @@ qtmux_suite (void) tcase_add_test (tc_chain, test_muxing); tcase_add_test (tc_chain, test_muxing_non_zero_segment); tcase_add_test (tc_chain, test_muxing_non_zero_segment_different); + tcase_add_test (tc_chain, test_muxing_dts_outside_segment); + tcase_add_test (tc_chain, test_muxing_initial_gap); return s; } diff --git a/win32/common/config.h b/win32/common/config.h index 76f5fa5af93c0f25c025fb7bd6ed5fc9a7821665..4bc3be7f8016a1432e7ce9a71af07db66a8aa240 100644 --- a/win32/common/config.h +++ b/win32/common/config.h @@ -39,6 +39,9 @@ /* The GIO modules directory. */ #undef GIO_MODULE_DIR +/* The GIO install prefix. */ +#undef GIO_PREFIX + /* GStreamer API Version */ #define GST_API_VERSION "1.0" @@ -58,7 +61,7 @@ #define GST_PACKAGE_ORIGIN "Unknown package origin" /* GStreamer package release date/time for plugins as YYYY-MM-DD */ -#define GST_PACKAGE_RELEASE_DATETIME "2015-06-07" +#define GST_PACKAGE_RELEASE_DATETIME "2015-06-24" /* Define if static plugins should be built */ #undef GST_PLUGIN_BUILD_STATIC @@ -384,7 +387,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.5.1" +#define PACKAGE_STRING "GStreamer Good Plug-ins 1.5.2" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "gst-plugins-good" @@ -393,7 +396,7 @@ #undef PACKAGE_URL /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.5.1" +#define PACKAGE_VERSION "1.5.2" /* directory where plugins are located */ #ifdef _DEBUG @@ -424,7 +427,7 @@ #undef TARGET_CPU /* Version number of package */ -#define VERSION "1.5.1" +#define VERSION "1.5.2" /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */