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: * 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-a52dec.xml:
* docs/plugins/inspect/plugin-amrnb.xml: * docs/plugins/inspect/plugin-amrnb.xml:
@ -25,7 +606,7 @@
* docs/plugins/inspect/plugin-siddec.xml: * docs/plugins/inspect/plugin-siddec.xml:
* docs/plugins/inspect/plugin-twolame.xml: * docs/plugins/inspect/plugin-twolame.xml:
* docs/plugins/inspect/plugin-x264.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> 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: 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 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. 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 Features of this release
* refactor x264enc to use current x264 API correctly, add new properties and new defaults * asfdemux: Handle new type of DRM'd asf files
* liboil is no longer required, but orc is now required * dvdreadsrc: fix handling of multi-angle streams
* build: require orc >= 0.4.5, GLib >= 2.20, automake >= 1.10, autoconf >= 2.60; liboil is no longer required * dvdreadsrc: improve error messages on read errors
* asfdemux: fix playback of files or streams that are shorter than the advertised preroll value * mad: if gst_pad_alloc_buffer() returns a buffer with the wrong size allocate a new one
* asfdemux: fix sending eos event for chained asfs in pull mode (exotic) * mad: support reverse playback
* asfdemux: fix playback of files or streams that advertise miniscule preroll values * mpeg2dec: convert the position to stream time before answering to a position query
* lamemp3enc: implement latency query * mpeg2dec: fix position query by trusting upstream
* rmdemux: fix playback of sipro audio streams * mpeg2dec: refactor cropping code to use libgstvideo functions
* x264enc: refactor code in preparation for presets/tunings * mpeg2dec: use gst_pad_alloc_buffer() when cropping buffers
* x264enc: add "profile" property (and default to MAIN profile) * mpegparse: re-fix flow return handling
* x264enc: improve defaults: medium speed/quality preset; auto mode for threads * rmdemux: set GST_BUFFER_FLAG_DELTA_UNIT properly
* x264enc: add "speed-preset", "tune" and "psy-tune" properties * x264enc: add a note to the docs about encoder latency and queues
* x264enc: add "option-string" property to specify advanced parameters * x264enc: also accept YV12 input
* x264enc: set time base if needed, fixes visual artifacts * x264enc: Handle codec/encoder tags
* x264enc: add "sliced-threads", "sync-lookahead", "intra-refresh", "mb-tree", and "rc-lookahead" properties * x264enc: Work around a rate control issue in libx264
* x264enc: fix compilation against ancient x264 versions (X264_BUILD <= 75) * x264: use pkg-config to locate libx264
* x264enc: speed up first pass of multi-pass encoding (has no impact on quality) * x264: vbv-buf-capacity should have a minimum of 0
* x264enc: fix flushing of delayed frames with new default settings * xingmux: Don't ignore WRONG_STATE and NOT_LINKED when pushing data downstream
Bugs fixed in this release Bugs fixed in this release
* 599718 : [asf] support chained asfs * 539254 : [dvdreadsrc] DVDs with multiple angles switch angles during read
* 600412 : [asfdemux] Wrong handling of downstream GstFlowReturn * 571146 : mpeg2dec: possibly uses wrong strides for 4:2:2 and 4:4:4 YUV with unusual display width or height
* 607798 : x264enc needs updating to support new features and use x264 correctly * 599515 : Fix dvb for DVB API 3.3
* 618896 : lamemp3enc doesn't implement latency query * 621465 : [x264enc] Video codec information copied incorrectly to output
* 620007 : Gibberish sound when playing a certain RealMedia file of Sipro/ACELP.net audio codec * 632549 : [mpeg2dec] answers to position queries are wrong for DVDs
* 620344 : Update gst-plugins-ugly docs on website * 632861 : [x264enc] really bad quality with tune=zerolatency
* 622407 : [asfdemux] doesn't detect some streams if preroll value is very small * 634840 : x264: use pkg-config to locate dependencies for plugin
* 624786 : x264enc time base is wrong * 635291 : x264enc: " vbv-buf-capacity " property should have minimum value of 0
* 625557 : x264enc doesn't flush delayed frames properly * 635461 : Crash in mad decoder when changing number of audio output channels in Totem while media is running
* 626577 : [x264enc] regression: doesn't work with older versions of x264 * 636107 : x264enc: docs should indicate specifics of using with queues
* 627946 : mp3parse misuses GST_FLOW_IS_FATAL, doesn't forward GST_FLOW_UNEXPECTED upstream * 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 Download
@ -115,17 +115,21 @@ Applications
Contributors to this release Contributors to this release
* Alessandro Decina * Benjamin Gaignard
* David Hoyt
* David Schleef * David Schleef
* Edward Hervey * Edward Hervey
* Guillaume Emont
* Jan Schmidt
* Leo Singer
* Mark Nauwelaerts * Mark Nauwelaerts
* Olivier Crête * Rob Clark
* Robert Swain * Robert Swain
* Sebastian Dröge * Sebastian Dröge
* Stefan Kost * Stefan Kost
* Thiago Santos * Thiago Santos
* Thomas Green
* Tim-Philipp Müller * Tim-Philipp Müller
* Tristan Matthews * Tristan Matthews
* Vincent Penquerc'h
* Wim Taymans * 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, [ AG_GST_CHECK_FEATURE(AMRNB, [amrnb library], amrnb, [
PKG_CHECK_MODULES(AMRNB, opencore-amrnb, HAVE_AMRNB="yes", PKG_CHECK_MODULES(AMRNB, opencore-amrnb, HAVE_AMRNB="yes",
[ AG_GST_CHECK_LIBHEADER(AMRNB, opencore-amrnb, [ AG_GST_CHECK_LIBHEADER(AMRNB, opencore-amrnb,
Decoder_Interface_init, -lm, Decoder_Interface_init, $LIBM,
opencore-amrnb/interf_dec.h, opencore-amrnb/interf_dec.h,
AMRNB_LIBS="-lopencore-amrnb") AMRNB_LIBS="-lopencore-amrnb")
]) ])
@ -287,10 +287,10 @@ AG_GST_CHECK_FEATURE(DVDREAD, [dvdread library], dvdreadsrc, [
dnl *** lame *** dnl *** lame ***
translit(dnm, m, l) AM_CONDITIONAL(USE_LAME, true) translit(dnm, m, l) AM_CONDITIONAL(USE_LAME, true)
AG_GST_CHECK_FEATURE(LAME, [lame mp3 encoder library], lame, [ 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" HAVE_LAME="yes"
LAME_LIBS="-lmp3lame -lm" LAME_LIBS="-lmp3lame $LIBM"
dnl is lame presets available dnl is lame presets available
LAME_CFLAGS="" LAME_CFLAGS=""
AC_TRY_COMPILE([#include <lame/lame.h>], [ int preset = MEDIUM ], 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) *** dnl *** x264 (MPEG-4 part 10/h.264/AVC encoder) ***
translit(dnm, m, l) AM_CONDITIONAL(USE_X264, true) translit(dnm, m, l) AM_CONDITIONAL(USE_X264, true)
AG_GST_CHECK_FEATURE(X264, [x264 plug-in], x264, [ AG_GST_CHECK_FEATURE(X264, [x264 plug-in], x264, [
AG_GST_CHECK_LIBHEADER(X264, x264, x264_encoder_encode, -lm, x264.h, AG_GST_PKG_CHECK_MODULES(X264, x264 >= 0.55.0)
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
]))
]) ])
else 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/.* 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/.* USE_BINARY_REGISTRY$/#define USE_BINARY_REGISTRY/' \
-e 's/.* VERSION$/#define VERSION "'$VERSION'"/' \ -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_AUDIOSRC$/#define DEFAULT_AUDIOSRC \"audiotestsrc\"/" \
-e "s/.* DEFAULT_VIDEOSRC$/#define DEFAULT_VIDEOSRC \"videotestsrc\"/" \ -e "s/.* DEFAULT_VIDEOSRC$/#define DEFAULT_VIDEOSRC \"videotestsrc\"/" \
-e "s/.* DEFAULT_VISUALIZER$/#define DEFAULT_VISUALIZER \"goom\"/" \ -e "s/.* DEFAULT_VISUALIZER$/#define DEFAULT_VISUALIZER \"goom\"/" \

View file

@ -1041,7 +1041,7 @@
<ARG> <ARG>
<NAME>GstX264Enc::vbv-buf-capacity</NAME> <NAME>GstX264Enc::vbv-buf-capacity</NAME>
<TYPE>guint</TYPE> <TYPE>guint</TYPE>
<RANGE>[300,10000]</RANGE> <RANGE><= 10000</RANGE>
<FLAGS>rw</FLAGS> <FLAGS>rw</FLAGS>
<NICK>VBV buffer capacity</NICK> <NICK>VBV buffer capacity</NICK>
<BLURB>Size of the VBV buffer in milliseconds.</BLURB> <BLURB>Size of the VBV buffer in milliseconds.</BLURB>

View file

@ -3,7 +3,7 @@
<description>Decodes ATSC A/52 encoded audio streams</description> <description>Decodes ATSC A/52 encoded audio streams</description>
<filename>../../ext/a52dec/.libs/libgsta52dec.so</filename> <filename>../../ext/a52dec/.libs/libgsta52dec.so</filename>
<basename>libgsta52dec.so</basename> <basename>libgsta52dec.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>GPL</license> <license>GPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>Adaptive Multi-Rate Narrow-Band</description> <description>Adaptive Multi-Rate Narrow-Band</description>
<filename>../../ext/amrnb/.libs/libgstamrnb.so</filename> <filename>../../ext/amrnb/.libs/libgstamrnb.so</filename>
<basename>libgstamrnb.so</basename> <basename>libgstamrnb.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>unknown</license> <license>unknown</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>Adaptive Multi-Rate Wide-Band Decoder</description> <description>Adaptive Multi-Rate Wide-Band Decoder</description>
<filename>../../ext/amrwbdec/.libs/libgstamrwbdec.so</filename> <filename>../../ext/amrwbdec/.libs/libgstamrwbdec.so</filename>
<basename>libgstamrwbdec.so</basename> <basename>libgstamrwbdec.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>unknown</license> <license>unknown</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <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> <description>Demuxes and muxes audio and video in Microsofts ASF format</description>
<filename>../../gst/asfdemux/.libs/libgstasf.so</filename> <filename>../../gst/asfdemux/.libs/libgstasf.so</filename>
<basename>libgstasf.so</basename> <basename>libgstasf.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>LGPL</license> <license>LGPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>Read audio from audio CDs</description> <description>Read audio from audio CDs</description>
<filename>../../ext/cdio/.libs/libgstcdio.so</filename> <filename>../../ext/cdio/.libs/libgstcdio.so</filename>
<basename>libgstcdio.so</basename> <basename>libgstcdio.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>GPL</license> <license>GPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>Decode DVD LPCM frames into standard PCM</description> <description>Decode DVD LPCM frames into standard PCM</description>
<filename>../../gst/dvdlpcmdec/.libs/libgstdvdlpcmdec.so</filename> <filename>../../gst/dvdlpcmdec/.libs/libgstdvdlpcmdec.so</filename>
<basename>libgstdvdlpcmdec.so</basename> <basename>libgstdvdlpcmdec.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>LGPL</license> <license>LGPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>Access a DVD with dvdread</description> <description>Access a DVD with dvdread</description>
<filename>../../ext/dvdread/.libs/libgstdvdread.so</filename> <filename>../../ext/dvdread/.libs/libgstdvdread.so</filename>
<basename>libgstdvdread.so</basename> <basename>libgstdvdread.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>GPL</license> <license>GPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>DVD subtitle parser and decoder</description> <description>DVD subtitle parser and decoder</description>
<filename>../../gst/dvdsub/.libs/libgstdvdsub.so</filename> <filename>../../gst/dvdsub/.libs/libgstdvdsub.so</filename>
<basename>libgstdvdsub.so</basename> <basename>libgstdvdsub.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>LGPL</license> <license>LGPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>Convert raw AC3 into IEC958 (S/PDIF) frames</description> <description>Convert raw AC3 into IEC958 (S/PDIF) frames</description>
<filename>../../gst/iec958/.libs/libgstiec958.so</filename> <filename>../../gst/iec958/.libs/libgstiec958.so</filename>
<basename>libgstiec958.so</basename> <basename>libgstiec958.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>LGPL</license> <license>LGPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>Encode MP3s with LAME</description> <description>Encode MP3s with LAME</description>
<filename>../../ext/lame/.libs/libgstlame.so</filename> <filename>../../ext/lame/.libs/libgstlame.so</filename>
<basename>libgstlame.so</basename> <basename>libgstlame.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>LGPL</license> <license>LGPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>mp3 decoding based on the mad library</description> <description>mp3 decoding based on the mad library</description>
<filename>../../ext/mad/.libs/libgstmad.so</filename> <filename>../../ext/mad/.libs/libgstmad.so</filename>
<basename>libgstmad.so</basename> <basename>libgstmad.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>GPL</license> <license>GPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>LibMpeg2 decoder</description> <description>LibMpeg2 decoder</description>
<filename>../../ext/mpeg2dec/.libs/libgstmpeg2dec.so</filename> <filename>../../ext/mpeg2dec/.libs/libgstmpeg2dec.so</filename>
<basename>libgstmpeg2dec.so</basename> <basename>libgstmpeg2dec.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>GPL</license> <license>GPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>MPEG-1 layer 1/2/3 audio stream elements</description> <description>MPEG-1 layer 1/2/3 audio stream elements</description>
<filename>../../gst/mpegaudioparse/.libs/libgstmpegaudioparse.so</filename> <filename>../../gst/mpegaudioparse/.libs/libgstmpegaudioparse.so</filename>
<basename>libgstmpegaudioparse.so</basename> <basename>libgstmpegaudioparse.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>LGPL</license> <license>LGPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>MPEG system stream parser</description> <description>MPEG system stream parser</description>
<filename>../../gst/mpegstream/.libs/libgstmpegstream.so</filename> <filename>../../gst/mpegstream/.libs/libgstmpegstream.so</filename>
<basename>libgstmpegstream.so</basename> <basename>libgstmpegstream.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>LGPL</license> <license>LGPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>RealMedia support plugins</description> <description>RealMedia support plugins</description>
<filename>../../gst/realmedia/.libs/libgstrmdemux.so</filename> <filename>../../gst/realmedia/.libs/libgstrmdemux.so</filename>
<basename>libgstrmdemux.so</basename> <basename>libgstrmdemux.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>LGPL</license> <license>LGPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>Uses libsidplay to decode .sid files</description> <description>Uses libsidplay to decode .sid files</description>
<filename>../../ext/sidplay/.libs/libgstsid.so</filename> <filename>../../ext/sidplay/.libs/libgstsid.so</filename>
<basename>libgstsid.so</basename> <basename>libgstsid.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>GPL</license> <license>GPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>Encode MP2s with TwoLAME</description> <description>Encode MP2s with TwoLAME</description>
<filename>../../ext/twolame/.libs/libgsttwolame.so</filename> <filename>../../ext/twolame/.libs/libgsttwolame.so</filename>
<basename>libgsttwolame.so</basename> <basename>libgsttwolame.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>LGPL</license> <license>LGPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>

View file

@ -3,7 +3,7 @@
<description>libx264-based H264 plugins</description> <description>libx264-based H264 plugins</description>
<filename>../../ext/x264/.libs/libgstx264.so</filename> <filename>../../ext/x264/.libs/libgstx264.so</filename>
<basename>libgstx264.so</basename> <basename>libgstx264.so</basename>
<version>0.10.16.1</version> <version>0.10.17.1</version>
<license>GPL</license> <license>GPL</license>
<source>gst-plugins-ugly</source> <source>gst-plugins-ugly</source>
<package>GStreamer Ugly Plug-ins git</package> <package>GStreamer Ugly Plug-ins git</package>
@ -20,7 +20,7 @@
<name>sink</name> <name>sink</name>
<direction>sink</direction> <direction>sink</direction>
<presence>always</presence> <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>
<caps> <caps>
<name>src</name> <name>src</name>

View file

@ -63,7 +63,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_amrwbdec_debug);
static const unsigned char block_size[16] = static const unsigned char block_size[16] =
{ 18, 24, 33, 37, 41, 47, 51, 59, 61, { 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); 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); 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; break;
/* the library seems to write into the source data, hence the copy. */ /* 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 static gint64
gst_lamemp3enc_get_latency (GstLameMP3Enc * lame) gst_lamemp3enc_get_latency (GstLameMP3Enc * lame)
{ {
@ -453,6 +508,8 @@ gst_lamemp3enc_init (GstLameMP3Enc * lame)
GST_DEBUG_FUNCPTR (gst_lamemp3enc_chain)); GST_DEBUG_FUNCPTR (gst_lamemp3enc_chain));
gst_pad_set_setcaps_function (lame->sinkpad, gst_pad_set_setcaps_function (lame->sinkpad,
GST_DEBUG_FUNCPTR (gst_lamemp3enc_sink_setcaps)); 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); gst_element_add_pad (GST_ELEMENT (lame), lame->sinkpad);
lame->srcpad = 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, static GstStateChangeReturn gst_mad_change_state (GstElement * element,
GstStateChange transition); GstStateChange transition);
#ifndef GST_DISABLE_INDEX
static void gst_mad_set_index (GstElement * element, GstIndex * index); static void gst_mad_set_index (GstElement * element, GstIndex * index);
static GstIndex *gst_mad_get_index (GstElement * element); static GstIndex *gst_mad_get_index (GstElement * element);
#endif
static GstTagList *gst_mad_id3_to_tag_list (const struct id3_tag *tag); 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; gobject_class->dispose = gst_mad_dispose;
gstelement_class->change_state = gst_mad_change_state; gstelement_class->change_state = gst_mad_change_state;
#ifndef GST_DISABLE_INDEX
gstelement_class->set_index = gst_mad_set_index; gstelement_class->set_index = gst_mad_set_index;
gstelement_class->get_index = gst_mad_get_index; gstelement_class->get_index = gst_mad_get_index;
#endif
/* init properties */ /* init properties */
/* currently, string representations are used, we might want to change that */ /* 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); GstMad *mad = GST_MAD (object);
#ifndef GST_DISABLE_INDEX
gst_mad_set_index (GST_ELEMENT (object), NULL); gst_mad_set_index (GST_ELEMENT (object), NULL);
#endif
g_free (mad->tempbuffer); g_free (mad->tempbuffer);
mad->tempbuffer = NULL; mad->tempbuffer = NULL;
@ -301,7 +295,6 @@ gst_mad_dispose (GObject * object)
G_OBJECT_CLASS (parent_class)->dispose (object); G_OBJECT_CLASS (parent_class)->dispose (object);
} }
#ifndef GST_DISABLE_INDEX
static void static void
gst_mad_set_index (GstElement * element, GstIndex * index) gst_mad_set_index (GstElement * element, GstIndex * index)
{ {
@ -320,7 +313,6 @@ gst_mad_get_index (GstElement * element)
return mad->index; return mad->index;
} }
#endif
static gboolean static gboolean
gst_mad_convert_sink (GstPad * pad, GstFormat src_format, gint64 src_value, gst_mad_convert_sink (GstPad * pad, GstFormat src_format, gint64 src_value,
@ -604,7 +596,6 @@ error:
return FALSE; return FALSE;
} }
#ifndef GST_DISABLE_INDEX
static gboolean static gboolean
index_seek (GstMad * mad, GstPad * pad, GstEvent * event) index_seek (GstMad * mad, GstPad * pad, GstEvent * event)
{ {
@ -681,7 +672,6 @@ index_seek (GstMad * mad, GstPad * pad, GstEvent * event)
return FALSE; return FALSE;
} }
#endif
static gboolean static gboolean
normal_seek (GstMad * mad, GstPad * pad, GstEvent * event) 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 */ /* the all-formats seek logic, ref the event, we need it later */
gst_event_ref (event); gst_event_ref (event);
if (!(res = gst_pad_push_event (mad->sinkpad, event))) { if (!(res = gst_pad_push_event (mad->sinkpad, event))) {
#ifndef GST_DISABLE_INDEX
if (mad->index) if (mad->index)
res = index_seek (mad, pad, event); res = index_seek (mad, pad, event);
else else
#endif
res = normal_seek (mad, pad, event); res = normal_seek (mad, pad, event);
} }
gst_event_unref (event); gst_event_unref (event);
@ -1672,14 +1660,13 @@ gst_mad_chain (GstPad * pad, GstBuffer * buffer)
GST_SECOND, mad->rate) - time_offset; GST_SECOND, mad->rate) - time_offset;
} }
#ifndef GST_DISABLE_INDEX
if (mad->index) { if (mad->index) {
guint64 x_bytes = mad->base_byte_offset + mad->bytes_consumed; 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); GST_FORMAT_BYTES, x_bytes, GST_FORMAT_TIME, time_offset, NULL);
} }
#endif
if (mad->segment_start <= (time_offset == if (mad->segment_start <= (time_offset ==
GST_CLOCK_TIME_NONE ? 0 : time_offset)) { GST_CLOCK_TIME_NONE ? 0 : time_offset)) {
@ -1728,6 +1715,13 @@ gst_mad_chain (GstPad * pad, GstBuffer * buffer)
goto skip_frame; 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); mad_synth_frame (&mad->synth, &mad->frame);
left_ch = mad->synth.pcm.samples[0]; left_ch = mad->synth.pcm.samples[0];
right_ch = mad->synth.pcm.samples[1]; right_ch = mad->synth.pcm.samples[1];

View file

@ -86,10 +86,8 @@ struct _GstMad
gint times_pending; gint times_pending;
gboolean caps_set; /* used to keep track of whether to change/update caps */ gboolean caps_set; /* used to keep track of whether to change/update caps */
#ifndef GST_DISABLE_INDEX
GstIndex *index; GstIndex *index;
gint index_id; gint index_id;
#endif
gboolean check_for_xing; gboolean check_for_xing;
gboolean xing_found; gboolean xing_found;

View file

@ -1,9 +1,10 @@
plugin_LTLIBRARIES = libgstmpeg2dec.la plugin_LTLIBRARIES = libgstmpeg2dec.la
libgstmpeg2dec_la_SOURCES = gstmpeg2dec.c libgstmpeg2dec_la_SOURCES = gstmpeg2dec.c
libgstmpeg2dec_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(MPEG2DEC_CFLAGS) libgstmpeg2dec_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
libgstmpeg2dec_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(MPEG2DEC_LIBS) $(GST_LIBS) \ $(GST_CFLAGS) $(MPEG2DEC_CFLAGS)
-lgstvideo-$(GST_MAJORMINOR) libgstmpeg2dec_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) \
$(GST_LIBS) $(MPEG2DEC_LIBS)
libgstmpeg2dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstmpeg2dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstmpeg2dec_la_LIBTOOLFLAGS = --tag=disable-static 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_finalize (GObject * object);
static void gst_mpeg2dec_reset (GstMpeg2dec * mpeg2dec); static void gst_mpeg2dec_reset (GstMpeg2dec * mpeg2dec);
#ifndef GST_DISABLE_INDEX
static void gst_mpeg2dec_set_index (GstElement * element, GstIndex * index); static void gst_mpeg2dec_set_index (GstElement * element, GstIndex * index);
static GstIndex *gst_mpeg2dec_get_index (GstElement * element); static GstIndex *gst_mpeg2dec_get_index (GstElement * element);
#endif
static gboolean gst_mpeg2dec_src_event (GstPad * pad, GstEvent * event); static gboolean gst_mpeg2dec_src_event (GstPad * pad, GstEvent * event);
static const GstQueryType *gst_mpeg2dec_get_src_query_types (GstPad * pad); 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 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 };*/ /*static guint gst_mpeg2dec_signals[LAST_SIGNAL] = { 0 };*/
@ -187,10 +185,8 @@ gst_mpeg2dec_class_init (GstMpeg2decClass * klass)
gobject_class->finalize = gst_mpeg2dec_finalize; gobject_class->finalize = gst_mpeg2dec_finalize;
gstelement_class->change_state = gst_mpeg2dec_change_state; gstelement_class->change_state = gst_mpeg2dec_change_state;
#ifndef GST_DISABLE_INDEX
gstelement_class->set_index = gst_mpeg2dec_set_index; gstelement_class->set_index = gst_mpeg2dec_set_index;
gstelement_class->get_index = gst_mpeg2dec_get_index; gstelement_class->get_index = gst_mpeg2dec_get_index;
#endif
} }
static void static void
@ -268,7 +264,7 @@ gst_mpeg2dec_reset (GstMpeg2dec * mpeg2dec)
} }
/* reset the initial video state */ /* reset the initial video state */
mpeg2dec->format = MPEG2DEC_FORMAT_NONE; mpeg2dec->format = GST_VIDEO_FORMAT_UNKNOWN;
mpeg2dec->width = -1; mpeg2dec->width = -1;
mpeg2dec->height = -1; mpeg2dec->height = -1;
gst_segment_init (&mpeg2dec->segment, GST_FORMAT_UNDEFINED); gst_segment_init (&mpeg2dec->segment, GST_FORMAT_UNDEFINED);
@ -291,7 +287,6 @@ gst_mpeg2dec_qos_reset (GstMpeg2dec * mpeg2dec)
GST_OBJECT_UNLOCK (mpeg2dec); GST_OBJECT_UNLOCK (mpeg2dec);
} }
#ifndef GST_DISABLE_INDEX
static void static void
gst_mpeg2dec_set_index (GstElement * element, GstIndex * index) 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; return (mpeg2dec->index) ? gst_object_ref (mpeg2dec->index) : NULL;
} }
#endif
/* see gst-plugins/gst/games/gstvideoimage.c, paint_setup_I420() */ static GstFlowReturn
#define I420_Y_ROWSTRIDE(width) (GST_ROUND_UP_4(width)) gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstBuffer ** buf)
#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)
{ {
GstFlowReturn flow_ret;
GstBuffer *inbuf = *buf;
GstBuffer *outbuf; GstBuffer *outbuf;
guint8 *dest, *src; guint outsize, c;
guint outsize, line;
outsize = I420_SIZE (mpeg2dec->width, mpeg2dec->height); outsize = gst_video_format_get_size (dec->format, dec->width, dec->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 */ GST_LOG_OBJECT (dec, "Copying input buffer %ux%u (%u) to output buffer "
src = GST_BUFFER_DATA (input); "%ux%u (%u)", dec->decoded_width, dec->decoded_height,
dest = GST_BUFFER_DATA (outbuf); GST_BUFFER_SIZE (inbuf), dec->width, dec->height, outsize);
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 */ flow_ret = gst_pad_alloc_buffer_and_set_caps (dec->srcpad,
src = GST_BUFFER_DATA (input) GST_BUFFER_OFFSET_NONE, outsize, GST_PAD_CAPS (dec->srcpad), &outbuf);
+ 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 */ if (G_UNLIKELY (flow_ret != GST_FLOW_OK))
src = GST_BUFFER_DATA (input) return flow_ret;
+ 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; 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 */ src =
static GstBuffer * GST_BUFFER_DATA (inbuf) +
crop_copy_i422_buffer (GstMpeg2dec * mpeg2dec, GstBuffer * input) gst_video_format_get_component_offset (dec->format, c,
{ dec->decoded_width, dec->decoded_height);
GstBuffer *outbuf; dest =
guint8 *in_data, *out_data; GST_BUFFER_DATA (outbuf) +
guint line; 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); for (line = 0; line < c_height; line++) {
memcpy (dest, src, c_width);
/* Copy Y first */ dest += stride_out;
in_data = GST_BUFFER_DATA (input); src += stride_in;
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;
} }
} }
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 static GstFlowReturn
@ -524,7 +443,8 @@ gst_mpeg2dec_alloc_buffer (GstMpeg2dec * mpeg2dec, gint64 offset,
/* ERRORS */ /* ERRORS */
no_buffer: 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), GST_ELEMENT_ERROR (mpeg2dec, RESOURCE, FAILED, (NULL),
("Failed to allocate memory for buffer, reason %s", ("Failed to allocate memory for buffer, reason %s",
gst_flow_get_name (ret))); gst_flow_get_name (ret)));
@ -550,47 +470,28 @@ gst_mpeg2dec_negotiate_format (GstMpeg2dec * mpeg2dec)
if (sequence->width != sequence->chroma_width && if (sequence->width != sequence->chroma_width &&
sequence->height != sequence->chroma_height) { sequence->height != sequence->chroma_height) {
mpeg2dec->format = GST_VIDEO_FORMAT_I420;
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);
} else if ((sequence->width == sequence->chroma_width && } else if ((sequence->width == sequence->chroma_width &&
sequence->height != sequence->chroma_height) || sequence->height != sequence->chroma_height) ||
(sequence->width != sequence->chroma_width && (sequence->width != sequence->chroma_width &&
sequence->height == sequence->chroma_height)) { sequence->height == sequence->chroma_height)) {
gint halfsize; mpeg2dec->format = GST_VIDEO_FORMAT_Y42B;
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);
} else { } else {
gint size; mpeg2dec->format = GST_VIDEO_FORMAT_Y444;
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;
} }
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) { if (mpeg2dec->pixel_width == 0 || mpeg2dec->pixel_height == 0) {
GValue par = { 0, } GValue par = { 0, };
, dar = { GValue dar = { 0, };
0,} GValue dimensions = { 0, };
, dimensions = {
0,};
/* assume display aspect ratio (DAR) of 4:3 */ /* assume display aspect ratio (DAR) of 4:3 */
g_value_init (&dar, GST_TYPE_FRACTION); g_value_init (&dar, GST_TYPE_FRACTION);
@ -981,14 +882,13 @@ handle_slice (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
picture->nb_fields, GST_BUFFER_OFFSET (outbuf), picture->nb_fields, GST_BUFFER_OFFSET (outbuf),
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf))); GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)));
#ifndef GST_DISABLE_INDEX
if (mpeg2dec->index) { if (mpeg2dec->index) {
gst_index_add_association (mpeg2dec->index, mpeg2dec->index_id, 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_BYTES, GST_BUFFER_OFFSET (outbuf),
GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (outbuf), 0); GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (outbuf), 0);
} }
#endif
if (picture->flags & PIC_FLAG_SKIP) if (picture->flags & PIC_FLAG_SKIP)
goto skip; goto skip;
@ -1025,8 +925,14 @@ handle_slice (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
* array of buffers */ * array of buffers */
gst_buffer_ref (outbuf); gst_buffer_ref (outbuf);
/* do cropping if needed */ /* do cropping if the target region is smaller than the input one */
crop_buffer (mpeg2dec, &outbuf); 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) { if (mpeg2dec->segment.rate >= 0.0) {
/* forward: push right away */ /* forward: push right away */
@ -1048,6 +954,8 @@ handle_slice (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
ret = GST_FLOW_OK; ret = GST_FLOW_OK;
} }
done:
return ret; return ret;
/* special cases */ /* special cases */
@ -1333,11 +1241,9 @@ gst_mpeg2dec_sink_event (GstPad * pad, GstEvent * event)
break; break;
} }
case GST_EVENT_EOS: case GST_EVENT_EOS:
#ifndef GST_DISABLE_INDEX
if (mpeg2dec->index && mpeg2dec->closed) { if (mpeg2dec->index && mpeg2dec->closed) {
gst_index_commit (mpeg2dec->index, mpeg2dec->index_id); gst_index_commit (mpeg2dec->index, mpeg2dec->index_id);
} }
#endif
ret = gst_pad_push_event (mpeg2dec->srcpad, event); ret = gst_pad_push_event (mpeg2dec->srcpad, event);
break; break;
default: default:
@ -1630,7 +1536,6 @@ gst_mpeg2dec_get_event_masks (GstPad * pad)
} }
#endif #endif
#ifndef GST_DISABLE_INDEX
static gboolean static gboolean
index_seek (GstPad * pad, GstEvent * event) index_seek (GstPad * pad, GstEvent * event)
{ {
@ -1697,7 +1602,6 @@ index_seek (GstPad * pad, GstEvent * event)
} }
return FALSE; return FALSE;
} }
#endif
static gboolean static gboolean
normal_seek (GstPad * pad, GstEvent * event) normal_seek (GstPad * pad, GstEvent * event)
@ -1783,11 +1687,9 @@ gst_mpeg2dec_src_event (GstPad * pad, GstEvent * event)
case GST_EVENT_SEEK:{ case GST_EVENT_SEEK:{
gst_event_ref (event); gst_event_ref (event);
if (!(res = gst_pad_push_event (mpeg2dec->sinkpad, event))) { if (!(res = gst_pad_push_event (mpeg2dec->sinkpad, event))) {
#ifndef GST_DISABLE_INDEX
if (mpeg2dec->index) if (mpeg2dec->index)
res = index_seek (pad, event); res = index_seek (pad, event);
else else
#endif
res = normal_seek (pad, event); res = normal_seek (pad, event);
} }
gst_event_unref (event); gst_event_unref (event);

View file

@ -45,15 +45,6 @@ G_BEGIN_DECLS
typedef struct _GstMpeg2dec GstMpeg2dec; typedef struct _GstMpeg2dec GstMpeg2dec;
typedef struct _GstMpeg2decClass GstMpeg2decClass; typedef struct _GstMpeg2decClass GstMpeg2decClass;
typedef enum
{
MPEG2DEC_FORMAT_NONE,
MPEG2DEC_FORMAT_I422,
MPEG2DEC_FORMAT_I420,
MPEG2DEC_FORMAT_YV12,
MPEG2DEC_FORMAT_Y444
} Mpeg2decFormat;
typedef enum typedef enum
{ {
MPEG2DEC_DISC_NONE = 0, MPEG2DEC_DISC_NONE = 0,
@ -87,7 +78,7 @@ struct _GstMpeg2dec {
GstSegment segment; GstSegment segment;
/* video state */ /* video state */
Mpeg2decFormat format; GstVideoFormat format;
gint width; gint width;
gint height; gint height;
gint decoded_width; gint decoded_width;
@ -110,10 +101,8 @@ struct _GstMpeg2dec {
gint fps_d; gint fps_d;
gboolean need_sequence; gboolean need_sequence;
#ifndef GST_DISABLE_INDEX
GstIndex *index; GstIndex *index;
gint index_id; gint index_id;
#endif
gint error_count; gint error_count;
gboolean can_allocate_aligned; gboolean can_allocate_aligned;

View file

@ -46,6 +46,17 @@
* applied, followed by the user-set properties, fast first pass restrictions and * applied, followed by the user-set properties, fast first pass restrictions and
* finally the profile restrictions. * 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> * <refsect2>
* <title>Example pipeline</title> * <title>Example pipeline</title>
* |[ * |[
@ -66,6 +77,14 @@
* constant quality at around Q25 using the 'medium' speed/quality preset and * 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 * restricting the options used so that the output is H.264 Baseline Profile
* compliant and finally multiplexing the output in Quicktime mov format. * 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> * </refsect2>
*/ */
@ -357,7 +376,7 @@ gst_x264_enc_tune_get_type (void)
static GType tune_type = 0; static GType tune_type = 0;
if (!tune_type) { 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; return tune_type;
} }
@ -430,7 +449,7 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK, GST_PAD_SINK,
GST_PAD_ALWAYS, GST_PAD_ALWAYS,
GST_STATIC_CAPS ("video/x-raw-yuv, " GST_STATIC_CAPS ("video/x-raw-yuv, "
"format = (fourcc) I420, " "format = (fourcc) { I420, YV12 }, "
"framerate = (fraction) [0, MAX], " "framerate = (fraction) [0, MAX], "
"width = (int) [ 16, MAX ], " "height = (int) [ 16, 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_object_class_install_property (gobject_class, ARG_VBV_BUF_CAPACITY,
g_param_spec_uint ("vbv-buf-capacity", "VBV buffer capacity", g_param_spec_uint ("vbv-buf-capacity", "VBV buffer capacity",
"Size of the VBV buffer in milliseconds", "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)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
#ifdef X264_PRESETS #ifdef X264_PRESETS
@ -1365,15 +1384,14 @@ static gboolean
gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps) gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
{ {
GstX264Enc *encoder = GST_X264_ENC (GST_OBJECT_PARENT (pad)); GstX264Enc *encoder = GST_X264_ENC (GST_OBJECT_PARENT (pad));
GstVideoFormat format;
gint width, height; gint width, height;
gint fps_num, fps_den; gint fps_num, fps_den;
gint par_num, par_den; gint par_num, par_den;
gint i; gint i;
/* get info from caps */ /* get info from caps */
/* only I420 supported for now; so apparently claims x264enc ? */ if (!gst_video_format_parse_caps (caps, &format, &width, &height))
if (!gst_video_format_parse_caps (caps, &encoder->format, &width, &height) ||
encoder->format != GST_VIDEO_FORMAT_I420)
return FALSE; return FALSE;
if (!gst_video_parse_caps_framerate (caps, &fps_num, &fps_den)) if (!gst_video_parse_caps_framerate (caps, &fps_num, &fps_den))
return FALSE; return FALSE;
@ -1382,8 +1400,8 @@ gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
par_den = 1; par_den = 1;
} }
/* If the encoder is initialized, do not /* If the encoder is initialized, do not reinitialize it again if not
reinitialize it again if not necessary */ * necessary */
if (encoder->x264enc) { if (encoder->x264enc) {
if (width == encoder->width && height == encoder->height if (width == encoder->width && height == encoder->height
&& fps_num == encoder->fps_num && fps_den == encoder->fps_den && 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 */ /* store input description */
encoder->format = format;
encoder->width = width; encoder->width = width;
encoder->height = height; encoder->height = height;
encoder->fps_num = fps_num; 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_num = par_num;
encoder->par_den = par_den; 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, encoder->image_size = gst_video_format_get_size (encoder->format, width,
height); height);
for (i = 0; i < 3; ++i) { 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, encoder->offset[i] = gst_video_format_get_component_offset (encoder->format,
i, width, height); i, width, height);
encoder->stride[i] = gst_video_format_get_row_stride (encoder->format, 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: case GST_EVENT_EOS:
gst_x264_enc_flush_frames (encoder, TRUE); gst_x264_enc_flush_frames (encoder, TRUE);
break; 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, /* no flushing if flush received,
* buffers in encoder are considered (in the) past */ * buffers in encoder are considered (in the) past */
}
case GST_EVENT_CUSTOM_DOWNSTREAM:{ case GST_EVENT_CUSTOM_DOWNSTREAM:{
const GstStructure *s; const GstStructure *s;
s = gst_event_get_structure (event); s = gst_event_get_structure (event);

View file

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

View file

@ -151,6 +151,13 @@ const ASFGuidHash asf_object_guids[] = {
{ASF_OBJ_MARKER, "ASF_OBJ_MARKER", {ASF_OBJ_MARKER, "ASF_OBJ_MARKER",
{0xf487cd01, 0x11cfa951, 0xc000e68e, 0x6553200c} {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", {ASF_OBJ_UNDEFINED, "ASF_OBJ_UNDEFINED",
{0, 0, 0, 0} {0, 0, 0, 0}
} }

View file

@ -67,7 +67,8 @@ typedef enum {
ASF_OBJ_EXT_CONTENT_ENCRYPTION, ASF_OBJ_EXT_CONTENT_ENCRYPTION,
ASF_OBJ_DIGITAL_SIGNATURE_OBJECT, ASF_OBJ_DIGITAL_SIGNATURE_OBJECT,
ASF_OBJ_SCRIPT_COMMAND, ASF_OBJ_SCRIPT_COMMAND,
ASF_OBJ_MARKER ASF_OBJ_MARKER,
ASF_OBJ_UNKNOWN_ENCRYPTION_OBJECT
} AsfObjectID; } AsfObjectID;
typedef enum { typedef enum {

View file

@ -226,8 +226,10 @@ asf_payload_parse_replicated_data_extensions (AsfStream * stream,
switch (ext->id) { switch (ext->id) {
case ASF_PAYLOAD_EXTENSION_DURATION: case ASF_PAYLOAD_EXTENSION_DURATION:
if (G_LIKELY (ext->len == 2)) { if (G_LIKELY (ext->len == 2)) {
payload->duration = guint16 tdur = GST_READ_UINT16_LE (payload->rep_data + off);
GST_READ_UINT16_LE (payload->rep_data + off) * GST_MSECOND; /* packet durations of 1ms are mostly invalid */
if (tdur != 1)
payload->duration = tdur * GST_MSECOND;
} else { } else {
GST_WARNING ("unexpected DURATION extensions len %u", ext->len); 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); flags = gst_asf_demux_get_uint16 (&data, &size);
stream_id = flags & 0x7f; stream_id = flags & 0x7f;
is_encrypted = ! !((flags & 0x8000) << 15); is_encrypted = !!((flags & 0x8000) << 15);
unknown = gst_asf_demux_get_uint32 (&data, &size); unknown = gst_asf_demux_get_uint32 (&data, &size);
GST_DEBUG_OBJECT (demux, "Found stream %u, time_offset=%" GST_TIME_FORMAT, 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); max_pktsize = gst_asf_demux_get_uint32 (&data, &size);
min_bitrate = gst_asf_demux_get_uint32 (&data, &size); min_bitrate = gst_asf_demux_get_uint32 (&data, &size);
demux->broadcast = ! !(flags & 0x01); demux->broadcast = !!(flags & 0x01);
demux->seekable = ! !(flags & 0x02); demux->seekable = !!(flags & 0x02);
GST_DEBUG_OBJECT (demux, "min_pktsize = %u", min_pktsize); GST_DEBUG_OBJECT (demux, "min_pktsize = %u", min_pktsize);
GST_DEBUG_OBJECT (demux, "flags::broadcast = %d", demux->broadcast); 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_CONTENT_ENCRYPTION:
case ASF_OBJ_EXT_CONTENT_ENCRYPTION: case ASF_OBJ_EXT_CONTENT_ENCRYPTION:
case ASF_OBJ_DIGITAL_SIGNATURE_OBJECT: case ASF_OBJ_DIGITAL_SIGNATURE_OBJECT:
case ASF_OBJ_UNKNOWN_ENCRYPTION_OBJECT:
goto error_encrypted; goto error_encrypted;
case ASF_OBJ_CONCEAL_NONE: case ASF_OBJ_CONCEAL_NONE:
case ASF_OBJ_HEAD2: 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 = (header >> 12) & 0xF;
bitrate = mp3types_bitrates[lsf][layer - 1][bitrate] * 1000; bitrate = mp3types_bitrates[lsf][layer - 1][bitrate] * 1000;
if (bitrate == 0) if (bitrate == 0)
return 0; return FALSE;
samplerate = (header >> 10) & 0x3; samplerate = (header >> 10) & 0x3;
samplerate = mp3types_freqs[lsf + mpg25][samplerate]; samplerate = mp3types_freqs[lsf + mpg25][samplerate];

View file

@ -32,6 +32,8 @@
*/ */
#define PTM_DISCONT_ADJUST (0.3 * GST_SECOND) #define PTM_DISCONT_ADJUST (0.3 * GST_SECOND)
#define INITIAL_END_PTM (-1) #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); GST_DEBUG_CATEGORY_STATIC (gstdvddemux_debug);
#define GST_CAT_DEFAULT (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)); gst_element_no_more_pads (GST_ELEMENT (dvd_demux));
/* Keep video/audio/subtitle pads within 1/2 sec of the SCR */ /* Keep video/audio/subtitle pads within 1/2 sec of the SCR */
mpeg_demux->max_gap = GST_SECOND / 2; mpeg_demux->max_gap = MAX_GAP;
mpeg_demux->max_gap_tolerance = GST_SECOND / 20; mpeg_demux->max_gap_tolerance = MAX_GAP_TOLERANCE;
} else { } else {
GST_DEBUG_OBJECT (dvd_demux, "dvddemux Forwarding DVD event %s to all pads", GST_DEBUG_OBJECT (dvd_demux, "dvddemux Forwarding DVD event %s to all pads",
event_type); event_type);
@ -1179,8 +1181,8 @@ gst_dvd_demux_reset (GstDVDDemux * dvd_demux)
dvd_demux->mpeg_version = 0; dvd_demux->mpeg_version = 0;
/* Reset max_gap handling */ /* Reset max_gap handling */
mpeg_demux->max_gap = 0.5 * GST_SECOND; mpeg_demux->max_gap = MAX_GAP;
mpeg_demux->max_gap_tolerance = 0.05 * GST_SECOND; mpeg_demux->max_gap_tolerance = MAX_GAP_TOLERANCE;
} }
static void static void

View file

@ -1030,9 +1030,11 @@ gst_mpeg_demux_send_subbuffer (GstMPEGDemux * mpeg_demux,
outstream->scr_offs = 0; outstream->scr_offs = 0;
if (mpeg_demux->index != NULL) { 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, gst_index_add_association (mpeg_demux->index,
outstream->index_id, 0, outstream->index_id, GST_ASSOCIATION_FLAG_DELTA_UNIT,
GST_FORMAT_BYTES, GST_FORMAT_BYTES,
GST_BUFFER_OFFSET (buffer), GST_FORMAT_TIME, timestamp, 0); 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; const guint8 *data;
GstBuffer *buf = NULL; GstBuffer *buf = NULL;
ret = gst_pad_alloc_buffer_and_set_caps (demux->srcpad, buf = gst_buffer_new_and_alloc (unit_size);
GST_BUFFER_OFFSET_NONE, unit_size, GST_PAD_CAPS (demux->srcpad), &buf); gst_buffer_set_caps (buf, GST_PAD_CAPS (demux->srcpad));
if (ret != GST_FLOW_OK) {
GST_DEBUG_OBJECT (demux, "pad_alloc flow: %s", gst_flow_get_name (ret));
break;
}
data = gst_adapter_peek (demux->adapter, unit_size); data = gst_adapter_peek (demux->adapter, unit_size);
memcpy (GST_BUFFER_DATA (buf), data, 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 static GstFlowReturn
gst_rmdemux_descramble_audio (GstRMDemux * rmdemux, GstRMDemuxStream * stream) gst_rmdemux_descramble_audio (GstRMDemux * rmdemux, GstRMDemuxStream * stream)
{ {
GstFlowReturn ret; GstFlowReturn ret = GST_FLOW_ERROR;
GstBuffer *outbuf; GstBuffer *outbuf;
guint packet_size = stream->packet_size; guint packet_size = stream->packet_size;
guint height = stream->subpackets->len; 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, GST_LOG ("packet_size = %u, leaf_size = %u, height= %u", packet_size,
leaf_size, height); leaf_size, height);
ret = gst_pad_alloc_buffer_and_set_caps (stream->pad, outbuf = gst_buffer_new_and_alloc (height * packet_size);
GST_BUFFER_OFFSET_NONE, height * packet_size, gst_buffer_set_caps (outbuf, GST_PAD_CAPS (stream->pad));
GST_PAD_CAPS (stream->pad), &outbuf);
if (ret != GST_FLOW_OK)
goto done;
for (p = 0; p < height; ++p) { for (p = 0; p < height; ++p) {
GstBuffer *b = g_ptr_array_index (stream->subpackets, 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); gst_buffer_unref (outbuf);
done:
gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream);
return ret; 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, GST_LOG ("packet_size = %u, leaf_size = %u, height= %u", packet_size,
stream->leaf_size, height); stream->leaf_size, height);
ret = gst_pad_alloc_buffer_and_set_caps (stream->pad, outbuf = gst_buffer_new_and_alloc (height * packet_size);
GST_BUFFER_OFFSET_NONE, height * packet_size, gst_buffer_set_caps (outbuf, GST_PAD_CAPS (stream->pad));
GST_PAD_CAPS (stream->pad), &outbuf);
if (ret != GST_FLOW_OK)
goto done;
for (p = 0; p < height; ++p) { for (p = 0; p < height; ++p) {
GstBuffer *b = g_ptr_array_index (stream->subpackets, 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)); gst_buffer_set_caps (outbuf, GST_PAD_CAPS (stream->pad));
ret = gst_pad_push (stream->pad, outbuf); ret = gst_pad_push (stream->pad, outbuf);
done:
gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream);
return ret; return ret;
@ -2462,6 +2450,10 @@ gst_rmdemux_parse_video_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
stream->discont = FALSE; stream->discont = FALSE;
} }
if (!key) {
GST_BUFFER_FLAG_SET (out, GST_BUFFER_FLAG_DELTA_UNIT);
}
ret = gst_pad_push (stream->pad, out); ret = gst_pad_push (stream->pad, out);
ret = gst_rmdemux_combine_flows (rmdemux, stream, ret); ret = gst_rmdemux_combine_flows (rmdemux, stream, ret);
if (ret != GST_FLOW_OK) if (ret != GST_FLOW_OK)
@ -2501,7 +2493,7 @@ gst_rmdemux_parse_audio_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
GstBuffer * in, guint offset, guint16 version, GstBuffer * in, guint offset, guint16 version,
GstClockTime timestamp, gboolean key) GstClockTime timestamp, gboolean key)
{ {
GstFlowReturn ret, cret; GstFlowReturn ret;
GstBuffer *buffer; GstBuffer *buffer;
const guint8 *data; const guint8 *data;
guint size; guint size;
@ -2509,12 +2501,8 @@ gst_rmdemux_parse_audio_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
data = GST_BUFFER_DATA (in) + offset; data = GST_BUFFER_DATA (in) + offset;
size = GST_BUFFER_SIZE (in) - offset; size = GST_BUFFER_SIZE (in) - offset;
ret = gst_pad_alloc_buffer_and_set_caps (stream->pad, buffer = gst_buffer_new_and_alloc (size);
GST_BUFFER_OFFSET_NONE, size, GST_PAD_CAPS (stream->pad), &buffer); gst_buffer_set_caps (buffer, GST_PAD_CAPS (stream->pad));
cret = gst_rmdemux_combine_flows (rmdemux, stream, ret);
if (ret != GST_FLOW_OK)
goto alloc_failed;
memcpy (GST_BUFFER_DATA (buffer), (guint8 *) data, size); 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); gst_buffer_unref (in);
return ret; return ret;
/* ERRORS */
alloc_failed:
{
GST_DEBUG_OBJECT (rmdemux, "pad alloc returned %d", ret);
gst_buffer_unref (in);
return cret;
}
} }
static GstFlowReturn static GstFlowReturn

View file

@ -145,7 +145,7 @@ gst_rm_utils_descramble_dnet_buffer (GstBuffer * buf)
static void static void
gst_rm_utils_swap_nibbles (guint8 * data, gint idx1, gint idx2, gint len) 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)) { if ((idx2 & 1) && !(idx1 & 1)) {
/* align destination to a byte by swapping the indexes */ /* align destination to a byte by swapping the indexes */

View file

@ -1,17 +1,18 @@
# Bulgarian translation of gst-plugins-ugly. # 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. # 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 "" msgid ""
msgstr "" 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" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2010-10-15 15:20+0100\n" "POT-Creation-Date: 2011-01-07 14:34+0000\n"
"PO-Revision-Date: 2009-06-15 07:48+0300\n" "PO-Revision-Date: 2010-11-04 14:22+0200\n"
"Last-Translator: Alexander Shopov <ash@contact.bg>\n" "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n" "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n" "Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
@ -31,19 +32,19 @@ msgstr "DVD-то не може да бъде отворено"
#, c-format #, c-format
msgid "Could not open DVD title %d" msgid "Could not open DVD title %d"
msgstr "Част %d от DVD-то не може да бъде отворена" msgstr "Заглавната част %d от DVD-то не може да бъде отворена"
#, c-format #, c-format
msgid "Failed to go to chapter %d of DVD title %d" msgid "Failed to go to chapter %d of DVD title %d"
msgstr "Не може да се премине към раздел %d от част %d на DVD-то" msgstr "Не може да се премине към раздел %d от заглавната част %d на DVD-то"
#, c-format #, c-format
msgid "" msgid ""
"Could not open DVD title %d. Interactive titles are not supported by this " "Could not open DVD title %d. Interactive titles are not supported by this "
"element" "element"
msgstr "" msgstr ""
"Част %d от DVD-то не може да бъде отворена. Интерактивни части не се " "Заглавната част %d от DVD-то не може да бъде отворена. Интерактивни части не "
"поддържат от този елемент" "се поддържат от този елемент"
msgid "" msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD " "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." msgid "Internal data stream error."
msgstr "Вътрешна грешка в потока от данни." 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. # Catalan translation for gstreamer.
# Copyright © 2004 Free Software Foundation, Inc. # Copyright © 2004, 2005, 2010 Free Software Foundation, Inc.
# This file is distributed under the same licence as the gst-plugins package. # This file is put in the public domain.
# Jordi Mallach <jordi@sindominio.net>, 2004. # Jordi Mallach <jordi@sindominio.net>, 2004, 2005, 2010.
# #
msgid "" msgid ""
msgstr "" 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" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2010-10-15 15:20+0100\n" "POT-Creation-Date: 2011-01-07 14:34+0000\n"
"PO-Revision-Date: 2004-08-05 15:48+0200\n" "PO-Revision-Date: 2010-11-04 23:22+0100\n"
"Last-Translator: Jordi Mallach <jordi@sindominio.net>\n" "Last-Translator: Jordi Mallach <jordi@sindominio.net>\n"
"Language-Team: Catalan <ca@dodds.net>\n" "Language-Team: Catalan <ca@dodds.net>\n"
"Language: ca\n" "Language: ca\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n!=1;\n"
#, fuzzy
msgid "Could not read from CD." 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." 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." 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" 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" 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 #, c-format
msgid "Failed to go to chapter %d of DVD title %d" 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 #, c-format
msgid "" msgid ""
"Could not open DVD title %d. Interactive titles are not supported by this " "Could not open DVD title %d. Interactive titles are not supported by this "
"element" "element"
msgstr "" msgstr ""
"No s'ha pogut obrir el títol %d del DVD. Els títols interactius no són "
"implementats per aquest element"
msgid "" msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD " "Could not read DVD. This may be because the DVD is encrypted and a DVD "
@ -51,208 +52,28 @@ msgstr ""
#, fuzzy #, fuzzy
msgid "Could not read DVD." 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." msgid "Failed to configure LAME encoder. Check your encoding parameters."
msgstr "" msgstr ""
"No s'ha pogut configurar el codificador LAME. Comproveu els paràmetres de "
"codificació."
#, c-format #, c-format
msgid "" msgid ""
"The requested bitrate %d kbit/s for property '%s' is not allowed. The " "The requested bitrate %d kbit/s for property '%s' is not allowed. The "
"bitrate was changed to %d kbit/s." "bitrate was changed to %d kbit/s."
msgstr "" 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." msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
msgstr "" msgstr ""
"No s'ha pogut configurar el codificador TwoLAME. Comproveu els paràmetres de "
"codificació."
msgid "This stream contains no data." msgid "This stream contains no data."
msgstr "" msgstr "Aquest flux no conté dades."
msgid "Internal data stream error." msgid "Internal data stream error."
msgstr "" msgstr "S'ha produït un error intern de flux de dades."
#, 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»."

View file

@ -1,20 +1,24 @@
# Translation for gst-plugins-ugly messages to Russian # Translation for gst-plugins-ugly messages to Russian
# This file is put in the public domain. # This file is put in the public domain.
#
# Артём Попов <artfwo@gmail.com>, 2009. # Артём Попов <artfwo@gmail.com>, 2009.
# Pavel Maryanov <acid_jack@ukr.net>, 2009. # Pavel Maryanov <acid_jack@ukr.net>, 2009.
# # Yuri Kozlov <yuray@komyakino.ru>, 2011.
msgid "" msgid ""
msgstr "" 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" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2010-10-15 15:20+0100\n" "POT-Creation-Date: 2011-01-07 14:34+0000\n"
"PO-Revision-Date: 2009-02-12 14:26+0200\n" "PO-Revision-Date: 2011-01-01 14:29+0300\n"
"Last-Translator: Pavel Maryanov <acid_jack@ukr.net>\n" "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@mx.ru>\n" "Language-Team: Russian <gnu@mx.ru>\n"
"Language: ru\n" "Language: ru\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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." msgid "Could not read from CD."
msgstr "Не удалось прочесть CD." msgstr "Не удалось прочесть CD."
@ -54,7 +58,7 @@ msgid "Could not read DVD."
msgstr "Не удалось открыть DVD" msgstr "Не удалось открыть DVD"
msgid "Failed to configure LAME encoder. Check your encoding parameters." msgid "Failed to configure LAME encoder. Check your encoding parameters."
msgstr "Не удалось настроить кодировщик LAME. Проверьте параметры сжатия." msgstr "Не удалось настроить кодировщик LAME. Проверьте параметры кодирования."
#, c-format #, c-format
msgid "" msgid ""
@ -64,9 +68,9 @@ msgstr ""
"Запрошенный битрейт в %d кбит/с для свойства «%s» недопустим. Битрейт был " "Запрошенный битрейт в %d кбит/с для свойства «%s» недопустим. Битрейт был "
"изменён на %d кбит/с." "изменён на %d кбит/с."
#, fuzzy
msgid "Failed to configure TwoLAME encoder. Check your encoding parameters." msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
msgstr "Не удалось настроить кодировщик LAME. Проверьте параметры сжатия." msgstr ""
"Не удалось настроить кодировщик TwoLAME. Проверьте параметры кодирования."
msgid "This stream contains no data." msgid "This stream contains no data."
msgstr "Поток не содержит данных." msgstr "Поток не содержит данных."

View file

@ -56,7 +56,8 @@ noinst_PROGRAMS =
noinst_HEADERS = elements/xingmux_testdata.h 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) LDADD = $(GST_OBJ_LIBS) $(GST_CHECK_LIBS) $(CHECK_LIBS)
# valgrind testing # valgrind testing
@ -64,7 +65,7 @@ VALGRIND_TESTS_DISABLE = elements/x264enc
SUPPRESSIONS = $(top_srcdir)/common/gst.supp $(srcdir)/gst-plugins-ugly.supp SUPPRESSIONS = $(top_srcdir)/common/gst.supp $(srcdir)/gst-plugins-ugly.supp
elements_cmmldec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) elements_cmmldec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS)
elements_cmmlenc_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) elements_cmmlenc_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS)
EXTRA_DIST = gst-plugins-ugly.supp EXTRA_DIST = gst-plugins-ugly.supp

View file

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

View file

@ -9,7 +9,7 @@
#undef AC_APPLE_UNIVERSAL_BUILD #undef AC_APPLE_UNIVERSAL_BUILD
/* Default audio sink */ /* Default audio sink */
#define DEFAULT_AUDIOSINK "directaudiosink" #define DEFAULT_AUDIOSINK "directsoundsink"
/* Default audio source */ /* Default audio source */
#define DEFAULT_AUDIOSRC "audiotestsrc" #define DEFAULT_AUDIOSRC "audiotestsrc"
@ -51,6 +51,9 @@
/* package origin */ /* package origin */
#define GST_PACKAGE_ORIGIN "Unknown 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). */ /* Define to enable a52dec (used by a52dec). */
#undef HAVE_A52DEC #undef HAVE_A52DEC
@ -230,7 +233,7 @@
#define PACKAGE_NAME "GStreamer Ugly Plug-ins" #define PACKAGE_NAME "GStreamer Ugly Plug-ins"
/* Define to the full name and version of this package. */ /* 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 to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gst-plugins-ugly" #define PACKAGE_TARNAME "gst-plugins-ugly"
@ -239,7 +242,7 @@
#undef PACKAGE_URL #undef PACKAGE_URL
/* Define to the version of this package. */ /* 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 */ /* directory where plugins are located */
#ifdef _DEBUG #ifdef _DEBUG
@ -267,7 +270,7 @@
#undef STDC_HEADERS #undef STDC_HEADERS
/* Version number of package */ /* 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 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */ significant byte first (like Motorola and SPARC, unlike Intel). */