Merge branch 'master' into 0.11

Conflicts:
	configure.ac
This commit is contained in:
Wim Taymans 2011-02-26 15:02:58 +01:00
commit 62efb84c19
49 changed files with 1053 additions and 605 deletions

591
ChangeLog
View file

@ -1,11 +1,592 @@
=== release 0.10.16 ===
=== release 0.10.17 ===
2010-09-02 Tim-Philipp Müller <tim.muller@collabora.co.uk>
2011-01-21 Tim-Philipp Müller <tim.muller@collabora.co.uk>
* configure.ac:
releasing 0.10.16, "Because He Knows the Time is Short"
releasing 0.10.17, "Raised by Wolves"
2010-09-02 23:49:14 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
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 23:59:20 +0100 Tim-Philipp Müller <tim.muller@collabora.co.uk>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
* gst-plugins-ugly.doap:
* win32/common/config.h:
Release 0.10.16
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:
@ -25,7 +606,7 @@
* 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>

39
NEWS
View file

@ -1,4 +1,41 @@
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:

74
RELEASE
View file

@ -1,5 +1,5 @@
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
@ -8,8 +8,6 @@ GStreamer Ugly Plug-ins.
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.
@ -55,38 +53,40 @@ contains a set of less supported plug-ins that haven't passed the
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
@ -115,17 +115,21 @@ Applications
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
 

2
common

@ -1 +1 @@
Subproject commit 011bcc8a0fc7f798ee874a7ba899123fb2470e22
Subproject commit 1de7f6ab2d4bc1af69f06079cf0f4e2cbbfdc178

View file

@ -250,7 +250,7 @@ translit(dnm, m, l) AM_CONDITIONAL(USE_AMRNB, true)
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")
])
@ -287,10 +287,10 @@ AG_GST_CHECK_FEATURE(DVDREAD, [dvdread library], dvdreadsrc, [
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 ],
@ -371,24 +371,7 @@ AG_GST_CHECK_FEATURE(TWOLAME, [twolame], twolame, [
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
@ -536,7 +519,7 @@ sed \
-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\"/" \

View file

@ -1041,7 +1041,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>

View file

@ -3,7 +3,7 @@
<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>
@ -20,7 +20,7 @@
<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>

View file

@ -63,7 +63,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_amrwbdec_debug);
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);
@ -285,7 +285,13 @@ gst_amrwbdec_chain (GstPad * pad, GstBuffer * buffer)
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. */

View file

@ -389,6 +389,61 @@ setup_failed:
}
}
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)
{
@ -453,6 +508,8 @@ gst_lamemp3enc_init (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 =

View file

@ -100,10 +100,8 @@ static GstFlowReturn gst_mad_chain_reverse (GstMad * mad, GstBuffer * buf);
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);
@ -200,10 +198,8 @@ gst_mad_class_init (GstMadClass * klass)
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 */
@ -287,9 +283,7 @@ gst_mad_dispose (GObject * object)
{
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;
@ -301,7 +295,6 @@ gst_mad_dispose (GObject * object)
G_OBJECT_CLASS (parent_class)->dispose (object);
}
#ifndef GST_DISABLE_INDEX
static void
gst_mad_set_index (GstElement * element, GstIndex * index)
{
@ -320,7 +313,6 @@ gst_mad_get_index (GstElement * element)
return mad->index;
}
#endif
static gboolean
gst_mad_convert_sink (GstPad * pad, GstFormat src_format, gint64 src_value,
@ -604,7 +596,6 @@ error:
return FALSE;
}
#ifndef GST_DISABLE_INDEX
static gboolean
index_seek (GstMad * mad, GstPad * pad, GstEvent * event)
{
@ -681,7 +672,6 @@ index_seek (GstMad * mad, GstPad * pad, GstEvent * event)
return FALSE;
}
#endif
static gboolean
normal_seek (GstMad * mad, GstPad * pad, GstEvent * event)
@ -807,11 +797,9 @@ gst_mad_src_event (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);
@ -1038,10 +1026,10 @@ gst_mad_check_restart (GstMad * mad)
}
/* 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)
@ -1642,11 +1630,11 @@ gst_mad_chain (GstPad * pad, GstBuffer * buffer)
/* 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) {
@ -1672,14 +1660,13 @@ gst_mad_chain (GstPad * pad, GstBuffer * buffer)
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)) {
@ -1728,6 +1715,13 @@ gst_mad_chain (GstPad * pad, GstBuffer * buffer)
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];

View file

@ -86,10 +86,8 @@ struct _GstMad
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;

View file

@ -1,9 +1,10 @@
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

View file

@ -85,10 +85,8 @@ static void gst_mpeg2dec_init (GstMpeg2dec * mpeg2dec);
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);
@ -121,7 +119,7 @@ static const GstEventMask *gst_mpeg2dec_get_event_masks (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 };*/
@ -187,10 +185,8 @@ gst_mpeg2dec_class_init (GstMpeg2decClass * klass)
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
@ -268,7 +264,7 @@ gst_mpeg2dec_reset (GstMpeg2dec * mpeg2dec)
}
/* 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);
@ -291,7 +287,6 @@ gst_mpeg2dec_qos_reset (GstMpeg2dec * mpeg2dec)
GST_OBJECT_UNLOCK (mpeg2dec);
}
#ifndef GST_DISABLE_INDEX
static void
gst_mpeg2dec_set_index (GstElement * element, GstIndex * index)
{
@ -317,139 +312,63 @@ gst_mpeg2dec_get_index (GstElement * element)
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)
static GstFlowReturn
gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstBuffer ** buf)
{
GstFlowReturn flow_ret;
GstBuffer *inbuf = *buf;
GstBuffer *outbuf;
guint8 *dest, *src;
guint outsize, line;
guint outsize, c;
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);
outsize = gst_video_format_get_size (dec->format, dec->width, dec->height);
/* 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);
}
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);
/* 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);
}
flow_ret = gst_pad_alloc_buffer_and_set_caps (dec->srcpad,
GST_BUFFER_OFFSET_NONE, outsize, GST_PAD_CAPS (dec->srcpad), &outbuf);
/* 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);
}
if (G_UNLIKELY (flow_ret != GST_FLOW_OK))
return flow_ret;
return outbuf;
}
for (c = 0; c < 3; c++) {
const guint8 *src;
guint8 *dest;
guint stride_in, stride_out;
guint c_height, c_width, line;
/* FIXME: this is unlikely to be right stride-wise and offset-wise */
static GstBuffer *
crop_copy_i422_buffer (GstMpeg2dec * mpeg2dec, GstBuffer * input)
{
GstBuffer *outbuf;
guint8 *in_data, *out_data;
guint 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);
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;
}
return outbuf;
}
static gboolean
crop_buffer (GstMpeg2dec * mpeg2dec, GstBuffer ** buf)
{
gboolean result = TRUE;
GstBuffer *input = *buf;
GstBuffer *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;
for (line = 0; line < c_height; line++) {
memcpy (dest, src, c_width);
dest += stride_out;
src += stride_in;
}
}
return result;
gst_buffer_set_caps (outbuf, GST_PAD_CAPS (dec->srcpad));
gst_buffer_copy_metadata (outbuf, inbuf,
GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS);
gst_buffer_unref (*buf);
*buf = outbuf;
return GST_FLOW_OK;
}
static GstFlowReturn
@ -524,7 +443,8 @@ gst_mpeg2dec_alloc_buffer (GstMpeg2dec * mpeg2dec, gint64 offset,
/* 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)));
@ -550,47 +470,28 @@ gst_mpeg2dec_negotiate_format (GstMpeg2dec * mpeg2dec)
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);
@ -706,7 +607,7 @@ handle_sequence (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
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);
@ -981,14 +882,13 @@ handle_slice (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
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;
@ -1025,8 +925,14 @@ handle_slice (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
* 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 */
@ -1048,6 +954,8 @@ handle_slice (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
ret = GST_FLOW_OK;
}
done:
return ret;
/* special cases */
@ -1333,11 +1241,9 @@ gst_mpeg2dec_sink_event (GstPad * pad, GstEvent * event)
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:
@ -1630,7 +1536,6 @@ gst_mpeg2dec_get_event_masks (GstPad * pad)
}
#endif
#ifndef GST_DISABLE_INDEX
static gboolean
index_seek (GstPad * pad, GstEvent * event)
{
@ -1697,7 +1602,6 @@ index_seek (GstPad * pad, GstEvent * event)
}
return FALSE;
}
#endif
static gboolean
normal_seek (GstPad * pad, GstEvent * event)
@ -1783,11 +1687,9 @@ gst_mpeg2dec_src_event (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);

