+=== release 0.10.17 ===
+
+2011-01-21 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ releasing 0.10.17, "Raised by Wolves"
+
+2011-01-18 11:11:28 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ * docs/plugins/inspect/plugin-a52dec.xml:
+ * docs/plugins/inspect/plugin-amrnb.xml:
+ * docs/plugins/inspect/plugin-amrwbdec.xml:
+ * docs/plugins/inspect/plugin-asf.xml:
+ * docs/plugins/inspect/plugin-cdio.xml:
+ * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+ * docs/plugins/inspect/plugin-dvdread.xml:
+ * docs/plugins/inspect/plugin-dvdsub.xml:
+ * docs/plugins/inspect/plugin-iec958.xml:
+ * docs/plugins/inspect/plugin-lame.xml:
+ * docs/plugins/inspect/plugin-mad.xml:
+ * docs/plugins/inspect/plugin-mpeg2dec.xml:
+ * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+ * docs/plugins/inspect/plugin-mpegstream.xml:
+ * docs/plugins/inspect/plugin-realmedia.xml:
+ * docs/plugins/inspect/plugin-siddec.xml:
+ * docs/plugins/inspect/plugin-twolame.xml:
+ * docs/plugins/inspect/plugin-x264.xml:
+ * win32/common/config.h:
+ 0.10.16.4 pre-release
+
+2011-01-14 17:37:09 +0100 Edward Hervey <edward.hervey@collabora.co.uk>
+
+ * ext/mpeg2dec/gstmpeg2dec.c:
+ mpeg2dec: Use the proper component value for height
+
+2011-01-11 20:42:06 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ * docs/plugins/inspect/plugin-a52dec.xml:
+ * docs/plugins/inspect/plugin-amrnb.xml:
+ * docs/plugins/inspect/plugin-amrwbdec.xml:
+ * docs/plugins/inspect/plugin-asf.xml:
+ * docs/plugins/inspect/plugin-cdio.xml:
+ * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+ * docs/plugins/inspect/plugin-dvdread.xml:
+ * docs/plugins/inspect/plugin-dvdsub.xml:
+ * docs/plugins/inspect/plugin-iec958.xml:
+ * docs/plugins/inspect/plugin-lame.xml:
+ * docs/plugins/inspect/plugin-mad.xml:
+ * docs/plugins/inspect/plugin-mpeg2dec.xml:
+ * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+ * docs/plugins/inspect/plugin-mpegstream.xml:
+ * docs/plugins/inspect/plugin-realmedia.xml:
+ * docs/plugins/inspect/plugin-siddec.xml:
+ * docs/plugins/inspect/plugin-twolame.xml:
+ * docs/plugins/inspect/plugin-x264.xml:
+ * win32/common/config.h:
+ 0.10.16.3 pre-release
+
+2011-01-11 17:09:02 +0100 Edward Hervey <edward.hervey@collabora.co.uk>
+
+ * gst/asfdemux/asfheaders.c:
+ * gst/asfdemux/asfheaders.h:
+ * gst/asfdemux/gstasfdemux.c:
+ asfdemux: Handle new type of DRM'd asf files.
+ These are produced by the new MS PlayReady system.
+ https://bugzilla.gnome.org/show_bug.cgi?id=639226
+
+2011-01-11 15:51:14 +0200 Stefan Kost <ensonic@users.sf.net>
+
+ * common:
+ Automatic update of common submodule
+ From e572c87 to f94d739
+
+2011-01-10 16:37:19 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * common:
+ Automatic update of common submodule
+ From ccbaa85 to e572c87
+
+2011-01-10 14:54:40 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * common:
+ Automatic update of common submodule
+ From 46445ad to ccbaa85
+
+2011-01-08 00:35:08 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * tests/check/Makefile.am:
+ tests: never disable g_assert() and cast checks for the unit tests
+ The unit tests are riddled with g_assert() and friends, make sure we
+ don't disable assert and cast checks for the unit tests even if
+ this has been specified for the rest of the code base, e.g. via
+ --disable-glib-asserts
+
+2011-01-07 14:42:26 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ * win32/common/config.h:
+ 0.10.16.2 pre-release
+
+2011-01-07 14:38:17 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * docs/plugins/gst-plugins-ugly-plugins.args:
+ * docs/plugins/inspect/plugin-a52dec.xml:
+ * docs/plugins/inspect/plugin-amrnb.xml:
+ * docs/plugins/inspect/plugin-amrwbdec.xml:
+ * docs/plugins/inspect/plugin-asf.xml:
+ * docs/plugins/inspect/plugin-cdio.xml:
+ * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+ * docs/plugins/inspect/plugin-dvdread.xml:
+ * docs/plugins/inspect/plugin-dvdsub.xml:
+ * docs/plugins/inspect/plugin-iec958.xml:
+ * docs/plugins/inspect/plugin-lame.xml:
+ * docs/plugins/inspect/plugin-mad.xml:
+ * docs/plugins/inspect/plugin-mpeg2dec.xml:
+ * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+ * docs/plugins/inspect/plugin-mpegstream.xml:
+ * docs/plugins/inspect/plugin-realmedia.xml:
+ * docs/plugins/inspect/plugin-siddec.xml:
+ * docs/plugins/inspect/plugin-twolame.xml:
+ * docs/plugins/inspect/plugin-x264.xml:
+ docs: update docs
+
+2011-01-07 14:37:07 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * po/bg.po:
+ * po/ca.po:
+ * po/ru.po:
+ po: update translations
+
+2011-01-07 14:33:37 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ configure: use $LIBM instead of hardcoding -lm
+
+2011-01-06 13:15:17 +0100 Edward Hervey <edward.hervey@collabora.co.uk>
+
+ * gst/realmedia/rmdemux.c:
+ rmdemux: Initialize return variable.
+ In the unlikely event that height is 0 (which is invalid) we would end up
+ never setting the flow return.
+
+2011-01-05 16:52:03 +0100 Edward Hervey <edward.hervey@collabora.co.uk>
+
+ * gst/realmedia/rmutils.c:
+ realmedia: Fix unitialized variables on macosx
+
+2011-01-04 10:32:05 -0300 Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+ * ext/x264/gstx264enc.c:
+ x264enc: Handle codec/encoder tags
+ Make x264enc drop video-codec and codec tags and replace
+ encoder/encoder-version with x264 and its build number
+ Fixes #621465
+
+2010-12-29 22:17:50 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * ext/mpeg2dec/gstmpeg2dec.c:
+ mpeg2dec: use gst_pad_alloc_buffer() when cropping buffers
+
+2010-12-29 22:10:58 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * ext/mpeg2dec/gstmpeg2dec.c:
+ mpeg2dec: minor formatting clean-up
+
+2010-12-29 21:42:36 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * ext/mpeg2dec/gstmpeg2dec.c:
+ mpeg2dec: refactor cropping code to use libgstvideo functions
+ https://bugzilla.gnome.org/show_bug.cgi?id=571146
+
+2010-12-29 20:19:34 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * ext/mpeg2dec/gstmpeg2dec.c:
+ * ext/mpeg2dec/gstmpeg2dec.h:
+ mpeg2dec: use GstVideoFormat instead of custom enum
+
+2010-12-29 20:15:03 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * ext/mpeg2dec/Makefile.am:
+ mpeg2dec: fix LIBADD order in Makefile.am
+
+2010-11-19 13:01:35 -0500 Tristan Matthews <tristan@sat.qc.ca>
+
+ * ext/x264/gstx264enc.c:
+ x264: vbv-buf-capacity should have a minimum of 0
+ x264 will clip this value internally, and users should be allowed to
+ specify a lower value than 300 ms.
+ https://bugzilla.gnome.org/show_bug.cgi?id=635291
+
+2010-12-27 11:38:24 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * ext/x264/gstx264enc.c:
+ x264enc: also accept YV12 input
+
+2010-12-01 18:35:59 +0100 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+ * ext/x264/gstx264enc.c:
+ x264enc: add a note to the docs about encoder latency and queues
+ https://bugzilla.gnome.org/show_bug.cgi?id=636107
+
+2010-12-24 10:12:19 +0000 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+ * gst/realmedia/rademux.c:
+ * gst/realmedia/rmdemux.c:
+ realmedia: do not use the pad buffer allocation functions in demuxers
+ Doing so can block, see https://bugzilla.gnome.org/show_bug.cgi?id=637822
+ https://bugzilla.gnome.org/show_bug.cgi?id=637932
+
+2010-12-20 17:47:41 +0100 Edward Hervey <edward.hervey@collabora.co.uk>
+
+ * common:
+ Automatic update of common submodule
+ From 169462a to 46445ad
+
+2010-12-16 10:30:31 +0100 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * ext/mad/gstmad.c:
+ mad: If gst_pad_alloc_buffer() returns a buffer with the wrong size allocate a new one
+ Fixes bug #635461.
+
+2010-12-15 14:56:36 +0200 Stefan Kost <ensonic@users.sf.net>
+
+ * common:
+ Automatic update of common submodule
+ From 20742ae to 169462a
+
+2010-12-12 11:54:35 -0600 Rob Clark <rob@ti.com>
+
+ * gst/realmedia/rmdemux.c:
+ rmdemux: set GST_BUFFER_FLAG_DELTA_UNIT properly
+ Signed-off-by: Rob Clark <rob@ti.com>
+
+2010-12-13 16:24:09 +0200 Stefan Kost <ensonic@users.sf.net>
+
+ * common:
+ Automatic update of common submodule
+ From 011bcc8 to 20742ae
+
+2010-11-14 10:57:21 -0800 Leo Singer <leo.singer@ligo.org>
+
+ * configure.ac:
+ x264: uses pkg-config to locate libx264
+
+2010-12-07 15:39:32 +0100 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * tests/check/pipelines/lame.c:
+ check: don't use deprecated method
+
+2010-12-03 17:43:25 +0100 Benjamin Gaignard <benjamin.gaignard@stericsson.com>
+
+ * Android.mk:
+ * android/NOTICE:
+ * android/amrnb.mk:
+ * android/amrwbdec.mk:
+ * android/asf.mk:
+ * android/mpegaudioparse.mk:
+ Add build system for Android
+
+2010-11-25 19:51:50 +0100 Edward Hervey <bilboed@bilboed.com>
+
+ * gst/realmedia/rmutils.c:
+ realmedia: Remove dead assignments
+
+2010-11-25 19:51:40 +0100 Edward Hervey <bilboed@bilboed.com>
+
+ * ext/mad/gstmad.c:
+ mad: Remove dead assignments
+
+2010-11-13 12:38:45 +0000 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * ext/dvdread/dvdreadsrc.c:
+ dvdreadsrc: remove bogus comment
+
+2010-11-13 12:34:37 +0000 Thomas Green <thomasgr33n@gmail.com>
+
+ * ext/dvdread/dvdreadsrc.c:
+ dvdreadsrc: fix handling of multi-angle streams
+ We would output all angles interleaved instead of just
+ the selected angle.
+ https://bugzilla.gnome.org/show_bug.cgi?id=539254
+
+2010-10-28 17:01:16 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * gst/realmedia/Makefile.am:
+ realmedia: fix LIBS order in Makefile
+
+2010-10-22 09:17:40 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * po/af.po:
+ * po/az.po:
+ * po/bg.po:
+ * po/ca.po:
+ * po/cs.po:
+ * po/da.po:
+ * po/de.po:
+ * po/el.po:
+ * po/en_GB.po:
+ * po/es.po:
+ * po/eu.po:
+ * po/fi.po:
+ * po/fr.po:
+ * po/gl.po:
+ * po/hu.po:
+ * po/id.po:
+ * po/it.po:
+ * po/ja.po:
+ * po/lt.po:
+ * po/lv.po:
+ * po/ms.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: update for new translatable strings
+
+2010-10-27 13:17:29 +0100 Jan Schmidt <thaytan@noraisin.net>
+
+ * common:
+ Automatic update of common submodule
+ From 7bbd708 to 011bcc8
+
+2010-10-20 20:26:45 +0200 Guillaume Emont <gemont@igalia.com>
+
+ * ext/mpeg2dec/gstmpeg2dec.c:
+ mpeg2dec: convert the position to stream time before answering to a position query
+
+2010-10-24 14:22:39 +0200 Edward Hervey <bilboed@bilboed.com>
+
+ * gst/realmedia/Makefile.am:
+ * gst/realmedia/rademux.c:
+ * gst/realmedia/rmdemux.c:
+ * gst/realmedia/rmdemux.h:
+ realmedia: Get codec name from pbutils instead of harcoding them
+
+2010-10-22 11:29:55 +0200 Robert Swain <robert.swain@collabora.co.uk>
+
+ * ext/x264/gstx264enc.c:
+ x264enc: Work around a rate control issue in libx264
+ When variable framerate is disabled in libx264 (which occurs when using
+ the zerolatency tuning), libx264 ignores timestamps but still uses the
+ timebase leading to messed up rate control with our nanosecond timebase.
+ We work around this issue by setting the timebase to the reciprocal of
+ the framerate and we validate that the framerate is suitable.
+ This has been fixed upstream in libx264 but there are non-fixed versions
+ in the wild so this workaround is still needed.
+ Fixes bug #632861
+
+2010-10-19 16:30:51 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * ext/mpeg2dec/gstmpeg2dec.c:
+ mpeg2dec: Use gst_pad_peer_query() instead of getting the peer pad manually
+
+2010-10-13 21:38:06 +0200 Guillaume Emont <gemont@igalia.com>
+
+ * ext/mpeg2dec/gstmpeg2dec.c:
+ mpeg2dec: fix position query by trusting upstream
+ Position queries are badly handled for DVDs (probably due to the division in
+ chapters): the time returned was the time since the start of chapter.
+ Now ask upstream for position queries, fall back to the old code if upstream
+ cannot answer the query.
+
+2010-10-19 12:20:40 +0300 Stefan Kost <ensonic@users.sf.net>
+
+ * ext/lame/gstlame.c:
+ * ext/mad/gstmad.c:
+ * ext/sidplay/gstsiddec.cc:
+ * gst/mpegstream/gstmpegparse.c:
+ various: canonicalize property names
+
+2010-10-19 10:06:33 +0300 Stefan Kost <ensonic@users.sf.net>
+
+ * ext/a52dec/gsta52dec.c:
+ * ext/amrnb/amrnbdec.c:
+ * ext/amrnb/amrnbenc.c:
+ * ext/cdio/gstcdiocddasrc.c:
+ * ext/dvdread/dvdreadsrc.c:
+ * ext/lame/gstlame.c:
+ * ext/lame/gstlamemp3enc.c:
+ * ext/mad/gstmad.c:
+ * ext/sidplay/gstsiddec.cc:
+ * ext/x264/gstx264enc.c:
+ various (ext): add a missing G_PARAM_STATIC_STRINGS flags
+
+2010-10-19 09:49:47 +0300 Stefan Kost <ensonic@users.sf.net>
+
+ * gst/iec958/ac3iec.c:
+ * gst/mpegaudioparse/gstmpegaudioparse.c:
+ * gst/mpegstream/gstmpegparse.c:
+ * gst/mpegstream/gstrfc2250enc.c:
+ * gst/realmedia/pnmsrc.c:
+ * gst/realmedia/rdtmanager.c:
+ various (gst): add a missing G_PARAM_STATIC_STRINGS flags
+
+2010-10-14 12:32:16 -0700 David Schleef <ds@schleef.org>
+
+ * common:
+ Automatic update of common submodule
+ From 5a668bf to 7bbd708
+
+2010-10-08 12:44:52 -0700 David Schleef <ds@schleef.org>
+
+ * common:
+ Automatic update of common submodule
+ From c4a8adc to 5a668bf
+
+2010-10-08 12:56:05 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * common:
+ Automatic update of common submodule
+ From 5e3c9bf to c4a8adc
+
+2010-09-29 21:24:23 +0200 Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+ * ext/mad/gstmad.c:
+ * ext/mad/gstmad.h:
+ mad: support reverse playback
+
+2010-09-26 19:24:08 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * ext/dvdread/dvdreadsrc.c:
+ dvdreadsrc: improve error messages on read errors
+ Provide proper i18n-ed error messages when a read error happens,
+ and point out that the error could be happening because the
+ DVD is scrambled.
+ https://bugzilla.gnome.org/show_bug.cgi?id=613633
+
+2010-09-24 00:03:50 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ configure: set plugin release datetime
+
+2010-09-21 18:34:31 +0200 Edward Hervey <bilboed@bilboed.com>
+
+ * common:
+ Automatic update of common submodule
+ From aa0d1d0 to 5e3c9bf
+
+2010-09-15 20:14:47 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * gst/mpegstream/gstmpegparse.c:
+ mpegparse: re-fix flow return handling
+ Fix wrong GST_FLOW_IS_SUCCESS substitution in commit e99cb46c:
+ - } while (GST_FLOW_IS_SUCCESS (result));
+ + } while (result != GST_FLOW_OK);
+
+2010-09-09 22:33:36 +0300 Stefan Kost <ensonic@users.sf.net>
+
+ * tests/check/Makefile.am:
+ * tests/check/generic/states.c:
+ tests: allow running state tests for all elements
+ Now one can use GST_NO_STATE_IGNORE_ELEMENTS=1 make generic/states.check
+ to try elements that would normaly be skipped.
+
+2010-09-09 09:53:07 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * Makefile.am:
+ New pkgconfig subdirectory needs to be added to SUBDIRS as well so it's entered and disted
+
+2010-09-08 00:09:35 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ * pkgconfig/.gitignore:
+ * pkgconfig/Makefile.am:
+ * pkgconfig/gstreamer-plugins-ugly-uninstalled.pc.in:
+ Add gstreamer-plugins-ugly-uninstalled-0.10.pc file so other modules can find our plugins
+ This .pc file will not be installed, it's only for uninstalled setups,
+ same thing as we do for -good. This is so other modules' unit tests can
+ find our plugins properly in an uninstalled setup.
+
+2010-09-07 11:42:52 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * common:
+ Automatic update of common submodule
+ From c2e10bf to aa0d1d0
+
+2010-09-06 23:53:10 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ configure: re-enable use of -DGST_DISABLE_DEPRECATED in git versions
+
+2010-09-06 23:51:23 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * ext/sidplay/gstsiddec.cc:
+ siddec: don't use GST_FLOW_IS_FATAL
+ GST_FLOW_IS_FATAL has been deprecated in core git.
+
+2010-09-05 18:58:50 -0700 David Schleef <ds@schleef.org>
+
+ * common:
+ Automatic update of common submodule
+ From d3d9acf to c2e10bf
+
+2010-09-05 12:27:02 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * configure.ac:
+ configure: Require orc >= 0.4.6 for --compat
+
+2010-09-05 12:20:22 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * common:
+ Automatic update of common submodule
+ From ec60217 to d3d9acf
+
+2010-08-27 18:26:49 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * ext/mpeg2dec/gstmpeg2dec.c:
+ mpeg2dec: Don't use GST_FLOW_IS_FATAL()
+ And don't post error messages if allocating a buffer resulted
+ in WRONG_STATE or UNEXPECTED.
+
+2010-08-27 18:25:31 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * gst/mpegaudioparse/gstxingmux.c:
+ xingmux: Don't ignore WRONG_STATE and NOT_LINKED when pushing data downstream
+
+2010-08-27 18:24:11 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * gst/mpegstream/gstdvddemux.c:
+ * gst/mpegstream/gstmpegdemux.c:
+ * gst/mpegstream/gstmpegparse.c:
+ mpegstream: Don't use GST_FLOW_IS_SUCCESS()
+
+2010-08-27 18:22:45 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * gst/realmedia/rmdemux.c:
+ rmdemux: Don't use GST_FLOW_IS_FATAL() and GST_FLOW_IS_SUCCESS()
+
+2010-08-27 18:19:00 +0200 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * gst/asfdemux/gstasfdemux.c:
+ asfdemux: Don't use GST_FLOW_IS_FATAL()
+ And don't post error messages for UNEXPECTED and post an error
+ message if pulling data failed because of NOT_LINKED.
+
+2010-09-04 13:17:53 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+ * configure.ac:
+ * docs/plugins/inspect/plugin-a52dec.xml:
+ * docs/plugins/inspect/plugin-amrnb.xml:
+ * docs/plugins/inspect/plugin-amrwbdec.xml:
+ * docs/plugins/inspect/plugin-asf.xml:
+ * docs/plugins/inspect/plugin-cdio.xml:
+ * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+ * docs/plugins/inspect/plugin-dvdread.xml:
+ * docs/plugins/inspect/plugin-dvdsub.xml:
+ * docs/plugins/inspect/plugin-iec958.xml:
+ * docs/plugins/inspect/plugin-lame.xml:
+ * docs/plugins/inspect/plugin-mad.xml:
+ * docs/plugins/inspect/plugin-mpeg2dec.xml:
+ * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+ * docs/plugins/inspect/plugin-mpegstream.xml:
+ * docs/plugins/inspect/plugin-realmedia.xml:
+ * docs/plugins/inspect/plugin-siddec.xml:
+ * docs/plugins/inspect/plugin-twolame.xml:
+ * docs/plugins/inspect/plugin-x264.xml:
+ * win32/common/config.h:
+ Back to development
+ Temporarily disable -DGST_DISABLE_DEPRECATED for git builds until
+ the code is updated for the GST_FLOW_IS_* macro deprecations.
+
=== release 0.10.16 ===
-2010-09-02 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+2010-09-02 23:59:20 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
* configure.ac:
- releasing 0.10.16, "Because He Knows the Time is Short"
+ * gst-plugins-ugly.doap:
+ * win32/common/config.h:
+ Release 0.10.16
-2010-09-02 23:49:14 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
+2010-09-02 23:58:22 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
* docs/plugins/inspect/plugin-a52dec.xml:
* docs/plugins/inspect/plugin-amrnb.xml:
* docs/plugins/inspect/plugin-siddec.xml:
* docs/plugins/inspect/plugin-twolame.xml:
* docs/plugins/inspect/plugin-x264.xml:
- docs: update for release
+ docs: update docs for release
2010-09-02 23:48:05 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
-This is GStreamer Ugly Plug-ins 0.10.16 "Because He Knows the Time is Short"
+This is GStreamer Ugly Plug-ins 0.10.17 "Raised by Wolves"
+
+Changes since 0.10.16:
+
+ * asfdemux: Handle new type of DRM'd asf files
+ * dvdreadsrc: fix handling of multi-angle streams
+ * dvdreadsrc: improve error messages on read errors
+ * mad: if gst_pad_alloc_buffer() returns a buffer with the wrong size allocate a new one
+ * mad: support reverse playback
+ * mpeg2dec: convert the position to stream time before answering to a position query
+ * mpeg2dec: fix position query by trusting upstream
+ * mpeg2dec: refactor cropping code to use libgstvideo functions
+ * mpeg2dec: use gst_pad_alloc_buffer() when cropping buffers
+ * mpegparse: re-fix flow return handling
+ * rmdemux: set GST_BUFFER_FLAG_DELTA_UNIT properly
+ * x264enc: add a note to the docs about encoder latency and queues
+ * x264enc: also accept YV12 input
+ * x264enc: Handle codec/encoder tags
+ * x264enc: Work around a rate control issue in libx264
+ * x264: use pkg-config to locate libx264
+ * x264: vbv-buf-capacity should have a minimum of 0
+ * xingmux: Don't ignore WRONG_STATE and NOT_LINKED when pushing data downstream
+
+Bugs fixed since 0.10.16:
+
+ * 539254 : [dvdreadsrc] DVDs with multiple angles switch angles during read
+ * 571146 : mpeg2dec: possibly uses wrong strides for 4:2:2 and 4:4:4 YUV with unusual display width or height
+ * 599515 : Fix dvb for DVB API 3.3
+ * 621465 : [x264enc] Video codec information copied incorrectly to output
+ * 632549 : [mpeg2dec] answers to position queries are wrong for DVDs
+ * 632861 : [x264enc] really bad quality with tune=zerolatency
+ * 634840 : x264: use pkg-config to locate dependencies for plugin
+ * 635291 : x264enc: " vbv-buf-capacity " property should have minimum value of 0
+ * 635461 : Crash in mad decoder when changing number of audio output channels in Totem while media is running
+ * 636107 : x264enc: docs should indicate specifics of using with queues
+ * 637093 : rmdemux: set GST_BUFFER_FLAG_DELTA_UNIT properly
+ * 637932 : realmedia: do not use the pad buffer allocation functions in demuxers
+ * 639226 : [asfdemux] Doesn't handle new PlayReady DRM files
Changes since 0.10.15:
-Release notes for GStreamer Ugly Plug-ins 0.10.16 "Because He Knows the Time is Short"
+Release notes for GStreamer Ugly Plug-ins 0.10.17 "Raised by Wolves"
The GStreamer team is proud to announce a new release
The 0.10.x series is a stable series targeted at end users.
-It is not API or ABI compatible with the stable 0.8.x series.
-It is, however, parallel installable with the 0.8.x series.
Features of this release
- * refactor x264enc to use current x264 API correctly, add new properties and new defaults
- * liboil is no longer required, but orc is now required
- * build: require orc >= 0.4.5, GLib >= 2.20, automake >= 1.10, autoconf >= 2.60; liboil is no longer required
- * asfdemux: fix playback of files or streams that are shorter than the advertised preroll value
- * asfdemux: fix sending eos event for chained asfs in pull mode (exotic)
- * asfdemux: fix playback of files or streams that advertise miniscule preroll values
- * lamemp3enc: implement latency query
- * rmdemux: fix playback of sipro audio streams
- * x264enc: refactor code in preparation for presets/tunings
- * x264enc: add "profile" property (and default to MAIN profile)
- * x264enc: improve defaults: medium speed/quality preset; auto mode for threads
- * x264enc: add "speed-preset", "tune" and "psy-tune" properties
- * x264enc: add "option-string" property to specify advanced parameters
- * x264enc: set time base if needed, fixes visual artifacts
- * x264enc: add "sliced-threads", "sync-lookahead", "intra-refresh", "mb-tree", and "rc-lookahead" properties
- * x264enc: fix compilation against ancient x264 versions (X264_BUILD <= 75)
- * x264enc: speed up first pass of multi-pass encoding (has no impact on quality)
- * x264enc: fix flushing of delayed frames with new default settings
+ * asfdemux: Handle new type of DRM'd asf files
+ * dvdreadsrc: fix handling of multi-angle streams
+ * dvdreadsrc: improve error messages on read errors
+ * mad: if gst_pad_alloc_buffer() returns a buffer with the wrong size allocate a new one
+ * mad: support reverse playback
+ * mpeg2dec: convert the position to stream time before answering to a position query
+ * mpeg2dec: fix position query by trusting upstream
+ * mpeg2dec: refactor cropping code to use libgstvideo functions
+ * mpeg2dec: use gst_pad_alloc_buffer() when cropping buffers
+ * mpegparse: re-fix flow return handling
+ * rmdemux: set GST_BUFFER_FLAG_DELTA_UNIT properly
+ * x264enc: add a note to the docs about encoder latency and queues
+ * x264enc: also accept YV12 input
+ * x264enc: Handle codec/encoder tags
+ * x264enc: Work around a rate control issue in libx264
+ * x264: use pkg-config to locate libx264
+ * x264: vbv-buf-capacity should have a minimum of 0
+ * xingmux: Don't ignore WRONG_STATE and NOT_LINKED when pushing data downstream
Bugs fixed in this release
- * 599718 : [asf] support chained asfs
- * 600412 : [asfdemux] Wrong handling of downstream GstFlowReturn
- * 607798 : x264enc needs updating to support new features and use x264 correctly
- * 618896 : lamemp3enc doesn't implement latency query
- * 620007 : Gibberish sound when playing a certain RealMedia file of Sipro/ACELP.net audio codec
- * 620344 : Update gst-plugins-ugly docs on website
- * 622407 : [asfdemux] doesn't detect some streams if preroll value is very small
- * 624786 : x264enc time base is wrong
- * 625557 : x264enc doesn't flush delayed frames properly
- * 626577 : [x264enc] regression: doesn't work with older versions of x264
- * 627946 : mp3parse misuses GST_FLOW_IS_FATAL, doesn't forward GST_FLOW_UNEXPECTED upstream
+ * 539254 : [dvdreadsrc] DVDs with multiple angles switch angles during read
+ * 571146 : mpeg2dec: possibly uses wrong strides for 4:2:2 and 4:4:4 YUV with unusual display width or height
+ * 599515 : Fix dvb for DVB API 3.3
+ * 621465 : [x264enc] Video codec information copied incorrectly to output
+ * 632549 : [mpeg2dec] answers to position queries are wrong for DVDs
+ * 632861 : [x264enc] really bad quality with tune=zerolatency
+ * 634840 : x264: use pkg-config to locate dependencies for plugin
+ * 635291 : x264enc: " vbv-buf-capacity " property should have minimum value of 0
+ * 635461 : Crash in mad decoder when changing number of audio output channels in Totem while media is running
+ * 636107 : x264enc: docs should indicate specifics of using with queues
+ * 637093 : rmdemux: set GST_BUFFER_FLAG_DELTA_UNIT properly
+ * 637932 : realmedia: do not use the pad buffer allocation functions in demuxers
+ * 639226 : [asfdemux] Doesn't handle new PlayReady DRM files
Download
Contributors to this release
- * Alessandro Decina
- * David Hoyt
+ * Benjamin Gaignard
* David Schleef
* Edward Hervey
+ * Guillaume Emont
+ * Jan Schmidt
+ * Leo Singer
* Mark Nauwelaerts
- * Olivier Crête
+ * Rob Clark
* Robert Swain
* Sebastian Dröge
* Stefan Kost
* Thiago Santos
+ * Thomas Green
* Tim-Philipp Müller
* Tristan Matthews
+ * Vincent Penquerc'h
* Wim Taymans
\ No newline at end of file
-Subproject commit 011bcc8a0fc7f798ee874a7ba899123fb2470e22
+Subproject commit 1de7f6ab2d4bc1af69f06079cf0f4e2cbbfdc178
AG_GST_CHECK_FEATURE(AMRNB, [amrnb library], amrnb, [
PKG_CHECK_MODULES(AMRNB, opencore-amrnb, HAVE_AMRNB="yes",
[ AG_GST_CHECK_LIBHEADER(AMRNB, opencore-amrnb,
- Decoder_Interface_init, -lm,
+ Decoder_Interface_init, $LIBM,
opencore-amrnb/interf_dec.h,
AMRNB_LIBS="-lopencore-amrnb")
])
dnl *** lame ***
translit(dnm, m, l) AM_CONDITIONAL(USE_LAME, true)
AG_GST_CHECK_FEATURE(LAME, [lame mp3 encoder library], lame, [
- AG_GST_CHECK_LIBHEADER(LAME, mp3lame, lame_init, -lm, lame/lame.h,
+ AG_GST_CHECK_LIBHEADER(LAME, mp3lame, lame_init, $LIBM, lame/lame.h,
[
HAVE_LAME="yes"
- LAME_LIBS="-lmp3lame -lm"
+ LAME_LIBS="-lmp3lame $LIBM"
dnl is lame presets available
LAME_CFLAGS=""
AC_TRY_COMPILE([#include <lame/lame.h>], [ int preset = MEDIUM ],
dnl *** x264 (MPEG-4 part 10/h.264/AVC encoder) ***
translit(dnm, m, l) AM_CONDITIONAL(USE_X264, true)
AG_GST_CHECK_FEATURE(X264, [x264 plug-in], x264, [
- AG_GST_CHECK_LIBHEADER(X264, x264, x264_encoder_encode, -lm, x264.h,
- AC_MSG_CHECKING([for uptodate x264 API version])
- dnl _stdint not yet generated, so no compiling
- AC_TRY_CPP([
- #include <x264.h>
- #if X264_BUILD < 55
- #error "x264 build too old"
- #endif
- ], [
- AC_MSG_RESULT(yes)
- X264_LIBS="$LDFLAGS -lx264 -lm"
- X264_CFLAGS="$CFLAGS"
- AC_SUBST(X264_LIBS)
- AC_SUBST(X264_CFLAGS)
- ], [
- AC_MSG_RESULT(no)
- HAVE_X264=no
- ]))
+ AG_GST_PKG_CHECK_MODULES(X264, x264 >= 0.55.0)
])
else
-e 's/.* PLUGINDIR$/#ifdef _DEBUG\n# define PLUGINDIR PREFIX "\\\\debug\\\\lib\\\\gstreamer-0.11"\n#else\n# define PLUGINDIR PREFIX "\\\\lib\\\\gstreamer-0.11"\n#endif/' \
-e 's/.* USE_BINARY_REGISTRY$/#define USE_BINARY_REGISTRY/' \
-e 's/.* VERSION$/#define VERSION "'$VERSION'"/' \
- -e "s/.* DEFAULT_AUDIOSINK$/#define DEFAULT_AUDIOSINK \"directaudiosink\"/" \
+ -e "s/.* DEFAULT_AUDIOSINK$/#define DEFAULT_AUDIOSINK \"directsoundsink\"/" \
-e "s/.* DEFAULT_AUDIOSRC$/#define DEFAULT_AUDIOSRC \"audiotestsrc\"/" \
-e "s/.* DEFAULT_VIDEOSRC$/#define DEFAULT_VIDEOSRC \"videotestsrc\"/" \
-e "s/.* DEFAULT_VISUALIZER$/#define DEFAULT_VISUALIZER \"goom\"/" \
<ARG>
<NAME>GstX264Enc::vbv-buf-capacity</NAME>
<TYPE>guint</TYPE>
-<RANGE>[300,10000]</RANGE>
+<RANGE><= 10000</RANGE>
<FLAGS>rw</FLAGS>
<NICK>VBV buffer capacity</NICK>
<BLURB>Size of the VBV buffer in milliseconds.</BLURB>
<description>Decodes ATSC A/52 encoded audio streams</description>
<filename>../../ext/a52dec/.libs/libgsta52dec.so</filename>
<basename>libgsta52dec.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>GPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>Adaptive Multi-Rate Narrow-Band</description>
<filename>../../ext/amrnb/.libs/libgstamrnb.so</filename>
<basename>libgstamrnb.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>unknown</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>Adaptive Multi-Rate Wide-Band Decoder</description>
<filename>../../ext/amrwbdec/.libs/libgstamrwbdec.so</filename>
<basename>libgstamrwbdec.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>unknown</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>Demuxes and muxes audio and video in Microsofts ASF format</description>
<filename>../../gst/asfdemux/.libs/libgstasf.so</filename>
<basename>libgstasf.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>LGPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>Read audio from audio CDs</description>
<filename>../../ext/cdio/.libs/libgstcdio.so</filename>
<basename>libgstcdio.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>GPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>Decode DVD LPCM frames into standard PCM</description>
<filename>../../gst/dvdlpcmdec/.libs/libgstdvdlpcmdec.so</filename>
<basename>libgstdvdlpcmdec.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>LGPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>Access a DVD with dvdread</description>
<filename>../../ext/dvdread/.libs/libgstdvdread.so</filename>
<basename>libgstdvdread.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>GPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>DVD subtitle parser and decoder</description>
<filename>../../gst/dvdsub/.libs/libgstdvdsub.so</filename>
<basename>libgstdvdsub.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>LGPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>Convert raw AC3 into IEC958 (S/PDIF) frames</description>
<filename>../../gst/iec958/.libs/libgstiec958.so</filename>
<basename>libgstiec958.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>LGPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>Encode MP3s with LAME</description>
<filename>../../ext/lame/.libs/libgstlame.so</filename>
<basename>libgstlame.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>LGPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>mp3 decoding based on the mad library</description>
<filename>../../ext/mad/.libs/libgstmad.so</filename>
<basename>libgstmad.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>GPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>LibMpeg2 decoder</description>
<filename>../../ext/mpeg2dec/.libs/libgstmpeg2dec.so</filename>
<basename>libgstmpeg2dec.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>GPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>MPEG-1 layer 1/2/3 audio stream elements</description>
<filename>../../gst/mpegaudioparse/.libs/libgstmpegaudioparse.so</filename>
<basename>libgstmpegaudioparse.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>LGPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>MPEG system stream parser</description>
<filename>../../gst/mpegstream/.libs/libgstmpegstream.so</filename>
<basename>libgstmpegstream.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>LGPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>RealMedia support plugins</description>
<filename>../../gst/realmedia/.libs/libgstrmdemux.so</filename>
<basename>libgstrmdemux.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>LGPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>Uses libsidplay to decode .sid files</description>
<filename>../../ext/sidplay/.libs/libgstsid.so</filename>
<basename>libgstsid.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>GPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>Encode MP2s with TwoLAME</description>
<filename>../../ext/twolame/.libs/libgsttwolame.so</filename>
<basename>libgsttwolame.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>LGPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<description>libx264-based H264 plugins</description>
<filename>../../ext/x264/.libs/libgstx264.so</filename>
<basename>libgstx264.so</basename>
- <version>0.10.16.1</version>
+ <version>0.10.17.1</version>
<license>GPL</license>
<source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw-yuv, format=(fourcc)I420, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ]</details>
+ <details>video/x-raw-yuv, format=(fourcc){ I420, YV12 }, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ]</details>
</caps>
<caps>
<name>src</name>
static const unsigned char block_size[16] =
{ 18, 24, 33, 37, 41, 47, 51, 59, 61,
- 6, 6, 0, 0, 0, 1, 1
+ 6, 0, 0, 0, 0, 1, 1
};
static gboolean gst_amrwbdec_event (GstPad * pad, GstEvent * event);
GST_DEBUG_OBJECT (amrwbdec, "mode %d, block %d", mode, block);
- if (!block || gst_adapter_available (amrwbdec->adapter) < block)
+ if (!block) {
+ GST_LOG_OBJECT (amrwbdec, "skipping byte");
+ gst_adapter_flush (amrwbdec->adapter, 1);
+ continue;
+ }
+
+ if (gst_adapter_available (amrwbdec->adapter) < block)
break;
/* the library seems to write into the source data, hence the copy. */
}
}
+static GstCaps *
+gst_lamemp3enc_sink_getcaps (GstPad * pad)
+{
+ const GstCaps *templ_caps;
+ GstLameMP3Enc *lame;
+ GstCaps *allowed = NULL;
+ GstCaps *caps, *filter_caps;
+ gint i, j;
+
+ lame = GST_LAMEMP3ENC (gst_pad_get_parent (pad));
+
+ /* we want to be able to communicate to upstream elements like audioconvert
+ * and audioresample any rate/channel restrictions downstream (e.g. muxer
+ * only accepting certain sample rates) */
+ templ_caps = gst_pad_get_pad_template_caps (pad);
+ allowed = gst_pad_get_allowed_caps (lame->srcpad);
+ if (!allowed || gst_caps_is_empty (allowed) || gst_caps_is_any (allowed)) {
+ caps = gst_caps_copy (templ_caps);
+ goto done;
+ }
+
+ filter_caps = gst_caps_new_empty ();
+
+ for (i = 0; i < gst_caps_get_size (templ_caps); i++) {
+ GQuark q_name;
+
+ q_name = gst_structure_get_name_id (gst_caps_get_structure (templ_caps, i));
+
+ /* pick rate + channel fields from allowed caps */
+ for (j = 0; j < gst_caps_get_size (allowed); j++) {
+ const GstStructure *allowed_s = gst_caps_get_structure (allowed, j);
+ const GValue *val;
+ GstStructure *s;
+
+ s = gst_structure_id_empty_new (q_name);
+ if ((val = gst_structure_get_value (allowed_s, "rate")))
+ gst_structure_set_value (s, "rate", val);
+ if ((val = gst_structure_get_value (allowed_s, "channels")))
+ gst_structure_set_value (s, "channels", val);
+
+ gst_caps_merge_structure (filter_caps, s);
+ }
+ }
+
+ caps = gst_caps_intersect (filter_caps, templ_caps);
+ gst_caps_unref (filter_caps);
+
+done:
+
+ gst_caps_replace (&allowed, NULL);
+ gst_object_unref (lame);
+
+ return caps;
+}
+
static gint64
gst_lamemp3enc_get_latency (GstLameMP3Enc * lame)
{
GST_DEBUG_FUNCPTR (gst_lamemp3enc_chain));
gst_pad_set_setcaps_function (lame->sinkpad,
GST_DEBUG_FUNCPTR (gst_lamemp3enc_sink_setcaps));
+ gst_pad_set_getcaps_function (lame->sinkpad,
+ GST_DEBUG_FUNCPTR (gst_lamemp3enc_sink_getcaps));
gst_element_add_pad (GST_ELEMENT (lame), lame->sinkpad);
lame->srcpad =
static GstStateChangeReturn gst_mad_change_state (GstElement * element,
GstStateChange transition);
-#ifndef GST_DISABLE_INDEX
static void gst_mad_set_index (GstElement * element, GstIndex * index);
static GstIndex *gst_mad_get_index (GstElement * element);
-#endif
static GstTagList *gst_mad_id3_to_tag_list (const struct id3_tag *tag);
gobject_class->dispose = gst_mad_dispose;
gstelement_class->change_state = gst_mad_change_state;
-#ifndef GST_DISABLE_INDEX
gstelement_class->set_index = gst_mad_set_index;
gstelement_class->get_index = gst_mad_get_index;
-#endif
/* init properties */
/* currently, string representations are used, we might want to change that */
{
GstMad *mad = GST_MAD (object);
-#ifndef GST_DISABLE_INDEX
gst_mad_set_index (GST_ELEMENT (object), NULL);
-#endif
g_free (mad->tempbuffer);
mad->tempbuffer = NULL;
G_OBJECT_CLASS (parent_class)->dispose (object);
}
-#ifndef GST_DISABLE_INDEX
static void
gst_mad_set_index (GstElement * element, GstIndex * index)
{
return mad->index;
}
-#endif
static gboolean
gst_mad_convert_sink (GstPad * pad, GstFormat src_format, gint64 src_value,
return FALSE;
}
-#ifndef GST_DISABLE_INDEX
static gboolean
index_seek (GstMad * mad, GstPad * pad, GstEvent * event)
{
return FALSE;
}
-#endif
static gboolean
normal_seek (GstMad * mad, GstPad * pad, GstEvent * event)
/* the all-formats seek logic, ref the event, we need it later */
gst_event_ref (event);
if (!(res = gst_pad_push_event (mad->sinkpad, event))) {
-#ifndef GST_DISABLE_INDEX
if (mad->index)
res = index_seek (mad, pad, event);
else
-#endif
res = normal_seek (mad, pad, event);
}
gst_event_unref (event);
}
-/* The following code has been taken from
+/* The following code has been taken from
* rhythmbox/metadata/monkey-media/stream-info-impl/id3-vfs/mp3bitrate.c
* which took it from xine-lib/src/demuxers/demux_mpgaudio.c
- * This code has been kindly relicensed to LGPL by Thibaut Mattern and
+ * This code has been kindly relicensed to LGPL by Thibaut Mattern and
* Bastien Nocera
*/
#define BE_32(x) GST_READ_UINT32_BE(x)
/* We are using the incoming timestamps to generate the outgoing ones
* if available. However some muxing formats are not precise enough
- * to allow us to generate a perfect stream. When converting the
+ * to allow us to generate a perfect stream. When converting the
* timestamp to a number of encoded samples so far we are introducing
- * a lot of potential error compared to our accumulated number of
- * samples encoded. If the difference between those 2 numbers is
- * bigger than half a frame we then use the incoming timestamp
+ * a lot of potential error compared to our accumulated number of
+ * samples encoded. If the difference between those 2 numbers is
+ * bigger than half a frame we then use the incoming timestamp
* as a reference, otherwise we continue using our accumulated samples
* counter */
if (ABS (mad->total_samples - total) > nsamples / 2) {
GST_SECOND, mad->rate) - time_offset;
}
-#ifndef GST_DISABLE_INDEX
if (mad->index) {
guint64 x_bytes = mad->base_byte_offset + mad->bytes_consumed;
- gst_index_add_association (mad->index, mad->index_id, 0,
+ gst_index_add_association (mad->index, mad->index_id,
+ GST_ASSOCIATION_FLAG_DELTA_UNIT,
GST_FORMAT_BYTES, x_bytes, GST_FORMAT_TIME, time_offset, NULL);
}
-#endif
if (mad->segment_start <= (time_offset ==
GST_CLOCK_TIME_NONE ? 0 : time_offset)) {
goto skip_frame;
}
+ if (GST_BUFFER_SIZE (outbuffer) != nsamples * mad->channels * 4) {
+ gst_buffer_unref (outbuffer);
+
+ outbuffer = gst_buffer_new_and_alloc (nsamples * mad->channels * 4);
+ gst_buffer_set_caps (outbuffer, GST_PAD_CAPS (mad->srcpad));
+ }
+
mad_synth_frame (&mad->synth, &mad->frame);
left_ch = mad->synth.pcm.samples[0];
right_ch = mad->synth.pcm.samples[1];
gint times_pending;
gboolean caps_set; /* used to keep track of whether to change/update caps */
-#ifndef GST_DISABLE_INDEX
GstIndex *index;
gint index_id;
-#endif
gboolean check_for_xing;
gboolean xing_found;
plugin_LTLIBRARIES = libgstmpeg2dec.la
libgstmpeg2dec_la_SOURCES = gstmpeg2dec.c
-libgstmpeg2dec_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(MPEG2DEC_CFLAGS)
-libgstmpeg2dec_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(MPEG2DEC_LIBS) $(GST_LIBS) \
- -lgstvideo-$(GST_MAJORMINOR)
+libgstmpeg2dec_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_CFLAGS) $(MPEG2DEC_CFLAGS)
+libgstmpeg2dec_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) \
+ $(GST_LIBS) $(MPEG2DEC_LIBS)
libgstmpeg2dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstmpeg2dec_la_LIBTOOLFLAGS = --tag=disable-static
static void gst_mpeg2dec_finalize (GObject * object);
static void gst_mpeg2dec_reset (GstMpeg2dec * mpeg2dec);
-#ifndef GST_DISABLE_INDEX
static void gst_mpeg2dec_set_index (GstElement * element, GstIndex * index);
static GstIndex *gst_mpeg2dec_get_index (GstElement * element);
-#endif
static gboolean gst_mpeg2dec_src_event (GstPad * pad, GstEvent * event);
static const GstQueryType *gst_mpeg2dec_get_src_query_types (GstPad * pad);
static GstElementClass *parent_class = NULL;
-static gboolean crop_buffer (GstMpeg2dec * mpeg2dec, GstBuffer ** buf);
+static gboolean gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstBuffer ** buf);
/*static guint gst_mpeg2dec_signals[LAST_SIGNAL] = { 0 };*/
gobject_class->finalize = gst_mpeg2dec_finalize;
gstelement_class->change_state = gst_mpeg2dec_change_state;
-#ifndef GST_DISABLE_INDEX
gstelement_class->set_index = gst_mpeg2dec_set_index;
gstelement_class->get_index = gst_mpeg2dec_get_index;
-#endif
}
static void
}
/* reset the initial video state */
- mpeg2dec->format = MPEG2DEC_FORMAT_NONE;
+ mpeg2dec->format = GST_VIDEO_FORMAT_UNKNOWN;
mpeg2dec->width = -1;
mpeg2dec->height = -1;
gst_segment_init (&mpeg2dec->segment, GST_FORMAT_UNDEFINED);
GST_OBJECT_UNLOCK (mpeg2dec);
}
-#ifndef GST_DISABLE_INDEX
static void
gst_mpeg2dec_set_index (GstElement * element, GstIndex * index)
{
return (mpeg2dec->index) ? gst_object_ref (mpeg2dec->index) : NULL;
}
-#endif
-
-/* see gst-plugins/gst/games/gstvideoimage.c, paint_setup_I420() */
-#define I420_Y_ROWSTRIDE(width) (GST_ROUND_UP_4(width))
-#define I420_U_ROWSTRIDE(width) (GST_ROUND_UP_8(width)/2)
-#define I420_V_ROWSTRIDE(width) ((GST_ROUND_UP_8(I420_Y_ROWSTRIDE(width)))/2)
-
-#define I420_Y_OFFSET(w,h) (0)
-#define I420_U_OFFSET(w,h) (I420_Y_OFFSET(w,h)+(I420_Y_ROWSTRIDE(w)*GST_ROUND_UP_2(h)))
-#define I420_V_OFFSET(w,h) (I420_U_OFFSET(w,h)+(I420_U_ROWSTRIDE(w)*GST_ROUND_UP_2(h)/2))
-
-#define I420_SIZE(w,h) (I420_V_OFFSET(w,h)+(I420_V_ROWSTRIDE(w)*GST_ROUND_UP_2(h)/2))
-
-static GstBuffer *
-crop_copy_i420_buffer (GstMpeg2dec * mpeg2dec, GstBuffer * input)
-{
- GstBuffer *outbuf;
- guint8 *dest, *src;
- guint outsize, line;
-
- outsize = I420_SIZE (mpeg2dec->width, mpeg2dec->height);
- GST_LOG_OBJECT (mpeg2dec, "Copying input buffer %ux%u (%u) to output buffer "
- "%ux%u (%u)", mpeg2dec->decoded_width, mpeg2dec->decoded_height,
- GST_BUFFER_SIZE (input), mpeg2dec->width, mpeg2dec->height, outsize);
- outbuf = gst_buffer_new_and_alloc (outsize);
-
- /* Copy Y first */
- src = GST_BUFFER_DATA (input);
- dest = GST_BUFFER_DATA (outbuf);
- for (line = 0; line < mpeg2dec->height; line++) {
- memcpy (dest, src, mpeg2dec->width);
- dest += I420_Y_ROWSTRIDE (mpeg2dec->width);
- src += I420_Y_ROWSTRIDE (mpeg2dec->decoded_width);
- }
-
- /* U */
- src = GST_BUFFER_DATA (input)
- + I420_U_OFFSET (mpeg2dec->decoded_width, mpeg2dec->decoded_height);
- dest = GST_BUFFER_DATA (outbuf)
- + I420_U_OFFSET (mpeg2dec->width, mpeg2dec->height);
- for (line = 0; line < mpeg2dec->height / 2; line++) {
- memcpy (dest, src, mpeg2dec->width / 2);
- dest += I420_U_ROWSTRIDE (mpeg2dec->width);
- src += I420_U_ROWSTRIDE (mpeg2dec->decoded_width);
- }
-
- /* V */
- src = GST_BUFFER_DATA (input)
- + I420_V_OFFSET (mpeg2dec->decoded_width, mpeg2dec->decoded_height);
- dest = GST_BUFFER_DATA (outbuf)
- + I420_V_OFFSET (mpeg2dec->width, mpeg2dec->height);
- for (line = 0; line < mpeg2dec->height / 2; line++) {
- memcpy (dest, src, mpeg2dec->width / 2);
- dest += I420_V_ROWSTRIDE (mpeg2dec->width);
- src += I420_V_ROWSTRIDE (mpeg2dec->decoded_width);
- }
-
- return outbuf;
-}
- /* FIXME: this is unlikely to be right stride-wise and offset-wise */
-static GstBuffer *
-crop_copy_i422_buffer (GstMpeg2dec * mpeg2dec, GstBuffer * input)
+static GstFlowReturn
+gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstBuffer ** buf)
{
+ GstFlowReturn flow_ret;
+ GstBuffer *inbuf = *buf;
GstBuffer *outbuf;
- guint8 *in_data, *out_data;
- guint line;
-
- outbuf = gst_buffer_new_and_alloc (mpeg2dec->width * mpeg2dec->height * 2);
-
- /* Copy Y first */
- in_data = GST_BUFFER_DATA (input);
- out_data = GST_BUFFER_DATA (outbuf);
- for (line = 0; line < mpeg2dec->height; line++) {
- memcpy (out_data, in_data, mpeg2dec->width);
- out_data += mpeg2dec->width;
- in_data += mpeg2dec->decoded_width;
- }
-
- /* Now copy U & V */
- in_data = GST_BUFFER_DATA (input)
- + mpeg2dec->decoded_width * mpeg2dec->decoded_height;
- for (line = 0; line < mpeg2dec->height; line++) {
- memcpy (out_data, in_data, mpeg2dec->width / 2);
- memcpy (out_data + mpeg2dec->width * mpeg2dec->height / 2,
- in_data + mpeg2dec->decoded_width * mpeg2dec->decoded_height / 2,
- mpeg2dec->width / 2);
- out_data += mpeg2dec->width / 2;
- in_data += mpeg2dec->decoded_width / 2;
+ guint outsize, c;
+
+ outsize = gst_video_format_get_size (dec->format, dec->width, dec->height);
+
+ GST_LOG_OBJECT (dec, "Copying input buffer %ux%u (%u) to output buffer "
+ "%ux%u (%u)", dec->decoded_width, dec->decoded_height,
+ GST_BUFFER_SIZE (inbuf), dec->width, dec->height, outsize);
+
+ flow_ret = gst_pad_alloc_buffer_and_set_caps (dec->srcpad,
+ GST_BUFFER_OFFSET_NONE, outsize, GST_PAD_CAPS (dec->srcpad), &outbuf);
+
+ if (G_UNLIKELY (flow_ret != GST_FLOW_OK))
+ return flow_ret;
+
+ for (c = 0; c < 3; c++) {
+ const guint8 *src;
+ guint8 *dest;
+ guint stride_in, stride_out;
+ guint c_height, c_width, line;
+
+ src =
+ GST_BUFFER_DATA (inbuf) +
+ gst_video_format_get_component_offset (dec->format, c,
+ dec->decoded_width, dec->decoded_height);
+ dest =
+ GST_BUFFER_DATA (outbuf) +
+ gst_video_format_get_component_offset (dec->format, c, dec->width,
+ dec->height);
+ stride_out = gst_video_format_get_row_stride (dec->format, c, dec->width);
+ stride_in =
+ gst_video_format_get_row_stride (dec->format, c, dec->decoded_width);
+ c_height =
+ gst_video_format_get_component_height (dec->format, c, dec->height);
+ c_width = gst_video_format_get_component_width (dec->format, c, dec->width);
+
+ for (line = 0; line < c_height; line++) {
+ memcpy (dest, src, c_width);
+ dest += stride_out;
+ src += stride_in;
+ }
}
- return outbuf;
-}
+ gst_buffer_set_caps (outbuf, GST_PAD_CAPS (dec->srcpad));
+ gst_buffer_copy_metadata (outbuf, inbuf,
+ GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS);
-static gboolean
-crop_buffer (GstMpeg2dec * mpeg2dec, GstBuffer ** buf)
-{
- gboolean result = TRUE;
- GstBuffer *input = *buf;
- GstBuffer *outbuf;
+ gst_buffer_unref (*buf);
+ *buf = outbuf;
- /*We crop only if the target region is smaller than the input one */
- if ((mpeg2dec->decoded_width > mpeg2dec->width) ||
- (mpeg2dec->decoded_height > mpeg2dec->height)) {
- /* If we don't know about the format, we just return the original
- * buffer.
- */
- if (mpeg2dec->format == MPEG2DEC_FORMAT_I422 ||
- mpeg2dec->format == MPEG2DEC_FORMAT_I420 ||
- mpeg2dec->format == MPEG2DEC_FORMAT_YV12) {
- /*FIXME: I have tried to use gst_buffer_copy_on_write, but it
- * still have some artifact, so I'me allocating new buffer
- * for each frame decoded...
- */
- if (mpeg2dec->format == MPEG2DEC_FORMAT_I422) {
- outbuf = crop_copy_i422_buffer (mpeg2dec, input);
- } else {
- outbuf = crop_copy_i420_buffer (mpeg2dec, input);
- }
-
- GST_DEBUG ("cropping buffer");
-
- gst_buffer_set_caps (outbuf, GST_PAD_CAPS (mpeg2dec->srcpad));
- gst_buffer_copy_metadata (outbuf, input,
- GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS);
- gst_buffer_unref (input);
-
- *buf = outbuf;
- result = TRUE;
- }
- }
-
- return result;
+ return GST_FLOW_OK;
}
static GstFlowReturn
/* ERRORS */
no_buffer:
{
- if (ret != GST_FLOW_WRONG_STATE && ret != GST_FLOW_UNEXPECTED) {
+ if (ret != GST_FLOW_WRONG_STATE && ret != GST_FLOW_UNEXPECTED &&
+ ret != GST_FLOW_NOT_LINKED) {
GST_ELEMENT_ERROR (mpeg2dec, RESOURCE, FAILED, (NULL),
("Failed to allocate memory for buffer, reason %s",
gst_flow_get_name (ret)));
if (sequence->width != sequence->chroma_width &&
sequence->height != sequence->chroma_height) {
-
- fourcc = GST_STR_FOURCC ("I420");
- mpeg2dec->format = MPEG2DEC_FORMAT_I420;
- mpeg2dec->size =
- I420_SIZE (mpeg2dec->decoded_width, mpeg2dec->decoded_height);
-
- mpeg2dec->u_offs =
- I420_U_OFFSET (mpeg2dec->decoded_width, mpeg2dec->decoded_height);
- mpeg2dec->v_offs =
- I420_V_OFFSET (mpeg2dec->decoded_width, mpeg2dec->decoded_height);
-
+ mpeg2dec->format = GST_VIDEO_FORMAT_I420;
} else if ((sequence->width == sequence->chroma_width &&
sequence->height != sequence->chroma_height) ||
(sequence->width != sequence->chroma_width &&
sequence->height == sequence->chroma_height)) {
- gint halfsize;
-
- fourcc = GST_STR_FOURCC ("Y42B");
- mpeg2dec->format = MPEG2DEC_FORMAT_I422;
- halfsize = mpeg2dec->decoded_width * mpeg2dec->decoded_height;
- mpeg2dec->size = halfsize * 2;
- mpeg2dec->u_offs = halfsize;
- mpeg2dec->v_offs = halfsize + (halfsize / 2);
+ mpeg2dec->format = GST_VIDEO_FORMAT_Y42B;
} else {
- gint size;
-
- size = mpeg2dec->decoded_width * mpeg2dec->decoded_height;
-
- fourcc = GST_STR_FOURCC ("Y444");
- mpeg2dec->format = MPEG2DEC_FORMAT_Y444;
- mpeg2dec->size = size * 3;
- mpeg2dec->u_offs = size;
- mpeg2dec->v_offs = size * 2;
+ mpeg2dec->format = GST_VIDEO_FORMAT_Y444;
}
+ fourcc = gst_video_format_to_fourcc (mpeg2dec->format);
+ mpeg2dec->size = gst_video_format_get_size (mpeg2dec->format,
+ mpeg2dec->decoded_width, mpeg2dec->decoded_height);
+ mpeg2dec->u_offs = gst_video_format_get_component_offset (mpeg2dec->format, 1,
+ mpeg2dec->decoded_width, mpeg2dec->decoded_height);
+ mpeg2dec->v_offs = gst_video_format_get_component_offset (mpeg2dec->format, 2,
+ mpeg2dec->decoded_width, mpeg2dec->decoded_height);
+
if (mpeg2dec->pixel_width == 0 || mpeg2dec->pixel_height == 0) {
- GValue par = { 0, }
- , dar = {
- 0,}
- , dimensions = {
- 0,};
+ GValue par = { 0, };
+ GValue dar = { 0, };
+ GValue dimensions = { 0, };
/* assume display aspect ratio (DAR) of 4:3 */
g_value_init (&dar, GST_TYPE_FRACTION);
init_dummybuf (mpeg2dec);
- /* Pump in some null buffers, because otherwise libmpeg2 doesn't
+ /* Pump in some null buffers, because otherwise libmpeg2 doesn't
* initialise the discard_fbuf->id */
mpeg2_set_buf (mpeg2dec->decoder, mpeg2dec->dummybuf, NULL);
mpeg2_set_buf (mpeg2dec->decoder, mpeg2dec->dummybuf, NULL);
picture->nb_fields, GST_BUFFER_OFFSET (outbuf),
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)));
-#ifndef GST_DISABLE_INDEX
if (mpeg2dec->index) {
gst_index_add_association (mpeg2dec->index, mpeg2dec->index_id,
- (key_frame ? GST_ASSOCIATION_FLAG_KEY_UNIT : 0),
+ (key_frame ? GST_ASSOCIATION_FLAG_KEY_UNIT :
+ GST_ASSOCIATION_FLAG_DELTA_UNIT),
GST_FORMAT_BYTES, GST_BUFFER_OFFSET (outbuf),
GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (outbuf), 0);
}
-#endif
if (picture->flags & PIC_FLAG_SKIP)
goto skip;
* array of buffers */
gst_buffer_ref (outbuf);
- /* do cropping if needed */
- crop_buffer (mpeg2dec, &outbuf);
+ /* do cropping if the target region is smaller than the input one */
+ if (mpeg2dec->decoded_width != mpeg2dec->width ||
+ mpeg2dec->decoded_height != mpeg2dec->height) {
+ GST_DEBUG_OBJECT (mpeg2dec, "cropping buffer");
+ ret = gst_mpeg2dec_crop_buffer (mpeg2dec, &outbuf);
+ if (ret != GST_FLOW_OK)
+ goto done;
+ }
if (mpeg2dec->segment.rate >= 0.0) {
/* forward: push right away */
ret = GST_FLOW_OK;
}
+done:
+
return ret;
/* special cases */
break;
}
case GST_EVENT_EOS:
-#ifndef GST_DISABLE_INDEX
if (mpeg2dec->index && mpeg2dec->closed) {
gst_index_commit (mpeg2dec->index, mpeg2dec->index_id);
}
-#endif
ret = gst_pad_push_event (mpeg2dec->srcpad, event);
break;
default:
}
#endif
-#ifndef GST_DISABLE_INDEX
static gboolean
index_seek (GstPad * pad, GstEvent * event)
{
}
return FALSE;
}
-#endif
static gboolean
normal_seek (GstPad * pad, GstEvent * event)
case GST_EVENT_SEEK:{
gst_event_ref (event);
if (!(res = gst_pad_push_event (mpeg2dec->sinkpad, event))) {
-#ifndef GST_DISABLE_INDEX
if (mpeg2dec->index)
res = index_seek (pad, event);
else
-#endif
res = normal_seek (pad, event);
}
gst_event_unref (event);
typedef enum
{
- MPEG2DEC_FORMAT_NONE,
- MPEG2DEC_FORMAT_I422,
- MPEG2DEC_FORMAT_I420,
- MPEG2DEC_FORMAT_YV12,
- MPEG2DEC_FORMAT_Y444
-} Mpeg2decFormat;
-
-typedef enum
-{
MPEG2DEC_DISC_NONE = 0,
MPEG2DEC_DISC_NEW_PICTURE,
MPEG2DEC_DISC_NEW_KEYFRAME
GstSegment segment;
/* video state */
- Mpeg2decFormat format;
+ GstVideoFormat format;
gint width;
gint height;
gint decoded_width;
gint v_offs;
guint8 *dummybuf[4];
-
+
guint64 offset;
gint fps_n;
gint fps_d;
gboolean need_sequence;
-#ifndef GST_DISABLE_INDEX
GstIndex *index;
gint index_id;
-#endif
-
+
gint error_count;
gboolean can_allocate_aligned;
* applied, followed by the user-set properties, fast first pass restrictions and
* finally the profile restrictions.
*
+ * <note>Some settings, including the default settings, may lead to quite
+ * some latency (i.e. frame buffering) in the encoder. This may cause problems
+ * with pipeline stalling in non-trivial pipelines, because the encoder latency
+ * is often considerably higher than the default size of a simple queue
+ * element. Such problems are caused by one of the queues in the other
+ * non-x264enc streams/branches filling up and blocking upstream. They can
+ * be fixed by relaxing the default time/size/buffer limits on the queue
+ * elements in the non-x264 branches, or using a (single) multiqueue element
+ * for all branches. Also see the last example below.
+ * </note>
+ *
* <refsect2>
* <title>Example pipeline</title>
* |[
* constant quality at around Q25 using the 'medium' speed/quality preset and
* restricting the options used so that the output is H.264 Baseline Profile
* compliant and finally multiplexing the output in Quicktime mov format.
+ * |[
+ * gst-launch -v videotestsrc num-buffers=1000 ! tee name=t ! queue ! xvimagesink \
+ * t. ! queue ! x264enc rc-lookahead=5 ! fakesink
+ * ]| This example pipeline will encode a test video source to H264 while
+ * displaying the input material at the same time. As mentioned above,
+ * specific settings are needed in this case to avoid pipeline stalling.
+ * Depending on goals and context, other approaches are possible, e.g.
+ * tune=zerolatency might be configured, or queue sizes increased.
* </refsect2>
*/
static GType tune_type = 0;
if (!tune_type) {
- tune_type = g_flags_register_static ("GstX264EncTune", tune_types);
+ tune_type = g_flags_register_static ("GstX264EncTune", tune_types + 1);
}
return tune_type;
}
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("video/x-raw-yuv, "
- "format = (fourcc) I420, "
+ "format = (fourcc) { I420, YV12 }, "
"framerate = (fraction) [0, MAX], "
"width = (int) [ 16, MAX ], " "height = (int) [ 16, MAX ]")
);
g_object_class_install_property (gobject_class, ARG_VBV_BUF_CAPACITY,
g_param_spec_uint ("vbv-buf-capacity", "VBV buffer capacity",
"Size of the VBV buffer in milliseconds",
- 300, 10000, ARG_VBV_BUF_CAPACITY_DEFAULT,
+ 0, 10000, ARG_VBV_BUF_CAPACITY_DEFAULT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
#ifdef X264_PRESETS
gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
{
GstX264Enc *encoder = GST_X264_ENC (GST_OBJECT_PARENT (pad));
+ GstVideoFormat format;
gint width, height;
gint fps_num, fps_den;
gint par_num, par_den;
gint i;
/* get info from caps */
- /* only I420 supported for now; so apparently claims x264enc ? */
- if (!gst_video_format_parse_caps (caps, &encoder->format, &width, &height) ||
- encoder->format != GST_VIDEO_FORMAT_I420)
+ if (!gst_video_format_parse_caps (caps, &format, &width, &height))
return FALSE;
if (!gst_video_parse_caps_framerate (caps, &fps_num, &fps_den))
return FALSE;
par_den = 1;
}
- /* If the encoder is initialized, do not
- reinitialize it again if not necessary */
+ /* If the encoder is initialized, do not reinitialize it again if not
+ * necessary */
if (encoder->x264enc) {
if (width == encoder->width && height == encoder->height
&& fps_num == encoder->fps_num && fps_den == encoder->fps_den
}
/* store input description */
+ encoder->format = format;
encoder->width = width;
encoder->height = height;
encoder->fps_num = fps_num;
encoder->par_num = par_num;
encoder->par_den = par_den;
- /* prepare a cached image description */
+ /* prepare a cached image description */
encoder->image_size = gst_video_format_get_size (encoder->format, width,
height);
for (i = 0; i < 3; ++i) {
- /* only offsets now, is shifted later */
+ /* only offsets now, is shifted later. Offsets will be for Y, U, V so we
+ * can just feed YV12 as I420 to the decoder later */
encoder->offset[i] = gst_video_format_get_component_offset (encoder->format,
i, width, height);
encoder->stride[i] = gst_video_format_get_row_stride (encoder->format,
case GST_EVENT_EOS:
gst_x264_enc_flush_frames (encoder, TRUE);
break;
+ case GST_EVENT_TAG:{
+ GstTagList *tags = NULL;
+
+ event =
+ GST_EVENT (gst_mini_object_make_writable (GST_MINI_OBJECT (event)));
+
+ gst_event_parse_tag (event, &tags);
+ /* drop codec/video-codec and replace encoder/encoder-version */
+ gst_tag_list_remove_tag (tags, GST_TAG_VIDEO_CODEC);
+ gst_tag_list_remove_tag (tags, GST_TAG_CODEC);
+ gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_ENCODER, "x264",
+ GST_TAG_ENCODER_VERSION, X264_BUILD, NULL);
+ /* push is done below */
+ break;
/* no flushing if flush received,
* buffers in encoder are considered (in the) past */
+ }
case GST_EVENT_CUSTOM_DOWNSTREAM:{
const GstStructure *s;
s = gst_event_get_structure (event);
<release>
<Version>
+ <revision>0.10.17</revision>
+ <branch>0.10</branch>
+ <name>Raised by Wolves</name>
+ <created>2011-01-21</created>
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.17.tar.bz2" />
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.17.tar.gz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>0.10.16</revision>
<branch>0.10</branch>
<name>Because He Knows the Time is Short</name>
{ASF_OBJ_MARKER, "ASF_OBJ_MARKER",
{0xf487cd01, 0x11cfa951, 0xc000e68e, 0x6553200c}
},
+ /* This guid is definitely used for encryption (mentioned in MS smooth
+ * streaming docs) in new PlayReady (c) (tm) (wtf) system, but I haven't
+ * found a proper name for it.
+ * (Edward Jan 11 2011).*/
+ {ASF_OBJ_UNKNOWN_ENCRYPTION_OBJECT, "ASF_OBJ_UNKNOWN_ENCRYPTION_OBJECT",
+ {0x9a04f079, 0x42869840, 0x5be692ab, 0x955f88e0}
+ },
{ASF_OBJ_UNDEFINED, "ASF_OBJ_UNDEFINED",
{0, 0, 0, 0}
}
ASF_OBJ_EXT_CONTENT_ENCRYPTION,
ASF_OBJ_DIGITAL_SIGNATURE_OBJECT,
ASF_OBJ_SCRIPT_COMMAND,
- ASF_OBJ_MARKER
+ ASF_OBJ_MARKER,
+ ASF_OBJ_UNKNOWN_ENCRYPTION_OBJECT
} AsfObjectID;
typedef enum {
switch (ext->id) {
case ASF_PAYLOAD_EXTENSION_DURATION:
if (G_LIKELY (ext->len == 2)) {
- payload->duration =
- GST_READ_UINT16_LE (payload->rep_data + off) * GST_MSECOND;
+ guint16 tdur = GST_READ_UINT16_LE (payload->rep_data + off);
+ /* packet durations of 1ms are mostly invalid */
+ if (tdur != 1)
+ payload->duration = tdur * GST_MSECOND;
} else {
GST_WARNING ("unexpected DURATION extensions len %u", ext->len);
}
flags = gst_asf_demux_get_uint16 (&data, &size);
stream_id = flags & 0x7f;
- is_encrypted = ! !((flags & 0x8000) << 15);
+ is_encrypted = !!((flags & 0x8000) << 15);
unknown = gst_asf_demux_get_uint32 (&data, &size);
GST_DEBUG_OBJECT (demux, "Found stream %u, time_offset=%" GST_TIME_FORMAT,
max_pktsize = gst_asf_demux_get_uint32 (&data, &size);
min_bitrate = gst_asf_demux_get_uint32 (&data, &size);
- demux->broadcast = ! !(flags & 0x01);
- demux->seekable = ! !(flags & 0x02);
+ demux->broadcast = !!(flags & 0x01);
+ demux->seekable = !!(flags & 0x02);
GST_DEBUG_OBJECT (demux, "min_pktsize = %u", min_pktsize);
GST_DEBUG_OBJECT (demux, "flags::broadcast = %d", demux->broadcast);
case ASF_OBJ_CONTENT_ENCRYPTION:
case ASF_OBJ_EXT_CONTENT_ENCRYPTION:
case ASF_OBJ_DIGITAL_SIGNATURE_OBJECT:
+ case ASF_OBJ_UNKNOWN_ENCRYPTION_OBJECT:
goto error_encrypted;
case ASF_OBJ_CONCEAL_NONE:
case ASF_OBJ_HEAD2:
bitrate = (header >> 12) & 0xF;
bitrate = mp3types_bitrates[lsf][layer - 1][bitrate] * 1000;
if (bitrate == 0)
- return 0;
+ return FALSE;
samplerate = (header >> 10) & 0x3;
samplerate = mp3types_freqs[lsf + mpg25][samplerate];
*/
#define PTM_DISCONT_ADJUST (0.3 * GST_SECOND)
#define INITIAL_END_PTM (-1)
+#define MAX_GAP ( 3 * GST_SECOND / 2 )
+#define MAX_GAP_TOLERANCE ( GST_SECOND / 20 )
GST_DEBUG_CATEGORY_STATIC (gstdvddemux_debug);
#define GST_CAT_DEFAULT (gstdvddemux_debug)
gst_element_no_more_pads (GST_ELEMENT (dvd_demux));
/* Keep video/audio/subtitle pads within 1/2 sec of the SCR */
- mpeg_demux->max_gap = GST_SECOND / 2;
- mpeg_demux->max_gap_tolerance = GST_SECOND / 20;
+ mpeg_demux->max_gap = MAX_GAP;
+ mpeg_demux->max_gap_tolerance = MAX_GAP_TOLERANCE;
} else {
GST_DEBUG_OBJECT (dvd_demux, "dvddemux Forwarding DVD event %s to all pads",
event_type);
dvd_demux->mpeg_version = 0;
/* Reset max_gap handling */
- mpeg_demux->max_gap = 0.5 * GST_SECOND;
- mpeg_demux->max_gap_tolerance = 0.05 * GST_SECOND;
+ mpeg_demux->max_gap = MAX_GAP;
+ mpeg_demux->max_gap_tolerance = MAX_GAP_TOLERANCE;
}
static void
outstream->scr_offs = 0;
if (mpeg_demux->index != NULL) {
- /* Register a new index position. */
+ /* Register a new index position.
+ * FIXME: check for keyframes
+ */
gst_index_add_association (mpeg_demux->index,
- outstream->index_id, 0,
+ outstream->index_id, GST_ASSOCIATION_FLAG_DELTA_UNIT,
GST_FORMAT_BYTES,
GST_BUFFER_OFFSET (buffer), GST_FORMAT_TIME, timestamp, 0);
}
const guint8 *data;
GstBuffer *buf = NULL;
- ret = gst_pad_alloc_buffer_and_set_caps (demux->srcpad,
- GST_BUFFER_OFFSET_NONE, unit_size, GST_PAD_CAPS (demux->srcpad), &buf);
-
- if (ret != GST_FLOW_OK) {
- GST_DEBUG_OBJECT (demux, "pad_alloc flow: %s", gst_flow_get_name (ret));
- break;
- }
+ buf = gst_buffer_new_and_alloc (unit_size);
+ gst_buffer_set_caps (buf, GST_PAD_CAPS (demux->srcpad));
data = gst_adapter_peek (demux->adapter, unit_size);
memcpy (GST_BUFFER_DATA (buf), data, unit_size);
static GstFlowReturn
gst_rmdemux_descramble_audio (GstRMDemux * rmdemux, GstRMDemuxStream * stream)
{
- GstFlowReturn ret;
+ GstFlowReturn ret = GST_FLOW_ERROR;
GstBuffer *outbuf;
guint packet_size = stream->packet_size;
guint height = stream->subpackets->len;
GST_LOG ("packet_size = %u, leaf_size = %u, height= %u", packet_size,
leaf_size, height);
- ret = gst_pad_alloc_buffer_and_set_caps (stream->pad,
- GST_BUFFER_OFFSET_NONE, height * packet_size,
- GST_PAD_CAPS (stream->pad), &outbuf);
-
- if (ret != GST_FLOW_OK)
- goto done;
+ outbuf = gst_buffer_new_and_alloc (height * packet_size);
+ gst_buffer_set_caps (outbuf, GST_PAD_CAPS (stream->pad));
for (p = 0; p < height; ++p) {
GstBuffer *b = g_ptr_array_index (stream->subpackets, p);
gst_buffer_unref (outbuf);
-done:
-
gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream);
return ret;
GST_LOG ("packet_size = %u, leaf_size = %u, height= %u", packet_size,
stream->leaf_size, height);
- ret = gst_pad_alloc_buffer_and_set_caps (stream->pad,
- GST_BUFFER_OFFSET_NONE, height * packet_size,
- GST_PAD_CAPS (stream->pad), &outbuf);
-
- if (ret != GST_FLOW_OK)
- goto done;
+ outbuf = gst_buffer_new_and_alloc (height * packet_size);
+ gst_buffer_set_caps (outbuf, GST_PAD_CAPS (stream->pad));
for (p = 0; p < height; ++p) {
GstBuffer *b = g_ptr_array_index (stream->subpackets, p);
gst_buffer_set_caps (outbuf, GST_PAD_CAPS (stream->pad));
ret = gst_pad_push (stream->pad, outbuf);
-done:
-
gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream);
return ret;
stream->discont = FALSE;
}
+ if (!key) {
+ GST_BUFFER_FLAG_SET (out, GST_BUFFER_FLAG_DELTA_UNIT);
+ }
+
ret = gst_pad_push (stream->pad, out);
ret = gst_rmdemux_combine_flows (rmdemux, stream, ret);
if (ret != GST_FLOW_OK)
GstBuffer * in, guint offset, guint16 version,
GstClockTime timestamp, gboolean key)
{
- GstFlowReturn ret, cret;
+ GstFlowReturn ret;
GstBuffer *buffer;
const guint8 *data;
guint size;
data = GST_BUFFER_DATA (in) + offset;
size = GST_BUFFER_SIZE (in) - offset;
- ret = gst_pad_alloc_buffer_and_set_caps (stream->pad,
- GST_BUFFER_OFFSET_NONE, size, GST_PAD_CAPS (stream->pad), &buffer);
-
- cret = gst_rmdemux_combine_flows (rmdemux, stream, ret);
- if (ret != GST_FLOW_OK)
- goto alloc_failed;
+ buffer = gst_buffer_new_and_alloc (size);
+ gst_buffer_set_caps (buffer, GST_PAD_CAPS (stream->pad));
memcpy (GST_BUFFER_DATA (buffer), (guint8 *) data, size);
gst_buffer_unref (in);
return ret;
-
- /* ERRORS */
-alloc_failed:
- {
- GST_DEBUG_OBJECT (rmdemux, "pad alloc returned %d", ret);
- gst_buffer_unref (in);
- return cret;
- }
}
static GstFlowReturn
static void
gst_rm_utils_swap_nibbles (guint8 * data, gint idx1, gint idx2, gint len)
{
- guint8 *d1, *d2, tmp1, tmp2, tmp1n, tmp2n;
+ guint8 *d1, *d2, tmp1 = 0, tmp2, tmp1n, tmp2n;
if ((idx2 & 1) && !(idx1 & 1)) {
/* align destination to a byte by swapping the indexes */
# Bulgarian translation of gst-plugins-ugly.
-# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
# This file is distributed under the same license as the gst-plugins-ugly package.
-# Alexander Shopov <ash@contact.bg>, 2007, 2008, 2009.
+# Alexander Shopov <ash@kambanaria.org>, 2007, 2008, 2009, 2010.
+#
#
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-ugly 0.10.11.2\n"
+"Project-Id-Version: gst-plugins-ugly 0.10.14.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2010-10-15 15:20+0100\n"
-"PO-Revision-Date: 2009-06-15 07:48+0300\n"
-"Last-Translator: Alexander Shopov <ash@contact.bg>\n"
+"POT-Creation-Date: 2011-01-07 14:34+0000\n"
+"PO-Revision-Date: 2010-11-04 14:22+0200\n"
+"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
-"Language: bg\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#, c-format
msgid "Could not open DVD title %d"
-msgstr "Част %d от DVD-то не може да бъде отворена"
+msgstr "Ð\97аглавнаÑ\82а Ñ\87аст %d от DVD-то не може да бъде отворена"
#, c-format
msgid "Failed to go to chapter %d of DVD title %d"
-msgstr "Не може да се премине към раздел %d от част %d на DVD-то"
+msgstr "Не може да се премине към раздел %d от заглавната част %d на DVD-то"
#, c-format
msgid ""
"Could not open DVD title %d. Interactive titles are not supported by this "
"element"
msgstr ""
-"ЧаÑ\81Ñ\82 %d оÑ\82 DVD-Ñ\82о не може да бÑ\8aде оÑ\82воÑ\80ена. Ð\98нÑ\82еÑ\80акÑ\82ивни Ñ\87аÑ\81Ñ\82и не Ñ\81е "
-"поддържат от този елемент"
+"Ð\97аглавнаÑ\82а Ñ\87аÑ\81Ñ\82 %d оÑ\82 DVD-Ñ\82о не може да бÑ\8aде оÑ\82воÑ\80ена. Ð\98нÑ\82еÑ\80акÑ\82ивни Ñ\87аÑ\81Ñ\82и не "
+"се поддържат от този елемент"
msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
msgid "Internal data stream error."
msgstr "Вътрешна грешка в потока от данни."
-
-#~ msgid "Invalid title information on DVD."
-#~ msgstr "Неправилна заглавна информация в DVD."
-
-#~ msgid "Could not read title information for DVD."
-#~ msgstr "Заглавната информация в DVD не може да бъде прочетена."
-
-#~ msgid "Failed to open DVD device '%s'."
-#~ msgstr "Устройството за DVD — „%s“, не може да бъде отворено."
-
-#~ msgid "Failed to set PGC based seeking."
-#~ msgstr "Не може да се зададе търсене на базата на PGC."
-# Catalan translation for GStreamer.
-# Copyright © 2004 Free Software Foundation, Inc.
-# This file is distributed under the same licence as the gst-plugins package.
-# Jordi Mallach <jordi@sindominio.net>, 2004.
+# Catalan translation for gstreamer.
+# Copyright © 2004, 2005, 2010 Free Software Foundation, Inc.
+# This file is put in the public domain.
+# Jordi Mallach <jordi@sindominio.net>, 2004, 2005, 2010.
#
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins 0.8.3\n"
+"Project-Id-Version: gst-plugins-ugly 0.10.14.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2010-10-15 15:20+0100\n"
-"PO-Revision-Date: 2004-08-05 15:48+0200\n"
+"POT-Creation-Date: 2011-01-07 14:34+0000\n"
+"PO-Revision-Date: 2010-11-04 23:22+0100\n"
"Last-Translator: Jordi Mallach <jordi@sindominio.net>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!=1;\n"
-#, fuzzy
msgid "Could not read from CD."
-msgstr "No s'ha pogut escriure al fitxer «%s»."
+msgstr "No s'ha pogut llegir des del CD."
msgid "Could not open CD device for reading."
-msgstr "No s'ha pogut obrir el dispositiu de CD per a la lectura."
+msgstr "No s'ha pogut obrir el dispositiu de CD per a llegir."
-#, fuzzy
msgid "Disc is not an Audio CD."
-msgstr "El dispositiu no està obert."
+msgstr "El disc no és un CD d'àudio."
msgid "Could not open DVD"
-msgstr ""
+msgstr "No s'ha pogut obrir el DVD"
-#, fuzzy, c-format
+#, c-format
msgid "Could not open DVD title %d"
-msgstr "No s'ha pogut tancar el fitxer vfs «%s»."
+msgstr "No s'ha pogut obrir el títol %d del DVD"
#, c-format
msgid "Failed to go to chapter %d of DVD title %d"
-msgstr ""
+msgstr "No s'ha pogut anar al capítol %d del títol %d del DVD."
#, c-format
msgid ""
"Could not open DVD title %d. Interactive titles are not supported by this "
"element"
msgstr ""
+"No s'ha pogut obrir el títol %d del DVD. Els títols interactius no són "
+"implementats per aquest element"
msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
#, fuzzy
msgid "Could not read DVD."
-msgstr "No s'ha pogut escriure al fitxer «%s»."
+msgstr "No s'ha pogut obrir el DVD"
msgid "Failed to configure LAME encoder. Check your encoding parameters."
msgstr ""
+"No s'ha pogut configurar el codificador LAME. Comproveu els paràmetres de "
+"codificació."
#, c-format
msgid ""
"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
"bitrate was changed to %d kbit/s."
msgstr ""
+"La taxa de bits %d kbit/s per a la propietat «%s» no és permesa. S'ha "
+"canviat la taxa de bits a %d kbit/s."
msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
msgstr ""
+"No s'ha pogut configurar el codificador TwoLAME. Comproveu els paràmetres de "
+"codificació."
msgid "This stream contains no data."
-msgstr ""
+msgstr "Aquest flux no conté dades."
msgid "Internal data stream error."
-msgstr ""
-
-#, fuzzy
-#~ msgid "Could not read title information for DVD."
-#~ msgstr "No s'ha pogut escriure al fitxer «%s»."
-
-#~ msgid "Could not open file \"%s\" for writing."
-#~ msgstr "No s'ha pogut obrir el fitxer «%s» per a l'escriptura."
-
-#~ msgid "Error closing file \"%s\"."
-#~ msgstr "S'ha produït un error en tancar el fitxer «%s»."
-
-#~ msgid "Could not open file \"%s\" for reading."
-#~ msgstr "No s'ha pogut obrir el fitxer «%s» per a la lectura."
-
-#~ msgid "Could not open vfs file \"%s\" for reading."
-#~ msgstr "No s'ha pogut obrir el fitxer vfs «%s» per a la lectura."
-
-#~ msgid "Could not open vfs file \"%s\" for writing: %s."
-#~ msgstr "No s'ha pogut obrir el fitxer vfs «%s» per a l'escriptura: %s."
-
-#~ msgid "No filename given"
-#~ msgstr "No s'ha donat cap nom de fitxer"
-
-#~ msgid "No filename specified."
-#~ msgstr "No s'ha especificat cap nom de fitxer."
-
-#~ msgid "No or invalid input audio, AVI stream will be corrupt."
-#~ msgstr ""
-#~ "L'entrada d'àudio no existeix o és invàlida, el flux AVI serà corrupte."
-
-#~ msgid ""
-#~ "The %s element could not be found. This element is essential for "
-#~ "playback. Please install the right plug-in and verify that it works by "
-#~ "running 'gst-inspect %s'"
-#~ msgstr ""
-#~ "No s'ha pogut trobar l'element %s. Aquest element és essencial per a la "
-#~ "reproducció. Si us plau, instal·leu el connector adequat i verifiqueu que "
-#~ "funciona correctament executant «gst-inspect %s»"
-
-#~ msgid ""
-#~ "No usable colorspace element could be found.\n"
-#~ "Please install one and restart."
-#~ msgstr ""
-#~ "No s'ha trobat cap element d'espai de color utilitzable.\n"
-#~ "Si us plau, instal·leu un i reinicieu."
-
-#~ msgid "Could not open audio device \"%s\" for writing."
-#~ msgstr "No s'ha pogut el dispositiu d'àudio «%s» per a l'escriptura."
-
-#~ msgid "Could not open control device \"%s\" for writing."
-#~ msgstr ""
-#~ "No s'ha pogut obrir el dispositiu de control «%s» per a l'escriptura."
-
-#~ msgid "Could not configure audio device \"%s\"."
-#~ msgstr "No s'ha pogut configurar el dispositiu d'àudio «%s»."
-
-#~ msgid "Could not set audio device \"%s\" to %d Hz."
-#~ msgstr "No s'ha pogut establir el dispositiu d'àudio «%s» a %d Hz."
-
-#~ msgid "Could not close audio device \"%s\"."
-#~ msgstr "No s'ha pogut tancar el dispositiu d'àudio «%s»."
-
-#~ msgid "Could not close control device \"%s\"."
-#~ msgstr "No s'ha pogut tancar el dispositiu de control «%s»."
-
-#~ msgid "Could not open video device \"%s\" for writing."
-#~ msgstr "No s'ha pogut obrir el dispositiu de vídeo «%s» per a l'escriptura."
-
-#~ msgid "Could not close video device \"%s\"."
-#~ msgstr "No s'ha pogut tancar el dispositiu de vídeo «%s»."
-
-#~ msgid "Could not write to device \"%s\"."
-#~ msgstr "No s'ha pogut escriure al dispositiu «%s»."
-
-#~ msgid "OSS device \"%s\" is already in use by another program."
-#~ msgstr "El dispositiu OSS «%s» ja està en ús per un altre programa."
-
-#~ msgid "Could not access device \"%s\", check its permissions."
-#~ msgstr ""
-#~ "No s'ha pogut accedir al dispositiu «%s», comproveu els seus permisos."
-
-#~ msgid "Device \"%s\" does not exist."
-#~ msgstr "El dispositiu «%s» no existeix."
-
-#~ msgid "Could not open device \"%s\" for writing."
-#~ msgstr "No s'ha pogut obrir el dispositiu «%s» per a l'escriptura."
-
-#~ msgid "Could not open device \"%s\" for reading."
-#~ msgstr "No s'ha pogut obrir el dispositiu «%s» per a la lectura."
-
-#~ msgid "Your OSS device could not be probed correctly"
-#~ msgstr "No s'ha pogut detectar el vostre dispositiu d'OSS correctament"
-
-#~ msgid "Volume"
-#~ msgstr "Volum"
-
-#~ msgid "Bass"
-#~ msgstr "Baixos"
-
-#~ msgid "Treble"
-#~ msgstr "Aguts"
-
-#~ msgid "Synth"
-#~ msgstr "Sintetitzador"
-
-#~ msgid "PCM"
-#~ msgstr "PCM"
-
-#~ msgid "Speaker"
-#~ msgstr "Altaveu"
-
-#~ msgid "Line-in"
-#~ msgstr "Línia-entrada"
-
-#~ msgid "Microphone"
-#~ msgstr "Micròfon"
-
-#~ msgid "CD"
-#~ msgstr "CD"
-
-#~ msgid "Mixer"
-#~ msgstr "Mesclador"
-
-#~ msgid "PCM-2"
-#~ msgstr "PCM-2"
-
-#~ msgid "Record"
-#~ msgstr "Enregistrament"
-
-#~ msgid "In-gain"
-#~ msgstr "Ganància-entrada"
-
-#~ msgid "Out-gain"
-#~ msgstr "Ganància-sortida"
-
-#~ msgid "Line-1"
-#~ msgstr "Línia-1"
-
-#~ msgid "Line-2"
-#~ msgstr "Línia-2"
-
-#~ msgid "Line-3"
-#~ msgstr "Línia-3"
-
-#~ msgid "Digital-1"
-#~ msgstr "Digital-1"
-
-#~ msgid "Digital-2"
-#~ msgstr "Digital-2"
-
-#~ msgid "Digital-3"
-#~ msgstr "Digital-3"
-
-#~ msgid "Phone-in"
-#~ msgstr "Telèfon-entrada"
-
-#~ msgid "Phone-out"
-#~ msgstr "Telèfon-sortida"
-
-#~ msgid "Video"
-#~ msgstr "Vídeo"
-
-#~ msgid "Radio"
-#~ msgstr "Ràdio"
-
-#~ msgid "Monitor"
-#~ msgstr "Monitor"
-
-#~ msgid "No device specified."
-#~ msgstr "No s'ha especificat cap dispositiu."
-
-#~ msgid "Could not open device \"%s\" for reading and writing."
-#~ msgstr ""
-#~ "No s'ha pogut obrir el dispositiu «%s» per a l'escriptura i lectura."
-
-#~ msgid "Device is open."
-#~ msgstr "El dispositiu està obert."
-
-#~ msgid "Device \"%s\" is not a capture device."
-#~ msgstr "El dispositiu «%s» no és un dispositiu de captura."
-
-#~ msgid "Could not get buffers from device \"%s\"."
-#~ msgstr "No s'han pogut obtenir els búfers del dispositiu «%s»."
-
-#~ msgid "Could not get enough buffers from device \"%s\"."
-#~ msgstr "No s'han pogut obtenir búfers suficients del dispositiu «%s»."
+msgstr "S'ha produït un error intern de flux de dades."
# Translation for gst-plugins-ugly messages to Russian
# This file is put in the public domain.
+#
# Артём Попов <artfwo@gmail.com>, 2009.
# Pavel Maryanov <acid_jack@ukr.net>, 2009.
-#
+# Yuri Kozlov <yuray@komyakino.ru>, 2011.
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-ugly 0.10.9.3\n"
+"Project-Id-Version: gst-plugins-ugly 0.10.14.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2010-10-15 15:20+0100\n"
-"PO-Revision-Date: 2009-02-12 14:26+0200\n"
-"Last-Translator: Pavel Maryanov <acid_jack@ukr.net>\n"
+"POT-Creation-Date: 2011-01-07 14:34+0000\n"
+"PO-Revision-Date: 2011-01-01 14:29+0300\n"
+"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@mx.ru>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
msgid "Could not read from CD."
msgstr "Не удалось прочесть CD."
msgstr "Не удалось открыть DVD"
msgid "Failed to configure LAME encoder. Check your encoding parameters."
-msgstr "Не удалось настроить кодировщик LAME. Проверьте параметры сжатия."
+msgstr "Не удалось настроить кодировщик LAME. Проверьте параметры кодирования."
#, c-format
msgid ""
"Запрошенный битрейт в %d кбит/с для свойства «%s» недопустим. Битрейт был "
"изменён на %d кбит/с."
-#, fuzzy
msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
-msgstr "Не удалось настроить кодировщик LAME. Проверьте параметры сжатия."
+msgstr ""
+"Не удалось настроить кодировщик TwoLAME. Проверьте параметры кодирования."
msgid "This stream contains no data."
msgstr "Поток не содержит данных."
noinst_HEADERS = elements/xingmux_testdata.h
-AM_CFLAGS = $(GST_OBJ_CFLAGS) $(GST_CHECK_CFLAGS) $(CHECK_CFLAGS)
+AM_CFLAGS = $(GST_OBJ_CFLAGS) $(GST_CHECK_CFLAGS) $(CHECK_CFLAGS) \
+ -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
LDADD = $(GST_OBJ_LIBS) $(GST_CHECK_LIBS) $(CHECK_LIBS)
# valgrind testing
SUPPRESSIONS = $(top_srcdir)/common/gst.supp $(srcdir)/gst-plugins-ugly.supp
-elements_cmmldec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS)
-elements_cmmlenc_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS)
+elements_cmmldec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS)
+elements_cmmlenc_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS)
EXTRA_DIST = gst-plugins-ugly.supp
GST_END_TEST;
+GST_START_TEST (test_caps_proxy)
+{
+ GstElement *bin;
+ GstPad *pad;
+ gchar *pipe_str;
+ GstBuffer *buffer;
+ GError *error = NULL;
+
+ pipe_str = g_strdup_printf ("audiotestsrc num-buffers=1 "
+ "! audio/x-raw-int,rate=48000,channels=1 "
+ "! audioresample "
+ "! lamemp3enc ! audio/mpeg,rate=(int){22050,44100} ! fakesink");
+
+ bin = gst_parse_launch (pipe_str, &error);
+ fail_unless (bin != NULL, "Error parsing pipeline: %s",
+ error ? error->message : "(invalid error)");
+ g_free (pipe_str);
+
+ /* get the pad */
+ {
+ GstElement *sink = gst_bin_get_by_name (GST_BIN (bin), "fakesink0");
+
+ fail_unless (sink != NULL, "Could not get fakesink out of bin");
+ pad = gst_element_get_static_pad (sink, "sink");
+ fail_unless (pad != NULL, "Could not get pad out of fakesink");
+ gst_object_unref (sink);
+ }
+
+ gst_buffer_straw_start_pipeline (bin, pad);
+
+ buffer = gst_buffer_straw_get_buffer (bin, pad);
+
+ gst_buffer_straw_stop_pipeline (bin, pad);
+
+ gst_buffer_unref (buffer);
+ gst_object_unref (pad);
+ gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
#endif /* #ifndef GST_DISABLE_PARSE */
Suite *
#ifndef GST_DISABLE_PARSE
tcase_add_test (tc_chain, test_format);
+ tcase_add_test (tc_chain, test_caps_proxy);
#endif
return s;
#undef AC_APPLE_UNIVERSAL_BUILD
/* Default audio sink */
-#define DEFAULT_AUDIOSINK "directaudiosink"
+#define DEFAULT_AUDIOSINK "directsoundsink"
/* Default audio source */
#define DEFAULT_AUDIOSRC "audiotestsrc"
/* package origin */
#define GST_PACKAGE_ORIGIN "Unknown package origin"
+/* GStreamer package release date/time for plugins as YYYY-MM-DD */
+#undef GST_PACKAGE_RELEASE_DATETIME
+
/* Define to enable a52dec (used by a52dec). */
#undef HAVE_A52DEC
#define PACKAGE_NAME "GStreamer Ugly Plug-ins"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer Ugly Plug-ins 0.10.16.1"
+#define PACKAGE_STRING "GStreamer Ugly Plug-ins 0.10.17.1"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gst-plugins-ugly"
#undef PACKAGE_URL
/* Define to the version of this package. */
-#define PACKAGE_VERSION "0.10.16.1"
+#define PACKAGE_VERSION "0.10.17.1"
/* directory where plugins are located */
#ifdef _DEBUG
#undef STDC_HEADERS
/* Version number of package */
-#define VERSION "0.10.16.1"
+#define VERSION "0.10.17.1"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */