mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 09:40:37 +00:00
Merge branch 'master' into 0.11
Conflicts: configure.ac
This commit is contained in:
commit
62efb84c19
49 changed files with 1053 additions and 605 deletions
591
ChangeLog
591
ChangeLog
|
@ -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
39
NEWS
|
@ -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
74
RELEASE
|
@ -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
2
common
|
@ -1 +1 @@
|
||||||
Subproject commit 011bcc8a0fc7f798ee874a7ba899123fb2470e22
|
Subproject commit 1de7f6ab2d4bc1af69f06079cf0f4e2cbbfdc178
|
27
configure.ac
27
configure.ac
|
@ -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\"/" \
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
|
@ -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 =
|
||||||
|
|
|
@ -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];
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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);
|
flow_ret = gst_pad_alloc_buffer_and_set_caps (dec->srcpad,
|
||||||
dest += I420_Y_ROWSTRIDE (mpeg2dec->width);
|
GST_BUFFER_OFFSET_NONE, outsize, GST_PAD_CAPS (dec->srcpad), &outbuf);
|
||||||
src += I420_Y_ROWSTRIDE (mpeg2dec->decoded_width);
|
|
||||||
|
if (G_UNLIKELY (flow_ret != GST_FLOW_OK))
|
||||||
|
return flow_ret;
|
||||||
|
|
||||||
|
for (c = 0; c < 3; c++) {
|
||||||
|
const guint8 *src;
|
||||||
|
guint8 *dest;
|
||||||
|
guint stride_in, stride_out;
|
||||||
|
guint c_height, c_width, line;
|
||||||
|
|
||||||
|
src =
|
||||||
|
GST_BUFFER_DATA (inbuf) +
|
||||||
|
gst_video_format_get_component_offset (dec->format, c,
|
||||||
|
dec->decoded_width, dec->decoded_height);
|
||||||
|
dest =
|
||||||
|
GST_BUFFER_DATA (outbuf) +
|
||||||
|
gst_video_format_get_component_offset (dec->format, c, dec->width,
|
||||||
|
dec->height);
|
||||||
|
stride_out = gst_video_format_get_row_stride (dec->format, c, dec->width);
|
||||||
|
stride_in =
|
||||||
|
gst_video_format_get_row_stride (dec->format, c, dec->decoded_width);
|
||||||
|
c_height =
|
||||||
|
gst_video_format_get_component_height (dec->format, c, dec->height);
|
||||||
|
c_width = gst_video_format_get_component_width (dec->format, c, dec->width);
|
||||||
|
|
||||||
|
for (line = 0; line < c_height; line++) {
|
||||||
|
memcpy (dest, src, c_width);
|
||||||
|
dest += stride_out;
|
||||||
|
src += stride_in;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* U */
|
gst_buffer_set_caps (outbuf, GST_PAD_CAPS (dec->srcpad));
|
||||||
src = GST_BUFFER_DATA (input)
|
gst_buffer_copy_metadata (outbuf, inbuf,
|
||||||
+ I420_U_OFFSET (mpeg2dec->decoded_width, mpeg2dec->decoded_height);
|
|
||||||
dest = GST_BUFFER_DATA (outbuf)
|
|
||||||
+ I420_U_OFFSET (mpeg2dec->width, mpeg2dec->height);
|
|
||||||
for (line = 0; line < mpeg2dec->height / 2; line++) {
|
|
||||||
memcpy (dest, src, mpeg2dec->width / 2);
|
|
||||||
dest += I420_U_ROWSTRIDE (mpeg2dec->width);
|
|
||||||
src += I420_U_ROWSTRIDE (mpeg2dec->decoded_width);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* V */
|
|
||||||
src = GST_BUFFER_DATA (input)
|
|
||||||
+ I420_V_OFFSET (mpeg2dec->decoded_width, mpeg2dec->decoded_height);
|
|
||||||
dest = GST_BUFFER_DATA (outbuf)
|
|
||||||
+ I420_V_OFFSET (mpeg2dec->width, mpeg2dec->height);
|
|
||||||
for (line = 0; line < mpeg2dec->height / 2; line++) {
|
|
||||||
memcpy (dest, src, mpeg2dec->width / 2);
|
|
||||||
dest += I420_V_ROWSTRIDE (mpeg2dec->width);
|
|
||||||
src += I420_V_ROWSTRIDE (mpeg2dec->decoded_width);
|
|
||||||
}
|
|
||||||
|
|
||||||
return outbuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* FIXME: this is unlikely to be right stride-wise and offset-wise */
|
|
||||||
static GstBuffer *
|
|
||||||
crop_copy_i422_buffer (GstMpeg2dec * mpeg2dec, GstBuffer * input)
|
|
||||||
{
|
|
||||||
GstBuffer *outbuf;
|
|
||||||
guint8 *in_data, *out_data;
|
|
||||||
guint line;
|
|
||||||
|
|
||||||
outbuf = gst_buffer_new_and_alloc (mpeg2dec->width * mpeg2dec->height * 2);
|
|
||||||
|
|
||||||
/* Copy Y first */
|
|
||||||
in_data = GST_BUFFER_DATA (input);
|
|
||||||
out_data = GST_BUFFER_DATA (outbuf);
|
|
||||||
for (line = 0; line < mpeg2dec->height; line++) {
|
|
||||||
memcpy (out_data, in_data, mpeg2dec->width);
|
|
||||||
out_data += mpeg2dec->width;
|
|
||||||
in_data += mpeg2dec->decoded_width;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now copy U & V */
|
|
||||||
in_data = GST_BUFFER_DATA (input)
|
|
||||||
+ mpeg2dec->decoded_width * mpeg2dec->decoded_height;
|
|
||||||
for (line = 0; line < mpeg2dec->height; line++) {
|
|
||||||
memcpy (out_data, in_data, mpeg2dec->width / 2);
|
|
||||||
memcpy (out_data + mpeg2dec->width * mpeg2dec->height / 2,
|
|
||||||
in_data + mpeg2dec->decoded_width * mpeg2dec->decoded_height / 2,
|
|
||||||
mpeg2dec->width / 2);
|
|
||||||
out_data += mpeg2dec->width / 2;
|
|
||||||
in_data += mpeg2dec->decoded_width / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
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_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS);
|
||||||
gst_buffer_unref (input);
|
|
||||||
|
|
||||||
|
gst_buffer_unref (*buf);
|
||||||
*buf = outbuf;
|
*buf = outbuf;
|
||||||
result = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -1408,7 +1427,8 @@ gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
|
||||||
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);
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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];
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
35
po/bg.po
35
po/bg.po
|
@ -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
231
po/ca.po
|
@ -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»."
|
|
||||||
|
|
20
po/ru.po
20
po/ru.po
|
@ -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 "Поток не содержит данных."
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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). */
|
||||||
|
|
Loading…
Reference in a new issue