View file

@ -46,15 +46,6 @@ typedef struct _GstMpeg2dec GstMpeg2dec;
typedef struct _GstMpeg2decClass GstMpeg2decClass;
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,
@ -87,7 +78,7 @@ struct _GstMpeg2dec {
GstSegment segment;
/* video state */
Mpeg2decFormat format;
GstVideoFormat format;
gint width;
gint height;
gint decoded_width;
@ -104,17 +95,15 @@ struct _GstMpeg2dec {
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;

View file

@ -46,6 +46,17 @@
* 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>
* |[
@ -66,6 +77,14 @@
* 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>
*/
@ -357,7 +376,7 @@ gst_x264_enc_tune_get_type (void)
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;
}
@ -430,7 +449,7 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
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 ]")
);
@ -559,7 +578,7 @@ gst_x264_enc_class_init (GstX264EncClass * klass)
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
@ -1365,15 +1384,14 @@ static gboolean
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;
@ -1382,8 +1400,8 @@ gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
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
@ -1397,6 +1415,7 @@ gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
}
/* store input description */
encoder->format = format;
encoder->width = width;
encoder->height = height;
encoder->fps_num = fps_num;
@ -1404,11 +1423,12 @@ gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
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,
@ -1475,8 +1495,23 @@ gst_x264_enc_sink_event (GstPad * pad, GstEvent * event)
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);

View file

@ -33,6 +33,17 @@ might be widely known to present patent problems.
</GitRepository>
</repository>
<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>

View file

@ -151,6 +151,13 @@ const ASFGuidHash asf_object_guids[] = {
{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}
}

View file

@ -67,7 +67,8 @@ typedef enum {
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 {

View file

@ -226,8 +226,10 @@ asf_payload_parse_replicated_data_extensions (AsfStream * stream,
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);
}

View file

@ -2289,7 +2289,7 @@ gst_asf_demux_parse_stream_object (GstASFDemux * demux, guint8 * data,
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,
@ -2895,8 +2895,8 @@ gst_asf_demux_process_file (GstASFDemux * demux, guint8 * data, guint64 size)
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);
@ -3653,6 +3653,7 @@ gst_asf_demux_process_object (GstASFDemux * demux, guint8 ** p_data,
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:

View file

@ -165,7 +165,7 @@ parse_header (guint32 header, guint * ret_size, guint * ret_spf,
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];

View file

@ -32,6 +32,8 @@
*/
#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)
@ -439,8 +441,8 @@ gst_dvd_demux_handle_dvd_event (GstDVDDemux * dvd_demux, GstEvent * event)
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);
@ -1179,8 +1181,8 @@ gst_dvd_demux_reset (GstDVDDemux * dvd_demux)
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

View file

@ -1030,9 +1030,11 @@ gst_mpeg_demux_send_subbuffer (GstMPEGDemux * mpeg_demux,
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);
}

View file

@ -506,13 +506,8 @@ gst_real_audio_demux_parse_data (GstRealAudioDemux * demux)
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);

View file

@ -1918,7 +1918,7 @@ gst_rmdemux_stream_clear_cached_subpackets (GstRMDemux * rmdemux,
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;
@ -1930,12 +1930,8 @@ gst_rmdemux_descramble_audio (GstRMDemux * rmdemux, GstRMDemuxStream * stream)
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);
@ -1976,8 +1972,6 @@ gst_rmdemux_descramble_audio (GstRMDemux * rmdemux, GstRMDemuxStream * stream)
gst_buffer_unref (outbuf);
done:
gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream);
return ret;
@ -2061,12 +2055,8 @@ gst_rmdemux_descramble_sipr_audio (GstRMDemux * rmdemux,
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);
@ -2091,8 +2081,6 @@ gst_rmdemux_descramble_sipr_audio (GstRMDemux * rmdemux,
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;
@ -2462,6 +2450,10 @@ gst_rmdemux_parse_video_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
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)
@ -2501,7 +2493,7 @@ gst_rmdemux_parse_audio_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
GstBuffer * in, guint offset, guint16 version,
GstClockTime timestamp, gboolean key)
{
GstFlowReturn ret, cret;
GstFlowReturn ret;
GstBuffer *buffer;
const guint8 *data;
guint size;
@ -2509,12 +2501,8 @@ gst_rmdemux_parse_audio_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
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);
@ -2548,14 +2536,6 @@ gst_rmdemux_parse_audio_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
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

View file

@ -145,7 +145,7 @@ gst_rm_utils_descramble_dnet_buffer (GstBuffer * buf)
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 */

View file

@ -1,17 +1,18 @@
# 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"
@ -31,19 +32,19 @@ msgstr "DVD-то не може да бъде отворено"
#, c-format
msgid "Could not open DVD title %d"
msgstr "Част %d от DVD-то не може да бъде отворена"
msgstr "Заглавната част %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 ""
"Част %d от DVD-то не може да бъде отворена. Интерактивни части не се "
"поддържат от този елемент"
"Заглавната част %d от DVD-то не може да бъде отворена. Интерактивни части не "
"се поддържат от този елемент"
msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
@ -75,15 +76,3 @@ msgstr "Потокът не съдържа данни."
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."

231
po/ca.po
View file

@ -1,48 +1,49 @@
# 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 "
@ -51,208 +52,28 @@ msgstr ""
#, 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."

View file

@ -1,20 +1,24 @@
# 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."
@ -54,7 +58,7 @@ msgid "Could not read DVD."
msgstr "Не удалось открыть DVD"
msgid "Failed to configure LAME encoder. Check your encoding parameters."
msgstr "Не удалось настроить кодировщик LAME. Проверьте параметры сжатия."
msgstr "Не удалось настроить кодировщик LAME. Проверьте параметры кодирования."
#, c-format
msgid ""
@ -64,9 +68,9 @@ msgstr ""
"Запрошенный битрейт в %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 "Поток не содержит данных."

View file

@ -56,7 +56,8 @@ noinst_PROGRAMS =
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
@ -64,7 +65,7 @@ VALGRIND_TESTS_DISABLE = elements/x264enc
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

View file

@ -65,6 +65,47 @@ GST_START_TEST (test_format)
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 *
@ -77,6 +118,7 @@ lame_suite (void)
#ifndef GST_DISABLE_PARSE
tcase_add_test (tc_chain, test_format);
tcase_add_test (tc_chain, test_caps_proxy);
#endif
return s;

View file

@ -9,7 +9,7 @@
#undef AC_APPLE_UNIVERSAL_BUILD
/* Default audio sink */
#define DEFAULT_AUDIOSINK "directaudiosink"
#define DEFAULT_AUDIOSINK "directsoundsink"
/* Default audio source */
#define DEFAULT_AUDIOSRC "audiotestsrc"
@ -51,6 +51,9 @@
/* 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
@ -230,7 +233,7 @@
#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"
@ -239,7 +242,7 @@
#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
@ -267,7 +270,7 @@
#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). */