Projects
Essentials
gstreamer-plugins-ugly-codecs
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 5
View file
gstreamer-plugins-ugly-codecs.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Sat Mar 26 00:58:27 UTC 2022 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.20.1 + +------------------------------------------------------------------- Fri Feb 4 20:53:04 UTC 2022 - Bjørn Lie <zaitor@opensuse.org> - Update to version 1.18.6
View file
gstreamer-plugins-ugly-codecs.spec
Changed
@@ -4,10 +4,10 @@ %define _name gst-plugins-ugly %define gst_branch 1.0 -%define _version 1.18.0 +%define _version 1.20.0 Name: gstreamer-plugins-ugly-codecs -Version: 1.18.6 +Version: 1.20.1 Release: 0 Summary: Codecs/plugins for gstreamer-plugins-ugly License: LGPL-2.1-or-later @@ -24,7 +24,7 @@ BuildRequires: python3-base BuildRequires: pkgconfig(glib-2.0) >= 2.40.0 BuildRequires: pkgconfig(gmodule-no-export-2.0) -BuildRequires: pkgconfig(gstreamer-1.0) >= 1.16.0 +BuildRequires: pkgconfig(gstreamer-1.0) >= 1.20.0 BuildRequires: pkgconfig(gstreamer-app-1.0) BuildRequires: pkgconfig(gstreamer-audio-1.0) BuildRequires: pkgconfig(gstreamer-base-1.0) @@ -69,6 +69,7 @@ --auto-features=disabled \ -Dpackage-name='Packman GStreamer-plugins-ugly-codecs' \ -Dpackage-origin='https://pmbs.links2linux.de' \ + -Dgpl=enabled \ -Dorc=enabled \ -Dasfdemux=enabled \ -Damrnb=enabled \
View file
gst-plugins-ugly-1.18.6.tar.xz/.gitlab-ci.yml
Deleted
@@ -1,1 +0,0 @@ -include: "https://gitlab.freedesktop.org/gstreamer/gst-ci/raw/1.18/gitlab/ci_template.yml"
View file
gst-plugins-ugly-1.18.6.tar.xz/README
Deleted
@@ -1,252 +0,0 @@ -GStreamer 1.18.x stable series - -WHAT IT IS ----------- - -This is GStreamer, a framework for streaming media. - -WHERE TO START --------------- - -We have a website at - - https://gstreamer.freedesktop.org - -Our documentation, including tutorials, API reference and FAQ can be found at - - https://gstreamer.freedesktop.org/documentation/ - -You can subscribe to our mailing lists: - - https://lists.freedesktop.org/mailman/listinfo/gstreamer-announce - - https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel - -We track bugs, feature requests and merge requests (patches) in GitLab at - - https://gitlab.freedesktop.org/gstreamer/ - -You can join us on IRC - #gstreamer on irc.freenode.org - -GStreamer 1.0 series --------------------- - -Starring - - GSTREAMER - -The core around which all other modules revolve. Base functionality and -libraries, some essential elements, documentation, and testing. - - BASE - -A well-groomed and well-maintained collection of GStreamer plug-ins and -elements, spanning the range of possible types of elements one would want -to write for GStreamer. - -And introducing, for the first time ever, on the development screen ... - - THE GOOD - - --- "Such ingratitude. After all the times I've saved your life." - -A collection of plug-ins you'd want to have right next to you on the -battlefield. Shooting sharp and making no mistakes, these plug-ins have it -all: good looks, good code, and good licensing. Documented and dressed up -in tests. If you're looking for a role model to base your own plug-in on, -here it is. - -If you find a plot hole or a badly lip-synced line of code in them, -let us know - it is a matter of honour for us to ensure Blondie doesn't look -like he's been walking 100 miles through the desert without water. - - THE UGLY - - --- "When you have to shoot, shoot. Don't talk." - -There are times when the world needs a color between black and white. -Quality code to match the good's, but two-timing, backstabbing and ready to -sell your freedom down the river. These plug-ins might have a patent noose -around their neck, or a lock-up license, or any other problem that makes you -think twice about shipping them. - -We don't call them ugly because we like them less. Does a mother love her -son less because he's not as pretty as the other ones ? No - she commends -him on his great personality. These plug-ins are the life of the party. -And we'll still step in and set them straight if you report any unacceptable -behaviour - because there are two kinds of people in the world, my friend: -those with a rope around their neck and the people who do the cutting. - - THE BAD - - --- "That an accusation?" - -No perfectly groomed moustache or any amount of fine clothing is going to -cover up the truth - these plug-ins are Bad with a capital B. -They look fine on the outside, and might even appear to get the job done, but -at the end of the day they're a black sheep. Without a golden-haired angel -to watch over them, they'll probably land in an unmarked grave at the final -showdown. - -Don't bug us about their quality - exercise your Free Software rights, -patch up the offender and send us the patch on the fastest steed you can -steal from the Confederates. Because you see, in this world, there's two -kinds of people, my friend: those with loaded guns and those who dig. -You dig. - -The Lowdown ------------ - - --- "I've never seen so many plug-ins wasted so badly." - -GStreamer Plug-ins has grown so big that it's hard to separate the wheat from -the chaff. Also, distributors have brought up issues about the legal status -of some of the plug-ins we ship. To remedy this, we've divided the previous -set of available plug-ins into four modules: - -- gst-plugins-base: a small and fixed set of plug-ins, covering a wide range - of possible types of elements; these are continuously kept up-to-date - with any core changes during the development series. - - - We believe distributors can safely ship these plug-ins. - - People writing elements should base their code on these elements. - - These elements come with examples, documentation, and regression tests. - -- gst-plugins-good: a set of plug-ins that we consider to have good quality - code, correct functionality, our preferred license (LGPL for the plug-in - code, LGPL or LGPL-compatible for the supporting library). - - - We believe distributors can safely ship these plug-ins. - - People writing elements should base their code on these elements. - -- gst-plugins-ugly: a set of plug-ins that have good quality and correct - functionality, but distributing them might pose problems. The license - on either the plug-ins or the supporting libraries might not be how we'd - like. The code might be widely known to present patent problems. - - - Distributors should check if they want/can ship these plug-ins. - - People writing elements should base their code on these elements. - -- gst-plugins-bad: a set of plug-ins that aren't up to par compared to the - rest. They might be close to being good quality, but they're missing - something - be it a good code review, some documentation, a set of tests, - a real live maintainer, or some actual wide use. - If the blanks are filled in they might be upgraded to become part of - either gst-plugins-good or gst-plugins-ugly, depending on the other factors. - - - If the plug-ins break, you can't complain - instead, you can fix the - problem and send us a patch, or bribe someone into fixing them for you. - - New contributors can start here for things to work on. - -PLATFORMS ---------- - -- Linux is of course fully supported -- FreeBSD is reported to work; other BSDs should work too; same for Solaris -- MacOS works, binary 1.x packages can be built using the cerbero build tool -- Windows works; binary 1.x packages can be built using the cerbero build tool - - MSys/MinGW builds - - Microsoft Visual Studio builds are also available and supported -- Android works, binary 1.x packages can be built using the cerbero build tool -- iOS works - -INSTALLING FROM PACKAGES ------------------------- - -You should always prefer installing from packages first. GStreamer is -well-maintained for a number of distributions, including Fedora, Debian, -Ubuntu, Mandrake, Arch Linux, Gentoo, ... - -Only in cases where you: - - - want to hack on GStreamer - - want to verify that a bug has been fixed - - do not have a sane distribution - -should you choose to build from source tarballs or git. - -Find more information about the various packages at - - https://gstreamer.freedesktop.org/download/ - -COMPILING FROM SOURCE TARBALLS ------------------------------- - -- again, make sure that you really need to install from source! - If GStreamer is one of your first projects ever that you build from source, - consider taking on an easier project. - -- you need a recent version of Meson installed, see - - http://mesonbuild.com/Getting-meson.html - - and - - https://gitlab.freedesktop.org/gstreamer/gst-build/blob/master/README.md - -- run - - meson build - ninja -C build - - to build GStreamer. - -- if you want to install it (not required, but what you usually want to do), run - - ninja -C build install - -- try out a simple test: - gst-launch-1.0 -v fakesrc num_buffers=5 ! fakesink - (If you didn't install GStreamer, run `./build/tools/gst-launch-1.0`) - - If it outputs a bunch of messages from fakesrc and fakesink, everything is - ok. - - If it did not work, keep in mind that you might need to adjust the - PATH and/or LD_LIBRARY_PATH environment variables to make the system - find GStreamer in the prefix where you installed (by default that is /usr/local). - -- After this, you're ready to install gst-plugins, which will provide the - functionality you're probably looking for by now, so go on and read - that README. - -COMPILING FROM GIT ------------------- - -You can build an uninstalled GStreamer from git for development or testing -purposes without affecting your system installation. - -Get started with: - - git clone https://gitlab.freedesktop.org/gstreamer/gst-build - meson build - ninja -C build - ninja -C build uninstalled - -For more information, see the `gst-build` module and its documentation: - - https://gitlab.freedesktop.org/gstreamer/gst-build/blob/master/README.md - - -PLUG-IN DEPENDENCIES AND LICENSES ---------------------------------- - -GStreamer is developed under the terms of the LGPL (see COPYING file for -details). Some of our plug-ins however rely on libraries which are available -under other licenses. This means that if you are distributing an application -which has a non-GPL compatible license (for instance a closed-source -application) with GStreamer, you have to make sure not to distribute GPL-linked -plug-ins. - -When using GPL-linked plug-ins, GStreamer is for all practical reasons -under the GPL itself. - -HISTORY -------- - -The fundamental design comes from the video pipeline at Oregon Graduate -Institute, as well as some ideas from DirectMedia. It's based on plug-ins that -will provide the various codec and other functionality. The interface -hopefully is generic enough for various companies (ahem, Apple) to release -binary codecs for Linux, until such time as they get a clue and release the -source.
View file
gst-plugins-ugly-1.18.6.tar.xz/hooks
Deleted
-(directory)
View file
gst-plugins-ugly-1.18.6.tar.xz/hooks/pre-commit.hook
Deleted
@@ -1,83 +0,0 @@ -#!/bin/sh -# -# Check that the code follows a consistent code style -# - -# Check for existence of indent, and error out if not present. -# On some *bsd systems the binary seems to be called gnunindent, -# so check for that first. - -version=`gnuindent --version 2>/dev/null` -if test "x$version" = "x"; then - version=`gindent --version 2>/dev/null` - if test "x$version" = "x"; then - version=`indent --version 2>/dev/null` - if test "x$version" = "x"; then - echo "GStreamer git pre-commit hook:" - echo "Did not find GNU indent, please install it before continuing." - exit 1 - else - INDENT=indent - fi - else - INDENT=gindent - fi -else - INDENT=gnuindent -fi - -case `$INDENT --version` in - GNU*) - ;; - default) - echo "GStreamer git pre-commit hook:" - echo "Did not find GNU indent, please install it before continuing." - echo "(Found $INDENT, but it doesn't seem to be GNU indent)" - exit 1 - ;; -esac - -INDENT_PARAMETERS="--braces-on-if-line \ - --case-brace-indentation0 \ - --case-indentation2 \ - --braces-after-struct-decl-line \ - --line-length80 \ - --no-tabs \ - --cuddle-else \ - --dont-line-up-parentheses \ - --continuation-indentation4 \ - --honour-newlines \ - --tab-size8 \ - --indent-level2 \ - --leave-preprocessor-space" - -echo "--Checking style--" -for file in `git diff-index --cached --name-only HEAD --diff-filter=ACMR| grep "\.c$"` ; do - # nf is the temporary checkout. This makes sure we check against the - # revision in the index (and not the checked out version). - nf=`git checkout-index --temp ${file} | cut -f 1` - newfile=`mktemp /tmp/${nf}.XXXXXX` || exit 1 - $INDENT ${INDENT_PARAMETERS} \ - $nf -o $newfile 2>> /dev/null - # FIXME: Call indent twice as it tends to do line-breaks - # different for every second call. - $INDENT ${INDENT_PARAMETERS} \ - $newfile 2>> /dev/null - diff -u -p "${nf}" "${newfile}" - r=$? - rm "${newfile}" - rm "${nf}" - if [ $r != 0 ] ; then -echo "=================================================================================================" -echo " Code style error in: $file " -echo " " -echo " Please fix before committing. Don't forget to run git add before trying to commit again. " -echo " If the whole file is to be committed, this should work (run from the top-level directory): " -echo " " -echo " gst-indent $file; git add $file; git commit" -echo " " -echo "=================================================================================================" - exit 1 - fi -done -echo "--Checking style pass--"
View file
gst-plugins-ugly-1.18.6.tar.xz/ChangeLog -> gst-plugins-ugly-1.20.1.tar.xz/ChangeLog
Changed
@@ -1,129 +1,598 @@ -=== release 1.18.6 === +=== release 1.20.1 === -2022-02-02 15:07:08 +0000 Tim-Philipp Müller <tim@centricular.com> +2022-03-14 11:33:33 +0000 Tim-Philipp Müller <tim@centricular.com> - * ChangeLog: * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.18.6 + Release 1.20.1 + +2022-03-14 11:33:25 +0000 Tim-Philipp Müller <tim@centricular.com> + + * ChangeLog: + Update ChangeLogs for 1.20.1 -2021-09-09 00:12:42 +0100 Tim-Philipp Müller <tim@centricular.com> +2022-02-23 11:10:11 +0100 Sebastian Fricke <sebastian.fricke@collabora.com> + + * README.md: + Maintain build instructions at a single location + Do not maintain similar build instructions within each gst-plugins-* + subproject and the subproject/gstreamer subproject. Use the build + instructions from the mono-repository and link to them via hyperlink. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1829> + +2022-02-21 23:29:23 +0100 Ruben Gonzalez <rgonzalez@fluendo.com> + + * docs/gst_plugins_cache.json: + * ext/x264/gstx264enc.c: + x264enc: Update long-name and description + Update x264enc long-name to be more than just the name. Then the + description also was updated to be longer than the long-name, and + similar to the plugin description. + Finally, as I am here, H264 was replaced by H.264 and x264 is only a + plugin (not plugins). + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1781> + +2022-02-07 16:17:28 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development -=== release 1.18.5 === +=== release 1.20.0 === -2021-09-08 20:03:08 +0100 Tim-Philipp Müller <tim@centricular.com> +2022-02-03 19:53:25 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: + * README: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.18.5 + Release 1.20.0 -2021-04-20 18:48:38 -0400 Doug Nazar <nazard@nazar.ca> +2022-02-03 19:53:18 +0000 Tim-Philipp Müller <tim@centricular.com> - * gst/realmedia/rmdemux.c: - * gst/realmedia/rmdemux.h: - realmedia: Drop duplicate seek events. - Also use seek seqnum for flush & segment events/messages. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/82> + * ChangeLog: + Update ChangeLogs for 1.20.0 -2021-04-20 18:47:31 -0400 Doug Nazar <nazard@nazar.ca> +=== release 1.19.90 === - * gst/asfdemux/gstasfdemux.c: - asfdemux: Drop duplicate seek events. - Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/82> +2022-01-28 14:28:35 +0000 Tim-Philipp Müller <tim@centricular.com> -2021-03-19 15:16:06 +1100 Matthew Waters <matthew@centricular.com> + * ChangeLog: + * NEWS: + * RELEASE: + * gst-plugins-ugly.doap: + * meson.build: + Release 1.19.90 - * ext/x264/gstencoderbitrateprofilemanager.c: - gst: don't use volatile to mean atomic - volatile is not sufficient to provide atomic guarantees and real atomics - should be used instead. GCC 11 has started warning about using volatile - with atomic operations. - https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719 - Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/80> +2022-01-28 14:28:28 +0000 Tim-Philipp Müller <tim@centricular.com> + + * ChangeLog: + Update ChangeLogs for 1.19.90 + +2022-01-27 01:39:28 +0000 Tim-Philipp Müller <tim@centricular.com> -2021-03-15 19:49:08 +0000 Tim-Philipp Müller <tim@centricular.com> + * po/LINGUAS: + * po/ro.po: + gst-plugins-ugly: update translations + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1579> + +2022-01-05 02:07:59 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * docs/meson.build: + * meson.build: + meson: Add explicit check: kwarg to all run_command() calls + This is required since Meson 0.61.0, and causes a warning to be + emitted otherwise: + https://github.com/mesonbuild/meson/commit/2c079d855ed87488bdcc6c5c06f59abdb9b85b6c + https://github.com/mesonbuild/meson/issues/9300 + This exposed a bunch of places where we had broken run_command() + calls, unnecessary run_command() calls, and places where check: true + should be used. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1507> + +2021-11-03 18:44:03 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development -=== release 1.18.4 === +=== release 1.19.3 === -2021-03-15 17:48:47 +0000 Tim-Philipp Müller <tim@centricular.com> +2021-11-03 15:43:36 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.18.4 + Release 1.19.3 -2021-03-03 11:05:14 +0200 Sebastian Dröge <sebastian@centricular.com> +2021-11-03 15:43:32 +0000 Tim-Philipp Müller <tim@centricular.com> - * gst/realmedia/rmdemux.c: - rmdemux: Make sure we have enough data available when parsing audio/video packets - Otherwise there will be out-of-bounds reads and potential crashes. - Thanks to Natalie Silvanovich for reporting. - Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/issues/37 - Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/75> + * ChangeLog: + Update ChangeLogs for 1.19.3 -2021-01-14 02:17:15 +0000 Tim-Philipp Müller <tim@centricular.com> +2021-10-25 11:37:45 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: - Back to development + meson: require matching GStreamer dep versions for unstable development releases + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/929 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1244> + +2021-10-25 01:02:36 +0100 Tim-Philipp Müller <tim@centricular.com> + + * po/af.po: + * po/ast.po: + * po/az.po: + * po/bg.po: + * po/ca.po: + * po/cs.po: + * po/da.po: + * po/de.po: + * po/el.po: + * po/en_GB.po: + * po/eo.po: + * po/es.po: + * po/eu.po: + * po/fi.po: + * po/fr.po: + * po/fur.po: + * po/gl.po: + * po/hr.po: + * po/hu.po: + * po/id.po: + * po/it.po: + * po/ja.po: + * po/lt.po: + * po/lv.po: + * po/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/ta.po: + * po/tr.po: + * po/uk.po: + * po/vi.po: + * po/zh_CN.po: + * po/zh_TW.po: + gst-plugins-ugly: update translations + Fixes #656 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1240> + +2021-10-21 00:33:06 +0100 Tim-Philipp Müller <tim@centricular.com> + + * meson_options.txt: + meson: default to gpl=disabled for gst-plugins-bad and -ugly + This will only affect individual/tarball module builds, as the + options yield to the parent project which was set to gpl=disabled + by default already. We kept it as auto in the original commit + to accommodate the need to update cerbero as well, which had to + be done separately after the initial commit. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1217> + +2021-10-18 15:47:00 +0100 Tim-Philipp Müller <tim@centricular.com> + + * tests/check/meson.build: + meson: update for meson.build_root() and .build_source() deprecation + -> use meson.project_build_root() or .global_build_root() instead. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1183> + +2021-10-18 00:40:14 +0100 Tim-Philipp Müller <tim@centricular.com> + + * docs/meson.build: + * tests/check/meson.build: + meson: update for dep.get_pkgconfig_variable() deprecation + ... in favour of dep.get_variable('foo', ..) which in some + cases allows for further cleanups in future since we can + extract variables from pkg-config dependencies as well as + internal dependencies using this mechanism. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1183> + +2021-10-18 00:03:47 +0100 Tim-Philipp Müller <tim@centricular.com> + + * meson.build: + meson: clean up conditional paths after version bump + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1183> + +2021-10-14 18:38:26 +0100 Tim-Philipp Müller <tim@centricular.com> + + * meson.build: + meson: bump meson requirement to >= 0.59 + For monorepo build and ugly/bad, for advanced feature + option API like get_option('xyz').required(..) which + we use in combination with the 'gpl' option. + For rest of modules for consistency (people will likely + use newer features based on the top-level requirement). + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1084> + +2021-09-19 00:55:34 +0100 Tim-Philipp Müller <tim@centricular.com> + + * ext/a52dec/meson.build: + * ext/cdio/meson.build: + * ext/dvdread/meson.build: + * ext/mpeg2dec/meson.build: + * ext/sidplay/meson.build: + * ext/x264/meson.build: + * meson.build: + * meson_options.txt: + meson: add 'gpl' option and only build plugins with (A)GPL deps if explicitly enabled + Require explicit opt-in to build plugins with (A)GPL dependencies. + Keep ugly/bad options on 'auto' for now so cerbero doesn't fail. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1084> + +2021-10-12 15:52:48 -0300 Thibault Saunier <tsaunier@igalia.com> + + * docs/meson.build: + meson: Streamline the way we detect when to build documentation + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1093> -=== release 1.18.3 === +2021-09-28 10:11:15 +1000 Brad Hards <bradh@frogmouth.net> -2021-01-13 21:09:14 +0000 Tim-Philipp Müller <tim@centricular.com> - - * ChangeLog: - * NEWS: + * README: * RELEASE: - * gst-plugins-ugly.doap: - * meson.build: - Release 1.18.3 + doc: update IRC links to OFTC + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/945> -2020-12-06 23:56:52 +0000 Tim-Philipp Müller <tim@centricular.com> +2021-09-26 01:07:02 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/925> -=== release 1.18.2 === +=== release 1.19.2 === -2020-12-06 13:23:19 +0000 Tim-Philipp Müller <tim@centricular.com> +2021-09-23 01:34:00 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.18.2 + Release 1.19.2 + +2021-09-21 15:05:58 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> + + * ext/x264/gstx264enc.c: + x264enc: Strip trailing whitespace from x264's log messages + x264 has linebreaks at the end of its log messages that we should + ignore. + Add G_GNUC_PRINTF to the callback to make sure GCC lets us forward the + format string to another function marked as printf (g_strdup_vprintf) + without triggering -Wformat-nonliteral. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/85> + +2021-09-21 14:57:29 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> + + * ext/x264/gstx264enc.c: + x264enc: Add the func/line info to the log callback + It looks awkward when it's missing. At least point us at the callback + function. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/85> + +2021-09-21 14:56:23 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> + + * ext/x264/gstx264enc.c: + x264enc: Reduce log spam about bit depth support + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/85> + +2021-07-28 11:49:16 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * ext/mpeg2dec/gstmpeg2dec.c: + mpeg2dec: drop B-frame on open gop + Enhance open gop detection to drop B-frame which are invalid + before the first reference frame. + In stream such + gst-integration-testsuites/medias/defaults/mxf/op2b-mpeg2-wave_hd.mxf, + the two first frames must be dropped as we detect an open GOP situation + but in another media, such as http://col.la/1920X1080IXDCAMEX5MIN, the + first frames should not be dropped as we are in a closed GOP situation. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/84> + +2021-05-22 01:53:43 +0100 Tim-Philipp Müller <tim@centricular.com> + + * ext/x264/gstencoderbitrateprofilemanager.c: + * gst/asfdemux/gstasfdemux.c: + * gst/realmedia/rtspreal.c: + * meson.build: + Use g_memdup2() where available and add fallback for older GLib versions + - x264 encoder bitrate profile manager: alloc size is based + on existing allocation + - asfdemux: change length var to 64-bit and check for G_MAXUINT + - realmedia: opaque_data_len is read from 32 bits and then + only subtracted upon. + g_memdup() is deprecated since GLib 2.68 and we want to avoid + deprecation warnings with recent versions of GLib. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/83> -2020-10-27 12:34:22 +0000 Tim-Philipp Müller <tim@centricular.com> +2021-06-01 15:28:40 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development -=== release 1.18.1 === +=== release 1.19.1 === -2020-10-26 11:12:33 +0000 Tim-Philipp Müller <tim@centricular.com> +2021-06-01 00:12:09 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: + * README: * RELEASE: * gst-plugins-ugly.doap: * meson.build: - Release 1.18.1 + Release 1.19.1 + +2018-02-26 17:28:25 +0100 David Fernandez <d.fernandezlop@gmail.com> + + * docs/gst_plugins_cache.json: + * ext/x264/gstx264enc.c: + x264enc: Change accepted caps width and height from [16, MAX] to [1, MAX] + There are cases where the video size might be less than 16x16. + This change allows the x264 encoder to accept this cases. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/44> + +2021-04-20 18:48:38 -0400 Doug Nazar <nazard@nazar.ca> + + * gst/realmedia/rmdemux.c: + * gst/realmedia/rmdemux.h: + realmedia: Drop duplicate seek events. + Also use seek seqnum for flush & segment events/messages. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/81> + +2021-04-20 18:47:31 -0400 Doug Nazar <nazard@nazar.ca> + + * gst/asfdemux/gstasfdemux.c: + asfdemux: Drop duplicate seek events. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/81> + +2021-03-29 13:41:07 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * gst/xingmux/gstxingmux.c: + * gst/xingmux/gstxingmux.h: + * gst/xingmux/plugin.c: + xingmux: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 13:39:20 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * gst/realmedia/pnmsrc.c: + * gst/realmedia/pnmsrc.h: + * gst/realmedia/rademux.c: + * gst/realmedia/rademux.h: + * gst/realmedia/rdtdepay.c: + * gst/realmedia/rdtdepay.h: + * gst/realmedia/rdtmanager.c: + * gst/realmedia/rdtmanager.h: + * gst/realmedia/realmedia.c: + * gst/realmedia/rmdemux.c: + * gst/realmedia/rmdemux.h: + * gst/realmedia/rtspreal.c: + * gst/realmedia/rtspreal.h: + realmedia: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 13:23:51 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * gst/dvdsub/gstdvdsubdec.c: + * gst/dvdsub/gstdvdsubdec.h: + * gst/dvdsub/gstdvdsubparse.c: + * gst/dvdsub/gstdvdsubparse.h: + dvdsub: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 13:15:32 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * gst/dvdlpcmdec/gstdvdlpcmdec.c: + * gst/dvdlpcmdec/gstdvdlpcmdec.h: + dvdlpcmdec: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 13:11:23 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * gst/asfdemux/gstasf.c: + * gst/asfdemux/gstasfdemux.c: + * gst/asfdemux/gstasfdemux.h: + * gst/asfdemux/gstasfelement.c: + * gst/asfdemux/gstasfelements.h: + * gst/asfdemux/gstrtpasfdepay.c: + * gst/asfdemux/gstrtspwms.c: + * gst/asfdemux/meson.build: + asfdemux: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 12:39:36 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * ext/x264/gstx264enc.c: + * ext/x264/gstx264enc.h: + x264: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 12:33:00 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * ext/sidplay/gstsiddec.cc: + * ext/sidplay/gstsiddec.h: + sidplay: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 12:31:26 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * ext/mpeg2dec/gstmpeg2dec.c: + * ext/mpeg2dec/gstmpeg2dec.h: + mpeg2dec: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 12:28:28 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * ext/dvdread/dvdreadsrc.c: + * ext/dvdread/dvdreadsrc.h: + dvdread: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 12:28:04 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * ext/cdio/gstcdio.c: + * ext/cdio/gstcdio.h: + * ext/cdio/gstcdiocddasrc.c: + * ext/cdio/gstcdiocddasrc.h: + cdio: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 10:39:46 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * ext/amrwbdec/amrwb.c: + * ext/amrwbdec/amrwbdec.c: + * ext/amrwbdec/amrwbdec.h: + amrwbdec: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 10:38:07 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * ext/amrnb/amrnb.c: + * ext/amrnb/amrnbdec.c: + * ext/amrnb/amrnbdec.h: + * ext/amrnb/amrnbenc.c: + * ext/amrnb/amrnbenc.h: + amrnb: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-29 10:37:26 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * ext/a52dec/gsta52dec.c: + * ext/a52dec/gsta52dec.h: + a52dec: allow per feature registration + Split plugin into features including + dynamic types which can be indiviually + registered during a static build. + More details here: + https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/79> + +2021-03-19 15:16:06 +1100 Matthew Waters <matthew@centricular.com> + + * ext/x264/gstencoderbitrateprofilemanager.c: + gst: don't use volatile to mean atomic + volatile is not sufficient to provide atomic guarantees and real atomics + should be used instead. GCC 11 has started warning about using volatile + with atomic operations. + https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719 + Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/78> + +2021-03-03 11:05:14 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst/realmedia/rmdemux.c: + rmdemux: Make sure we have enough data available when parsing audio/video packets + Otherwise there will be out-of-bounds reads and potential crashes. + Thanks to Natalie Silvanovich for reporting. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/issues/37 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/74> + +2020-11-04 18:44:07 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * meson.build: + meson: Enable some MSVC warnings for parity with GCC/Clang + This makes it easier to do development with MSVC by making it warn + on common issues that GCC/Clang error out for in our CI configuration. + Continuation from https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/223 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/71> + +2020-10-31 04:52:14 +0900 Seungha Yang <seungha@centricular.com> + + * tests/check/elements/mpeg2dec.c: + tests: mpeg2dec: Don't expect BT601 color space + If it's required, mpeg2dec should set it explicitly. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/70> + +2020-09-08 17:30:39 +0100 Tim-Philipp Müller <tim@centricular.com> + + * .gitlab-ci.yml: + ci: include template from gst-ci master branch again -2020-09-08 17:44:20 +0100 Tim-Philipp Müller <tim@centricular.com> +2020-09-08 16:58:40 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development
View file
gst-plugins-ugly-1.18.6.tar.xz/NEWS -> gst-plugins-ugly-1.20.1.tar.xz/NEWS
Changed
@@ -1,14 +1,14 @@ -GStreamer 1.18 Release Notes +GStreamer 1.20 Release Notes -GStreamer 1.18.0 was originally released on 8 September 2020. +GStreamer 1.20.0 was originally released on 3 February 2022. -The latest bug-fix release in the 1.18 series is 1.18.6 and was released -on 2 February 2022. +The latest bug-fix release in the 1.20 series is 1.20.1 and was released +on 14 March 2022. -See https://gstreamer.freedesktop.org/releases/1.18/ for the latest +See https://gstreamer.freedesktop.org/releases/1.20/ for the latest version of this document. -Last updated: Wednesday 2 February 2022, 11:30 UTC (log) +Last updated: Monday 14 March 2022, 00:30 UTC (log) Introduction @@ -21,1781 +21,1583 @@ Highlights -- GstTranscoder: new high level API for applications to transcode - media files from one format to another - -- High Dynamic Range (HDR) video information representation and - signalling enhancements - -- Instant playback rate change support - -- Active Format Description (AFD) and Bar Data support - -- RTSP server and client implementations gained ONVIF trick modes - support - -- Hardware-accelerated video decoding on Windows via DXVA2 / - Direct3D11 - -- Microsoft Media Foundation plugin for video capture and - hardware-accelerated video encoding on Windows - -- qmlgloverlay: New overlay element that renders a QtQuick scene over - the top of an input video stream - -- imagesequencesrc: New element to easily create a video stream from a - sequence of jpeg or png images - -- dashsink: New sink to produce DASH content - -- dvbsubenc: New DVB Subtitle encoder element - -- MPEG-TS muxing now also supports TV broadcast compliant muxing with - constant bitrate muxing and SCTE-35 support - -- rtmp2: New RTMP client source and sink element from-scratch - implementation - -- svthevcenc: New SVT-HEVC-based H.265 video encoder - -- vaapioverlay: New compositor element using VA-API - -- rtpmanager gained support for Google’s Transport-Wide Congestion - Control (twcc) RTP extension - -- splitmuxsink and splitmuxsrc gained support for auxiliary video - streams - -- webrtcbin now contains some initial support for renegotiation - involving stream addition and removal - -- RTP support was enhanced with new RTP source and sink elements to - easily set up RTP streaming via rtp:// URIs - -- avtp: New Audio Video Transport Protocol (AVTP) plugin for - Time-Sensitive Applications - -- Support for the Video Services Forum’s Reliable Internet Stream - Transport (RIST) TR-06-1 Simple Profile - -- Universal Windows Platform (UWP) support - -- rpicamsrc: New element for capturing from the Raspberry Pi camera - -- RTSP Server TCP interleaved backpressure handling improvements as - well as support for Scale/Speed headers - -- GStreamer Editing Services gained support for nested timelines, - per-clip speed rate control and the OpenTimelineIO format. - -- Autotools build system has been removed in favour of Meson +- Development in GitLab was switched to a single git repository + containing all the modules +- GstPlay: new high-level playback library, replaces GstPlayer +- WebM Alpha decoding support +- Encoding profiles can now be tweaked with additional + application-specified element properties +- Compositor: multi-threaded video conversion and mixing +- RTP header extensions: unified support in RTP depayloader and + payloader base classes +- SMPTE 2022-1 2-D Forward Error Correction support +- Smart encoding (pass through) support for VP8, VP9, H.265 in + encodebin and transcodebin +- Runtime compatibility support for libsoup2 and libsoup3 (libsoup3 + support experimental) +- Video decoder subframe support +- Video decoder automatic packet-loss, data corruption, and keyframe + request handling for RTP / WebRTC / RTSP +- mp4 and Matroska muxers now support profile/level/resolution changes + for H.264/H.265 input streams (i.e. codec data changing on the fly) +- mp4 muxing mode that initially creates a fragmented mp4 which is + converted to a regular mp4 on EOS +- Audio support for the WebKit Port for Embedded (WPE) web page source + element +- CUDA based video color space convert and rescale elements and + upload/download elements +- NVIDIA memory:NVMM support for OpenGL glupload and gldownload + elements +- Many WebRTC improvements +- The new VA-API plugin implementation fleshed out with more decoders + and new postproc elements +- AppSink API to retrieve events in addition to buffers and buffer + lists +- AppSrc gained more configuration options for the internal queue + (leakiness, limits in buffers and time, getters to read current + levels) +- Updated Rust bindings and many new Rust plugins +- Improved support for custom minimal GStreamer builds +- Support build against FFmpeg 5.0 +- Linux Stateless CODEC support gained MPEG-2 and VP9 +- Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support +- Lots of new plugins, features, performance improvements and bug + fixes Major new features and changes Noteworthy new features and API -Instant playback rate changes +- gst_element_get_request_pad() has been deprecated in favour of the + newly-added gst_element_request_pad_simple() which does the exact + same thing but has a less confusing name that hopefully makes clear + that the function request a new pad rather than just retrieves an + already-existing request pad. + +Development in GitLab was switched to a single git repository containing all the modules + +The GStreamer multimedia framework is a set of libraries and plugins +split into a number of distinct modules which are released independently +and which have so far been developed in separate git repositories in +freedesktop.org GitLab. + +In addition to these separate git repositories there was a gst-build +module that would use the Meson build system’s subproject feature to +download each individual module and then build everything in one go. It +would also provide an uninstalled development environment that made it +easy to work on GStreamer and use or test versions other than the +system-installed GStreamer version. + +All of these modules have now (as of 28 September 2021) been merged into +a single git repository (“Mono repository” or “monorepo”) which should +simplify development workflows and continuous integration, especially +where changes need to be made to multiple modules at once. + +This mono repository merge will primarily affect GStreamer developers +and contributors and anyone who has workflows based on the GStreamer git +repositories. + +The Rust bindings and Rust plugins modules have not been merged into the +mono repository at this time because they follow a different release +cycle. + +The mono repository lives in the existing GStreamer core git repository +in GitLab in the new main branch and all future development will happen +on this branch. + +Modules will continue to be released as separate tarballs. + +For more details, please see the GStreamer mono repository FAQ. + +GstPlay: new high-level playback library replacing GstPlayer + +- GstPlay is a new high-level playback library that replaces the older + GstPlayer API. It is basically the same API as GstPlayer but + refactored to use bus messages for application notifications instead + of GObject signals. There is still a signal adapter object for those + who prefer signals. Since the existing GstPlayer API is already in + use in various applications, it didn’t seem like a good idea to + break it entirely. Instead a new API was added, and it is expected + that this new GstPlay API will be moved to gst-plugins-base in + future. + +- The existing GstPlayer API is scheduled for deprecation and will be + removed at some point in the future (e.g. in GStreamer 1.24), so + application developers are urged to migrate to the new GstPlay API + at their earliest convenience. + +WebM alpha decoding + +- Implement WebM alpha decoding (VP8/VP9 with alpha), which required + support and additions in various places. This is supported both with + software decoders and hardware-accelerated decoders. + +- VP8/VP9 don’t support alpha components natively in the codec, so the + way this is implemented in WebM is by encoding the alpha plane with + transparency data as a separate VP8/VP9 stream. Inside the WebM + container (a variant of Matroska) this is coded as a single video + track with the “normal” VP8/VP9 video data making up the main video + data and each frame of video having an encoded alpha frame attached + to it as extra data ("BlockAdditional"). + +- matroskademux has been extended extract this per-frame alpha side + data and attach it in form of a GstVideoCodecAlphaMeta to the + regular video buffers. Note that this new meta is specific to this + VP8/VP9 alpha support and can’t be used to just add alpha support to + other codecs that don’t support it. Lastly, matroskademux also + advertises the fact that the streams contain alpha in the caps. + +- The new codecalpha plugin contains various bits of infrastructure to + support autoplugging and debugging: + + - codecalphademux splits out the alpha stream from the metas on + the regular VP8/VP9 buffers + - alphacombine takes two decoded raw video streams (one alpha, one + the regular video) and combines it into a video stream with + alpha + - vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use + the regular vp8dec and vp9dec software decoders to decode + regular and alpha streams and combine them again. To decodebin + these look like regular decoders. + - The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can + decode both alpha and non-alpha stream with a single decoder + instance + +- A new AV12 video format was added which is basically NV12 with an + alpha plane, which is more convenient for many hardware-accelerated + decoders. + +- Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support + to GStreamer” for all the details and a demo. + +RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders + +- RTP Header Extensions are specified in RFC 5285 and provide a way to + add small pieces of data to RTP packets in between the RTP header + and the RTP payload. This is often used for per-frame metadata, + extended timestamps or other application-specific extra data. There + are several commonly-used extensions specified in various RFCs, but + senders are free to put any kind of data in there, as long as sender + and receiver both know what that data is. Receivers that don’t know + about the header extensions will just skip the extra data without + ever looking at it. These header extensions can often be combined + with any kind of payload format, so may need to be supported by many + RTP payloader and depayloader elements. + +- Inserting and extracting RTP header extension data has so far been a + bit inconvenient in GStreamer: There are functions to add and + retrieve RTP header extension data from RTP packets, but nothing + works automatically, even for common extensions. People would have + to do the insertion/extraction either in custom elements + before/after the RTP payloader/depayloader, or inside pad probes, + which isn’t very nice. + +- This release adds various pieces of new infrastructure for generic + RTP header extension handling, as well as some implementations for + common extensions: + + - GstRTPHeaderExtension is a new helper base class for reading and + writing RTP header extensions. Nominally this subclasses + GstElement, but only so these extensions are stored in the + registry where they can be looked up by URI or name. They don’t + have pads and don’t get added to the pipeline graph as an + element. + + - "add-extension" and "clear-extension" action signals on RTP + payloaders and depayloaders for manual extension management + + - The "request-extension" signal will be emitted if an extension + is encountered that requires explicit mapping by the application + + - new "auto-header-extension" property on RTP payloaders and + depayloaders for automatic handling of known header extensions. + This is enabled by default. The extensions must be signalled via + caps / SDP. + + - RTP header extension implementations: + + - rtphdrextclientaudiolevel: Client-to-Mixer Audio Level + Indication (RFC 6464) (also see below) + - rtphdrextcolorspace: Color Space extension, extends RTP + packets with color space and high dynamic range (HDR) + information + - rtphdrexttwcc: Transport Wide Congestion Control support + +- gst_rtp_buffer_remove_extension_data() is a new helper function to + remove an RTP header extension from an RTP buffer + +- The existing gst_rtp_buffer_set_extension_data() now also supports + shrinking the extension data in size + +AppSink and AppSrc improvements + +- appsink: new API to pull events out of appsink in addition to + buffers and buffer lists. + + There was previously no way for users to receive incoming events + from appsink properly serialised with the data flow, even if they + are serialised events. The reason for that is that the only way to + intercept events was via a pad probe on the appsink sink pad, but + there is also internal queuing inside of appsink, so it’s difficult + to ascertain the right order of everything in all cases. + + There is now a new "new-serialized-event" signal which will be + emitted when there’s a new event pending (just like the existing + "new-sample" signal). The "emit-signals" property must be set to + TRUE in order to activate this (but it’s also fine to just pull from + the application thread without using the signals). + + gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be + used to pull out either an event or a new sample carrying a buffer + or buffer list, whatever is next in the queue. + + EOS events will be filtered and will not be returned. EOS handling + can be done the usual way, same as with _pull_sample(). + +- appsrc: allow configuration of internal queue limits in time and + buffers and add leaky mode. + + There is internal queuing inside appsrc so the application thread + can push data into the element which will then be picked up by the + source element’s streaming thread and pushed into the pipeline from + that streaming thread. This queue is unlimited by default and until + now it was only possible to set a maximum size limit in bytes. When + that byte limit is reached, the pushing thread (application thread) + would be blocked until more space becomes available. + + A limit in bytes is not particularly useful for many use cases, so + now it is possible to also configure limits in time and buffers + using the new "max-time" and "max-buffers" properties. Of course + there are also matching new read-only"current-level-buffers" and + "current-level-time properties" properties to query the current fill + level of the internal queue in time and buffers. + + And as if that wasn’t enough the internal queue can also be + configured as leaky using the new "leaky-type" property. That way + when the queue is full the application thread won’t be blocked when + it tries to push in more data, but instead either the new buffer + will be dropped or the oldest data in the queue will be dropped. + +Better string serialization of nested GstCaps and GstStructures + +- New string serialisation format for structs and caps that can handle + nested structs and caps properly by using brackets to delimit nested + items (e.g. some-struct, some-field=[nested-struct, nested=true]). + Unlike the default format the new variant can also support more than + one level of nesting. For backwards-compatibility reasons the old + format is still output by default when serialising caps and structs + using the existing API. The new functions gst_caps_serialize() and + gst_structure_serialize() can be used to output strings in the new + format. + +Convenience API for custom GstMetas + +- New convenience API to register and create custom GstMetas: + gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such + custom meta is backed by a GstStructure and does not require that + users of the API expose their GstMeta implementation as public API + for other components to make use of it. In addition, it provides a + simpler interface by ignoring the impl vs. api distinction that the + regular API exposes. This new API is meant to be the meta + counterpart to custom events and messages, and to be more convenient + than the lower-level API when the absolute best performance isn’t a + requirement. The reason it’s less performant than a “proper” meta is + that a proper meta is just a C struct in the end whereas this goes + through the GstStructure API which has a bit more overhead, which + for most scenarios is negligible however. This new API is useful for + experimentation or proprietary metas, but also has some limitations: + it can only be used if there’s a single producer of these metas; + registering the same custom meta multiple times or from multiple + places is not allowed. + +Additional Element Properties on Encoding Profiles + +- GstEncodingProfile: The new "element-properties" and + gst_encoding_profile_set_element_properties() API allows + applications to set additional element properties on encoding + profiles to configure muxers and encoders. So far the encoding + profile template was the only place where this could be specified, + but often what applications want to do is take a ready-made encoding + profile shipped by GStreamer or the application and then tweak the + settings on top of that, which is now possible with this API. Since + applications can’t always know in advance what encoder element will + be used in the end, it’s even possible to specify properties on a + per-element basis. + + Encoding Profiles are used in the encodebin, transcodebin and + camerabin elements and APIs to configure output formats (containers + and elementary streams). + +Audio Level Indication Meta for RFC 6464 + +- New GstAudioLevelMeta containing Audio Level Indication as per RFC + 6464 + +- The level element has been updated to add GstAudioLevelMeta on + buffers if the "audio-level-meta" property is set to TRUE. This can + then in turn be picked up by RTP payloaders to signal the audio + level to receivers through RTP header extensions (see above). + +- New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header + Extension which should be automatically created and used by RTP + payloaders and depayloaders if their "auto-header-extension" + property is enabled and if the extension is part of the RTP caps. + +Automatic packet loss, data corruption and keyframe request handling for video decoders + +- The GstVideoDecoder base class has gained various new APIs to + automatically handle packet loss and data corruption better by + default, especially in RTP, RTSP and WebRTC streaming scenarios, and + to give subclasses more control about how they want to handle + missing data: + + - Video decoder subclasses can mark output frames as corrupted via + the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag + + - A new "discard-corrupted-frames" property allows applications to + configure decoders so that corrupted frames are directly + discarded instead of being forwarded inside the pipeline. This + is a replacement for the "output-corrupt" property of the FFmpeg + decoders. + + - RTP depayloaders can now signal to decoders that data is missing + when sending GAP events for lost packets. GAP events can be sent + for various reason in a GStreamer pipeline. Often they are just + used to let downstream elements know that there isn’t a buffer + available at the moment, so downstream elements can move on + instead of waiting for one. They are also sent by RTP + depayloaders in the case that packets are missing, however, and + so far a decoder was not able to differentiate the two cases. + This has been remedied now: GAP events can be decorated with + gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let + decoders now what happened, and decoders can then use that in + some cases to handle missing data better. + + - The GstVideoDecoder::handle_missing_data vfunc was added to + inform subclasses about packet loss or missing data and let them + handle it in their own way if they like. + + - gst_video_decoder_set_needs_sync_point() lets subclasses signal + that they need the stream to start with a sync point. If + enabled, the base class will discard all non-sync point frames + in the beginning and after a flush and does not pass them to the + subclass. Furthermore, if the first frame is not a sync point, + the base class will try and request a sync frame from upstream + by sending a force-key-unit event (see next items). + + - New "automatic-request-sync-points" and + "automatic-request-sync-point-flags" properties to automatically + request sync points when needed, e.g. on packet loss or if the + first frame is not a keyframe. Applications may want to enable + this on decoders operating in e.g. RTP/WebRTC/RTSP receiver + pipelines. + + - The new "min-force-key-unit-interval" property can be used to + ensure there’s a minimal interval between keyframe requests to + upstream (and/or the sender) and we’re not flooding the sender + with key unit requests. + + - gst_video_decoder_request_sync_point() allows subclasses to + request a new sync point (e.g. if they choose to do their own + missing data handling). This will still honour the + "min-force-key-unit-interval" property if set. + +Improved support for custom minimal GStreamer builds + +- Element registration and registration of other plugin features + inside plugin init functions has been improved in order to + facilitate minimal custom GStreamer builds. + +- A number of new macros have been added to declare and create + per-element and per-plugin feature register functions in all + plugins, and then call those from the per-plugin plugin_init + functions: + + - GST_ELEMENT_REGISTER_DEFINE, + GST_DEVICE_PROVIDER_REGISTER_DEFINE, + GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE + for the actual registration call with GStreamer + - GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER, + GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER, + GST_TYPE_FIND_REGISTER to call the registration function defined + by the REGISTER_DEFINE macro + - GST_ELEMENT_REGISTER_DECLARE, + GST_DEVICE_PROVIDER_REGISTER_DECLARE, + GST_DYNAMIC_TYPE_REGISTER_DECLARE, + GST_TYPE_FIND_REGISTER_DECLARE to declare the registration + function defined by the REGISTER_DEFINE macro + - and various variants for advanced use cases. + +- This means that applications can call the per-element and per-plugin + feature registration functions for only the elements they need + instead of registering plugins as a whole with all kinds of elements + that may not be required (e.g. encoder and decoder instead of just + decoder). In case of static linking all unused functions and their + dependencies would be removed in this case by the linker, which + helps minimise binary size for custom builds. -Changing the playback rate as quickly as possible so far always required -a flushing seek. This generally works, but has the disadvantage of -flushing all data from the playback pipeline and requiring the demuxer -or parser to do a full-blown seek including resetting its internal state -and resetting the position of the data source. It might also require -considerable decoding effort to get to the right position to resume -playback from at the higher rate. - -This release adds a new mechanism to achieve quasi-instant rate changes -in certain playback pipelines without interrupting the flow of data in -the pipeline. This is activated by sending a seek with the -GST_SEEK_FLAG_INSTANT_RATE_CHANGE flag and start_type = stop_type = -GST_SEEK_TYPE_NONE. This flag does not work for all pipelines, in which -case it is necessary to fall back to sending a full flushing seek to -change the playback rate. When using this flag, the seek event is only -allowed to change the current rate and can modify the trickmode flags -(e.g. keyframe only or not), but it is not possible to change the -current playback position, playback direction or do a flush. - -This is particularly useful for streaming use cases like HLS or DASH -where the streaming download should not be interrupted when changing -rate. - -Instant rate changing is handled in the pipeline in a specific sequence -which is detailed in the seeking design docs. Most elements don’t need -to worry about this, only elements that sync to the clock need some -special handling which is implemented in the GstBaseSink base class, so -should be taken care of automatically in most normal playback pipelines -and sink elements. - -See Jan’s GStreamer Conference 2019 talk “Changing Playback Rate -Instantly” for more information. - -You can try this feature by passing the -i command line option to -gst-play-1.0. It is supported at least by qtdemux, tsdemux, hlsdemux, -and dashdemux. - -Google Transport-Wide Congestion Control - -rtpmanager now supports the parsing and generating of RTCP messages for -the Google Transport-Wide Congestion Control RTP Extension, as described -in: -https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01. - -This “just” provides the required plumbing/infrastructure, it does not -actually make effect any actual congestion control on the sender side, -but rather provides information for applications to use to make such -decisions. - -See Håvard’s “Google Transport-Wide Congestion Control” talk for more -information about this feature. - -GstTranscoder: a new high-level transcoding API for applications - -The new GstTranscoder library, along with transcodebin and -uritranscodebin elements, provides high level API for applications to -transcode media files from one format to another. Watch Thibault’s talk -“GstTranscoder: A High Level API to Quickly Implement Transcoding -Capabilities in your Applications” for more information. - -This also comes with a gst-transcoder-1.0 command line utility to -transcode one URI into another URI based on the specified encoding -profile. - -Active Format Description (AFD) and Bar Data support - -The GstVideo Ancillary Data API has gained support for Active Format -Description (AFD) and Bar data. - -This includes various two new buffer metas: GstVideoAFDMeta and -GstVideoBarMeta. - -GStreamer now also parses and extracts AFD/Bar data in the h264/h265 -video parsers, and supports both capturing them and outputting them in -the decklink elements. See Aaron’s lightning talk at the GStreamer -Conference for more background. - -ONVIF trick modes support in both GStreamer RTSP server and client - -- Support for the various trick modes described in section 6 of the - ONVIF streaming spec has been implemented in both gst-rtsp-server - and rtspsrc. -- Various new properties in rtspsrc must be set to take advantage of - the ONVIF support -- Examples are available here: test-onvif-server.c and - test-onvif-client.c -- Watch Mathieu Duponchelle’s talk “Implementing a Trickmode Player - with ONVIF, RTSP and GStreamer” for more information and a live - demo. - -GStreamer Codecs library with decoder base classes - -This introduces a new library in gst-plugins-bad which contains a set of -base classes that handle bitstream parsing and state tracking for the -purpose of decoding different codecs. Currently H264, H265, VP8 and VP9 -are supported. These bases classes are meant primarily for internal use -in GStreamer and are used in various decoder elements in connection with -low level decoding APIs like DXVA, NVDEC, VAAPI and V4L2 State Less -decoders. The new library is named gstreamer-codecs-1.0 / -libgstcodecs-1.0 and is not yet guaranteed to be API stable across major -versions. - -MPEG-TS muxing improvements - -The GStreamer MPEG-TS muxer has seen major improvements on various -fronts in this cycle: - -- It has been ported to the GstAggregator base class which means it - can work in defined-latency mode with live input sources and - continue streaming if one of the inputs stops producing data. - -- atscmux, a new ATSC-specific tsmux subclass - -- Constant Bit Rate (CBR) muxing support via the new bitrate property - which allows setting the target bitrate in bps. If this is set the - muxer will insert null packets as padding to achieve the desired - multiplex-wide constant bitrate. - -- compliance fixes for TV broadcasting use cases (esp. ATSC). See - Jan’s talk “TV Broadcast compliant MPEG-TS” for details. - -- Streams can now be added and removed at runtime: Until now, any - streams in tsmux had to be present when the element started - outputting its first buffer. Now they can appear at any point during - the stream, or even disappear and reappear later using the same PID. - -- new pcr-interval property allows applications to configure the - desired interval instead of hardcoding it - -- basic SCTE-35 support. This is enabled by setting the scte-35-pid - property on the muxer. Sending SCTE-35 commands is then done by - creating the appropriate SCTE-35 GstMpegtsSection and sending them - on the muxer. +- gst_init() will automatically call a gst_init_static_plugins() + function if one exists. -- MPEG-2 AAC handling improvements +- See the GStreamer static build documentation and Stéphane’s blog + post Generate a minimal GStreamer build, tailored to your needs for + more details. New elements -- New qmlgloverlay element for rendering a QtQuick scene over the top - of a video stream. qmlgloverlay requires that Qt support adopting an - external OpenGL context and is known to work on X11 and Windows. - Wayland is known not to work due to limitations within Qt. Check out - the example to see how it works. - -- The clocksync element is a generic element that can be placed in a - pipeline to synchronise passing buffers to the clock at that point. - This is similar to identity sync=true, but because it isn’t - GstBaseTransform-based, it can process GstBufferLists without - breaking them into separate GstBuffers. It is also more discoverable - than the identity option. Note that you do not need to insert this - element into your pipeline to make GStreamer sync to the pipeline - clock, this is usually handled automatically by the elements in the - pipeline (sources and sinks mostly). This element is useful to feed - non-live input such as local files into elements that expect live - input such as webrtcbin.` - -- New imagesequencesrc element to easily create a video stream from a - sequence of JPEG or PNG images (or any other encoding where the type - can be detected), basically a multifilesrc made specifically for - image sequences. - -- rpicamsrc element for capturing raw or encoded video (H.264, MJPEG) - from the Raspberry Pi camera. This works much like the popular - raspivid command line utility but outputs data nicely timestamped - and formatted in order to integrate nicely with other GStreamer - elements. Also comes with a device provider so applications can - discover the camera if available. - -- aatv and cacatv video filters that transform video ASCII art style - -- avtp: new Audio Video Transport Protocol (AVTP) plugin for Linux. - See Andre Guedes’ talk “Audio/Video Bridging (AVB) support in - GStreamer” for more details. - -- clockselect: a pipeline element that enables clock selection/forcing - via gst-launch pipeline syntax. - -- dashsink: Add new sink to produce DASH content. See Stéphane’s talk - or blog post for details. - -- dvbsubenc: a DVB subtitle encoder element - -- microdns: a libmicrodns-based mdns device provider to discover RTSP - cameras on the local network - -- mlaudiosink: new audio sink element for the Magic Leap platform, - accompanied by an MLSDK implementation in the amc plugin - -- msdkvp9enc: VP9 encoder element for the Intel MediaSDK - -- rist: new plugin implementing support for the Video Services Forum’s - Reliable Internet Stream Transport (RIST) TR-06-1 Simple Profile. - See Nicolas’ blog post “GStreamer support for the RIST - Specification” for more details. - -- rtmp2: new RTMP client source and sink elements with fully - asynchronous network operations, better robustness and additional - features such as handling ping and stats messages, and adobe-style - authentication. The new rtmp2src and rtmp2sink elements should be - API-compatible with the old rtmpsrc / rtmpsink elements and should - work as drop-in replacements. - -- new RTP source and sink elements to easily set up RTP streaming via - rtp:// URIs: The rtpsink and rtpsrc elements add an URI interface so - that streams can be decoded with decodebin using rtp:// URIs. These - can be used as follows: ``` gst-launch-1.0 videotestsrc ! x264enc ! - rtph264pay config-interval=3 ! rtpsink uri=rtp://239.1.1.1:1234 - - gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay config-interval=1 - ! rtpsink uri=rtp://239.1.2.3:5000 gst-launch-1.0 rtpsrc - uri=rtp://239.1.2.3:5000?encoding-name=H264 ! rtph264depay ! - avdec_h264 ! videoconvert ! xvimagesink - - gst-launch-1.0 videotestsrc ! avenc_mpeg4 ! rtpmp4vpay - config-interval=1 ! rtpsink uri=rtp://239.1.2.3:5000 gst-launch-1.0 - rtpsrc uri=rtp://239.1.2.3:5000?encoding-name=MP4V-ES ! rtpmp4vdepay - ! avdec_mpeg4 ! videoconvert ! xvimagesink ``` - -- svthevcenc: new SVT-HEVC-based H.265 video encoder - -- switchbin: new helper element which chooses between a set of - processing chains (paths) based on input caps, and changes the - active chain if new caps arrive. Paths are child objects, which are - accessed by the GstChildProxy interface. See the switchbin - documentation for a usage example. - -- vah264dec: new experimental va plugin with an element for H.264 - decoding with VA-API using GStreamer’s new stateless decoder - infrastructure (see Linux section below). - -- v4l2codecs: introduce an V4L2 CODECs Accelerator supporting the new - CODECs uAPI in the Linux kernel (see Linux section below) +- New aesdec and aesenc elements for AES encryption and decryption in + a custom format. -- zxing new plugin to detect QR codes and barcodes, based on libzxing - -- also see the Rust plugins section below which contains plenty of new - exciting plugins written in Rust! +- New encodebin2 element with dynamic/sometimes source pads in order + to support the option of doing the muxing outside of encodebin, + e.g. in combination with a splitmuxsink. + +- New fakeaudiosink and videocodectestsink elements for testing and + debugging (see below for more details) + +- rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC + audio codec + +- rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE + 2022-1 2-D Forward Error Correction. More details in Mathieu’s blog + post. + +- isac: new plugin wrapping the Internet Speech Audio Codec reference + encoder and decoder from the WebRTC project. + +- asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API + +- gssrc, gssink: add source and sink for Google Cloud Storage + +- onnx: new plugin to apply ONNX neural network models to video + +- openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0) + +- qroverlay, debugqroverlay: new elements that allow overlaying data + on top of video in the form of a QR code + +- cvtracker: new OpenCV-based tracker element + +- av1parse, vp9parse: new parsers for AV1 and VP9 video + +- va: work on the new VA-API plugin implementation for + hardware-accelerated video decoding and encoding has continued at + pace, with various new decoders and filters having joined the + initial vah264dec: + + - vah265dec: VA-API H.265 decoder + - vavp8dec: VA-API VP8 decoder + - vavp9dec: VA-API VP9 decoder + - vaav1dec: VA-API AV1 decoder + - vampeg2dec: VA-API MPEG-2 decoder + - vadeinterlace: : VA-API deinterlace filter + - vapostproc: : VA-API postproc filter (color conversion, + resizing, cropping, color balance, video rotation, skin tone + enhancement, denoise, sharpen) + + See Víctor’s blog post “GstVA in GStreamer 1.20” for more details + and what’s coming up next. + +- vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi) + +- msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media + SDK / oneVPL + +- nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video + encoding and decoding: + + - cudaconvert, cudascale: new CUDA based video color space convert + and rescale elements + - cudaupload, cudadownload: new helper elements for memory + transfer between CUDA and system memory spaces + - nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders + +- Various new hardware-accelerated elements for Windows: + + - d3d11screencapturesrc: new desktop capture element, including a + GstDeviceProvider implementation to enumerate/select target + monitors for capture. + - d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders + - d3d11deinterlace: deinterlacing filter + - d3d11compositor: video composing element + - see Windows section below for more details + +- new Rust plugins: + + - audiornnoise: Removes noise from an audio stream + - awstranscribeparse: Parses AWS audio transcripts into timed text + buffers + - ccdetect: Detects if valid closed captions are present in a + closed captions stream + - cea608tojson: Converts CEA-608 Closed Captions to a JSON + representation + - cmafmux: CMAF fragmented mp4 muxer + - dashmp4mux: DASH fragmented mp4 muxer + - isofmp4mux: ISO fragmented mp4 muxer + - ebur128level: EBU R128 Loudness Level Measurement + - ffv1dec: FFV1 video decoder + - gtk4paintablesink: GTK4 video sink, which provides a + GdkPaintable that can be rendered in various widgets + - hlssink3: HTTP Live Streaming sink + - hrtfrender: Head-Related Transfer Function (HRTF) renderer + - hsvdetector: HSV colorspace detector + - hsvfilter: HSV colorspace filter + - jsongstenc: Wraps buffers containing any valid top-level JSON + structures into higher level JSON objects, and outputs those as + ndjson + - jsongstparse: Parses ndjson as output by jsongstenc + - jsontovtt: converts JSON to WebVTT subtitles + - regex: Applies regular expression operations on text + - roundedcorners: Adds rounded corners to video + - spotifyaudiosrc: Spotify source + - textahead: Display upcoming text buffers ahead (e.g. for + Karaoke) + - transcriberbin: passthrough bin that transcribes raw audio to + closed captions using awstranscriber and puts the captions as + metas onto the video + - tttojson: Converts timed text to a JSON representation + - uriplaylistbin: Playlist source bin + - webpdec-rs: WebP image decoder with animation support + +- New plugin codecalpha with elements to assist with WebM Alpha + decoding + + - codecalphademux: Split stream with GstVideoCodecAlphaMeta into + two streams + - alphacombine: Combine two raw video stream (I420 or NV12) as one + stream with alpha channel (A420 or AV12) + - vp8alphadecodebin: A bin to handle software decoding of VP8 with + alpha + - vp9alphadecodebin: A bin to handle software decoding of VP9 with + alpha + +- New hardware accelerated elements for Linux: + + - v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders + - v4l2slvp9dec: Support for Linux Stateless VP9 decoders + - v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha + layer decoding + - v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha + layer decoding New element features and additions -GStreamer core - -- filesink: Add a new “full” buffer mode. Previously the default and - full modes were the same. Now the default mode is like before: it - accumulates all buffers in a buffer list until the threshold is - reached and then writes them all out, potentially in multiple - writes. The new full mode works by always copying memory to a single - memory area and writing everything out with a single write once the - threshold is reached. - -- multiqueue: Add stats property and - current-level-{buffers, bytes, time} pad properties to query the - current levels of the corresponding internal queue. - -Plugins Base - -- alsa: implement a device provider - -- alsasrc: added use-driver-timestamp property to force use of - pipeline timestamps (and disable driver timestamps) if so desired - -- audioconvert: fix changing the mix-matrix property at runtime - -- appsrc: added support for segment forwarding or custom GstSegments - via GstSample, enabled via the handle-segment-change property. This - only works for segments in TIME format for now. - -- compositor: various performance optimisations, checkerboard drawing - fixes, and support for VUYA format - -- encodebin: Fix and refactor smart encoding; ensure that a single - segment is pushed into encoders; improve force-key-unit event - handling. - -- opusenc: Add low delay option (audio-type=restricted-lowdelay) to - disable the SILK layer and achieve only 5ms delay. - -- opusdec: add stats property to retrieve various decoder statistics. - -- uridecodebin3: Let decodebin3 do its stream selection if no one - answers - -- decodebin3: Avoid overriding explicit user selection of streams - -- playbin: add flag to force use of software decoders over any - hardware decoders that might also be available - -- playbin3, playbin: propagate sink context - -- rawvideoparse: Fix tiling support, allow setting colorimetry - -- subparse: output plain utf8 text instead of pango-markup formatted - text if downstream requires it, useful for interop with elements - that only accept utf8-formatted subtitles such as muxers or closed - caption converters. - -- tcpserversrc, tcpclientsrc: add stats property with TCP connection - stats (some are only available on Linux though) - -- timeoverlay: add show-times-as-dates, datetime-format and - datetime-epoch properties to display times with dates - -- videorate: Fix changing rate property during playback; reverse - playback fixes; update QoS events taking into account our rate - -- videoscale: pass through and transform size sensitive metas instead - of just dropping them - -Plugins Good - -- avidemux can handle H.265 video now. Our advice remains to - immediately cease all contact and communication with anyone who - hands you H.265 video in an AVI container, however. - -- avimux: Add support for S24LE and S32LE raw audio and v210 raw video - formats; support more than 2 channels of raw audio. - -- souphttpsrc: disable session sharing and cookie jar when the cookies - property is set; correctly handle seeks past the end of the content - -- deinterlace: new YADIF deinterlace method which should provide - better quality than the existing methods and is LGPL licensed; - alternate fields are supported as input to the deinterlacer as well - now, and there were also fixes for switching the deinterlace mode on - the fly. - -- flvmux: in streamable mode allow adding new pads even if the initial - header has already been written. Old clients will only process the - initial stream, new clients will get a header with the new streams. - The skip-backwards-streams property can be used to force flvmux to - skip and drop a few buffers rather than produce timestamps that go - backward and confuse librtmp-based clients. There’s also better - handling for timestamp rollover when streaming for a long time. - -- imagefreeze: Add live mode, which can be enabled via the new is-live - property. In this mode frames will only be output in PLAYING state - according to the negotiated framerate, skipping frames if the output - can’t keep up (e.g. because it’s blocked downstream). This makes it - possible to actually use imagefreeze in live pipelines without - having to manually ensure somehow that it starts outputting at the - current running time and without still risking to fall behind - without recovery. - -- matroskademux, qtdemux: Provide audio lead-in for some lossy formats - when doing accurate seeks, to make sure we can actually decode - samples at the desired position. This is especially important for - non-linear audio/video editing use-cases. - -- matroskademux, matroskamux: Handle interlaced field order (tff, bff) - -- matroskamux: - - - new offset-to-zero property to offset all streams to start at - zero. This takes the timestamp of the earliest stream and - offsets it so that it starts at 0. Some software (VLC, - ffmpeg-based) does not properly handle Matroska files that start - at timestamps much bigger than zero, which could happen with - live streams. - - added a creation-time property to explicitly set the creation - time to write into the file headers. Useful when remuxing, for - example, but also for live feeds where the DateUTC header can be - set a UTC timestamp corresponding to the beginning of the file. - - the muxer now also always waits for caps on sparse streams, and - warns if caps arrive after the header has already been sent, - otherwise the subtitle track might be silently absent in the - final file. This might affect applications that send sparse data - into matroskamux via an appsrc element, which will usually not - send out the initial caps before it sends out the first buffer. - -- pulseaudio: device provider improvements: fix discovery of - newly-added devices and hide the alsa device provider if we provide - alsa devices - -- qtdemux: raw audio handling improvements, support for AC4 audio, and - key-units trickmode interval support - -- qtmux: - - - was ported to the GstAggregator base class which allows for - better handling of live inputs, but might entail minor - behavioural changes for sparse inputs if inputs are not live. - - has also gained a force-create-timecode-trak property to create - a timecode trak in non-mov flavors, which may not be supported - by Apple but is supported by other software such as Final Cut - Pro X - - also a force-chunks property to force the creation of chunks - even in single-stream files, which is required for Apple ProRes - certification. - - also supports 8k resolutions in prefill mode with ProRes. - -- rtpbin gained a request-jitterbuffer signal which allows - applications to plug in their own jitterbuffer implementation such - as the threadsharing jitterbuffer from the Rust plugins, for - example. - -- rtprtxsend: add clock-rate-map property to allow generic RTP input - caps without a clock-rate whilst still supporting the max-size-time - property for bundled streams. - -- rtpssrcdemux: introduce max-streams property to guard against - attacks where the sender changes SSRC for every RTP packet. - -- rtph264pay, rtph264pay: implement STAP-A and various aggregation - modes controled by the new aggegrate-mode property: none to not - aggregate NAL units (as before), zero-latency to aggregate NAL units - until a VCL or suffix unit is included, or max to aggregate all NAL - units with the same timestamp (which adds one frame of latency). The - default has been kept at none for backwards compatibility reasons - and because various RTP/RTSP implementions don’t handle aggregation - well. For WebRTC use cases this should be set to zero-latency, - however. - -- rtpmp4vpay: add support for config-interval=-1 to resend headers - with each IDR keyframe, like other video payloaders. - -- rtpvp8depay: Add wait-for-keyframe property for waiting until the - next keyframe after packet loss. Useful if the video stream was not - encoded with error resilience enabled, in which case packet loss - tends to cause very bad artefacts when decoding, and waiting for the - next keyframe instead improves user experience considerably. - -- splitmuxsink and splitmuxsrc can now handle auxiliary video streams - in addition to the primary video stream. The primary video stream is - still used to select fragment cut points at keyframe boundaries. - Auxilliary video streams may be broken up at any packet - so - fragments may not start with a keyframe for those streams. - -- splitmuxsink: - - - new muxer-preset and sink-preset properties for setting - muxer/sink presets - - a new start-index property to set the initial fragment id - - and a new muxer-pad-map property which explicitly maps - splitmuxsink pads to the muxer pads they should connect to, - overriding the implicit logic that tries to match pads but - yields arbitrary names. - - Also includes the actual sink element in the fragment-opened and - fragment-closed element messages now, which is especially useful - for sinks without a location property or when finalisation of - the fragments is done asynchronously. - -- videocrop: add support for Y444, Y41B and Y42B pixel formats - -- vp8enc, vp9enc: change default value of VP8E_SET_STATIC_THRESHOLD - from 0 to 1 which matches what Google WebRTC does and results in - lower CPU usage; also added a new bit-per-pixel property to select a - better default bitrate - -- v4l2: add support for ABGR, xBGR, RGBA, and RGBx formats and for - handling interlaced video in alternate fields interlace mode (one - field per buffer instead of one frame per picture with both fields - interleaved) - -- v4l2: Profile and level probing support for H264, H265, MPEG-4, - MPEG-2, VP8, and VP9 video encoders and decoders - -Plugins Ugly - -- asfdemux: extract more metadata: disc number and disc count - -- x264enc: - - - respect YouTube bitrate recommendation when user sets the - YouTube profile preset - - separate high-10 video formats from 8-bit formats to improve - depth negotiation and only advertise suitable input raw formats - for the desired output depth - - forward downstream colorimetry and chroma-site restrictions to - upstream elements - - support more color primaries/mappings - -Plugins Bad - -- av1enc: add threads, row-mt and tile-{columns,rows} properties for - this AOMedia AV1 encoder - -- ccconverter: implement support for CDP framerate conversions - -- ccextractor: Add remove-caption-meta property to remove caption - metas from the outgoing video buffers - -- decklink: add support for 2K DCI video modes, widescreen NTSC/PAL, - and for parsing/outputting AFD/Bar data. Also implement a simple - device provider for Decklink devices. - -- dtlsrtpenc: add rtp-sync property which synchronises RTP streams to - the pipeline clock before passing them to funnel for merging with - RTCP. - -- fdkaac: also decode MPEG-2 AAC; encoder now supports more - multichannel/surround sound layouts - -- hlssink2: add action signals for custom playlist/fragment handling: - Instead of always going through the file system API we allow the - application to modify the behaviour. For the playlist itself and - fragments, the application can provide a GOutputStream. In addition - the sink notifies the application whenever a fragment can be - deleted. - -- interlace: can now output data in alternate fields mode; added field - switching mode for 2:2 field pattern - -- iqa: Add a mode property to enable strict mode that checks that all - the input streams have the exact same number of frames; also - implement the child proxy interface - -- mpeg2enc: add disable-encode-retries property for lower CPU usage - -- mpeg4videoparse: allow re-sending codec config at IDR via - config-interval=-1 - -- mpegtsparse: new alignment property to determine number of TS - packets per output buffer, useful for feeding an MPEG-TS stream for - sending via udpsink. This can be used in combination with the - split-on-rai property that makes sure to start a new output buffer - for any TS packet with the Random Access Indicator set. Also set - delta unit buffer flag on non-random-access buffers. - -- mpegdemux: add an ignore-scr property to ignore the SCR in - non-compliant MPEG-PS streams with a broken SCR, which will work as - long as PTS/DTS in the PES header is consistently increasing. - -- tsdemux: - - - add an ignore-pcr property to ignore MPEG-TS streams with broken - PCR streams on which we can’t reliably recover correct - timestamps. - - new latency property to allow applications to lower the - advertised worst-case latency of 700ms if they know their - streams support this (must have timestamps in higher frequency - than required by the spec) - - support for AC4 audio - -- msdk - Intel Media SDK plugin for hardware-accelerated video - decoding and encoding on Windows and Linux: - - - mappings for more video formats: Y210, Y410, P012_LE, Y212_LE - - encoders now support bitrate changes and input format changes in - playing state - - msdkh264enc, msdkh265enc: add support for CEA708 closed caption - insertion - - msdkh264enc, msdkh265enc: set Region of Interest (ROI) region - from ROI metas - - msdkh264enc, msdkh265enc: new tune property to enable low-power - mode - - msdkh265enc: add support 12-bit 4:2:0 encoding and 8-bit 4:2:2 - encoding and VUYA, Y210, and Y410 as input formats - - msdkh265enc: add support for screen content coding extension - - msdkh265dec: add support for main-12/main-12-intra, - main-422-10/main-422-10-intra 10bit, - main-422-10/main-422-10-intra 8bit, - main-422-12/main-422-12-intra, main-444-10/main-444-10-intra, - main-444-12/main-444-12-intra, and main-444 profiles - - msdkvp9dec: add support for 12-bit 4:4:4 - - msdkvpp: add support for Y410 and Y210 formats, cropping via - properties, and a new video-direction property. - -- mxf: Add support for CEA-708 CDP from S436 essence tracks. mxfdemux - can now handle Apple ProRes - -- nvdec: add H264 + H265 stateless codec implementation nvh264sldec - and nvh265sldec with fewer features but improved latency. You can - set the environment variable GST_USE_NV_STATELESS_CODEC=h264 to use - the stateless decoder variant as nvh264dec instead of the “normal” - NVDEC decoder implementation. - -- nvdec: add support for 12-bit 4:4:4/4:2:0 and 10-bit 4:2:0 decoding - -- nvenc: - - - add more rate-control options, support for B-frame encoding (if - device supports it), an aud property to toggle Access Unit - Delimiter insertion, and qp-{min,max,const}-{i,p,b} properties. - - the weighted-pred property enables weighted prediction. - - support for more input formats, namely 8-bit and 10-bit RGB - formats (BGRA, RGBA, RGB10A2, BGR10A2) and YV12 and VUYA. - - on-the-fly resolution changes are now supported as well. - - in case there are multiple GPUs on the system, there are also - per-GPU elements registered now, since different devices will - have different capabilities. - - nvh265enc can now support 10-bit YUV 4:4:4 encoding and 8-bit - 4:4:4 / 10-bit 4:2:0 formats up to 8K resolution (with some - devices). In case of HDR content HDR related SEI nals will be - inserted automatically. - -- openjpeg: enable multi-threaded decoding and add support for - sub-frame encoding (for lower latency) - -- rtponviftimestamp: add opt-out “drop-out-of-segment” property - -- spanplc: new stats property - -- srt: add support for IPv6 and for using hostnames instead of IP - addresses; add streamid property, but also allow passing the id via - the stream URI; add wait-for-connection property to srtsink - -- timecodestamper: this element was rewritten with an updated API - (properties); it has gained many new properties, seeking support and - support for linear timecode (LTC) from an audio stream. - -- uvch264src now comes with a device provider to advertise available - camera sources that support this interface (mostly Logitech C920s) - -- wpe: Add software rendering support and support for mouse scroll - events - -- x265enc: support more 8/10/12 bits 4:2:0, 4:2:2 and 4:4:4 profiles; - add support for mastering display info and content light level - encoding SEIs - -gst-libav +- assrender: handle more font mime types; better interaction with + matroskademux for embedded fonts -- Add mapping for SpeedHQ video codec used by NDI +- audiobuffersplit: Add support for specifying output buffer size in + bytes (not just duration) -- Add mapping for aptX and aptX-HD +- audiolatency: new "samplesperbuffer" property so users can configure + the number of samples per buffer. The default value is 240 samples + which is equivalent to 5ms latency with a sample rate of 48000, + which might be larger than actual buffer size of audio capture + device. + +- audiomixer, audiointerleave, GstAudioAggregator: now keep a count of + samples that are dropped or processed as statistic and can be made + to post QoS messages on the bus whenever samples are dropped by + setting the "qos-messages" property on input pads. + +- audiomixer, compositor: improved handling of new inputs added at + runtime. New API was added to the GstAggregator base class to allow + subclasses to opt into an aggregation mode where inactive pads are + ignored when processing input buffers + (gst_aggregator_set_ignore_inactive_pads(), + gst_aggregator_pad_is_inactive()). An “inactive pad” in this context + is a pad which, in live mode, hasn’t yet received a first buffer, + but has been waited on at least once. What would happen usually in + this case is that the aggregator would wait for data on this pad + every time, up to the maximum configured latency. This would + inadvertently push mixer elements in live mode to the configured + latency envelope and delay processing when new inputs are added at + runtime until these inputs have actually produced data. This is + usually undesirable. With this new API, new inputs can be added + (requested) and configured and they won’t delay the data processing. + Applications can opt into this new behaviour by setting the + "ignore-inactive-pads" property on compositor, audiomixer or other + GstAudioAggregator-based elements. + +- cccombiner: implement “scheduling” of captions. So far cccombiner’s + behaviour was essentially that of a funnel: it strictly looked at + input timestamps to associate together video and caption buffers. + Now it will try to smoothly schedule caption buffers in order to + have exactly one per output video buffer. This might involve + rewriting input captions, for example when the input is CDP then + sequence counters are rewritten, time codes are dropped and + potentially re-injected if the input video frame had a time code + meta. This can also lead to the input drifting from synchronisation, + when there isn’t enough padding in the input stream to catch up. In + that case the element will start dropping old caption buffers once + the number of buffers in its internal queue reaches a certain limit + (configurable via the "max-scheduled" property). The new original + funnel-like behaviour can be restored by setting the "scheduling" + property to FALSE. + +- ccconverter: new "cdp-mode" property to specify which sections to + include in CDP packets (timecode, CC data, service info). Various + software, including FFmpeg’s Decklink support, fails parsing CDP + packets that contain anything but CC data in the CDP packets. + +- clocksync: new "sync-to-first" property for automatic timestamp + offset setup: if set clocksync will set up the "ts-offset" value + based on the first buffer and the pipeline’s running time when the + first buffer arrived. The newly configured "ts-offset" in this case + would be the value that allows outputting the first buffer without + waiting on the clock. This is useful for example to feed a non-live + input into an already-running pipeline. + +- compositor: + + - multi-threaded input conversion and compositing. Set the + "max-threads" property to activate this. + - new "sizing-policy" property to support display aspect ratio + (DAR)-aware scaling. By default the image is scaled to fill the + configured destination rectangle without padding and without + keeping the aspect ratio. With sizing-policy=keep-aspect-ratio + the input image is scaled to fit the destination rectangle + specified by GstCompositorPad:{xpos, ypos, width, height} + properties preserving the aspect ratio. As a result, the image + will be centered in the destination rectangle with padding if + necessary. + - new "zero-size-is-unscaled" property on input pads. By default + pad width=0 or pad height=0 mean that the stream should not be + scaled in that dimension. But if the "zero-size-is-unscaled" + property is set to FALSE a width or height of 0 is instead + interpreted to mean that the input image on that pad should not + be composited, which is useful when creating animations where an + input image is made smaller and smaller until it disappears. + - improved handling of new inputs at runtime via + "ignore-inactive-pads"property (see above for details) + - allow output format with alpha even if none of the inputs have + alpha (also glvideomixer and other GstVideoAggregator + subclasses) + +- dashsink: add H.265 codec support and signals for allowing custom + playlist/fragment output + +- decodebin3: + + - improved decoder selection, especially for hardware decoders + - make input activation “atomic” when adding inputs dynamically + - better interleave handling: take into account decoder latency + for interleave size + +- decklink: + + - Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro + - decklinkvideosrc: + - More accurate and stable capture timestamps: use the + hardware reference clock time when the frame was finished + being captured instead of a clock time much further down the + road. + - Automatically detect widescreen vs. normal NTSC/PAL + +- encodebin: + + - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only + re-encode where needed and otherwise pass through encoded video + as-is). + - H.264/H.265 smart encoding improvements: respect user-specified + stream-format, but if not specified default to avc3/hvc1 with + in-band SPS/PPS/VPS signalling for more flexibility. + - new encodebin2 element with dynamic/sometimes source pads in + order to support the option of doing the muxing outside of + encodebin, e.g. in combination with splitmuxsink. + - add APIs to set element properties on encoding profiles (see + below) + +- errorignore: new "ignore-eos" property to also ignore FLOW_EOS from + downstream elements + +- giosrc: add support for growing source files: applications can + specify that the underlying file being read is growing by setting + the "is-growing" property. If set, the source won’t EOS when it + reaches the end of the file, but will instead start monitoring it + and will start reading data again whenever a change is detected. The + new "waiting-data" and "done-waiting-data" signals keep the + application informed about the current state. + +- gtksink, gtkglsink: + + - scroll event support: forwarded as navigation events into the + pipeline + - "video-aspect-ratio-override" property to force a specific + aspect ratio + - "rotate-method" property and support automatic rotation based on + image tags + +- identity: new "stats" property allows applications to retrieve the + number of bytes and buffers that have passed through so far. + +- interlace: add support for more formats, esp 10-bit, 12-bit and + 16-bit ones + +- jack: new "low-latency" property for automatic latency-optimized + setting and "port-names" property to select ports explicitly + +- jpegdec: support output conversion to RGB using libjpeg-turbo (for + certain input files) + +- line21dec: + + - "mode" property to control whether and how detected closed + captions should be inserted in the list of existing close + caption metas on the input frame (if any): add, drop, or + replace. + - "ntsc-only" property to only look for captions if video has NTSC + resolution + +- line21enc: new "remove-caption-meta" to remove metas from output + buffers after encoding the captions into the video data; support for + CDP closed captions + +- matroskademux, matroskamux: Add support for ffv1, a lossless + intra-frame video coding format. + +- matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265 + (i.e. stream-format avc3 and hev1) which allows on-the-fly + profile/level/resolution changes. + +- matroskamux: new "cluster-timestamp-offset" property, useful for use + cases where the container timestamps should map to some absolute + wall clock time, for example. + +- rtpsrc: add "caps" property to allow explicit setting of the caps + where needed + +- mpegts: support SCTE-35 pass-through via new "send-scte35-events" + property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections + (e.g. ad placement opportunities) are forwarded as events downstream + where they can be picked up again by mpegtsmux. This required a + semantic change in the SCTE-35 section API: timestamps are now in + running time instead of muxer pts. + +- tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp + handling in certain corner cases and for poorly muxed streams. + +- mpegtsmux: + + - More conformance improvements to make MPEG-TS analysers happy: + - PCR timing accuracy: Improvements to the way mpegtsmux + outputs PCR observations in CBR mode, so that a PCR + observation is always inserted when needed, so that we never + miss the configured pcr-interval, as that triggers various + MPEG-TS analyser errors. + - Improved PCR/SI scheduling + - Don’t write PCR until PAT/PMT are output to make sure streams + start cleanly with a PAT/PMT. + - Allow overriding the automatic PMT PID selection via + application-supplied PMT_%d fields in the prog-map + structure/property. + +- mp4mux: + + - new "first-moov-then-finalise" mode for fragmented output where + the output will start with a self-contained moov atom for the + first fragment, and then produce regular fragments. Then at the + end when the file is finalised, the initial moov is invalidated + and a new moov is written covering the entire file. This way the + file is a “fragmented mp4” file while it is still being written + out, and remains playable at all times, but at the end it is + turned into a regular mp4 file (with former fragment headers + remaining as unused junk data in the file). + - support H.264 avc3 and H.265 hvc1 stream formats as input where + the codec data is signalled in-band inside the bitstream instead + of caps/file headers. + - support profile/level/resolution changes for H.264/H.265 input + streams (i.e. codec data changing on the fly). Each codec_data + is put into its own SampleTableEntry inside the stsd, unless the + input is in avc3 stream format in which case it’s written + in-band and not in the headers. + +- multifilesink: new ""min-keyframe-distance"" property to make + minimum distance between keyframes in next-file=key-frame mode + configurable instead of hard-coding it to 10 seconds. + +- mxfdemux has seen a big refactoring to support non-frame wrappings + and more accurate timestamp/seek handling for some formats + +- msdk plugin for hardware-accelerated video encoding and decoding + using the Intel Media SDK: + + - oneVPL support (Intel oneAPI Video Processing Library) + - AV1 decoding support + - H.264 decoder now supports constrained-high and progressive-high + profiles + - H.264 encoder: + - more configuration options (properties): + "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid", + "dblk-idc" + - H.265 encoder: + - can output main-still-picture profile + - now inserts HDR SEIs (mastering display colour volume and + content light level) + - more configuration options (properties): + "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid", + "b-pyramid", "dblk-idc", "transform-skip" + - support for RGB 10bit format + - External bitrate control in encoders + - Video post proc element msdkvpp gained support for 12-bit pixel + formats P012_LE, Y212_LE and Y412_LE + +- nvh264sldec: interlaced stream support + +- openh264enc: support main, high, constrained-high and + progressive-high profiles + +- openjpeg: support for multithreaded decoding and encoding + +- rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP); + new "ignore-x-server-reply" property to ignore the + x-server-ip-address server header reply in case of HTTP tunneling, + as it is often broken. + +- souphttpsrc: Runtime compatibility support for libsoup2 and + libsoup3. libsoup3 is the latest major version of libsoup, but + libsoup2 and libsoup3 can’t co-exist in the same process because + there is no namespacing or versioning for GObject types. As a + result, it would be awkward if the GStreamer souphttpsrc plugin + linked to a specific version of libsoup, because it would only work + with applications that use the same version of libsoup. To make this + work, the soup plugin now tries to determine the libsoup version + used by the application (and its other dependencies) at runtime on + systems where GStreamer is linked dynamically. libsoup3 support is + still considered somewhat experimental at this point. Distro + packagers please take note of the souphttpsrc plugin dependency + changes mentioned in the build and dependencies section below. + +- srtsrc, srtsink: add signals for the application to accept/reject + incoming connections + +- timeoverlay: new elapsed-running-time time mode which shows the + running time since the first running time (and each flush-stop). + +- udpsrc: new timestamping mode to retrieve packet receive timestamps + from the kernel via socket control messages (SO_TIMESTAMPNS) on + supported platforms + +- uritranscodebin: new setup-source and element-setup signals for + applications to configure elements used + +- v4l2codecs plugin gained support for 4x4 and 32x32 tile formats + enabling some platforms or direct renders. Important memory usage + improvement. + +- v4l2slh264dec now implements the final Linux uAPI as shipped on + Linux 5.11 and later. + +- valve: add "drop-mode" property and provide two new modes of + operation: in drop-mode=forward-sticky-events sticky events + (stream-start, segment, tags, caps, etc.) are forwarded downstream + even when dropping is enabled; drop-mode=transform-to-gap will in + addition also convert buffers into gap events when dropping is + enabled, which lets downstream elements know that time is advancing + and might allow for preroll in many scenarios. By default all events + and all buffers are dropped when dropping is enabled, which can + cause problems with caps negotiation not progressing or branches not + prerolling when dropping is enabled. + +- videocrop: support for many more pixel formats, e.g. planar YUV + formats with > 8bits and GBR* video formats; can now also accept + video not backed by system memory as long as downstream supports the + GstCropMeta + +- videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant + color bars + +- vp8enc: finish support for temporal scalability: two new properties + ("temporal-scalability-layer-flags", + "temporal-scalability-layer-sync-flags") and a unit change on the + "temporal-scalability-target-bitrate" property (now expects bps); + also make temporal scalability details available to RTP payloaders + as buffer metadata. + +- vp9enc: new properties to tweak encoder performance: + + - "aq-mode" to configure adaptive quantization modes + - "frame-parallel-decoding" to configure whether to create a + bitstream that reduces decoding dependencies between frames + which allows staged parallel processing of more than one video + frames in the decoder. (Defaults to TRUE) + - "row-mt", "tile-columns" and "tile-rows" so multithreading can + be enabled on a per-tile basis, instead of on a per tile-column + basis. In combination with the new "tile-rows" property, this + allows the encoder to make much better use of the available CPU + power. + +- vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well + as 8-bit 4:4:4 + +- vp8enc, vp9enc now default to “good quality” for the deadline + property rather then “best quality”. Having the deadline set to best + quality causes the encoder to be absurdly slow, most real-life users + will prefer good-enough quality with better performance instead. + +- wpesrc: + + - implement audio support: a new sometimes source pad will be + created for each audio stream created by the web engine. + - move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also + support audio + - also handles web:// URIs now (same as cefsrc) + - post messages with the estimated load progress on the bus + +- x265enc: add negative DTS support, which means timestamps are now + offset by 1h same as with x264enc + +RTP Payloaders and Depayloaders + +- rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC + audio codec + +- rtph264depay: + + - new "request-keyframe" property to make the depayloader + automatically request a new keyframe from the sender on packet + loss, consistent with the new property on rtpvp8depay. + - new "wait-for-keyframe" property to make depayloader wait for a + new keyframe at the beginning and after packet loss (only + effective if the depayloader outputs AUs), consistent with the + existing property on rtpvp8depay. + +- rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel + audio in addition to the previously supported multichannel audio + modes + +- rtpopuspay: add DTX (Discontinuous Transmission) support + +- rtpvp8depay: new "request-keyframe" property to make the depayloader + automatically request a new keyframe from the sender on packet loss. + +- rtpvp8pay: temporal scaling support + +- rtpvp9depay: Improved SVC handling (aggregate all layers) + +RTP Infrastructure + +- rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE + 2022-1 2-D Forward Error Correction. More details in Mathieu’s blog + post. -- avivf_mux: support VP9 and AV1 +- rtpreddec: BUNDLE support -- avvidenc: shift output buffer timestamps and output segment by 1h - just like x264enc does, to allow for negative DTS. +- rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion + Control (TWCC) -- avviddec: Limit default number of decoder threads on systems with - more than 16 cores, as the number of threads used in avdec has a - direct impact on the latency of the decoder, which is of as many - frames as threads, so a large numbers of threads can make for - latency levels that can be problematic in some applications. - -- avviddec: Add thread-type property that allows applications to - specify the preferred multithreading method (auto, frame, slice). - Note that thread-type=frame may introduce additional latency - especially in live pipelines, since it introduces a decoding delay - of number of thread frames. +- rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC + reports to be scheduled on a timer instead of per marker-bit. Plugin and library moves - There were no plugin moves or library moves in this cycle. -- The rpicamsrc element was moved into -good from an external - repository on github. - Plugin removals The following elements or plugins have been removed: -- The yadif video deinterlacing plugin from gst-plugins-bad, which was - one of the few GPL licensed plugins, has been removed in favour of - deinterlace method=yadif. - -- The avdec_cdgraphics CD Graphics video decoder element from - gst-libav was never usable in GStreamer and we now have a cdgdec - element written in Rust in gst-plugins-rs to replace it. - -- The VDPAU plugin has been unmaintained and unsupported for a very - long time and does not have the feature set we expect from - hardware-accelerated video decoders. It’s been superseded by the - nvcodec plugin leveraging NVIDIA’s NVDEC API. +- The ofa audio fingerprinting plugin has been removed. The MusicIP + database has been defunct for years so this plugin is likely neither + useful nor used by anyone. + +- The mms plugin containing mmssrc has been removed. It seems unlikely + anyone still needs this or that there are even any streams left out + there. The MMS protocol was deprecated in 2003 (in favour of RTSP) + and support for it was dropped with Microsoft Media Services 2008, + and Windows Media Player apparently also does not support it any + more. Miscellaneous API additions -GStreamer core - -- gst_task_resume(): This new API allows resuming a task if it was - paused, while leaving it in stopped state if it was stopped or not - started yet. This can be useful for callback-based driver workflows, - where you basically want to pause and resume the task when buffers - are notified while avoiding the race with a gst_task_stop() coming - from another thread. - -- info: add printf extensions GST_TIMEP_FORMAT and GST_STIMEP_FORMAT - for printing GstClockTime/GstClockTimeDiff pointers, which is much - more convenient to use in debug log statements than the usual - GST_TIME_FORMAT-followed-by-GST_TIME_ARGS dance. Also add an - explicit GST_STACK_TRACE_SHOW_NONE enum value. - -- gst_element_get_current_clock_time() and - gst_element_get_current_running_time(): new helper functions for - getting an element clock’s time, and the clock time minus base time, - respectively. Useful when adding additional input branches to - elements such as compositor, audiomixer, flvmux, interleave or - input-selector to determine initial pad offsets and such. - -- seeking: Add GST_SEEK_FLAG_TRICKMODE_FORWARD_PREDICTED to just skip - B-frames during trick mode, showing both keyframes + P-frame, and - add support for it in h264parse and h265parse. - -- elementfactory: add GST_ELEMENT_FACTORY_TYPE_HARDWARE to allow - elements to advertise that they are hardware-based or interact with - hardware. This has multiple applications: - - - it makes it possible to easily differentiate hardware and - software based element implementations such as audio or video - encoders and decoders. This is useful in order to force the use - of software decoders for specific use cases, or to check if a - selected decoder is actually hardware-accelerated or not. - - elements interacting with hardware and their respective drivers - typically don’t know the actually supported capabilities until - the element is set into at least READY state and can open a - device handle and probe the hardware. - -- gst_uri_from_string_escaped(): identical to gst_uri_from_string() - except that the userinfo and fragment components of the URI will not - be unescaped while parsing. This is needed for correctly parsing - usernames or passwords with : in them . - -- paramspecs: new GstParamSpec flag GST_PARAM_CONDITIONALLY_AVAILABLE - to indicate that a property might not always exist. - -- gst_bin_iterate_all_by_element_factory_name() finds elements in a - bin by factory name - -- pad: gst_pad_get_single_internal_link() is a new convenience - function to return the single internal link of a pad, which is - useful e.g. to retrieve the output pad of a new multiqueue request - pad. - -- datetime: Add constructors to create datetimes with timestamps in - microseconds, gst_date_time_new_from_unix_epoch_local_time_usecs() - and gst_date_time_new_from_unix_epoch_utc_usecs(). - -- gst_debug_log_get_lines() gets debug log lines formatted in the same - way the default log handler would print them - -- GstSystemClock: Add GST_CLOCK_TYPE_TAI as GStreamer abstraction for - CLOCK_TAI, to support transmission offloading features where network - packets are timestamped with the time they are deemed to be actually - transmitted. Useful in combination with the new AVTP plugin. - -- miscellaneous utility functions: gst_clear_uri(), - gst_structure_take(). - -- harness: Added gst_harness_pull_until_eos() - -- GstBaseSrc: - - - gst_base_src_new_segment() allows subclasses to update the - segment to be used at runtime from the ::create() function. This - deprecates gst_base_src_new_seamless_segment() - - gst_base_src_negotiate() allows subclasses to trigger format - renegotiation at runtime from inside the ::create() or ::alloc() - function - -- GstBaseSink: new stats property and gst_base_sink_get_stats() method - to retrieve various statistics such as average frame rate and - dropped/rendered buffers. - -- GstBaseTransform: gst_base_transform_reconfigure() is now public - API, useful for subclasses that need to completely re-implement the - ::submit_input_buffer() virtual method - -- GstAggregator: - - - gst_aggregator_update_segment() allows subclasses to update the - output segment at runtime. Subclasses should use this function - rather than push a segment event onto the source pad directly. - - new sample selection API: - - subclasses should now call gst_aggregator_selected_samples() - from their ::aggregate() implementation to signal that they - have selected the next samples they will aggregate - - GstAggregator will then emit the samples-selected signal - where handlers can then look up samples per pad via - gst_aggregator_peek_next_sample(). - - This is useful for example to atomically update input pad - properties in mixer subclasses such as compositor. - Applications can now update properties with precise control - of when these changes will take effect, and for which input - buffer(s). - - gst_aggregator_finish_buffer_list() allows subclasses to push - out a buffer list, improving efficiency in some cases. - - a ::negotiate() virtual method was added, for consistency with - other base classes and to allow subclasses to completely - override the negotiation behaviour. - - the new ::sink_event_pre_queue() and ::sink_query_pre_queue() - virtual methods allow subclasses to intercept or handle - serialized events and queries before they’re queued up - internally. - -GStreamer Plugins Base Libraries - -Audio library - -- audioaggregator, audiomixer: new output-buffer-duration-fraction - property which allows use cases such as keeping the buffers output - by compositor on one branch and audiomixer on another perfectly - aligned, by requiring the compositor to output a n/d frame rate, and - setting output-buffer-duration-fraction to d/n on the audiomixer. - -- GstAudioDecoder: new max-errors property so applications can - configure at what point the decoder should error out, or tell it to - just keep going - -- gst_audio_make_raw_caps() and gst_audio_formats_raw() are - bindings-friendly versions of the GST_AUDIO_CAPS_MAKE() C macro. - -- gst_audio_info_from_caps() now handles encoded audio formats as well - -PbUtils library - -- GstEncodingProfile: - - Do not restrict number of similar profiles in a container - - add GstValue serialization function -- codec utils now support more H.264/H.265 profiles/levels and have - improved extension handling - -RTP library - -- rtpbasepayloader: Add scale-rtptime property for scaling RTP - timestamp according to the segment rate (equivalent to RTSP speed - parameter). This is useful for ONVIF trickmodes via RTSP. - -- rtpbasepayload: add experimental property for embedding twcc - sequencenumbers for Transport-Wide Congestion Control (gated behind - the GST_RTP_ENABLE_EXPERIMENTAL_TWCC_PROPERTY environment - variable) - more generic API for enabling this is expected to land - in the next development cycle. - -- rtcpbuffer: add RTPFB_TYPE_TWCC for Transport-Wide Congestion - Control - -- rtpbuffer: add - gst_rtp_buffer_get_extension_onebyte_header_from_bytes()``, so that one can parse theGBytes` - returned by gst_rtp_buffer_get_extension_bytes() - -- rtpbasedepayload: Add max-reorder property to make the - previously-hardcoded value when to consider a sender to have - restarted configurable. In some scenarios it’s particularly useful - to set max-reorder=0 to disable the behaviour that the depayloader - will drop packets: when max-reorder is set to 0 all - reordered/duplicate packets are considered coming from a restarted - sender. - -RTSP library - -- add gst_rtsp_url_get_request_uri_with_control() to create request - uri combined with control url - -- GstRTSPConnection: add the possibility to limit the Content-Length - for RTSP messages via - gst_rtsp_connection_set_content_length_limit(). The same - functionality is also exposed in gst-rtsp-server. - -SDP library - -- add support for parsing the extmap attribute from caps and storing - inside caps The extmap attribute allows mapping RTP extension header - IDs to well-known RTP extension header specifications. See RFC8285 - for details. +Core -Tags library +- gst_buffer_new_memdup() is a convenience function for the + widely-used gst_buffer_new_wrapped(g_memdup(data,size),size) + pattern. + +- gst_caps_features_new_single() creates a new single GstCapsFeatures, + avoiding the need to use the vararg function with NULL terminator + for simple cases. + +- gst_element_type_set_skip_documentation() can be used by plugins to + signal that certain elements should not be included in the GStreamer + plugin documentation. This is useful for plugins where elements are + registered dynamically based on hardware capabilities and/or where + the available plugins and properties vary from system to system. + This is used in the d3d11 plugin for example to ensure that only the + list of default elements is advertised in the documentation. + +- gst_type_find_suggest_empty_simple() is a new convenience function + for typefinders for cases where there’s only a media type and no + other fields. + +- New API to create elements and set properties at construction time, + which is not only convenient, but also allows GStreamer elements to + have construct-only properties: gst_element_factory_make_full(), + gst_element_factory_make_valist(), + gst_element_factory_make_with_properties(), + gst_element_factory_create_full(), + gst_element_factory_create_valist(), + gst_element_factory_create_with_properties(). + +- GstSharedTaskPool: new “shared” task pool subclass with slightly + different default behaviour than the existing GstTaskPool which + would create unlimited number of threads for new tasks. The shared + task pool creates up to N threads (default: 1) and then distributes + pending tasks to those threads round-robin style, and blocks if no + thread is available. It is possible to join tasks. This can be used + by plugins to implement simple multi-threaded processing and is used + for the new multi-threaded video conversion and compositing done in + GstVideoAggregator, videoconverter and compositor. + +Plugins Base Utils library + +- GstDiscoverer: + + - gst_discoverer_container_info_get_tags() was added to retrieve + global/container tags (vs. per-stream tags). Per-Stream tags can + be retrieved via the existing + gst_discoverer_stream_info_get_tags(). + gst_discoverer_info_get_tags(), which for many files returns a + confusing mix of stream and container tags, has been deprecated + in favour of the container/stream-specific functions. + - gst_discoverer_stream_info_get_stream_number() returns a unique + integer identifier for a given stream within the given + GstDiscoverer context. (If this matches the stream number inside + the container bitstream that’s by coincidence and not by + design.) + +- gst_pb_utils_get_caps_description_flags() can be used to query + whether certain caps represent a container, audio, video, image, + subtitles, tags, or something else. This only works for formats + known to GStreamer. + +- gst_pb_utils_get_file_extension_from_caps() returns a possible file + extension for given caps. + +- gst_codec_utils_h264_get_profile_flags_level(): Parses profile, + flags, and level from H.264 AvcC codec_data. The format of H.264 + AVCC extradata/sequence_header is documented in the ITU-T H.264 + specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 + section 5.3.3.1.2. + +- gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381 + compatible MIME codec string codec. Useful for providing the codecs + field inside the Content-Type HTTP header for container formats, + such as mp4 or Matroska. + +GStreamer OpenGL integration library and plugins + +- glcolorconvert: added support for converting the video formats A420, + AV12, BGR, BGRA, RGBP and BGRP. + +- Added support to GstGLBuffer for persistent buffer mappings where a + Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU. + This removes a memcpy() when uploading textures or vertices + particularly when software decoders (e.g. libav) are direct + rendering into our memory. Improves transfer performance + significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or + GL_EXT_buffer_storage + +- Added various helper functions for handling 4x4 matrices of affine + transformations as used by GstVideoAffineTransformationMeta. + +- Add support to GstGLContext for allowing the application to control + the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL + context. This allows the ability to choose between RGB16 or RGB10A2 + or RGBA8 back/front buffer configurations that were previously + hardcoded. GstGLContext also supports retrieving the configuration + it was created with or from an externally provide OpenGL context + handle. This infrastructure is also used to create a compatible + config from an application/externally provided OpenGL context in + order to improve compatibility with other OpenGL frameworks and GUI + toolkits. A new environment variable GST_GL_CONFIG was also added to + be able to request a specific configuration from the command line. + Note: different platforms will have different functionality + available. + +- Add support for choosing between EGL and WGL at runtime when running + on Windows. Previously this was a build-time switch. Allows use in + e.g. Gtk applications on Windows that target EGL/ANGLE without + recompiling GStreamer. gst_gl_display_new_with_type() can be used by + applications to choose a specific display type to use. + +- Build fixes to explicitly check for Broadcom-specific libraries on + older versions of the Raspberry Pi platform. The Broadcom OpenGL ES + and EGL libraries have different filenames. Using the vc4 Mesa + driver on the Raspberry Pi is not affected. + +- Added support to glupload and gldownload for transferring RGBA + buffers using the memory:NVMM available on the Nvidia Tegra family + of embedded devices. + +- Added support for choosing libOpenGL and libGLX as used in a GLVND + environment on unix-based platforms. This allows using desktop + OpenGL and EGL without pulling in any GLX symbols as would be + required with libGL. -- update to latest iso-code and support more languages +Video library -- add tags for acoustid id & acoustid fingerprint, plus MusicBrainz ID - handling fixes +- New raw video formats: -Video library + - AV12 (NV12 with alpha plane) + - RGBP and BGRP (planar RGB formats) + - ARGB64 variants with specified endianness instead of host + endianness: + - ARGB64_LE, ARGB64_BE + - RGBA64_BE, RGBA64_LE + - BGRA64_BE, BGRA64_LE + - ABGR64_BE, ABGR64_LE + +- gst_video_orientation_from_tag() is new convenience API to parse the + image orientation from a GstTagList. -- High Dynamic Range (HDR) video information representation and - signalling enhancements: +- GstVideoDecoder subframe support (see below) - - New APIs for HDR video information representation and - signalling: - - GstVideoMasteringDisplayInfo: display color volume info as - per SMPTE ST 2086 - - GstVideoContentLightLevel: content light level specified in - CEA-861.3, Appendix A. - - plus functions to serialise/deserialise and add them to or - parse them from caps - - gst_video_color_{matrix,primaries,transfer}_{to,from}_iso(): - new utilility functions for conversion from/to ISO/IEC - 23001-8 - - add ARIB STD-B67 transfer chracteristic function - - add SMPTE ST 2084 support and BT 2100 colorimetry - - define bt2020-10 transfer characteristics for clarity: - bt707, bt2020-10, and bt2020-12 transfer characteristics are - functionally identical but have their own unique values in - the specification. - - h264parse, h265parse: Parse mastering display info and content - light level from SEIs. - - matroskademux: parse HDR metadata - - matroskamux: Write MasteringMetadata and Max{CLL,FALL}. Enable - muxing with HDR meta data if upstream provided it - - avviddec: Extract HDR information if any and map bt2020-10, PQ - and HLG transfer functions - -- added bt601 transfer function (for completeness) - -- support for more pixel formats: - - - Y412 (packed 12 bits 4:4:4:4) - - Y212 (packed 12 bits 4:2:2) - - P012 (semi-planar 4:2:0) - - P016_{LE,BE} (semi-planar 16 bits 4:2:0) - - Y444_16{LE,BE} (planar 16 bits 4:4:4) - - RGB10A2_LE (packed 10-bit RGB with 2-bit alpha channel) - - NV12_32L32 (NV12 with 32x32 tiles in linear order) - - NV12_4L4 (NV12 with 4x4 tiles in linear order) - -- GstVideoDecoder: - - - new max-errors property so applications can configure at what - point the decoder should error out, or tell it to just keep - going - - - new qos property to disable dropping frames because of QoS, and - post QoS messages on the bus when dropping frames. This is - useful for example in a scenario where the decoded video is - tee-ed off to go into a live sink that syncs to the clock in one - branch, and an encoding and save to file pipeline in the other - branch. In that case one wouldn’t want QoS events from the video - sink make the decoder drop frames because that would also leave - gaps in the encoding branch then. - -- GstVideoEncoder: - - - gst_video_encoder_finish_subframe() is new API to push out - subframes (e.g. slices), so encoders can split the encoding into - subframes, which can be useful to reduce the overall end-to-end - latency as we no longer need to wait for the full frame to be - encoded to start decoding or sending out the data. - - new min-force-key-unit-interval property allows configuring the - minimum interval between force-key-unit requests and prevents a - big bitrate increase if a lot of key-units are requested in a - short period of time (as might happen in live streaming RTP - pipelines when packet loss is detected). - - various force-key-unit event handling fixes - -- GstVideoAggregator, compositor, glvideomixer: expose - max-last-buffer-repeat property on pads. This can be used to have a - compositor display either the background or a stream on a lower - zorder after a live input stream freezes for a certain amount of - time, for example because of network issues. - -- gst_video_format_info_component() is new API to find out which - components are packed into a given plane, which is useful to prevent - us from assuming a 1-1 mapping between planes and components. - -- gst_video_make_raw_caps() and gst_video_formats_raw() are - bindings-friendly versions of the GST_VIDEO_CAPS_MAKE() C macro. - -- video-blend: Add support for blending on top of 16 bit per component - formats, which makes sure we can support every currently supported - raw video format for blending subtitles or logos on top of video. - -- GST_VIDEO_BUFFER_IS_TOP_FIELD() and - GST_VIDEO_BUFFER_IS_BOTTOM_FIELD() convenience macros to check - whether the video buffer contains only the top field or bottom field - of an interlaced picture. - -- GstVideoMeta now includes an alignment field with the - GstVideoAlignment so buffer producers can explicitly specify the - exact geometry of the planes, allowing users to easily know the - padded size and height of each plane. Default values will be used if - this is not set. - - Use gst_video_meta_set_alignment() to set the alignment and - gst_video_meta_get_plane_size() or gst_video_meta_get_plane_height() - to compute the plane sizes or plane heights based on the information - in the video meta. +- GstVideoCodecState now also carries some HDR metadata -- gst_video_info_align_full() works like gst_video_info_align() but - also retrieves the plane sizes. +- Ancillary video data: implement transform functions for AFD/Bar + metas, so they will be forwarded in more cases MPEG-TS library -- support for SCTE-35 sections - -- extend support for ATSC tables: +This library only handles section parsing and such, see above for +changes to the actual mpegtsmux and mpegtsdemux elements. - - System Time Table (STT) - - Master Guide Table (MGT) - - Rating Region Table (RRT) +- many additions and improvements to SCTE-35 section parsing +- new API for fetching extended descriptors: + gst_mpegts_find_descriptor_with_extension() +- add support for SIT sections (Selection Information Tables) +- expose event-from-section constructor gst_event_new_mpegts_section() +- parse Audio Preselection Descriptor needed for Dolby AC-4 + +GstWebRTC library + webrtcbin + +- Change the way in which sink pads and transceivers are matched + together to support easier usage. If a pad is created without a + specific index (i.e. using sink_%u as the pad template), then an + available compatible transceiver will be searched for. If a specific + index is requested (i.e. sink_1) then if a transceiver for that + m-line already exists, that transceiver must match the new sink pad + request. If there is no transceiver available in either scenario, a + new transceiver is created. If a mixture of both sink_1 and sink_%u + requests result in an impossible situation, an error will be + produced at pad request time or from create offer/answer. + +- webrtcbin now uses regular ICE nomination instead of libnice’s + default of aggressive ICE nomination. Regular ICE nomination is the + default recommended by various relevant standards and improves + connectivity in specific network scenarios. + +- Add support for limiting the port range used for RTP with the + addition of the min-rtp-port and max-rtp-port properties on the ICE + object. + +- Expose the SCTP transport as a property on webrtcbin to more closely + match the WebRTC specification. + +- Added support for taking into account the data channel transport + state when determining the value of the "connection-state" property. + Previous versions of the WebRTC spec did not include the data + channel state when computing this value. + +- Add configuration for choosing the size of the underlying sockets + used for transporting media data + +- Always advertise support for the transport-cc RTCP feedback protocol + as rtpbin supports it. For full support, the configured caps (input + or through codec-preferences) need to include the relevant RTP + header extension. + +- Numerous fixes to caps and media handling to fail-fast when an + incompatible situation is detected. + +- Improved support for attaching the required media after a remote + offer has been set. + +- Add support for dynamically changing the amount of FEC used for a + particular stream. + +- webrtcbin now stops further SDP processing at the first error it + encounters. + +- Completed support for either local or the remote closing a data + channel. + +- Various fixes when performing BUNDLEing of the media streams in + relation to RTX and FEC usage. + +- Add support for writing out QoS DSCP marking on outgoing packets to + improve reliability in some network scenarios. + +- Improvements to the statistics returned by the get-stats signal + including the addition of the raw statistics from the internal + RTPSource, the TWCC stats when available. + +- The webrtc library does not expose any objects anymore with public + fields. Instead properties have been added to replace that + functionality. If you are accessing such fields in your application, + switch to the corresponding properties. + +GstCodecs and Video Parsers + +- Support for render delays to improve throughput across all CODECs + (used with NVDEC and V4L2). +- lots of improvements to parsers and the codec parsing decoder base + classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various + hardware-accelerated decoder APIs. + +Bindings support + +- gst_allocation_params_new() allocates a GstAllocationParams struct + on the heap. This should only be used by bindings (and freed via + gst_allocation_params_free() afterwards). In C code you would + allocate this on the stack and only init it in place. + +- gst_debug_log_literal() can be used to log a string to the debug log + without going through any printf format expansion and associated + overhead. This is mostly useful for bindings such as the Rust + bindings which may have done their own formatting already . + +- Provide non-inlined versions of refcounting APIs for various + GStreamer mini objects, so that they can be consumed by bindings + (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref, + gst_clear_buffer, gst_buffer_copy, gst_buffer_replace, + gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list, + gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take, + gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace, + gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy, + gst_context_replace, gst_event_replace, gst_event_steal, + gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event, + gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref, + gst_message_unref, gst_clear_message, gst_message_copy, + gst_message_replace, gst_message_take, gst_promise_ref, + gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query, + gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref, + gst_sample_unref, gst_sample_copy, gst_tag_list_ref, + gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace, + gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref, + gst_clear_uri. + +- expose a GType for GstMiniObject + +- gst_device_provider_probe() now returns non-floating device object + +API Deprecations + +- gst_element_get_request_pad() has been deprecated in favour of the + newly-added gst_element_request_pad_simple() which does the exact + same thing but has a less confusing name that hopefully makes clear + that the function request a new pad rather than just retrieves an + already-existing request pad. + +- gst_discoverer_info_get_tags(), which for many files returns a + confusing mix of stream and container tags, has been deprecated in + favour of the container-specific and stream-specific functions, + gst_discoverer_container_info_get_tags() and + gst_discoverer_stream_info_get_tags(). + +- gst_video_sink_center_rect() was deprecated in favour of the more + generic newly-added gst_video_center_rect(). + +- The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends + to cause problems and prevents sub-buffering. If pooling or lifetime + tracking is required, memories should be allocated through a custom + GstAllocator instead of relying on the lifetime of the buffers the + memories were originally attached to, which is fragile anyway. + +- The GstPlayer high-level playback library is being replaced with the + new GstPlay library (see above). GstPlayer should be considered + deprecated at this point and will be marked as such in the next + development cycle. Applications should be ported to GstPlay. + +- Gstreamer Editing Services: ges_video_transition_set_border(), + ges_video_transition_get_border() + ges_video_transition_set_inverted() + ges_video_transition_is_inverted() have been deprecated, use + ges_timeline_element_set_children_properties() instead. Miscellaneous performance, latency and memory optimisations -As always there have been many performance and memory usage improvements -across all components and modules. Some of them have already been -mentioned elsewhere so won’t be repeated here. - -The following list is only a small snapshot of some of the more -interesting optimisations that haven’t been mentioned in other contexts -yet: - -- caps negotiation, structure and GValue performance optimizations - -- systemclock: clock waiting performance improvements (moved from - GstPoll to GCond for waiting), especially on Windows. - -- rtpsession: add support for buffer lists on the recv path for better - performance with higher packet rate streams. - -- rtpjitterbuffer: internal timer handling has been rewritten for - better performance, see Nicolas’ talk “Revisiting RTP Jitter Buffer - Timers” for more details. - -- H.264/H.265 parsers and RTP payloaders/depayloaders have been - optimised for latency to make sure data is processed and pushed out - as quickly as possible - -- video-scaler: correctness and performance improvements, esp. for - interlaced formats and GBRA - -- GstVideoEncoder has gained new API to push out subframes - (e.g. slices), so encoders can split the encoding into subframes, - which can be useful to reduce the overall end-to-end latency as we - no longer need to wait for the full frame to be encoded to start - decoding or sending out the data. - - This is complemented by the new GST_VIDEO_BUFFER_FLAG_MARKER which - is a video-specific buffer flag to mark the end of a video frame, so - elements can know that they have received all data for a frame - without waiting for the beginning of the next frame. This is similar - to how the RTP marker flag is used in many RTP video mappings. - - The video encoder base class now also releases the internal stream - lock before pushing out data, so as to not block the input side of - things from processing more data in the meantime. +More video conversion fast paths -Miscellaneous other changes and enhancements +- v210 ↔ I420, YV12, Y42B, UYVY and YUY2 +- A420 → RGB -- it is now possible to modify the initial rank of plugin features - without modifying the source code or writing code to do so - programmatically via the GST_PLUGIN_FEATURE_RANK environment - variable. Users can adjust the rank of plugin(s) by passing a - comma-separated list of feature:rank pairs where rank can be a - numerical value or one of NONE, MARGINAL, SECONDARY, PRIMARY, and - MAX. Example: GST_PLUGIN_FEATURE_RANK=myh264dec:MAX,avdec_h264:NONE - sets the rank of the myh264dec element feature to the maximum and - that of avdec_h264 to 0 (none), thus ensuring that myh264dec is - prefered as H264 decoder in an autoplugging context. - -- GstDeviceProvider now does a static probe on start as fallback for - providers that don’t support dynamic probing to make things easier - for users - -WebRTC - -- webrtcbin now contains initial support for renegotiation involving - stream addition and removal. There are a number of caveats to this - initial renegotiation support and many complex scenarios are known - to require some work. - -- webrtcbin now exposes the internal ICE object for advanced - configuration options. Using the internal ICE object, it is possible - to toggle UDP or TCP connection usage as well as provide local - network addresses. - -- Fix a number of call flows within webrtcbin’s GstPromise handling - where a promise was never replied to. This has been fixed and now a - promise will always receive a reply. - -- webrtcbin now exposes a latency property for configuring the - internal rtpjitterbuffer latency and buffering when receiving - streams. - -- webrtcbin now only synchronises the RTP part of a stream, allowing - RTCP messages to skip synchronisation entirely. - -- Fixed most of the webrtcbin state properties (connection-state, - ice-connection-state, signaling-state, but not ice-gathering-state - as that requires newer API in libnice and will be fixed in the next - release series) to advance through the state values correctly. Also - implemented DTLS connection states in the DTLS elements so that - peer-connection-state is not always new. - -- webrtcbin now accounts for the a=ice-lite attribute in a remote SDP - offer and will configure the internal ICE implementation - accordingly. - -- webrtcbin will now resolve .local candidate addresses using the - system DNS resolver. .local candidate addresses are now produced by - web browsers to help protect the privacy of users. - -- webrtcbin will now add candidates found in the SDP to the internal - ICE agent. This was previously unsupported and required using the - add-ice-candidate signal manually from the application. - -- webrtcbin will now correctly parse a TURN URI that contains a - username or password with a : in it. - -- The GStreamer WebRTC library gained a GstWebRTCDataChannel object - roughly matching the interface exposed by the WebRTC specification - to allow for easier binding generation and use of data channels. - -OpenGL integration - -GStreamer OpenGL bindings/build related changes - -- The GStreamer OpenGL library (libgstgl) now ships pkg-config files - for platform-specific API where libgstgl provides a public - integration interface and a pkg-config file for a dependency on the - detected OpenGL headers. The new list of pkg-config files in - addition to the original gstreamer-gl-1.0 are gstreamer-gl-x11-1.0, - gstreamer-gl-wayland-1.0, gstreamer-gl-egl-1.0, and - gstreamer-gl-prototypes-1.0 (for OpenGL headers when including - gst/gl/gstglfuncs.h). - -- GStreamer OpenGL now ships some platform-specific introspection data - for platforms that have a public interface. This should allow for - easier integration with bindings involving platform specific - functionality. The new introspection data files are named - GstGLX11-1.0, GstGLWayland-1.0, and GstGLEGL-1.0. - -GStreamer OpenGL Features - -- The iOS implementation no longer accesses UIKit objects off the main - thread fixing a loud warning message when used in iOS applications. - -- Support for mouse and keyboard handling using the GstNavigation - interface was added for the wayland implementation complementing the - already existing support for the X11 and Windows implementations. - -- A new helper base class for source elements, GstGLBaseSrc is - provided to ease writing source elements producing OpenGL video - frames. - -- Support for some more 12-bit and 16-bit video formats (Y412_LE, - Y412_BE, Y212_LE, Y212_BE, P012_LE, P012_BE, P016, NV16, NV61) was - added to glcolorconvert. - -- glupload can now import dma-buf’s into external-oes textures. - -- A new display type for EGLDevice-based systems was added. It is - currently opt-in by using either the GST_GL_PLATFORM=egl-device - environment variable or manual construction - (gst_gl_display_egl_device_new*()) due to compatibility issues with - some platforms. - -- Support was added for WinRT/UWP using the ANGLE project for running - OpenGL-based pipelines within a UWP application. - -- Various elements now support changing the GstGLDisplay to be used at - runtime in simple cases. This is primarily helpful for changing or - adding an OpenGL-based video sink that must share an OpenGL context - with an external source to an already running pipeline. - -GStreamer Vulkan integration - -- There is now a GStreamer Vulkan library to provide integration - points and helpers with applications and external GStreamer Vulkan - based elements. The structure of the library is modelled similarly - to the already existing GStreamer OpenGL library. Please note that - the API is still unstable and may change in future releases, - particularly around memory handling. The GStreamer Vulkan library - contains objects for sharing the vkInstance, vkDevice, vkQueue, - vkImage, VkMemory, etc with other elements and/or the application as - well as some helper objects for using Vulkan in an application or - element. - -- Added support for building and running on/for the Android and - Windows systems to complement the existing XCB, Wayland, MacOS, and - iOS implementations. - -- XCB gained support for mouse/keyboard events using the GstNavigation - API. - -- New vulkancolorconvert element for converting between color formats. - vulkancolorconvert can currently convert to/from all 8-bit RGBA - formats as well as 8-bit RGBA formats to/from the YUV formats AYUV, - NV12, and YUY2. - -- New vulkanviewconvert element for converting between stereo view - layouts. vulkanviewconvert can currently convert between all of the - single memory formats (side-by-side, top-bottom, column-interleaved, - row-interleaved, checkerboard, left, right, mono). - -- New vulkanimageidentity element for a blit from the input vulkan - image/s to a new vulkan image/s. - -- The vulkansink element can now scale the input image to the output - window/surface size where that information is available. - -- The vulkanupload element can now configure a transfer from system - memory to VulkanImage-based memory. Previously, this required two - vulkanupload elements. - -Tracing framework and debugging improvements - -- gst_tracing_get_active_tracers() returns a list of active tracer - objects. This can be used to interact with tracers at runtime using - GObject API such as action signals. This has been implemented in the - leaks tracer for snapshotting and retrieving leaked/active objects - at runtime. - -- The leaks tracer can now be interacted with programmatically at - runtime via GObject action signals: - - - get-live-object returns a list of live (allocated) traced - objects - - log-live-objects logs a list of live objects into the debug log. - This is the same as sending the SIGUSR1 signal on unix systems, - but works on all operating systems including Windows. - - activity-start-tracking, activity-get-checkpoint, - activity-log-checkpoint, activity-stop-tracking: add support for - tracking and checkpointing objects, similar to what was - previously available via SIGUSR2 on unix systems, but works on - all operating systems including Windows. - -- various GStreamer gdb debug helper improvements: - - - new ‘gst-pipeline-tree’ command - - more gdb helper functions: gst_element_pad(), gst_pipeline() and - gst_bin_get() - - support for queries and buffers - - print more info for segment events, print event seqnums, object - pointers and structures - - improve gst-print command to show more pad and element - information +Less jitter when waiting on the system clock -Tools +- Better system clock wait accuracy, less jitter: where available, + clock_nanosleep is used for higher accuracy for waits below 500 + usecs, and waits below 2ms will first use the regular waiting system + and then clock_nanosleep for the remainder. The various wait + implementation have a latency ranging from 50 to 500+ microseconds. + While this is not a major issue when dealing with a low number of + waits per second (for ex: video), it does introduce a non-negligible + jitter for synchronisation of higher packet rate systems. + +Video decoder subframe support + +- The GstVideoDecoder base class gained API to process input at the + sub-frame level. That way video decoders can start decoding slices + before they have received the full input frame in its entirety (to + the extent this is supported by the codec, of course). This helps + with CPU utilisation and reduces latency. + +- This functionality is now being used in the OpenJPEG JPEG 2000 + decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and + the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input). -gst-launch-1.0 +Miscellaneous other changes and enhancements -- now prints the pipeline position and duration if available when the - pipeline is advancing. This is hopefully more user-friendly and - gives visual feedback on the terminal that the pipeline is actually - up and running. This can be disabled with the --no-position command - line option. +- GstDeviceMonitor no longer fails to start just because one of the + device providers failed to start. That could happen for example on + systems where the pulseaudio device provider is installed, but + pulseaudio isn’t actually running but ALSA is used for audio + instead. In the same vein the device monitor now keeps track of + which providers have been started (via the new + gst_device_provider_is_started()) and only stops actually running + device providers when stopping the device monitor. + +- On embedded systems it can be useful to create a registry that can + be shared and read by multiple processes running as different users. + It is now possible to set the new GST_REGISTRY_MODE environment + variable to specify the file mode for the registry file, which by + default is set to be only user readable/writable. + +- GstNetClientClock will signal lost sync in case the remote time + resets (e.g. because device power cycles), by emitting the “synced” + signal with synced=FALSE parameter, so applications can take action. + +- gst_value_deserialize_with_pspec() allows deserialisation with a + hint for what the target GType should be. This allows for example + passing arrays of flags through the command line or + gst_util_set_object_arg(), eg: foo="<bar,bar+baz>". + +- It’s now possible to create an empty GstVideoOverlayComposition + without any rectangles by passing a NULL rectangle to + gst_video_overlay_composition_new(). This is useful for bindings and + simplifies application code in some places. + +Tracing framework, debugging and testing improvements + +- New factories tracer to list loaded elements (and other plugin + features). This can be useful to collect a list of elements needed + for an application, which in turn can be used to create a tailored + minimal GStreamer build that contains just the elements needed and + nothing else. +- New plugin-feature-loaded tracing hook for use by tracers like the + new factories tracer + +- GstHarness: Add gst_harness_set_live() so that harnesses can be set + to non-live and return is-live=false in latency queries if needed. + Default behaviour is to always return is-live=true in latency + queries. + +- navseek: new "hold-eos" property. When enabled, the element will + hold back an EOS event until the next keystroke (via navigation + events). This can be used to keep a video sink showing the last + frame of a video pipeline until a key is pressed instead of tearing + it down immediately on EOS. + +- New fakeaudiosink element: mimics an audio sink and can be used for + testing and CI pipelines on systems where no audio system is + installed or running. It differs from fakesink in that it only + support audio caps and syncs to the clock by default like a normal + audio sink. It also implements the GstStreamVolume interface like + most audio sinks do. + +- New videocodectestsink element for video codec conformance testing: + Calculates MD5 checksums for video frames and skips any padding + whilst doing so. Can optionally also write back the video data with + padding removed into a file for easy byte-by-byte comparison with + reference data. -- the parse-launch pipeline syntax now has support for presets: - use@preset=<preset-name>" after an element to load a preset. +Tools gst-inspect-1.0 -- new --color command line option to force coloured output even if not - connected to a tty +- Can sort the list of plugins by passing --sort=name as command line + option -gst-tester-1.0 (new) +gst-launch-1.0 -- gst-tester-1.0 is a new tool for plugin developers to launch - .validatetest files with TAP compatible output, meaning it can - easily and cleanly be integrated with the meson test harness. It - allows you to use gst-validate (from the gst-devtools module) to - write integration tests in any GStreamer repository whilst keeping - the tests as close as possible to the code. The tool transparently - handles gst-validate being installed or not: if it is not installed - those integration tests will simply be skipped. +- will now error out on top-level properties that don’t exist and + which were silently ignored before +- On Windows the high-resolution clock is enabled now, which provides + better clock and timer performance on Windows (see Windows section + below for more details). gst-play-1.0 -- interactive keyboard controls now also work on Windows - -gst-transcoder-1.0 (new) - -- gst-transcoder-1.0 is a new command line tool to transcode one URI - into another URI based on the specified encoding profile using the - new GstTranscoder API (see above). +- New --start-position command line argument to start playback from + the specified position +- Audio can be muted/unmuted in interactive mode by pressing the m + key. +- On Windows the high-resolution clock is enabled now (see Windows + section below for more details) + +gst-device-monitor-1.0 + +- New --include-hidden command line argument to also show “hidden” + device providers + +ges-launch-1.0 + +- New interactive mode that allows seeking and such. Can be disabled + by passing the --no-interactive argument on the command line. +- Option to forward tags +- Allow using an existing clip to determine the rendering format (both + topology and profile) via new --profile-from command line argument. GStreamer RTSP server -- Fix issue where the first few packets (i.e. keyframes) could - sometimes be dropped if the rtsp media pipeline had a live input. - This was a regression from GStreamer 1.14. There are more fixes - pending for that which will hopefully land in 1.18.1. - -- Fix backpressure handling when sending data in TCP interleave mode - where RTSP requests and responses and RTP/RTCP packets flow over the - same RTSP TCP connection: The previous implementation would at some - point stop sending data to other clients when a single client - stopped consuming data or did not consume data fast enough. This - obviously created problems for shared media, where the same stream - from a single producer pipeline is sent to multiple clients. Instead - we now manage a backlog in the server’s stream-transport component - and remove slow clients once this backlog exceeds a maximum duration - (which is currently hardcoded). - -- Onvif Streaming Specification trick modes support (see section at - the beginning) - -- Scale/Speed header support: Speed will deliver the data at the - requested speed, which means increasing the data bandwidth for - speeds > 1.0. Scale will attempt to do the same without affecting - the overall bandwidth requirement vis-a-vis normal playback speed - (e.g. it might drop data for fast-forward playback). - -- rtspclientsink: send buffer lists in one go for better performance +- GstRTSPMediaFactory gained API to disable RTCP + (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property). + Previously RTCP was always allowed for all RTSP medias. With this + change it is possible to disable RTCP completely, irrespective of + whether the client wants to do RTCP or not. + +- Make a mount point of / work correctly. While not allowed by the + RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the + wild. It is now possible to use / as a mount path in + gst-rtsp-server, e.g. rtsp://example.com/ would work with this now. + Note that query/fragment parts of the URI are not necessarily + correctly handled, and behaviour will differ between various + client/server implementations; so use it if you must but don’t bug + us if it doesn’t work with third party clients as you’d hoped. + +- multithreading fixes (races, refcounting issues, deadlocks) + +- ONVIF audio backchannel fixes + +- ONVIF trick mode optimisations + +- rtspclientsink: new "update-sdp" signal that allows updating the SDP + before sending it to the server via ANNOUNCE. This can be used to + add additional metadata to the SDP, for example. The order and + number of medias must not be changed, however. GStreamer VAAPI -- A lot of work was done adding support for media-driver (iHD), the - new VAAPI driver for Intel, mostly for Gen9 onwards. - -- Available color formats and frame sizes are now detected at run-time - according to the context configuration. - -- Gallium drivers have been re-enabled in the allowed drivers list - -- Improved the mapping between VA formats and GStreamer formats by - generating a mapping table at run-time since even among different - drivers the mapping might be different, particularly for RGB with - little endianness. +- new AV1 decoder element (vaapiav1dec) -- The experimental Flexible Encoding Infrastructure (FEI) elements - have been removed since they were not really actively maintained or - tested. +- H.264 decoder: handle stereoscopic 3D video with frame packing + arrangement SEI messages -- Enhanced the juggling of DMABuf buffers and VASurface metas +- H.265 encoder: added Screen Content Coding extensions support -- New vaapioverlay element: a compositor element using VA VPP blend - capabilities to accelerate overlaying and compositing. Example - pipeline: +- H.265 decoder: gained MAIN_444_12 profile support (decoded to + Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE) - gst-launch-1.0 -vf videotestsrc ! vaapipostproc ! tee name=testsrc ! queue \ - ! vaapioverlay sink_1::xpos=300 sink_1::alpha=0.75 name=overlay ! vaapisink \ - testsrc. ! queue ! overlay. +- vaapipostproc: gained BT2020 color standard support -vaapipostproc +- vaapidecode: now generates caps templates dynamically at runtime in + order to advertise actually supported caps instead of all + theoretically supported caps. -- added video-orientation support, supporting frame mirroring and - rotation - -- added cropping support, either via properties (crop-left, - crop-right, crop-bottom and crop-top) or buffer meta. - -- new skin-tone-enhancenment-level property which is the iHD - replacement of the i965 driver’s sink-tone-level. Both are - incompatible with each other, so both were kept. - -- handle video colorimetry - -- support HDR10 tone mapping - -vaapisink - -- resurrected wayland backend for non-weston compositors by extracting - the DMABuf from the VASurface and rendering it. - -- merged the video overlay API for wayland. Now applications can - define the “window” to render on. - -- demoted the vaapisink element to secondary rank since libva - considers rendering as a second-class feature. - -VAAPI Encoders - -- new common target-percentage property which is the desired target - percentage of bitrate for variable rate control. - -- encoders now extract their caps from the driver at registration - time. - -- vaapivp9enc: added support for low power mode and support for - profile 2 (profile 0 by default) - -- vaapih264enc: new max-qp property that sets the maximum quantization - value. Support for ICQ and QBVR bitrate control mode, adding a - quality-factor property for these modes. Support baseline profile as - constrained-baseline - -- vaapih265enc: - - - support for main-444 and main-12 encoding profiles. - - new max-qp property that sets the maximum quantization value. - - support for ICQ and QBVR bitrate control mode, adding a - quality-factor property for these modes. - - handle SCC profiles. - - num-tile-cols and num-tile-row properties to specify the number - of tiles to use. - - the low-delay-b property was deprecated and is now determined - automatically. - - improved profile selection through caps. - -VAAPI Decoders - -- Decoder surfaces are not bound to their context any longer and can - thus be created and used dynamically, removing the deadlock - headache. - -- Reverse playback is now fluid - -- Forward Region-of-Interest (ROI) metas downstream - -- GLTextureUploadMeta uses DMABuf when GEM is not available. Now - Gallium drivers can use this meta for rendering with EGL. - -- vaapivp9dec: support for 4:2:2 and 4:4:4 chroma type streams - -- vaapih265dec: skip all pictures prior to the first I-frame. Enable - passing range extension flags to the driver. Handle SCC profiles. - -- vaapijpegdec: support for 4:0:0, 4:1:1, 4:2:2 and 4:4:4 chroma types - pictures - -- vaapih264dec: handle baseline streams as constrained-baseline if - possible and make it more tolerant when encountering unknown NALs +- GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM + device when a DRM display is used. It is ignored when other types of + displays are used. By default /dev/dri/renderD128 is used for DRM + display. GStreamer OMX -- omxvideoenc: use new video encoder subframe API to push out slices - as soon as they’re ready - -- omxh264enc, omxh265enc: negotiate subframe mode via caps. To enable - it, force downstream caps to video/x-h264,alignment=nal or - video/x-h265,alignment=nal. - -- omxh264enc: Add ref-frames property - -- Zynq ultrascale+ specific video encoder/decoder improvements: - - - GRAY8 format support - - support for alternate fields interlacing mode - - video encoder: look-ahead, long-term-ref, and long-term-freq - properties +- subframe support in H.264/H.265 decoders GStreamer Editing Services and NLE -- Added nested timelines and subproject support so that GES projects - can be used as clips, potentially serializing nested projects in the - main file or referencing external project files. - -- Implemented an OpenTimelineIO GES formatter. This means GES and - GStreamer can now load and save projects in all the formats - supported by otio. - -- Implemented a GESMarkerList object which allow setting timed - metadata on any GES object. - -- Fixed audio rendering issues during clip transition by ensuring that - a single segment is pushed into encoders. - -- The GESUriClipAsset API is now MT safe. - -- Added ges_meta_container_register_static_meta() to allow fixing a - type for a specific metadata without actually setting a value. - -- The framepositioner element now handles resizing the project and - keeps the same positioning when the aspect ratio is not changed . - -- Reworked the documentation, making it more comprehensive and much - more detailed. - -- Added APIs to retrieve natural size and framerate of a clip (for - example in the case of URIClip it is the framerate/size of the - underlying file). - -- ges_container_edit() is now deprecated and GESTimelineElement gained - the ges_timeline_element_edit() method so the editing API is now - usable from any element in the timeline. - -- GESProject::loading was added so applications can be notified about - when a new timeline starts loading. - -- Implemented the GstStream API in GESTimeline. - -- Added a way to add a timeoverlay inside the test source (potentially - with timecodes). - -- Added APIs to convert times to frame numbers and vice versa: - - - ges_timeline_get_frame_time() - - - ges_timeline_get_frame_at() - - - ges_clip_asset_get_frame_time() - - - ges_clip_get_timeline_time_from_source_frame() - - Quite a few validate tests have been implemented to check the - behavior for various demuxer/codec formats - -- Added ges_layer_set_active_for_tracks() which allows muting layers - for the specified tracks - -- Deprecated GESImageSource and GESMultiFileSource now that we have - imagesequencesrc which handles the imagesequence “protocol” - -- Stopped exposing ‘deinterlacing’ children properties for clip types - where they do not make sense. - -- Added support for simple time remapping effects +- framepositioner: new "operator" property to access blending modes in + the compositor +- timeline: Implement snapping to markers +- smart-mixer: Add support for d3d11compositor and glvideomixer +- titleclip: add "draw-shadow" child property +- ges:// URI support to define a timeline from a description. +- command-line-formatter + - Add track management to timeline description + - Add keyframe support +- ges-launch-1.0: + - Add an interactive mode where we can seek etc… + - Add option to forward tags + - Allow using an existing clip to determine the rendering format + (both topology and profile) via new --profile-from command line + argument. +- Fix static build GStreamer validate -- Introduced the concept of “Test files” allowing to implement “all - included” test cases, meaning that inside the file the following can - be defined: - - - The application arguments - - The validate configurations - - The validate scenario - - This replaces the previous big dictionary file in - gst-validate-launcher to implement specific test cases. - - We set several variables inside the files (as well as inside - scenarios and config files) to make them relocatable. - - The file format has been enhanced so it is easier to read and write, - for example line ending with a coma or (curly) brackets can now be - used as continuation marker so you do not need to add \ at the end - of lines to write a structure on several lines. - -- Support the imagesequence “protocol” and added integration tests for - it. - -- Added action types to allow the scenario to run the Test Clock for - better reproducibility of tests. - -- Support generating tests to check that seeking is frame accurate - (base on ssim). - -- Added ways to record buffers checksum (in different ways) in the - validateflow module. - -- Added vp9 encoding tests. - -- Enhanced seeking action types implementation to allow support for - segment seeks. - -- Output improvements: - - - Logs are now in markdown formats (and bat is used to dump them - if available). - - File format issues in scenarios/configs/tests files are nicely - reported with the line numbers now. +- report: Add a way to force backtraces on reports even if not a + critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE) +- Add a flag to gst_validate_replace_variables_in_string() allow + defining how to resolve variables in structs +- Add gst_validate_bin_monitor_get_scenario() to get the bin monitor + scenario, which is useful for applications that use Validate + directly. +- Add an expected-values parameter to wait, message-type=XX allowing + more precise filtering of the message we are waiting for. +- Add config file support: each test can now use a config file for the + given media file used to test. +- Add support to check properties of object properties +- scenario: Add an "action-done" signal to signal when an action is + done +- scenario: Add a "run-command" action type +- scenario: Allow forcing running action on idle from scenario file +- scenario: Allow iterating over arrays in foreach +- scenario: Rename ‘interlaced’ action to ‘non-blocking’ +- scenario: Add a non-blocking flag to the wait signal GStreamer Python Bindings -- Python 2.x is no longer supported +- Fixes for Python 3.10 +- Various build fixes +- at least one known breaking change caused by g-i annotation changes + (see below) -- Support mapping buffers without any memcpy: - - - Added a ContextManager to make the API more pythonic - - with buf.map(Gst.MapFlags.READ | Gst.MapFlags.WRITE) as info: - info.data[42] = 0 +GStreamer C# Bindings -- Added high-level helper API for constructing pipelines: +- Fix GstDebugGraphDetails enum +- Updated to latest GtkSharp +- Updated to include GStreamer 1.20 API - - Gst.Bin.make_and_add(factory_name, instance_name=None) - - Gst.Element.link_many(element, ...) +GStreamer Rust Bindings and Rust Plugins -GStreamer C# Bindings +- The GStreamer Rust bindings are released separately with a different + release cadence that’s tied to gtk-rs, but the latest release has + already been updated for the upcoming new GStreamer 1.20 API (v1_20 + feature). + +- gst-plugins-rs, the module containing GStreamer plugins written in + Rust, has also seen lots of activity with many new elements and + plugins. See the New Elements section above for a list of new Rust + elements. -- Bind gst_buffer_new_wrapped() manually to fix memory handling. +Build and Dependencies -- Fix gst_promise_new_with_change_func() where bindgen didn’t properly - detect the func as a closure. +- Meson 0.59 or newer is now required to build GStreamer. -- Declare GstVideoOverlayComposition and GstVideoOverlayRectangle as - opaque type and subclasses of Gst.MiniObject. This changes the API - but without this all usage will cause memory corruption or simply - not work. +- The GLib requirement has been bumped to GLib 2.56 or newer (from + March 2018). -- on Windows, look for gstreamer, glib and gobject DLLs using the MSVC - naming convention (i.e. gstvideo-1.0-0.dll instead of - libgstvideo-1.0-0.dll). +- The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8 - The names of these DLLs have to be hardcoded in the bindings, and - most C# users will probably be using the Microsoft toolchain anyway. +- The souphttpsrc plugin is no longer linked against libsoup but + instead tries to pick up either libsoup2 or libsoup3 dynamically at + runtime. Distro packagers please ensure to add a dependency on one + of the libsoup runtimes to the gst-plugins-good package so that + there is actually a libsoup for the plugin to find! - This means that the MSVC compiler is now required to build the - bindings, MingW will no longer work out of the box. +Explicit opt-in required for build of certain plugins with (A)GPL dependencies -GStreamer Rust Bindings and Rust Plugins +Some plugins have GPL- or AGPL-licensed dependencies and those plugins +will no longer be built by default unless you have explicitly opted in +to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson, +even if the required dependencies are available. -The GStreamer Rust bindings are released separately with a different -release cadence that’s tied to gtk-rs, but the latest release has -already been updated for the new GStreamer 1.18 API, so there’s -absolutely no excuse why your next GStreamer application can’t be -written in Rust anymore. - -gst-plugins-rs, the module containing GStreamer plugins written in Rust, -has also seen lots of activity with many new elements and plugins. - -What follows is a list of elements and plugins available in -gst-plugins-rs, so people don’t miss out on all those potentially useful -elements that have no C equivalent. - -Rust audio plugins - -- audiornnoise: New element for audio denoising which implements the - noise removal algorithm of the Xiph RNNoise library, in Rust -- rsaudioecho: Port of the audioecho element from gst-plugins-good - rsaudioloudnorm: Live audio loudness normalization element based on - the FFmpeg af_loudnorm filter -- claxondec: FLAC lossless audio codec decoder element based on the - pure-Rust claxon implementation -- csoundfilter: Audio filter that can use any filter defined via the - Csound audio programming language -- lewtondec: Vorbis audio decoder element based on the pure-Rust - lewton implementation - -Rust video plugins - -- cdgdec/cdgparse: Decoder and parser for the CD+G video codec based - on a pure-Rust CD+G implementation, used for example by karaoke CDs -- cea608overlay: CEA-608 Closed Captions overlay element -- cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT - subtitles) converter -- tttocea608: CEA-608 Closed Captions from timed-text converter -- mccenc/mccparse: MacCaption Closed Caption format encoder and parser -- sccenc/sccparse: Scenarist Closed Caption format encoder and parser -- dav1dec: AV1 video decoder based on the dav1d decoder implementation - by the VLC project -- rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e - encoder implementation -- rsflvdemux: Alternative to the flvdemux FLV demuxer element from - gst-plugins-good, not feature-equivalent yet -- rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust - implementations by the image-rs project - -Rust text plugins - -- textwrap: Element for line-wrapping timed text (e.g. subtitles) for - better screen-fitting, including hyphenation support for some - languages - -Rust network plugins - -- reqwesthttpsrc: HTTP(S) source element based on the Rust - reqwest/hyper HTTP implementations and almost feature-equivalent - with the main GStreamer HTTP source souphttpsrc -- s3src/s3sink: Source/sink element for the Amazon S3 cloud storage -- awstranscriber: Live audio to timed text transcription element using - the Amazon AWS Transcribe API - -Generic Rust plugins - -- sodiumencrypter/sodiumdecrypter: Encryption/decryption element based - on libsodium/NaCl -- togglerecord: Recording element that allows to pause/resume - recordings easily and considers keyframe boundaries -- fallbackswitch/fallbacksrc: Elements for handling potentially - failing (network) sources, restarting them on errors/timeout and - showing a fallback stream instead -- threadshare: Set of elements that provide alternatives for various - existing GStreamer elements but allow to share the streaming threads - between each other to reduce the number of threads -- rsfilesrc/rsfilesink: File source/sink elements as replacements for - the existing filesrc/filesink elements +See Building plugins with (A)GPL-licensed dependencies for more details +and a non-exhaustive list of plugins affected. -Build and Dependencies +gst-build: replaced by mono repository -- The Autotools build system has finally been removed in favour of the - Meson build system. Developers who currently use gst-uninstalled - should move to gst-build. - -- API and plugin documentation are no longer built with gtk_doc. The - gtk_doc documentation has been removed in favour of a new unified - documentation module built with hotdoc (also see “Documentation - improvements” section below). Distributors should use the - documentation release tarball instead of trying to package hotdoc - and building the documentation from scratch. - -- gst-plugins-bad now includes an internal copy of libusrsctp, as - there are problems in usrsctp with global shared state, lack of API - stability guarantees, and the absence of any kind of release - process. We also can’t rely on distros shipping a version with the - fixes we need. Both firefox and Chrome bundle their own copies too. - It is still possible to build against an external copy of usrsctp if - so desired. - -- nvcodec no longer needs the NVIDIA NVDEC/NVENC SDKs available at - build time, only at runtime. This allows distributions to ship this - plugin by default and it will just start to work when the required - run-time SDK libraries are installed by the user, without users - needing to build and install the plugin from source. - -- the gst-editing-services tarball is now named gst-editing-services - for consistency (used to be gstreamer-editing-services). - -- the gst-validate tarball has been superseded by the gst-devtools - tarball for consistency with the git module name. - -gst-build - -gst-build is a meta-module and serves primarily as our uninstalled -development environment. It makes it easy to build most of GStreamer, -but unlike Cerbero it only comes with a limited number of external -dependencies that can be built as subprojects if they are not found on -the system. - -gst-build is based on Meson and replaces the old autotools -gst-uninstalled script. - -- The ‘uninstalled’ target has been renamed to ‘devenv’ - -- Experimental gstreamer-full library containing all built plugins and - their deps when building with -Ddefault_library=static. A monolithic - library is easier to distribute, and may be required in some - environments. GStreamer core, GLib and GObject are always included, - but external dependencies are still dynamically linked. The - gst-full-libraries meson option allows adding other GStreamer - libraries to the gstreamer-full build. This is an experiment for now - and its behaviour or API may still change in future releases. - -- Add glib-networking as a subproject when glib is a subproject and - load gio modules in the devenv, tls option control whether to use - openssl or gnutls. - -- git-worktree: Allow multiple worktrees for subproject branches - -- Guard against meson being run from inside the uninstalled devenv, as - this might have unexpected consequences. - -- our ffmpeg and x264 meson ports have been updated to the latest - stable version (you might need to update the subprojects checkout - manually though, or just remove the checkouts so meson checks out - the latest version again; improvements for this are pending in - meson, but not merged yet). +See mono repository section above and the GStreamer mono repository FAQ. Cerbero @@ -1803,1568 +1605,494 @@ on platforms where dependencies are not readily available, such as Windows, Android, iOS and macOS. -General improvements +General Cerbero improvements -- Recipe build steps are done in parallel wherever possible. This - leads to massive improvements in overall build time. -- Several recipes were ported to Meson, which improved build times -- Moved from using both GnuTLS and OpenSSL to only OpenSSL -- Moved from yasm to nasm for all assembly compilation -- Support zsh when running the cerbero shell command -- Numerous version upgrades for dependencies -- Default to xz for tarball binary packages. bz2 can be selected with - the --compress-method option to package. -- Added boolean variant for controlling the optimization level: - -v optimization -- Ship .pc pkgconfig files for all plugins in the binary packages -- CMake and nasm will only be built by Cerbero if the system versions - are unusable -- The nvcodec variant was removed and the nvcodec plugin is built by - default now (as it no longer requires the SDK to be installed at - build time, only at runtime) - -macOS / iOS - -- Minimum iOS SDK version bumped to 11.0 -- Minimum macOS SDK version bumped to 10.11 -- No longer need to manually add support for newer iOS SDK versions -- Added Vulkan elements via MoltenVK -- Build times were improved by code-signing all build tools -- macOS framework ships all gstreamer libraries instead of an outdated - subset -- Ship pkg-config in the macOS framework package -- fontconfig: Fix EXC_BAD_ACCESS crash on iOS ARM64 -- Improved App Store compatibility by setting LC_VERSION_MIN_MACOSX, - fixing relocations, and improved bitcode support +- Plugin removed: libvisual +- New plugins: rtpmanagerbad and rist -Windows +macOS / iOS specific Cerbero improvements -- MinGW-GCC toolchain was updated to 8.2. It uses the Universal CRT - instead of MSVCRT which eliminates cross-CRT issues in the Visual - Studio build. -- Require Windows 7 or newer for running binaries produced by Cerbero -- Require Windows x86_64 for running Cerbero to build binary packages -- Cerbero no longer uses C:/gstreamer/1.0 as a prefix when building. - That prefix is reserved for use by the MSI installers. -- Several recipes can now be buit with Visual Studio instead of MinGW. - Ported to meson: opus, libsrtp, harfbuzz, cairo, openh264, libsoup, - libusrsctp. Existing build system: libvpx, openssl. -- Support building using Visual Studio for 32-bit x86. Previously we - only supported building for 32-bit x86 using the MinGW toolchain. -- Fixed annoying msgmerge popups in the middle of cerbero builds -- Added configuration options vs_install_path and vs_install_version - for specifying custom search locations for older Visual Studio - versions that do not support vswhere. You can set these in - ~/.cerbero/cerbero.cbc where ~ is the MSYS homedir, not your Windows - homedir. -- New Windows-specific plugins: d3d11, mediafoundation, wasapi2 -- Numerous compatibility and reliability fixes when running Cerbero on - Windows, especially non-English locales -- proxy-libintl now exports the same symbols as gettext, which makes - it a drop-in replacement -- New mapping variant for selecting the Visual Studio CRT to use: - -v vscrt=<value>. Valid values are md, mdd, and auto (default). A - separate prefix is used when building with either md (release) or - mdd (debug), and the outputted package will have +debug in the - filename. This variant is also used for selecting the correct Qt - libraries (debug vs release) to use when building with -v qt5 on - Windows. -- Support cross-compile on Windows to Windows ARM64 and ARMv7 -- Support cross-compile on Windows to the Universal Windows Platform - (UWP). Only the subset of plugins that can be built entirely with - Visual Studio will be selected in this case. To do so, use the - config/cross-uwp-universal.cbc configuration, which will build - ARM64, x86, and x86_64 binaries linked to the release CRT, with - optimizations enabled, and debugging turned on. You can combine this - with -v vscrt=mdd to produce binaries linked to the debug CRT. You - can turn off optimizations with the -v nooptimization variant. +- XCode 12 support +- macOS OS release support is now future-proof, similar to iOS +- macOS Apple Silicon (ARM64) cross-compile support has been added, + including Universal binaries. There is a known bug regarding this on + ARM64. +- Running Cerbero itself on macOS Apple Silicon (ARM64) is currently + experimental and is known to have bugs + +Windows specific Cerbero improvements + +- Visual Studio 2022 support has been added +- bootstrap is faster since it requires building fewer build-tools + recipes on Windows +- package is faster due to better scheduling of recipe stages and + elimination of unnecessary autotools regeneration +- The following plugins are no longer built on Windows: + - a52dec (another decoder is still available in libav) + - dvdread + - resindvd Windows MSI installer -- Require Windows 7 or newer for running GStreamer -- Fixed some issues with shipping of pkg-config in the Windows - installers -- Plugin PDB debug files are now shipped in the development package, - not the runtime package -- Ship installers for 32-bit binaries built with Visual Studio -- Ship debug and release “universal” (ARM64, X86, and X86_64) tarballs - built for the Universal Windows Platform -- Windows MSI installers now install into separate prefixes when - building with MSVC and MinGW. Previously both would be installed - into C:/gstreamer/1.0/x86 or C:/gstreamer/1.0/x86_64. Now, the - installation prefixes are: - - ---------------------------------------------------------------------------------------------------------------- - Target Path Build options - --------------------------- ------------------------------------ ----------------------------------------------- - MinGW 32-bit C:/gstreamer/1.0/mingw_x86 -c config/win32.cbc - - MinGW 64-bit C:/gstreamer/1.0/mingw_x86_64 -c config/win64.cbc - - MSVC 32-bit C:/gstreamer/1.0/msvc_x86 -c config/win32.cbc -v visualstudio +- no major changes - MSVC 64-bit C:/gstreamer/1.0/msvc_x86_64 -c config/win64.cbc -v visualstudio +Linux specific Cerbero improvements - MSVC 32-bit (debug) C:/gstreamer/1.0/msvc-debug_x86 -c config/win32.cbc -v visualstudio,vscrt=mdd +- Fedora, Debian OS release support is now more future-proof +- Amazon Linux 2 support has been added - MSVC 64-bit (debug) C:/gstreamer/1.0/msvc-debug_x86_64 -c config/win64.cbc -v visualstudio,vscrt=mdd - ---------------------------------------------------------------------------------------------------------------- +Android specific Cerbero improvements -Note: UWP binary packages are tarballs, not MSI installers. - -Linux - -- Support creating MSI installers using WiX when cross-compiling to - Windows -- Support running cross-windows binaries with Wine when using the - shell and runit cerbero commands -- Added bash-completion support inside the cerbero shell on Linux -- Require a system-wide installation of openssl on Linux -- Added variant -v vaapi to build gstreamer-vaapi and the new gstva - plugin -- Debian packaging was disabled because it does not work. Help in - fixing this is appreciated. -- Trimmed the list of packages needed for bootstrap on Linux - -Android - -- Updated to NDK r21 -- Support Vulkan -- Support Qt 5.14+ binary package layout +- no major changes Platform-specific changes and improvements Android -- opensles: Remove hard-coded buffer-/latency-time values and allow - openslessink to handle 48kHz streams. - -- photography interface and camera source: Add additional settings - relevant to Android such as: Exposure mode property, extra colour - tone values (aqua, emboss, sketch, neon), extra scene modes - (backlight, flowers, AR, HDR), and missing virtual methods for - exposure mode, analog gain, lens focus, colour temperature, min & - max exposure time. Add new effects and scene modes to Camera - parameters. +- No major changes macOS and iOS -- vtdec can now output to Vulkan-backed memory for zerocopy support - with the Vulkan elements. - -Windows - -- d3d11videosink: new Direct3D11-based video sink with support for - HDR10 rendering if supported. - -- Hardware-accelerated video decoding on Windows via DXVA2 / - Direct3D11 using native Windows APIs rather than per-vendor SDKs - (like MSDK for Intel or NVCODEC for NVidia). Plus modern Direct3D11 - integration rather than the almost 20-year old Direct3D9 from - Windows XP times used in d3dvideosink. Formats supported for - decoding are H.264, H.265, VP8, and VP9, and zero-copy operation - should be supported in combination with the new d3d11videosink. See - Seungha’s blog post “Windows DXVA2 (via Direct3D 11) Support in - GStreamer 1.17” for more details. - -- Microsoft Media Foundation plugin for hardware-accelerated video - encoding on Windows using native Windows APIs rather than per-vendor - SDKs. Formats supported for encoding are H.264, H.265 and VP9. Also - includes audio encoders for AAC and MP3. See Seungha’s blog post - “Bringing Microsoft Media Foundation to GStreamer” for some more - details about this. - -- new mfvideosrc video capture source element using the latest Windows - APIs rather than ancient APIs used by ksvideosrc/winks. ksvideosrc - should be considered deprecated going forward. - -- d3d11: add d3d11convert, a color space conversion and rescaling - element using shaders, and introduce d3d11upload and d3d11download - elements that work just like glupload and gldownload but for D3D11. - -- Universal Windows Platform (UWP) support, including official - GStreamer binary packages for it. Check out Nirbheek’s latest blog - post “GStreamer 1.18 supports the Universal Windows Platform” for - more details. +- applemedia: add ProRes support to vtenc and vtdec -- systemclock correctness and reliability fixes, and also don’t start - the system clock at 0 any longer (which shouldn’t make any - difference to anyone, as absolute clock time values are supposed to - be meaningless in themselves, only the rate of increase matters). - -- toolchain specific plugin registry: the registry cache is now named - differently for MSVC and MinGW toolchains/packages, which should - avoid problems when switching between binaries built with a - different toolchain. - -- new wasapi2 plugin mainly to support UWP applications. The core - logic of this plugin is almost identical to existing wasapi plugin, - but the main target is Windows 10 and UWP. This plugin uses WinRT - APIs, so will likely not work on Windows 8 or older. Unlike the - existing wasapi plugin, this plugin supports automatic stream - routing (auto fallback when device was removed) and device level - mute/volume control. Exclusive streaming mode is not supported, - however, and loopback features are not implemented yet. It is also - only possible to build this plugin with MSVC and the Windows 10 SDK, - it can’t be cross-compiled with the MingW toolchain. - -- new dxgiscreencapsrc element which uses the Desktop Duplication API - to capture the desktop screen at high speed. This is only supported - on Windows 8 or later. Compared to the existing elements - dxgiscreencapsrc offers much better performance, works in High DPI - environments and draws an accurate mouse cursor. - -- d3dvideosink was downgraded to secondary rank, d3d11videosink is - preferred now. Support OverlayComposition for GPU overlay - compositing of subtitles and logos. +- The GStreamer.framework location is now relocatable and is not + required to be /Library/Frameworks/ -- debug log output fixes, esp. with a non-UTF8 locale/codepage +- Cerbero now supports cross-compiling to macOS running on Apple + Silicon (ARM64), and Universal binaries are now available that can + be used on both X86_64 and ARM64 macOS. -- speex, jack: fixed crashes on Windows caused by cross-CRT issues +Windows -- gst-play-1.0 interactive keyboard controls now also work on Windows +- On Windows the high-resolution clock is enabled now in the + gst-launch-1.0 and gst-play-1.0 command line tools, which provides + better clock and timer performance on Windows, at the cost of higher + power consumption. By default, without the high-resolution clock + enabled, the timer precision on Windows is system-dependent and may + be as bad as 15ms which is not good enough for many multimedia + applications. Developers may want to do the same in their Windows + applications if they think it’s a good idea for their application + use case, and depending on the Windows version they target. This is + not done automatically by GStreamer because on older Windows + versions (pre-Windows 10) this affects a global Windows setting and + also there’s a power consumption vs. performance trade-off that may + differ from application to application. + +- dxgiscreencapsrc now supports resolution changes + +- The wasapi2 audio plugin was rewritten and now has a higher rank + than the old wasapi plugin since it has a number of additional + features such as automatic stream routing, and no + known-but-hard-to-fix issues. The plugin is always built if the + Windows 10 SDK is available now. + +- The wasapi device providers now detect and notify dynamic device + additions/removals + +- d3d11screencapturesrc: new desktop capture element, including + GstDeviceProvider implementation to enumerate/select target monitors + for capture. + +- Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs + (d3d11av1dec, d3d11mpeg2dec) + +- VP9 decoding got more reliable and stable thanks to a newly written + codec parser + +- Support for decoding interlaced H.264/AVC streams + +- Hardware-accelerated video deinterlacing (d3d11deinterlace) and + video mixing (d3d11compositor) + +- Video mixing with the Direct3D11 API (d3d11compositor) + +- MediaFoundation API based hardware encoders gained the ability to + receive Direct3D11 textures as an input + +- Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff + you’ll find in the 1.20 release” describes many of the + Windows-related improvements in more detail Linux -- kmssink: Add support for P010 and P016 formats +- bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink, + as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio + encoder (ldacenc) -- vah264dec: new experimental va plugin with an element for H.264 - decoding with VA-API. This novel approach, different from - gstreamer-vaapi, uses the gstcodecs library for decoder state - handling, which it is hoped will make for cleaner code because it - uses VA-API without further layers or wrappers. Check out Víctor’s - blog post “New VA-API H.264 decoder in gst-plugins-bad” for the full - lowdown and the limitations of this new plugin, and how to give it a - spin. - -- v4l2codecs: introduce a V4L2 CODECs Accelerator. This plugin will - support the new CODECs uAPI in the Linux kernel, which consists of - an accelerator interface similar to DXVA, NVDEC, VDPAU and VAAPI. So - far H.264 and VP8 are supported. This is used on certain embedded - systems such as i.mx8m, rk3288, rk3399, Allwinner H-series SoCs. +- kmssink: gained support for NV24, NV61, RGB16/BGR16 formats; + auto-detect NVIDIA Tegra driver Documentation improvements -- unified documentation containing tutorials, API docs, plugin docs, - etc. all under one roof, shipped in form of a documentation release - tarball containing both devhelp and html documentation. - -- all documentation is now generated using hotdoc, gtk-doc is no - longer used. Distributors should use the above-mentioned - documentation release tarball instead of trying to package hotdoc - and building the documentation from scratch. - -- there is now documentation for wrapper plugins like gst-libav and - frei0r, as well as tracer plugins. - -- for more info, check out Thibault’s “GStreamer Documentation” - lightning talk from the 2019 GStreamer Conference. - -- new API for plugins to support the documentation system: - - - new GParamSpecFlag GST_PARAM_DOC_SHOW_DEFAULT to make - gst-inspect-1.0 (and the documentation) show the paramspec’s - default value rather than the actually set value as default - - GstPadTemplate getter and setter for “documentation caps”, - gst_pad_template_set_documentation_caps() and - gst_pad_template_get_documentation_caps(): This can be used in - elements where the caps of pad templates are dynamically - generated and/or dependent on the environment, to override the - caps shown in the documentation (usually to advertise the full - set of possible caps). - - gst_type_mark_as_plugin_api() for marking types as plugin API, - used for plugin-internal types like enums, flags, pad - subclasses, boxed types, and such. - -Possibly Breaking Changes - -- GstVideo: the canonical list of raw video formats (for use in caps) - has been reordered, so video elements such as videotestsrc or - videoconvert might negotiate to a different format now than before. - The new format might be a higher-quality format or require more - processing overhead, which might affect pipeline performance. - -- mpegtsdemux used to wrongly advertise H.264 and H.265 video - elementary streams as alignment=nal. This has now been fixed and - changed to alignment=none, which means an h264parse or h265parse - element is now required after tsdemux for some pipelines where there - wasn’t one before, e.g. in transmuxing scenarios (tsdemux ! tsmux). - Pipelines without such a parser may now fail to link or error out at - runtime. As parsers after demuxers and before muxers have been - generally required for a long time now it is hoped that this will - only affect a small number of applications or pipelines. - -- The Android opensles audio source and sink used to have hard-coded - buffer-/latency-time values of 20ms. This is no longer needed with - newer Android versions and has now been removed. This means a higher - or lower value might now be negotiated by default, which can affect - pipeline performance and latency. +- hardware-accelerated GPU plugins will now no longer always list all + the element variants for all available GPUs, since those are + system-dependent and it’s confusing for users to see those in the + documentation just because the GStreamer developer who generated the + docs had multiple GPUs to play with at the time. Instead just show + the default elements. + +Possibly Breaking and Other Noteworthy Behavioural Changes + +- gst_parse_launch(), gst_parse_bin_from_description() and friends + will now error out when setting properties that don’t exist on + top-level bins. They were silently ignored before. + +- The GstWebRTC library does not expose any objects anymore with + public fields. Instead properties have been added to replace that + functionality. If you are accessing such fields in your application, + switch to the corresponding properties. + +- playbin and uridecodebin now emit the source-setup signal before the + element is added to the bin and linked so that the source element is + already configured before any scheduling query comes in, which is + useful for elements such as appsrc or giostreamsrc. + +- The source element inside urisourcebin (used inside uridecodebin3 + which is used inside playbin3) is no longer called "source". This + shouldn’t affect anyone hopefully, because there’s a "setup-source" + signal to configure the source element and no one should rely on + names of internal elements anyway. + +- The vp8enc element now expects bps (bits per second) for the + "temporal-scalability-target-bitrate" property, which is consistent + with the "target-bitrate" property. Since additional configuration + is required with modern libvpx to make temporal scaling work anyway, + chances are that very few people will have been using this property + +- vp8enc and vp9enc now default to “good quality” for the "deadline" + property rather then “best quality”. Having the deadline set to best + quality causes the encoder to be absurdly slow, most real-life users + will want the good quality tradeoff instead. + +- The experimental GstTranscoder library API in gst-plugins-bad was + changed from a GObject signal-based notification mechanism to a + GstBus/message-based mechanism akin to GstPlayer/GstPlay. + +- MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands: + timestamps passed by the application should be in running time now, + since users of the API can’t really be expected to predict the local + PTS of the muxer. + +- The GstContext used by souphttpsrc to share the session between + multiple element instances has changed. Previously it provided + direct access to the internal SoupSession object, now it only + provides access to an opaque, internal type. This change is + necessary because SoupSession is not thread-safe at all and can’t be + shared safely between arbitrary external code and souphttpsrc. + +- Python bindings: GObject-introspection related Annotation fixes have + led to a case of a GstVideo.VideoInfo-related function signature + changing in the Python bindings (possibly one or two other cases + too). This is for a function that should never have been exposed in + the first place though, so the bindings are being updated to throw + an exception in that case, and the correct replacement API has been + added in form of an override. Known Issues -- GStreamer 1.18 versions <= 1.18.4 would fail to build on Linux with - Meson 0.58 due to an issue with the include directories. - GStreamer >= 1.18.5 includes a fix for this. +- nothing in particular at this point (but also see possibly breaking + changes section above) Contributors -Aaron Boxer, Adam Duskett, Adam x Nilsson, Adrian Negreanu, Akinobu -Mita, Alban Browaeys, Alcaro, Alexander Lapajne, Alexandru Băluț, Alex -Ashley, Alex Hoenig, Alicia Boya García, Alistair Buxton, Ali Yousuf, -Ambareesh “Amby” Balaji, Amr Mahdi, Andoni Morales Alastruey, Andreas -Frisch, Andre Guedes, Andrew Branson, Andrey Sazonov, Antonio Ospite, -aogun, Arun Raghavan, Askar Safin, AsociTon, A. Wilcox, Axel Mårtensson, -Ayush Mittal, Bastian Bouchardon, Benjamin Otte, Bilal Elmoussaoui, -Brady J. Garvin, Branko Subasic, Camilo Celis Guzman, Carlos Rafael -Giani, Charlie Turner, Cheng-Chang Wu, Chris Ayoup, Chris Lord, -Christoph Reiter, cketti, Damian Hobson-Garcia, Daniel Klamt, Daniel -Molkentin, Danny Smith, David Bender, David Gunzinger, David Ing, David -Svensson Fors, David Trussel, Debarshi Ray, Derek Lesho, Devarsh -Thakkar, dhilshad, Dimitrios Katsaros, Dmitriy Purgin, Dmitry Shusharin, -Dominique Leuenberger, Dong Il Park, Doug Nazar, dudengke, Dylan McCall, -Dylan Yip, Ederson de Souza, Edward Hervey, Eero Nurkkala, Eike Hein, -ekwange, Eric Marks, Fabian Greffrath, Fabian Orccon, Fabio D’Urso, -Fabrice Bellet, Fabrice Fontaine, Fanchao L, Felix Yan, Fernando -Herrrera, Francisco Javier Velázquez-García, Freyr, Fuwei Tang, Gaurav -Kalra, George Kiagiadakis, Georgii Staroselskii, Georg Lippitsch, Georg -Ottinger, gla, Göran Jönsson, Gordon Hart, Gregor Boirie, Guillaume -Desmottes, Guillermo Rodríguez, Haakon Sporsheim, Haihao Xiang, Haihua -Hu, Havard Graff, Håvard Graff, Heinrich Kruger, He Junyan, Henry -Wilkes, Hosang Lee, Hou Qi, Hu Qian, Hyunjun Ko, ibauer, Ignacio Casal -Quinteiro, Ilya Smelykh, Jake Barnes, Jakub Adam, James Cowgill, James -Westman, Jan Alexander Steffens, Jan Schmidt, Jan Tojnar, Javier Celaya, -Jeffy Chen, Jennifer Berringer, Jens Göpfert, Jérôme Laheurte, Jim -Mason, Jimmy Ohn, J. Kim, Joakim Johansson, Jochen Henneberg, Johan -Bjäreholt, Johan Sternerup, John Bassett, Jonas Holmberg, Jonas Larsson, -Jonathan Matthew, Jordan Petridis, Jose Antonio Santos Cadenas, Josep -Torra, Jose Quaresma, Josh Matthews, Joshua M. Doe, Juan Navarro, -Juergen Werner, Julian Bouzas, Julien Isorce, Jun-ichi OKADA, Justin -Chadwell, Justin Kim, Keri Henare, Kevin JOLY, Kevin King, Kevin Song, -Knut Andre Tidemann, Kristofer Björkström, krivoguzovVlad, Kyrylo -Polezhaiev, Lenny Jorissen, Linus Svensson, Loïc Le Page, Loïc Minier, -Lucas Stach, Ludvig Rappe, Luka Blaskovic, luke.lin, Luke Yelavich, -Marcin Kolny, Marc Leeman, Marco Felsch, Marcos Kintschner, Marek -Olejnik, Mark Nauwelaerts, Markus Ebner, Martin Liska, Martin Theriault, -Mart Raudsepp, Matej Knopp, Mathieu Duponchelle, Mats Lindestam, Matthew -Read, Matthew Waters, Matus Gajdos, Maxim Paymushkin, Maxim P. -Dementiev, Michael Bunk, Michael Gruner, Michael Olbrich, Miguel París -Díaz, Mikhail Fludkov, Milian Wolff, Millan Castro, Muhammet Ilendemli, -Nacho García, Nayana Topolsky, Nian Yan, Nicola Murino, Nicolas -Dufresne, Nicolas Pernas Maradei, Niels De Graef, Nikita Bobkov, Niklas -Hambüchen, Nirbheek Chauhan, Ognyan Tonchev, okuoku, Oleksandr -Kvl,Olivier Crête, Ondřej Hruška, Pablo Marcos Oltra, Patricia Muscalu, -Peter Seiderer, Peter Workman, Philippe Normand, Philippe Renon, Philipp -Zabel, Pieter Willem Jordaan, Piotr Drąg, Ralf Sippl, Randy Li, Rasmus -Thomsen, Ratchanan Srirattanamet, Raul Tambre, Ray Tiley, Richard -Kreckel, Rico Tzschichholz, R Kh, Robert Rosengren, Robert Tiemann, -Roman Shpuntov, Roman Sivriver, Ruben Gonzalez, Rubén Gonzalez, -rubenrua, Ryan Huang, Sam Gigliotti, Santiago Carot-Nemesio, Saunier -Thibault, Scott Kanowitz, Sebastian Dröge, Sebastiano Barrera, Seppo -Yli-Olli, Sergey Nazaryev, Seungha Yang, Shinya Saito, Silvio -Lazzeretti, Simon Arnling Bååth, Siwon Kang, sohwan.park, Song Bing, -Soohyun Lee, Srimanta Panda, Stefano Buora, Stefan Sauer, Stéphane -Cerveau, Stian Selnes, Sumaid Syed, Swayamjeet, Thiago Santos, Thibault -Saunier, Thomas Bluemel, Thomas Coldrick, Thor Andreassen, Tim-Philipp -Müller, Ting-Wei Lan, Tobias Ronge, trilene, Tulio Beloqui, U. Artie -Eoff, VaL Doroshchuk, Varunkumar Allagadapa, Vedang Patel, Veerabadhran -G, Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Wangfei, Wang -Zhanjun, Wim Taymans, Wonchul Lee, Xabier Rodriguez Calvar, Xavier -Claessens, Xidorn Quan, Xu Guangxin, Yan Wang, Yatin Maan, Yeongjin -Jeong, yychao, Zebediah Figura, Zeeshan Ali, Zeid Bekli, Zhiyuan Sraf, -Zoltán Imets, +Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro +González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley, +Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew +Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa +Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien +Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong, +Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko +Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris +White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone, +david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar, +Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet, +Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot, +Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice +Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier +Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson, +George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther, +Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan) +Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut +Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro, +Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade +Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan +Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme +Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John +Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose +Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig +Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut +Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew +Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke +Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut, +Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp, +Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule, +Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter, +Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi, +Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen, +Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier +Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand, +Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał +Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh +Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul +Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin +Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan +Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei +Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M, +Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling +Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp +Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui, +tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk, +Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne +Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier +Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang +Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun, +Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite, +Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García, +Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel +Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine, +fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger, +He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig), +Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis, +Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark +Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters, +Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan, +Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert +Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang, +Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo +Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do, +Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim +Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao, +Yoshiharu Hirose, Zhao, … and many others who have contributed bug reports, translations, sent suggestions or helped testing. -Stable 1.18 branch +Stable 1.20 branch -After the 1.18.0 release there will be several 1.18.x bug-fix releases +After the 1.20.0 release there will be several 1.20.x bug-fix releases which will contain bug fixes which have been deemed suitable for a stable branch, but no new features or intrusive changes will be added to -a bug-fix release usually. The 1.18.x bug-fix releases will be made from -the git 1.18 branch, which will be a stable branch. - -1.18.0 - -1.18.0 was released on 8 September 2020. - -1.18.1 - -The first 1.18 bug-fix release (1.18.1) was released on 26 October 2020. - -This release only contains bugfixes and it should be safe to update from -1.18.0. - -Highlighted bugfixes in 1.18.1 - -- important security fixes -- bug fixes and memory leak fixes -- various stability and reliability improvements - -gstreamer - -- aggregator: make peek() has() pop() drop() buffer API threadsafe -- gstvalue: don’t write to const char * -- meson: Disallow DbgHelp for UWP build -- info: Fix build on Windows ARM64 device -- build: use cpu_family for arch checks -- basetransform: Fix in/outbuf confusion of _default_transform_meta -- Fix documentation -- info: Load DbgHelp.dll using g_module_open() -- padtemplate: mark documentation caps as may be leaked -- gstmeta: intern registered impl string -- aggregator: Hold SRC_LOCK while unblocking via SRC_BROADCAST() -- ptp_helper_post_install.sh: deal with none -- skip elements/leak.c if tracer is not available -- aggregator: Wake up source pad in PAUSED<->PLAYING transitions -- input-selector: Wake up blocking pads when releasing them -- ptp: Also handle gnu/kfreebsd - -gst-plugins-base - -- theoradec: Set telemetry options only if they are nonzero -- glslstage: delete shader on finalize of stage -- urisourcebin: Fix crash caused by use after free -- decodebin3: Store stream-start event on output pad before exposing - it -- Add some missing nullable annotations -- typefind/xdgmime: Validate mimetypes to be valid GstStructure names - before using them -- uridecodebin3: Forward upstream events to decodebin3 directly -- video-converter: Add fast paths from v210 to I420/YV12, Y42B, UYVY - and YUY2 -- videoaggregator: Limit accepted caps by template caps -- gstrtpbuffer: fix header extension length validation -- decodebin3: only force streams-selected seqnum after a - select-streams -- videodecoder: don’t copy interlace-mode from reference state -- enable abi checks -- multihandlesink: Don’t pass NULL caps to gst_caps_is_equal -- audio: video: Fix in/outbuf confusion of transform_meta -- meson: Always wrap “prefix” option with join_paths() to make Windows - happy -- videoaggregator: ensure peek_next_sample() uses the correct caps -- meson: Actually build gstgl without implicit include dirs -- videoaggregator: Don’t require any pads to be configured for - negotiating source pad caps -- gst-libs: gl: Fix documentation typo and clarify - gl_memory_texsubimage -- audioaggregator: Reset offset if the output rate is renegotiated -- video-anc: Implement transform functions for AFD/Bar metas -- appsrc: Wake up the create() function on caps changes -- rtpbasepayload: do not forget delayed segment when forwarding gaps - -gst-plugins-good - -- v4l2object: Only offer inactive pools and if needed -- vpx: Fix the check to unfixed/unknown framerate to set bitrate -- qmlglsink: fix crash when created/destroyed in quick succession -- rtputils: Count metas with an empty tag list for copying/keeping -- rtpbin: Remove the rtpjitterbuffer with the stream -- rtph26*depay: drop FU’s without a corresponding start bit -- imagefreeze: Response caps query from srcpad -- rtpmp4gdepay: Allow lower-case “aac-hbr” instead of correct - “AAC-hbr” -- rtspsrc: Fix push-backchannel-buffer parameter mismatch -- jpegdec: check buffer size before dereferencing -- flvmux: Move stream skipping to GstAggregatorPadClass.skip_buffer -- v4l2object: plug memory leak -- splitmuxsink: fix sink pad release while PLAYING - -gst-plugins-bad - -- codecparsers: h264parser: guard against ref_pic_markings overflow -- v4l2codecs: Various fixes -- h265parse: Don’t enable passthrough by default -- srt: Fix “Fix timestamping” -- srt: Fixes for 1.4.2 -- dtlsconnection: Ignore OpenSSL system call errors -- h265parse: set interlace-mode=interleaved on interlaced content -- Replace GPL v2 with LGPL v2 in COPYING file -- srt: Consume the error from gst_srt_object_write -- srt: Check socket state before retrieving payload size -- x265enc: fix deadlock on reconfig -- webrtc: Require gstreamer-sdp in the pkg-config file -- srtsrc: Fix timestamping -- mfvideosrc: Use only the first video stream per device -- srtobject: typecast SRTO_LINGER to linger -- decklink: Correctly order the different dependent mode tables -- wasapisrc: Make sure that wasapisrc produces data in loopback mode -- wpesrc: fix some caps leaks using the non-GL output -- smoothstreaming: clear live adapter on seek -- vtdec/vulkan: use Shared storage mode for IOSurface textures -- wpe: Move webview load waiting to WPEView -- wpe: Use proper callback for TLS errors signal handling -- kmssink: Do not source using padded width/height -- avtp: avtpaafdepay: fix crash when building caps -- opencv: set opencv_dep when option is disabled to fix the build -- line21encoder: miscellaneous enhancements -- Hls youtube issues with urisourcebin/queue2 -- rtmp2: Replace stats queue with stats lock -- rtmp2sink: support EOS event for graceful connection shutdown -- mpegtsmux: Make handling of sinkpads thread-safe -- hlssink2: Actually release splitmuxsink’s pads -- mpegtsmux: Don’t create streams with reserved PID - -gst-plugins-ugly - -- no changes - -gst-libav - -- avaudenc/avvidenc: Reopen encoding session if it’s required -- avauddec/audenc/videnc: Don’t return GST_FLOW_EOS when draining -- avauddec/avviddec: Avoid dropping non-OK flow return -- avcodecmap: Enable 24 bit WMA Lossless decoding - -gst-rtsp-server - -- rtsp-stream: collect rtp info when blocking -- rtsp-media: set a 0 storage size for TCP receivers -- rtsp-stream: preroll on gap events -- rtsp-media: do not unblock on unsuspend - -gstreamer-vaapi - -- decoder: don’t reply src caps query with allowed if pad is fixed -- plugins: decode: fix a DMA caps typo in ensure_allowed_srcpad_caps - -gstreamer-sharp - -- Add bindings for some missing 1.18 API - -gst-omx - -- omxvideodec: support interlace-mode=interleaved input - -gst-python - -- no changes - -gst-editing-services - -- ges: Do not recreate auto-transitions when changing clip assets -- ges: Fix a copy/paste mistake in meson file - -gst-integration-testsuites - -- medias: Update for h265parse passthrough behavior change -- update validate.test.h265parse.alternate test - -gst-build - -- windows: Detect Strawberry Perl and error out early -- {pygobject,pycairo}.wrap: point to stable refs - -Cerbero build tool and packaging changes in 1.18.1 - -- Add macOS Big Sur support -- gst-plugins-bad: Ship rtpmanagerbad plugin -- gstreamer-1.0: Don’t enable DbgHelp for UWP build -- pango: fix font corruption on windows -- cairo: use thread local storage to grant one windows HDC per thread -- small fixes for Xcode 12 -- cerbero: Re-add alsa-devel to bootstrap on Linux -- FreeType: update to 2.10.4 to fix security vulnerability - -Contributors to 1.18.1 - -Aaron Boxer, Adam Williamson, Andrew Wesie, Arun Raghavan, Bastien -Reboulet, Brent Gardner, Edward Hervey, François Laignel, Guillaume -Desmottes, Havard Graff, He Junyan, Hosang Lee, Jacek Tomaszewski, Jakub -Adam, Jan Alexander Steffens (heftig), Jan Schmidt, Jérôme Laheurte, -Jordan Petridis, Marc Leeman, Marian Cichy, Marijn Suijten, Mathieu -Duponchelle, Matthew Waters, Michael Tretter, Nazar Mokrynskyi, Nicolas -Dufresne, Niklas Hambüchen, Nirbheek Chauhan, Olivier Crête, Philippe -Normand, raghavendra, Ricky Tang, Sebastian Dröge, Seungha Yang, -sohwan.park, Stéphane Cerveau, Thibault Saunier, Tim-Philipp Müller, Tom -Schoonjans, Víctor Manuel Jáquez Leal, Will Miller, Xavier Claessens, Xℹ -Ruoyao, Zebediah Figura, - -… and many others who have contributed bug reports, translations, sent -suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.18.1 - -- List of Merge Requests applied in 1.18.1 -- List of Issues fixed in 1.18.1 - -1.18.2 - -The second 1.18 bug-fix release (1.18.2) was released on 6 December -2020. - -This release only contains bugfixes and it should be safe to update from -1.18.x. +a bug-fix release usually. The 1.20.x bug-fix releases will be made from +the git 1.20 branch, which will be a stable branch. -Highlighted bugfixes in 1.18.2 +1.20.0 -- Fix MPEG-TS timestamping regression when playing DVB streams -- compositor: fix artefacts in certain input scaling/conversion - situations and make sure that the output format is actually - supported, plus renegotiation fixes -- Fix sftp:// URI playback in decodebin/playbin via giosrc -- adaptivedemux/dashdemux/hlsdemux fixes -- rtsp-server fixes -- android media: fix crash when encoding AVC -- fix races in various unit tests -- lots of other bug fixes and memory leak fixes -- various stability, performance and reliability improvements -- g-i annotation fixes -- build fixes +1.20.0 was released on 3 February 2022. -gstreamer - -- bin: When removing a sink, check if the EOS status changed -- info: colorize PIDs in log messages -- aggregator: Include min-upstream-latency in buffering time, helps - especially with performance issues on single core systems where - there are a lot of threads running -- typefind: copy seqnum to new segment event, fixing issues with - oggdemux operating in push mode with typefind operating in pull mode -- identity, clocksync: Also provide system clock if sync=false -- queue2: Fix modes in scheduling query handling -- harness: Handle element not being set cleanly -- g-i: Add some missing nullable annotations, and fix some nullable - annotations: - - gst_test_clock_process_next_clock_id() returns nullable - - gst_stream_type_get_name() is not nullable -- build: fix build issue when compiling for 32-bit architectures with - 64-bit time_t (e.g. riscv32) by increasing padding in - GstClockEntryImpl in gst_private.h - -gst-plugins-base - -- gl/eagl: internal view resize fixes for glimagesink -- video-converter: increase the number of cache lines for resampling, - fixes significant color issues and artefacts with “special” resizing - parameters in compositor -- compositor: Don’t crash in prepare_frame() if the pad was just - removed -- decodebin3: Properly handle caps query with no filter -- videoaggregator: Guarantee that the output format is supported -- videoaggregator: Fix locking around vagg->info -- gluploadelement: Avoid race condition of base class’ context -- gluploadelement: Avoid race condition of inside upload creation -- gl: Fix prototype of glGetSynciv() -- tcpserversink: Don’t assume g_socket_get_remote_address() succeeds -- video-aggregator: Fix renegotiation when using convert pads -- videoaggregator: document and fix locking in convert pad -- audiodecoder, videodecoder: Don’t reset max-errors property value in - reset() -- audioencoder: Fix incorrect GST_LOG_OBJECT usage -- pbutils: Fix segfault when using invalid encoding profile -- g-i: videometa: gir annotate the size of plane array in new API -- examples/gl/gtk: Add missing dependency on gstgl -- video: fix doc warning - -gst-plugins-good - -- rpicamsrc: add vchostif library as it is required to build - successful -- deinterlace: Enable x86 assembly with nasm on MSVC -- v4l2: caps negotiate wrong as interlace feature -- aacparse: Fix caps change handling -- rtspsrc: Use URI hash for stream id -- flvmux: Release pads via GstAggregator -- qtmux: Chain up when releasing pad, and fix some locking -- matroska-mux: Fix sparse stream crash -- Splitmux testsuite races - -gst-plugins-bad - -- tsparse: timestamp packetized buffers, fixing timestamp handling - regression in connection with dvbsrc in MeTV -- ttmlparse: fix issues in aggregation of input TTML -- mpegdemux: Set duration on seeking query if possible, fixes seeking - in MPEG-PS streams in gst-play-1.0 -- mpegtsdemux: Fix off by one error -- adaptivedemux: Store QoS values on the element -- adaptivedemux: Don’t calculate bitrate for header/index fragments -- hlsdemux: Don’t double-free variant streams on errors -- mpegtspacketizer: Handle PCR issues with adaptive streams -- player: call ref_sink on pipeline -- vkdeviceprovider: Avoid deadlock on physical device -- wlvideoformat: fix DMA format convertor -- Webrtc shutdown crashes -- decklink: Update enum value bounds check in gst_decklink_get_mode() -- decklink: correct framerate 2KDCI 23.98 -- amc: Fix crash when encoding AVC -- d3d11videoprocessor: Fix wrong input/output supportability check -- opencv: allow compilation against 4.5.x -- tests: svthevcenc: Fix test_encode_simple -- tests: dtls: Don’t set dtlsenc state before linking -- mpegtsmux: Restore intervals when creating TsMux -- adaptivedemux, hlsdemux, curl: Use actual object for logging -- gi: player: Fix get_current_subtitle_track() annotation - -gst-plugins-ugly - -- no changes - -gst-libav - -- avauddec: Check planar-ness of frame rather than context, fixes - issue with aptX HD decoding - -gst-rtsp-server - -- stream: collect a clock_rate when blocking -- media: Ignore GstRTSPStreamBlocking from incomplete streams, to - prevent cases with prerolling when the inactive stream prerolls - first and the server proceeds without waiting for the active stream. - When there are no complete streams (during DESCRIBE), we will listen - to all streams. -- media: Use guint64 for setting the size-time property on rtpstorage, - fixes potential crashes or memory corruption. -- media: Get rates only on sender streams, fixing issue with ONVIF - audio backchannel streams -- media: Plug memory leak - -gstreamer-vaapi - -- H265 decoder: Fix a typo in scc reference setting - -gstreamer-sharp - -- no changes - -gst-omx - -- no changes - -gst-python - -- no changes - -gst-editing-services - -- Fix static build -- ges_init(): Fix potential initialisation crash on error +1.20.1 -gst-integration-testsuites - -- no changes - -gst-build - -- gst-env: use Path.open() in get_pkgconfig_variable_from_pcfile(), - fixes issues with python 3.5 -- subprojects: pin orc to 0.4.32 release (was 0.4.29) and pin libpsl - to 0.21.1 (was master) - -Cerbero build tool and packaging changes in 1.18.2 - -- build-tools: copy the removed site.py from setuptools, fixing python - programs (like meson) from using libraries from incorrect places - -Contributors to 1.18.2 - -Arun Raghavan, Bing Song, Chris Bass, Chris Duncan, Chris White, David -Keijser, David Phung, Edward Hervey, Fabrice Fontaine, Guillaume -Desmottes, Guiqin Zou, He Junyan, Jan Alexander Steffens (heftig), Jan -Schmidt, Jason Pereira, Jonathan Matthew, Jose Quaresma, Julian Bouzas, -Khem Raj, Kristofer Björkström, Marijn Suijten, Mart Raudsepp, Mathieu -Duponchelle, Matthew Waters, Nicola Murino, Nicolas Dufresne, Nirbheek -Chauhan, Olivier Crête, Philippe Normand, Rafostar, Randy Li, Sanchayan -Maity, Sebastian Dröge, Seungha Yang, Thibault Saunier, Tim-Philipp -Müller, Vivia Nikolaidou, Xavier Claessens - -… and many others who have contributed bug reports, translations, sent -suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.18.2 - -- List of Merge Requests applied in 1.18.2 -- List of Issues fixed in 1.18.2 - -1.18.3 - -The third 1.18 bug-fix release (1.18.3) was released on 13 January 2021. +The first 1.20 bug-fix release (1.20.1) was released on 14 March 2022. This release only contains bugfixes and it should be safe to update from -1.18.x. - -Highlighted bugfixes in 1.18.3 - -- fix ogg playback regression for ogg files that also have ID3 or APE - tags -- compositor: fix artefacts and invalid memory access when blending - subsampled formats -- exported mini object ref/unref/copy functions for use in bindings - such as gstreamer-sharp -- Add support for Apple silicon (M1) to cerbero package builder -- Ship RIST plugin in binary packages -- various stability, performance and reliability improvements -- memory leak fixes -- build fixes - -gstreamer - -- gst: Add non-inline ref/unref/copy/replace methods for various mini - objects (buffer, bufferlist, caps, context, event, memory, message, - promise, query, sample, taglist, uri) for use in bindings such as - gstreamer-sharp -- harness: don’t use GST_DEBUG_OBJECT with GstHarness which is not a - GObject - -gst-plugins-base - -- audiorate: Make buffer writable before changing its metadata -- compositor: fix blending of subsampled components -- decodebin3: When reconfiguring a slot make sure that the ghostpad is - unlinked -- decodebin3: Release selection lock when pushing EOS -- encodebasebin: Ensure that parsers are compatible with selected - encoders -- tagdemux: resize and trim buffer in place to fix interaction with - oggdemux -- videoaggregator: Pop out old buffers on timeout -- video-blend: fix blending 8-bit and 16-bit frames together -- appsrc: fix signal documentation -- gl: document some GL caps specifics -- libvisual: workaround clang compiler warning - -gst-plugins-good - -- deinterlace: fix build of assembly optimisations on macOS -- splitmuxsink: Avoid deadlock when releasing a pad from a running - muxer -- splitmuxsink: fix bogus fragment split -- v4l2object: Map correct video format for RGBA -- videoflip: fix possible crash when changing video-direction/method - while running - -gst-plugins-bad - -- assrender: fix mutex handling in certain flushing/error situations -- dvbsuboverlay: Add support for dynamic resolution update -- dashsink: fix critical log of dynamic pipeline -- d3d11shader: Fix ID3DBlob object leak -- d3d11videosink: Prepare window once streaming started -- decklinkaudiosrc: Fix duration of the first audio frame after each - discont -- intervideosrc: fix negotiation of interlaced caps -- msdk: needn’t close mfx session when failed, fixes double free / - potential crash -- msdk: check GstMsdkContext instead of mfxSession instance -- srt: fix locking when retrieving stats -- rtmp2src: fix leaks when connection is cancelled during startup or - connection fails - -gst-plugins-ugly - -- no changes - -gst-libav - -- avauddec: Drain decoder on decoding failure, fixes timestamps after - decoding errors - -gst-rtsp-server - -- rtsp-media: Only count senders when counting blocked streams -- rtsp-client: Only unref client watch context on finalize, to avoid - deadlock - -gstreamer-vaapi - -- no changes - -gstreamer-sharp - -- no changes - -gst-omx - -- no changes - -gst-python - -- no changes - -gst-editing-services - -- launch: Ensure to add required ref to profiles from project -- tests: fix meson test env setup to make sure we use the right - gst-plugin-scanner - -gst-integration-testsuites - -- no changes - -gst-build - -- meson: Update zlib.wrap to use wrapdb instead of github fork - -Cerbero build tool and packaging changes in 1.18.3 - -- Add support for Apple silicon -- Build and ship RIST plugin - -Contributors to 1.18.3 - -Andoni Morales Alastruey, Edward Hervey, Haihao Xiang, Haihua Hu, Hou -Qi, Ignacio Casal Quinteiro, Jakub Adam, Jan Alexander Steffens -(heftig), Jan Schmidt, Jordan Petridis, Lawrence Troup, Lim Siew Hoon, -Mathieu Duponchelle, Matthew Waters, Nicolas Dufresne, Raju Babannavar, -Sebastian Dröge, Seungha Yang, Thibault Saunier, Tim-Philipp Müller, -Tobias Ronge, Vivia Nikolaidou, - -… and many others who have contributed bug reports, translations, sent -suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.18.3 - -- List of Merge Requests applied in 1.18.3 -- List of Issues fixed in 1.18.3 +1.20.0. -1.18.4 +Highlighted bugfixes in 1.20.1 -The fourth 1.18 bug-fix release (1.18.4) was released on 15 March 2021. - -This release only contains bugfixes and security fixes and it should be -safe to update from 1.18.x. - -Highlighted bugfixes in 1.18.4 - -- important security fixes for ID3 tag reading, matroska and realmedia - parsing, and gst-libav audio decoding -- audiomixer, audioaggregator: input buffer handling fixes -- decodebin3: improve stream-selection message handling -- uridecodebin3: make “caps” property work -- wavenc: fix writing of INFO chunks in some cases -- v4l2: bt601 colorimetry, allow encoder resolution changes, fix - decoder frame rate negotiation -- decklinkvideosink: fix auto format detection, and fixes for 29.97fps - framerate output -- mpeg-2 video handling fixes when seeking -- avviddec: fix bufferpool negotiation and possible memory corruption - when changing resolution -- various stability, performance and reliability improvements -- memory leak fixes -- build fixes: rpicamsrc, qt overlay example, d3d11videosink on UWP +- deinterlace: various bug fixes for yadif and greedy methods +- gtk video sink: Fix rotation not being applied when paused +- gst-play-1.0: Fix trick-mode handling in keyboard shortcut +- jpegdec: fix RGB conversion handling +- matroskademux: improved ProRes video handling +- matroskamux: Handle multiview-mode/flags/pixel-aspect-ratio caps + fields correctly when checking caps equality on input caps changes +- videoaggregator fixes (negative rate handling, current position + rounding) +- soup http plugin: Lookup libsoup dylib files on Apple platforms & + fix Cerbero static build on Android and iOS +- Support build against libfreeaptx in openaptx plugin +- Fix linking issues on Illumos distros +- GstPlay: Fix new error + warning parsing API (was unusuable before) +- mpegtsmux: VBR muxing fixes +- nvdecoder: Various fixes for 4:4:4 and high-bitdepth decoding +- Support build against libfreeaptx in openaptx plugin +- webrtc: Various fixes to the webrtc-sendrecv python example +- macOS: support a relocatable GStreamer.framework on macOS (see below + for details) +- macOS: fix applemedia plugin failing to load on ARM64 macOS +- windows: ship wavpack library +- gst-python: Fix build with Python 3.11 +- various bug fixes, memory leak fixes, and other stability and + reliability improvements gstreamer -- info: Don’t leak log function user_data if the debug system is - compiled out -- task: Use SetThreadDescription() Win32 API for setting thread names, - which preserves thread names in dump files. -- buffer, memory: Mark info in map functions as caller-allocates and - pass allocation params as const pointers where possible -- clock: define AUTO_CLEANUP_FREE_FUNC for GstClockID +- plugin loader: show the reason when spawning of gst-plugin-scanner + fails +- registry, plugin loading: fix dynamic relocation if + GST_PLUGIN_SUBDIR (libdir) is not a single subdirectory; improve + GST_PLUGIN_SUBDIR handling +- context: fix transfer annotation on gst_context_writable_structure() + for bindings +- baseparse: Don’t truncate the duration to milliseconds in + gst_base_parse_convert_default() +- bufferpool: Deactivate pool and get rid of references to other + objects from dispose instead of finalize gst-plugins-base -- tag: id3v2: fix frame size check and potential invalid reads -- audio: Fix gst_audio_buffer_truncate() meta handling for - non-interleaved audio -- audioresample: respect buffer layout when draining -- audioaggregator: fix input_buffer ownership -- decodebin3: change stream selection message owner, so that the app - sends the stream-selection event to the right element -- rtspconnection: correct data_size when tunneled mode -- uridecodebin3: make caps property work -- video-converter: Don’t upsample invalid lines -- videodecoder: Fix racy critical when pool negotiation occurs during - flush -- video: Convert gst_video_info_to_caps() to take self as const ptr -- examples: added qt core dependency for qt overlay example +- typefindfunctions: Fix WebVTT format detection for very short files +- gldisplay: Reorder GST_GL_WINDOW check for egl-device +- rtpbasepayload: Copy all buffer metadata instead of just GstMetas + for the input meta buffer +- codec-utils: Avoid out-of-bounds error +- navigation: Fix Since markers for mouse scroll events +- videoaggregator: Fix for unhandled negative rate +- videoaggregator: Use floor() to calculate current position +- video-color: Fix for missing clipping in PQ EOTF function +- gst-play-1.0: Fix trick-mode handling in keyboard shortcut +- audiovisualizer: shader: Fix out of bound write gst-plugins-good -- matroskademux: header parsing fixes -- rpicamsrc: depend on posix threads and vchiq_arm to fix build on - raspios again -- wavenc: Fixed INFO chunk corruption, caused by odd sized data not - being padded -- wavpackdec: Add floating point format support to fix distortions in - some cases -- v4l2: recognize V4L2 bt601 colorimetry again -- v4l2videoenc: support resolution change stream encode -- v4l2h265codec: fix HEVC profile string issue -- v4l2object: Need keep same transfer as input caps -- v4l2videodec: Fix vp8 and vp9 streams can’t play on board with - vendor bsp -- v4l2videodec: fix src side frame rate negotiation +- deinterlace: various bug fixes for yadif method +- deinterlace: Refactor greedyh and fix planar formats +- deinterlace: Prevent race between method configuration and latency + query +- gtk video sink: Fix rotation not being applied when paused +- jpegdec: fix RGB conversion handling +- matroskademux: improved ProRes video handling +- matroskamux: Handle multiview-mode/flags/pixel-aspect-ratio caps + fields correctly when checking caps equality on input caps changes +- rtprtx: don’t access type-system per buffer (performance + optimisation); code cleanups +- rtpulpfecenc: fix unmatched g_slice_free() +- rtpvp8depay: fix crash when making GstRTPPacketLost custom event +- qtmux: Don’t post an error message if pushing a sample failed with + FLUSHING (e.g. on pipeline shutdown) +- soup: Lookup libsoup dylib files on Apple platforms & fix Cerbero + static build on Android and iOS +- souphttpsrc: element not present on iOS after 1.20.0 update +- v4l2tuner: return NULL if no norm set +- v4l2bufferpool: Fix race condition between qbuf and pool streamoff +- meson: Don’t build lame plugin with -Dlame=disabled gst-plugins-bad -- avwait: Don’t post messages with the mutex locked -- d3d11h264dec: Reconfigure decoder object on DPB size change and keep - track of actually configured DPB size -- dashsink: fix double unref of sinkpad caps -- decklinkvideosink: Use correct numerator for 29.97fps -- decklinkvideosink: fix auto format detection -- decklinksrc: Use a more accurate capture time -- d3d11videosink: Fix build error on UWP -- interlace: negotiation and buffer leak fixes -- mpegvideoparse: do not clip, so decoder receives data from keyframe - even if it’s before the segment start -- mpegtsparse: Fix switched DTS/PTS when set-timestamps=false -- nvh264sldec: Reopen decoder object if larger DPB size is required -- sdpsrc: fix double free if sdp is provided as string via the - property -- vulkan: Fix elements long name. +- GstPlay: Fix new error + warning parsing API (was unusuable before) +- av1parse: let the parser continue on verbose OBUs +- d3d11converter: Fix RGB to GRAY conversion, broken debug messages, + and add missing GRAY conversion +- gs: look for google_cloud_cpp_storage.pc +- ipcpipeline: fix crash and error on windows with SOCKET or _pipe() +- ivfparse: Don’t set zero resolution on caps +- mpegtsdemux: Handle PES headers bigger than a mpeg-ts packet; fix + locking in error code path; handle more program updates +- mpegtsmux: Start last_ts with GST_CLOCK_TIME_NONE to fix VBR muxing + behaviour +- mpegtsmux: Thread safety fixes: lock mux->tsmux, the programs hash + table, and pad streams +- mpegtsmux: Skip empty buffers +- osxaudiodeviceprovider: Add initial support for duplex devices on + OSX +- rtpldacpay: Fix missing payload information +- sdpdemux: add media attributes to caps, fixes ptp clock handling +- mfaudioenc: Handle empty IMFMediaBuffer +- nvdecoder: Various fixes for 4:4:4 and high-bitdepth decoding +- nvenc: Fix deadlock because of too strict buffer pool size +- va: fix library build issues, caps leaks in the vpp transform + function, and add vaav1dec to documentation +- v4l2codecs: vp9: Minor fixes +- v4l2codecs: h264: Correct scaling matrix ABI check +- dtlstransport: Notify ICE transport property changes +- webrtc: Various fixes to the webrtc-sendrecv python example +- webrtc-ice: Fix memory leaks in gst_webrtc_ice_add_candidate() +- Support build against libfreeaptx in openaptx plugin +- Fix linking issues on Illumos distros gst-plugins-ugly -- rmdemux: Make sure we have enough data available when parsing - audio/video packets +- x264enc: fix plugin long-name and description gst-libav -- avviddec: take the maximum of the height/coded_height -- viddec: don’t configure an incorrect buffer pool when receiving a - gap event -- audiodec: fix stack overflow in gst_ffmpeg_channel_layout_to_gst() +- No changes gst-rtsp-server -- rtspclientsink: fix deadlock on shutdown if no data has been - received yet -- rtspclientsink: fix leaks in unit tests -- rtsp-stream: avoid deadlock in send_func -- rtsp-client: cleanup transports during TEARDOWN +- Fix race in rtsp-client when tunneling over HTTP gstreamer-vaapi -- h264 encoder: append encoder exposure to aud -- postproc: Fix a problem of propose_allocation when passthrough -- glx: Iterate over FBConfig and select 8 bit color size +- No changes gstreamer-sharp -- no changes +- No changes gst-omx -- no changes +- No changes gst-python -- no changes +- Fix build with Python 3.11 gst-editing-services -- group: Use proper group constructor +- Update validate test scenarios for videoaggregator rounding + behaviour change gst-integration-testsuites -- no changes - -gst-build - -- no changes - -Cerbero build tool and packaging changes in 1.18.4 - -- macOS: more BigSur fixes -- glib: Backport patch to set thread names on Windows 10 - -Contributors to 1.18.4 - -Alicia Boya García, Ashley Brighthope, Bing Song, Branko Subasic, Edward -Hervey, Guillaume Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Alexander -Steffens (heftig), Jeongki Kim, Jordan Petridis, Knobe, Kristofer -Björkström, Marijn Suijten, Matthew Waters, Paul Goulpié, Philipp Zabel, -Rafał Dzięgiel, Sebastian Dröge, Seungha Yang, Staz M, Stéphane Cerveau, -Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, Vivia -Nikolaidou, Vladimir Menshakov, - -… and many others who have contributed bug reports, translations, sent -suggestions or helped testing. Thank you all! - -List of merge requests and issues fixed in 1.18.4 - -- List of Merge Requests applied in 1.18.4 -- List of Issues fixed in 1.18.4 - -1.18.5 - -The fifth 1.18 bug-fix release (1.18.5) was released on 8 September -2021. - -This release only contains bugfixes and security fixes and it should be -safe to update from 1.18.x. - -Highlighted bugfixes in 1.18.5 - -- basesink: fix reverse frame stepping -- downloadbuffer/sparsefile: several fixes for win32 -- systemclock: Update monotonic reference time when re-scheduling, - fixes high CPU usage with gnome-music when pausing playback -- audioaggregator: fix glitches when resyncing on discont -- compositor: Fix NV12 blend operation -- rtspconnection: Add IPv6 support for tunneled mode -- avidemux: fix playback of some H.264-in-AVI streams -- jpegdec: Fix crash when interlaced field height is not DCT block - size aligned -- qmlglsink: Keep old buffers around a bit longer if they were bound - by QML -- qml: qtitem: don’t potentially leak a large number of buffers -- rtpjpegpay: fix image corruption when compiled with MSVC on Windows -- rtspsrc: seeking improvements -- rtpjitterbuffer: Avoid generation of invalid timestamps -- rtspsrc: Fix behaviour of select-streams, new-manager, - request-rtcp-key and before-send signals with GLib >= 2.62 -- multiudpsink: Fix broken SO_SNDBUF get/set on Windows -- openh264enc: fix broken sps/pps header generation and some minor - leaks -- mpeg2enc: fix interlace-mode detection and unbound memory usage if - encoder can’t keep up -- mfvideosrc: Fix for negative MF stride and for negotiation when - interlace-mode is specified -- tsdemux: fix seek-with-stop regression and decoding errors after - seeking with dvdlpcmdec -- rtsp-server: seek handling improvements -- gst-libav: fix build (and other issues) with ffmpeg 4.4 -- cerbero: spandsp: Fix build error with Visual Studio 2019 -- win32 packages: Fix hang in GLib when G_SLICE environment variable - is set - -gstreamer - -- aggregator: Release the SRC lock while querying latency -- aggregator: Release pads’ peeked buffer when removing the pad or - finalizing it -- basesink: Don’t swap rstart/rstop when stepping -- basesrc: Print segments with GST_SEGMENT_FORMAT and not - GST_PTR_FORMAT -- childproxy: init value in gst_child_proxy_get_property() if needed -- clocksync: Fix providing system clock by default -- concat: Properly propagate seqnum of segment events -- concat: adjust running time offsets on downstream events -- concat: fix locking in SEGMENT event handler -- downloadbuffer/sparsefile: several fixes for win32 -- element: NULL the lists of contexts in dispose() -- multiqueue: Use running time of gap events for wakeups. -- multiqueue: Ensure peer pad exists when iterating internal links -- pad: Keep IDLE probe hook alive during immediate callback -- pad: Ensure last flow return is set on sink pads in push mode -- pad: Don’t spam the debug log at INFO level when default-chaining a - buffer list -- pad: clear probes holding mutex -- parse-launch: Fix a critical when using the : operator. -- parse-launch: Don’t do delayed property setting for top-level - properties. -- plugin: load plugins with unknown license strings -- ptpclock: Don’t leak the GList -- queue2: Refuse all serialized queries when posting buffering - messages -- systemclock: Update monotonic reference time when re-scheduling -- High CPU usage in 1.18 (but not master) when pausing playback in - gnome-music -- Don’t use volatile to mean atomic (fixes compiler warnings with - gcc 11) - -gst-plugins-base - -- appsrc: Don’t leak buffer list while wrongly unreffing buffer on - EOS/flushing -- audioaggregator: Don’t overwrite already written samples -- audioaggregator: Resync on the next buffer when dropping a buffer on - discont resyncing -- audiobasesink: Fix of double lock release -- audioaggregator: Don’t overwrite already written samples -- audiobasesrc: Fix divide by zero assertion -- clockoverlay: Fix broken string formatting by strftime() on Windows -- compositor: Fix NV12 blend operation -- giosrc: Don’t leak scheme string in gst_gio_src_query() -- giobasesink: Handle incomplete writes in gst_gio_base_sink_render() -- gl/wayland: Use consistent wl_display when creating work queue for - proxy wrapper -- gl: Fix build when Meson >= 0.58.0rc1 -- gl/wayland: provide a dummy global_remove function -- playbin2: fix base_time selection when flush seeking live (such as - with RTSP) -- rtspconnection: Add IPv6 support for tunneled mode -- rtspconnection: Consistently translate GIOError to GstRTSPResult - (for rtspsrc) -- rawbaseparse: check destination format correctly -- uridecodebin: Don’t force floating reference for future reusable - decodebin -- parsebin: Put stream flags in GstStream -- splitmuxsink: always use factory property when set -- video-converter: Set up matrix tables only once. -- videoscale: Performance degradation from 1.16.2 -> 1.18.4 -- videotestsrc: Fix a leak when computing alpha caps -- audio/video-converter: Plug some minor leaks -- audio,video-format: Make generate_raw_formats idempotent for - assertions -- Don’t use volatile to mean atomic (fixes compiler warnings with - gcc 11) -- Fix build issue on MinGW64 - -gst-plugins-good - -- avidemux: Also detect 0x000001 as H264 byte-stream start code in - codec_data -- deinterlace: Plug a method subobject leak -- deinterlace: Drop field-order field if outputting progressive -- jpegdec: Fix crash when interlaced field height is not DCT block - size aligned -- qmlglsink: Keep old buffers around a bit longer if they were bound - by QML -- qml: qtitem: don’t potentially leak a large number of buffers -- qtdemux: Force stream-start push when re-using EOS’d streams -- qtmux: for Apple ProRes, allow overriding pixel bit depth, e.g. when - exporting an opaque image, yet with alpha. -- qtmux: Make sure to write 64-bit STCO table when needed. -- rtpjpegpay: fix image corruption when compiled with MSVC on Windows -- rtpptdemux: Remove pads also in PAUSED->READY -- rtph265depay: update codec_data in caps regardless of format -- rtspsrc: Do not overwrite the known duration after a seek -- rtspsrc: De-dup seek event seqnums to avoid multiple seeks -- rtspsrc: Fix race saving seek event seqnum -- rtspsrc: Using multicast UDP has no relation to seekability, also - add some logging -- rtpjitterbuffer: Fix parsing of the mediaclk:direct= field -- rtpjitterbuffer: Avoid generation of invalid timestamps -- rtpjitterbuffer: Check srcresult before waiting on the condition - variable too -- rtpjitterbuffer: More logging when calculating rfc7273 timestamps -- rtspsrc: Fix more signals -- rtspsrc: Fix accumulation of before-send signal return values -- souphttpsrc: Always use the content decoder but set - `Accept-Encoding:… -- udpsrc: Plug leaks of saddr in error cases -- multiudpsink: Fix broken SO_SNDBUF get/set on Windows -- v4l2object: Add interlace-mode back to caps for camera -- v4l2object: Use default colorimetry if that in caps is unknown -- V4l2object: Avoid colorimetry mismatch for streams with invalid - colorimetry -- v4l2object: Add support for hdr10 stream playback -- wavparse: adtl/note/labl chunk parsing fixes -- Don’t use volatile to mean atomic (fixes compiler warnings with - gcc 11) -- 1.18.4: build fails with glib 2.67.6 and gcc-11: argument 2 of - ‘__atomic_load’ must not be a pointer to a ‘volatile’ type - -gst-plugins-bad - -- audiolatency: Use live mode audiotestsrc -- audiolatency: Handle audio buffers with invalid duration -- ccconverter: fix framerate caps negotiation from non-cdp to cdp -- dashdemux: Properly initalize GError, remove duplicate logging call -- dashdemux: Log protection events on corresponding pad -- dashdemux: fix dash_mpdparser_check_mpd_client_set_methods unit test -- h264parse,h265parse: Push parameter set NAL units again per - segment-done -- h265parse: Fix a typo in get_compatible_profile_caps() -- h265parse: don’t invalidate the last PPS when parsing a new SPS -- h264parse: improve PPS handling -- h2645parser: Catch overflows in AVC/HEVC NAL unit length - calculations -- interlace: Don’t set field-order field for progressive caps, fixes - negotiation issues -- interlace: Fix too small buffer size error -- jpegparse: Don’t generate timestamp for 0/1 framerates -- opencv: fix build error on macOS -- openexr: Fix build with OpenEXR 3 -- openh264enc: fix broken sps/pps header generation and some minor - leaks -- mpeg2enc: fix interlace-mode detection on input video -- mpeg2enc: Only allow 1 pending frame for encoding (fixes unbound - memory usage in case encoder can’t keep up with input) -- mfvideoenc: Don’t pass 0/1 framerate to MFT -- mfvideosrc: Fix for negative MF stride -- mfvideosrc: Fix negotiation when interlace-mode is specified -- mxfvanc: Handle empty ANC essence -- rtmp2src: workaround a GLib race when destroying a - GMainContext/GSource -- rtpsrc: Plug leak of rtcp_send_addr and fix setting URI back to NULL -- rtpsink: Return proper pad from _request_new_pad() -- rist: Plug leak of rtcp_send_addr -- rtmp2: Use correct size of write macro for param2. -- rtmp2/connection: Separate inner from outer cancelling -- tsmux: When selecting random PIDs, name the pads according to those - PIDs -- tsmux: Recheck existing pad PIDs when requesting a new pad with a - random pid -- tsdemux: fix seek with stop regression -- tsdemux: Clear all streams when rewinding, fixes the case where the - demuxer sends out partial invalid data downstream after a seek which - causes some decoders (such as dvdlpmdec) to error out -- v4l2slh264dec: Fix slice header bit size calculation -- videoparseutils: Fix for wrong CEA708 minimum size check -- waylandsink: Fix for missing initial configure -- wpe: Make threaded view singleton creation thread safe -- x265: Fix a deadlock when failing to create the x265enc -- Don’t use volatile to mean atomic (fixes compiler warnings with - gcc 11) - -gst-plugins-ugly - -- asfdemux/realmedia: Drop duplicate seek events -- Don’t use volatile to mean atomic (fixes compiler warnings with - gcc 11) - -gst-libav - -- avmux: Blacklist ttml subtitles (fixes crash with ffmpeg >= 4.4) -- avmux: fix segfault when a plugin’s long_name is NULL -- avviddec: Fix size of linesize parameter -- avviddec: Take into account coded_height for pool -- avdemux: fix build with FFmpeg 4.4 - -gst-rtsp-server - -- rtsp-media: Ensure the bus watch is removed during unprepare -- rtsp-media: Add one more case to seek avoidance -- rtsp-media: Improve skipping trickmode seek -- Fix a few memory leaks - -gstreamer-vaapi - -- plugins: Demote rank of vaapipostproc and vaapioverlay to match - other filters -- Don’t use volatile to mean atomic (fixes compiler warnings with - gcc 11) - -gst-editing-services - -- xml-formatter: Fix allocation size of buffer -- framepositioner: Fix runtime warning -- Don’t use volatile to mean atomic (fixes compiler warnings with - gcc 11) - -gst-devtools - -- scenario: Fix EOS handling in seek_forward.scenario -- validate-utils: Only modify structure fields that really need - updates -- Don’t use volatile to mean atomic (fixes compiler warnings with - gcc 11) +- Update validate test scenarios for videoaggregator rounding + behaviour change -gst-integration-testsuites +Development build environment -- validate: Update interlace_deinterlace_alternate to remove - field-order from expected caps +- gst-env: various clean-ups and documentation improvements -gst-build +Cerbero build tool and packaging changes in 1.20.1 -- git-update: Make fetching of external repos non-fatal on the CI -- gst-env: Windows: Fix looking for cmd_or_ps.ps1 in the wrong - directory -- Pin gst-plugins-rs subproject to 0.7 branch - -Cerbero build tool and packaging changes in 1.18.5 - -- cerbero: Add a dotted progress bar for urllib downloads -- libunwind: make sure all pkgconfig files get included in the devel - package -- openssl.recipe: Bump to 1.1.1k -- glib: Fix hang on Windows when G_SLICE env is configured -- utils: Support latest Debian release names -- enums: generate fedora version strings automatically -- Rework cmake build system -- spandsp: Fix build error with Visual Studio 2019 - -Contributors to 1.18.5 - -Alba Mendez, Andoni Morales Alastruey, Antonio Rojas, Bartłomiej -Kurzeja, Binh Truong, Daniel Knobe, Doug Nazar, Edward Hervey, He -Junyan, Hou Qi, Jan Alexander Steffens (heftig), Jan Schmidt, Marijn -Suijten, Mathieu Duponchelle, Matthew Waters, Michael Olbrich, Miguel -Paris, Nicholas Jackson, Nicolas Dufresne, Nirbheek Chauhan, Olivier -Crête, Per Förlin, Philippe Normand, Robin Burchell, Ruslan Khamidullin, -Scott Moreau, Sebastian Dröge, Sergei Kovalev, Seungha Yang, Stéphane -Cerveau, Steve McDaniel, Thibault Saunier, Tim-Philipp Müller, Víctor -Manuel Jáquez Leal, Xavier Claessens, Youngsoo Lee, +- Fix nasm version check +- Disable certificate checking on RHEL/CentOS 7 +- packages: Ship wavpack.dll for Windows +- osx/universal: make the library name relocatable +- macOS: In order to support a relocatable GStreamer.framework on + macOS, an application may now need to add an rpath entry to the + location of the GStreamer.framework (which could be bundled with the + application itself). Some build systems will do this for you by + default. +- Disable MoltenVK on macOS arm64 to fix applemedia plugin loading +- Fix applemedia plugin failing to load on ARM64 macOS + +Contributors to 1.20.1 + +Bastien Nocera, Branko Subasic, David Svensson Fors, Dmitry Osipenko, +Edward Hervey, Guillaume Desmottes, Havard Graff, Heiko Becker, He +Junyan, Igor V. Kovalenko, Jan Alexander Steffens (heftig), Jan Schmidt, +jinsl00000, Joseph Donofry, Jose Quaresma, Marek Vasut, Matthew Waters, +Mengkejiergeli Ba, Nicolas Dufresne, Nirbheek Chauhan, Philippe Normand, +Qi Hou, Rouven Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul +Lee, Sebastian Dröge, Sebastian Fricke, Sebastian Groß, Sebastian +Mueller, Sebastian Wick, Seungha Yang, Stéphane Cerveau, Thibault +Saunier, Tim Mooney, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, +Vivia Nikolaidou, Zebediah Figura, … and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! -List of merge requests and issues fixed in 1.18.5 - -- List of Merge Requests applied in 1.18.5 -- List of Issues fixed in 1.18.5 - -1.18.6 - -The sixth 1.18 bug-fix release (1.18.6) was released on 2 February 2022. - -This release only contains bugfixes and security fixes and it should be -safe to update from 1.18.x. - -Highlighted bugfixes in 1.18.6 - -- tagdemux: Fix crash when presented with malformed files (security - fix) -- video-converter: Fix broken gamma remap with high bitdepth YUV - output -- shout2send: Fix issues with libshout >= 2.4.2 -- mxfdemux: fix regression with VANC tracks that only contains packet - types we don’t handle -- Better plugin loading error reporting on Windows -- Fixes for deprecations in Python 3.10 -- build fixes, memory leak fixes, reliability fixes -- security fixes - -gstreamer - -- gstplugin: Fix for UWP build -- gstplugin: Better warnings on plugin load failure on Windows -- gst-ptp-helper: Do not disable multicast loopback -- concat: fix qos event handling -- pluginfeature: Fix object leak -- baseparse: fix invalid avg_bitrate after reset -- multiqueue: Fix query unref race on flush -- gst: Initialize optional event/message fields when parsing -- bitwriter: Fix the trailing bits lost when getting its data. -- multiqueue: never consider a queue that is not waiting -- input-selector: Use proper segments when cleaning cached buffers - -gst-plugins-base - -- tagdemux: Fix crash when presented with malformed files (security - fix) -- videoencoder: make sure the buffer is writable before modifying - metadata -- video-converter: Fix for broken gamma remap with high bitdepth YUV - output -- sdpmessage: fix mapping single char fmtp params -- oggdemux: fix a race in push mode when performing the duration seek -- uridecodebin: Fix critical warnings -- audio-converter: Fix resampling when there’s nothing to output -- tcp: fix build on Solaris -- uridecodebin3: Nullify current item after all play items are freed. -- audio-resampler: Fix segfault when we can’t output any frames -- urisourcebin: Handle sources with dynamic pads and pads already - present -- playbin2/3: autoplug/caps: don’t expand caps to ANY -- uridecodebin3/urisourcebin: Reusability fixes -- rtspconnection: Only reset timeout when socket is unused -- gstvideoaggregator.c: fix build with gcc 4.8 - -gst-plugins-good - -- rtspsrc: Fix critical while serializing timeout element message -- multifilesrc: fix caps leak -- shout2: Add compatibility for libshout >= 2.4.2 shout_open return - values -- v4l2: Update fmt if padded height is greater than fmt height -- v4l2bufferpool: set video alignment of video meta -- qtmux: fix deadlock in gst_qt_mux_prepare_moov_recovery -- matroska: Add support for muxing/demuxing ffv1 -- qtdemux: Try to build AAC codec-data whenever it’s possible - -gst-plugins-bad - -- interlace: Fix a double-unref on shutdown -- webrtcbin: Chain up to parent constructed method -- webrtc: fix log error message in function - gst_webrtc_bin_set_local_description -- mxfdemux: don’t error out if VANC track only contains packets we - don’t handle -- av1parser: Fix data type of film grain param -- assrender: Support RFC8081 mime types -- pitch: Specify layout as required for negotiation -- magicleap: update lumin_rt libraries names to the latest official - version -- codecs: h265decoder: Fix per-slice leak -- mpeg4videoparse: fix criticals trying to insert configs that don’t - exist yet -- webrtcbin: Always set SINK/SRC flags -- mpegtspacketizer: memcmp potentially seen_before data -- zxing: update to support version 1.1.1 - -gst-plugins-ugly - -- No changes - -gst-libav - -- avcodecmap: Add support for GBRA_10LE/BE - -gst-rtsp-server - -- rtsp-stream: fix get_rates raciness -- rtsp-media: Only unprepare a media if it was not already unpreparing - anyway -- rtsp-media: Unprepare suspended medias too -- rtsp-client: make sure sessmedia will not get freed while used -- rtsp-media: Also mark receive-only (RECORD) medias as prepared when - unsuspending -- rtsp-session: Don’t unref medias twice if it is removed inside… -- examples: Fix leak in appsrc2 example - -gstreamer-vaapi - -- libs: video-format: Check if formats map is not NULL -- vaapidecode: Autogenerate caps template -- vaapipostproc: copy over metadata also when using system allocated - buffer - -gst-python - -- Avoid treating float as int (fix for Python 3.10) - -gst-editing-services - -- meson: Remove duplicate definition of ‘examples’ option - -gst-devtools - -- No changes - -gst-integration-testsuites - -- No changes - -gst-build - -- env: Fix deprecations from python 3.10 -- Various fixes for macOS -- update FFmpeg wrap to 4.3.3 - -Cerbero build tool and packaging changes in 1.18.6 - -- Some fixes for Fedora 34 -- cerbero: Backport fix for removed loop param of PriorityQueue() -- cerbero: Fix support for Fedora 35 -- Add support for Visual Studio 2022 -- openssl.recipe: Fix crash on iOS TestFlight -- UnixBootstrapper: remove sudo as root user -- bzip2.recipe: bump version to 1.0.8 -- openssl.recipe: upgrade to version 1.1.1l - -Contributors to 1.18.6 - -Antonio Ospite, Célestin Marot, Dave Piché, Erlend Eriksen, Fabrice -Fontaine, Guillaume Desmottes, Haihua Hu, He Junyan, Jakub Adam, Jan -Alexander Steffens (heftig), Jan Schmidt, Jeremy Cline, Jordan Petridis, -Mathieu Duponchelle, Matthew Waters, Mengkejiergeli Ba, Michael Gruner, -Nirbheek Chauhan, Ognyan Tonchev, Pascal Hache, Rafał Dzięgiel, -Sebastian Dröge, Seungha Yang, Stéphane Cerveau, Teng En Ung,Thibault -Saunier, Thomas Klausner, Tim-Philipp Müller, Tobias Reineke, Tobias -Ronge, Tomasz Andrzejak, Trung Do, Víctor Manuel Jáquez Leal, Vivia -Nikolaidou, - -… and many others who have contributed bug reports, translations, sent -suggestions or helped testing. Thank you all! +List of merge requests and issues fixed in 1.20.1 -List of merge requests and issues fixed in 1.18.6 +- List of Merge Requests applied in 1.20.1 +- List of Issues fixed in 1.20.1 -- List of Merge Requests applied in 1.18.6 -- List of Issues fixed in 1.18.6 +Schedule for 1.22 -Schedule for 1.20 +Our next major feature release will be 1.22, and 1.21 will be the +unstable development version leading up to the stable 1.22 release. The +development of 1.21/1.22 will happen in the git main branch. -Our next major feature release will be 1.20, and will be released in -early February 2022. You can track its progress on the 1.20 Release -Notes page. +The plan for the 1.22 development cycle is yet to be confirmed. Assuming +no major project-wide reorganisations in the 1.22 cycle we might try and +aim for a release around August 2022. -1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12, -1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. +1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14, +1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. ------------------------------------------------------------------------ These release notes have been prepared by Tim-Philipp Müller with -contributions from Mathieu Duponchelle, Matthew Waters, Nirbheek -Chauhan, Sebastian Dröge, Thibault Saunier, and Víctor Manuel Jáquez -Leal. +contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan, +Sebastian Dröge and Seungha Yang. License: CC BY-SA 4.0
View file
gst-plugins-ugly-1.20.1.tar.xz/README.md
Added
@@ -0,0 +1,196 @@ +GStreamer 1.20.x stable series + +WHAT IT IS +---------- + +This is GStreamer, a framework for streaming media. + +WHERE TO START +-------------- + +We have a website at + + https://gstreamer.freedesktop.org + +Our documentation, including tutorials, API reference and FAQ can be found at + + https://gstreamer.freedesktop.org/documentation/ + +You can subscribe to our mailing lists: + + https://lists.freedesktop.org/mailman/listinfo/gstreamer-announce + + https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel + +We track bugs, feature requests and merge requests (patches) in GitLab at + + https://gitlab.freedesktop.org/gstreamer/ + +You can join us on IRC - #gstreamer on irc.oftc.net + +GStreamer 1.0 series +-------------------- + +Starring + + GSTREAMER + +The core around which all other modules revolve. Base functionality and +libraries, some essential elements, documentation, and testing. + + BASE + +A well-groomed and well-maintained collection of GStreamer plug-ins and +elements, spanning the range of possible types of elements one would want +to write for GStreamer. + +And introducing, for the first time ever, on the development screen ... + + THE GOOD + + --- "Such ingratitude. After all the times I've saved your life." + +A collection of plug-ins you'd want to have right next to you on the +battlefield. Shooting sharp and making no mistakes, these plug-ins have it +all: good looks, good code, and good licensing. Documented and dressed up +in tests. If you're looking for a role model to base your own plug-in on, +here it is. + +If you find a plot hole or a badly lip-synced line of code in them, +let us know - it is a matter of honour for us to ensure Blondie doesn't look +like he's been walking 100 miles through the desert without water. + + THE UGLY + + --- "When you have to shoot, shoot. Don't talk." + +There are times when the world needs a color between black and white. +Quality code to match the good's, but two-timing, backstabbing and ready to +sell your freedom down the river. These plug-ins might have a patent noose +around their neck, or a lock-up license, or any other problem that makes you +think twice about shipping them. + +We don't call them ugly because we like them less. Does a mother love her +son less because he's not as pretty as the other ones ? No - she commends +him on his great personality. These plug-ins are the life of the party. +And we'll still step in and set them straight if you report any unacceptable +behaviour - because there are two kinds of people in the world, my friend: +those with a rope around their neck and the people who do the cutting. + + THE BAD + + --- "That an accusation?" + +No perfectly groomed moustache or any amount of fine clothing is going to +cover up the truth - these plug-ins are Bad with a capital B. +They look fine on the outside, and might even appear to get the job done, but +at the end of the day they're a black sheep. Without a golden-haired angel +to watch over them, they'll probably land in an unmarked grave at the final +showdown. + +Don't bug us about their quality - exercise your Free Software rights, +patch up the offender and send us the patch on the fastest steed you can +steal from the Confederates. Because you see, in this world, there's two +kinds of people, my friend: those with loaded guns and those who dig. +You dig. + +The Lowdown +----------- + + --- "I've never seen so many plug-ins wasted so badly." + +GStreamer Plug-ins has grown so big that it's hard to separate the wheat from +the chaff. Also, distributors have brought up issues about the legal status +of some of the plug-ins we ship. To remedy this, we've divided the previous +set of available plug-ins into four modules: + +- gst-plugins-base: a small and fixed set of plug-ins, covering a wide range + of possible types of elements; these are continuously kept up-to-date + with any core changes during the development series. + + - We believe distributors can safely ship these plug-ins. + - People writing elements should base their code on these elements. + - These elements come with examples, documentation, and regression tests. + +- gst-plugins-good: a set of plug-ins that we consider to have good quality + code, correct functionality, our preferred license (LGPL for the plug-in + code, LGPL or LGPL-compatible for the supporting library). + + - We believe distributors can safely ship these plug-ins. + - People writing elements should base their code on these elements. + +- gst-plugins-ugly: a set of plug-ins that have good quality and correct + functionality, but distributing them might pose problems. The license + on either the plug-ins or the supporting libraries might not be how we'd + like. The code might be widely known to present patent problems. + + - Distributors should check if they want/can ship these plug-ins. + - People writing elements should base their code on these elements. + +- gst-plugins-bad: a set of plug-ins that aren't up to par compared to the + rest. They might be close to being good quality, but they're missing + something - be it a good code review, some documentation, a set of tests, + a real live maintainer, or some actual wide use. + If the blanks are filled in they might be upgraded to become part of + either gst-plugins-good or gst-plugins-ugly, depending on the other factors. + + - If the plug-ins break, you can't complain - instead, you can fix the + problem and send us a patch, or bribe someone into fixing them for you. + - New contributors can start here for things to work on. + +PLATFORMS +--------- + +- Linux is of course fully supported +- FreeBSD is reported to work; other BSDs should work too; same for Solaris +- MacOS works, binary 1.x packages can be built using the cerbero build tool +- Windows works; binary 1.x packages can be built using the cerbero build tool + - MSys/MinGW builds + - Microsoft Visual Studio builds are also available and supported +- Android works, binary 1.x packages can be built using the cerbero build tool +- iOS works + +INSTALLING FROM PACKAGES +------------------------ + +You should always prefer installing from packages first. GStreamer is +well-maintained for a number of distributions, including Fedora, Debian, +Ubuntu, Mandrake, Arch Linux, Gentoo, ... + +Only in cases where you: + + - want to hack on GStreamer + - want to verify that a bug has been fixed + - do not have a sane distribution + +should you choose to build from source tarballs or git. + +Find more information about the various packages at + + https://gstreamer.freedesktop.org/download/ + +For in-depth instructions about building GStreamer visit: +[getting-started](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/README.md#getting-started). + +PLUG-IN DEPENDENCIES AND LICENSES +--------------------------------- + +GStreamer is developed under the terms of the LGPL (see COPYING file for +details). Some of our plug-ins however rely on libraries which are available +under other licenses. This means that if you are distributing an application +which has a non-GPL compatible license (for instance a closed-source +application) with GStreamer, you have to make sure not to distribute GPL-linked +plug-ins. + +When using GPL-linked plug-ins, GStreamer is for all practical reasons +under the GPL itself. + +HISTORY +------- + +The fundamental design comes from the video pipeline at Oregon Graduate +Institute, as well as some ideas from DirectMedia. It's based on plug-ins that +will provide the various codec and other functionality. The interface +hopefully is generic enough for various companies (ahem, Apple) to release +binary codecs for Linux, until such time as they get a clue and release the +source.
View file
gst-plugins-ugly-1.18.6.tar.xz/RELEASE -> gst-plugins-ugly-1.20.1.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-ugly 1.18.6. +This is GStreamer gst-plugins-ugly 1.20.1. The GStreamer team is thrilled to announce a new major feature release of your favourite cross-platform multimedia framework! @@ -6,13 +6,12 @@ As always, this release is again packed with new features, bug fixes and other improvements. -The 1.18 release series adds new features on top of the 1.16 series and is -part of the API and ABI-stable 1.x release series of the GStreamer multimedia -framework. +The 1.20 release series adds new features on top of the 1.18 series and is +part of the API and ABI-stable 1.x release series. Full release notes can be found at: - https://gstreamer.freedesktop.org/releases/1.18/ + https://gstreamer.freedesktop.org/releases/1.20/ Binaries for Android, iOS, Mac OS X and Windows will usually be provided shortly after the release. @@ -60,7 +59,7 @@ directory: https://gstreamer.freedesktop.org/src/gstreamer/ The git repository and details how to clone it can be found at -https://gitlab.freedesktop.org/gstreamer/ +https://gitlab.freedesktop.org/gstreamer/gstreamer/ ==== Homepage ==== @@ -68,10 +67,9 @@ ==== Support and Bugs ==== -We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org -for bug reports and feature requests: +We track bugs and feature requests in GitLab: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ Please submit patches via GitLab as well, in form of Merge Requests. See @@ -84,11 +82,14 @@ There is also a #gstreamer IRC channel on the OFTC IRC network. +Please do not submit support requests in GitLab, we only use it +for bug tracking and merge requests review. + ==== Developers ==== -GStreamer source code repositories can be found on GitLab on freedesktop.org: +The GStreamer source code repository can be found on GitLab on freedesktop.org: - https://gitlab.freedesktop.org/gstreamer + https://gitlab.freedesktop.org/gstreamer/gstreamer/ and can also be cloned from there and this is also where you can submit Merge Requests or file issues for bugs or feature requests.
View file
gst-plugins-ugly-1.18.6.tar.xz/docs/gst_plugins_cache.json -> gst-plugins-ugly-1.20.1.tar.xz/docs/gst_plugins_cache.json
Changed
@@ -1178,11 +1178,11 @@ "url": "Unknown package origin" }, "x264": { - "description": "libx264-based H264 plugins", + "description": "libx264-based H.264 encoder plugin", "elements": { "x264enc": { "author": "Josef Zlomek <josef.zlomek@itonis.tv>, Mark Nauwelaerts <mnauw@users.sf.net>", - "description": "H264 Encoder", + "description": "libx264-based H.264 video encoder", "hierarchy": [ "GstX264Enc", "GstVideoEncoder", @@ -1195,10 +1195,10 @@ "GstPreset" ], "klass": "Codec/Encoder/Video", - "long-name": "x264enc", + "long-name": "x264 H.264 Encoder", "pad-templates": { "sink": { - "caps": "video/x-raw:\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 16, 2147483647 ]\n height: [ 16, 2147483647 ]\n format: { Y444, Y42B, I420, YV12, NV12, Y444_10LE, I422_10LE, I420_10LE }\n", + "caps": "video/x-raw:\n framerate: [ 0/1, 2147483647/1 ]\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n format: { Y444, Y42B, I420, YV12, NV12, Y444_10LE, I422_10LE, I420_10LE }\n", "direction": "sink", "presence": "always" },
View file
gst-plugins-ugly-1.18.6.tar.xz/docs/meson.build -> gst-plugins-ugly-1.20.1.tar.xz/docs/meson.build
Changed
@@ -1,12 +1,21 @@ build_hotdoc = false +if meson.is_cross_build() + if get_option('doc').enabled() + error('Documentation enabled but building the doc while cross building is not supported yet.') + endif + + message('Documentation not built as building it while cross building is not supported yet.') + subdir_done() +endif + required_hotdoc_extensions = ['gst-extension'] plugins_cache = join_paths(meson.current_source_dir(), 'gst_plugins_cache.json') if gst_dep.type_name() == 'internal' gst_proj = subproject('gstreamer') plugins_cache_generator = gst_proj.get_variable('plugins_cache_generator') else - plugins_cache_generator = find_program(join_paths(gst_dep.get_pkgconfig_variable('libexecdir'), 'gstreamer-' + api_version, 'gst-plugins-doc-cache-generator'), + plugins_cache_generator = find_program(join_paths(gst_dep.get_variable('libexecdir'), 'gstreamer-' + api_version, 'gst-plugins-doc-cache-generator'), required: false) endif @@ -30,7 +39,7 @@ endif hotdoc_req = '>= 0.11.0' -hotdoc_version = run_command(hotdoc_p, '--version').stdout() +hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout() if not hotdoc_version.version_compare(hotdoc_req) if get_option('doc').enabled() error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version)) @@ -75,11 +84,8 @@ with open("@0@") as f: print(':'.join(json.load(f).keys()), end='') -'''.format(plugins_cache)) - -assert(list_plugin_res.returncode() == 0, - 'Could not list plugins from @0@'.format(plugins_cache)) - +'''.format(plugins_cache), + check: true) foreach plugin_name: list_plugin_res.stdout().split(':') plugins_doc += [hotdoc.generate_doc(plugin_name, project_version: api_version,
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/a52dec/gsta52dec.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/a52dec/gsta52dec.c
Changed
@@ -92,8 +92,11 @@ "rate = (int) [ 4000, 96000 ], " "channels = (int) [ 1, 6 ]") ); +static gboolean a52_element_init (GstPlugin * plugin); + #define gst_a52dec_parent_class parent_class G_DEFINE_TYPE (GstA52Dec, gst_a52dec, GST_TYPE_AUDIO_DECODER); +GST_ELEMENT_REGISTER_DEFINE_CUSTOM (a52dec, a52_element_init); static gboolean gst_a52dec_start (GstAudioDecoder * dec); static gboolean gst_a52dec_stop (GstAudioDecoder * dec); @@ -822,17 +825,20 @@ } static gboolean -plugin_init (GstPlugin * plugin) +a52_element_init (GstPlugin * plugin) { #if HAVE_ORC orc_init (); #endif - if (!gst_element_register (plugin, "a52dec", GST_RANK_SECONDARY, - GST_TYPE_A52DEC)) - return FALSE; + return gst_element_register (plugin, "a52dec", GST_RANK_SECONDARY, + GST_TYPE_A52DEC); +} - return TRUE; +static gboolean +plugin_init (GstPlugin * plugin) +{ + return GST_ELEMENT_REGISTER (a52dec, plugin); } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/a52dec/gsta52dec.h -> gst-plugins-ugly-1.20.1.tar.xz/ext/a52dec/gsta52dec.h
Changed
@@ -73,6 +73,7 @@ }; GType gst_a52dec_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (a52dec); #ifndef A52_MONO #define A52_MONO 1
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/a52dec/meson.build -> gst-plugins-ugly-1.20.1.tar.xz/ext/a52dec/meson.build
Changed
@@ -1,22 +1,24 @@ -if get_option('a52dec').disabled() - subdir_done() -endif +a52dec_opt = get_option('a52dec').require(gpl_allowed, error_message: ''' + Plugin a52dec explicitly required via options but GPL-licensed plugins disabled via options. + Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. + ''') a52_dep = cc.find_library('a52', required : get_option('a52dec')) -have_a52_h = cc.has_header_symbol('a52dec/a52.h', 'a52_init', prefix : '#include <stdint.h>') -if not have_a52_h and get_option('a52dec').enabled() - error('a52dec plugin enabled but a52.h not found') -endif +if a52_dep.found() + have_a52_h = cc.has_header_symbol('a52dec/a52.h', 'a52_init', prefix : '#include <stdint.h>') -if a52_dep.found() and have_a52_h - a52dec = library('gsta52dec', - 'gsta52dec.c', - c_args : ugly_args, - include_directories : [configinc], - dependencies : [gstaudio_dep, orc_dep, a52_dep], - install : true, - install_dir : plugins_install_dir, - ) - pkgconfig.generate(a52dec, install_dir : plugins_pkgconfig_install_dir) - plugins += [a52dec] + if have_a52_h + a52dec = library('gsta52dec', + 'gsta52dec.c', + c_args : ugly_args, + include_directories : [configinc], + dependencies : [gstaudio_dep, orc_dep, a52_dep], + install : true, + install_dir : plugins_install_dir, + ) + pkgconfig.generate(a52dec, install_dir : plugins_pkgconfig_install_dir) + plugins += [a52dec] + elif a52dec_opt.enabled() + error('a52dec plugin enabled but a52.h not found') + endif endif
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/amrnb/amrnb.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/amrnb/amrnb.c
Changed
@@ -27,10 +27,12 @@ static gboolean plugin_init (GstPlugin * plugin) { - return gst_element_register (plugin, "amrnbdec", - GST_RANK_PRIMARY, GST_TYPE_AMRNBDEC) && - gst_element_register (plugin, "amrnbenc", - GST_RANK_SECONDARY, GST_TYPE_AMRNBENC); + gboolean ret = FALSE; + + ret |= GST_ELEMENT_REGISTER (amrnbdec, plugin); + ret |= GST_ELEMENT_REGISTER (amrnbenc, plugin); + + return ret; }
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/amrnb/amrnbdec.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/amrnb/amrnbdec.c
Changed
@@ -103,6 +103,8 @@ #define gst_amrnbdec_parent_class parent_class G_DEFINE_TYPE (GstAmrnbDec, gst_amrnbdec, GST_TYPE_AUDIO_DECODER); +GST_ELEMENT_REGISTER_DEFINE (amrnbdec, "amrnbdec", GST_RANK_PRIMARY, + GST_TYPE_AMRNBDEC); static void gst_amrnbdec_class_init (GstAmrnbDecClass * klass)
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/amrnb/amrnbdec.h -> gst-plugins-ugly-1.20.1.tar.xz/ext/amrnb/amrnbdec.h
Changed
@@ -64,6 +64,7 @@ }; GType gst_amrnbdec_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (amrnbdec); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/amrnb/amrnbenc.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/amrnb/amrnbenc.c
Changed
@@ -98,6 +98,8 @@ #define gst_amrnbenc_parent_class parent_class G_DEFINE_TYPE (GstAmrnbEnc, gst_amrnbenc, GST_TYPE_AUDIO_ENCODER); +GST_ELEMENT_REGISTER_DEFINE (amrnbenc, "amrnbenc", GST_RANK_SECONDARY, + GST_TYPE_AMRNBENC); static void gst_amrnbenc_set_property (GObject * object, guint prop_id,
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/amrnb/amrnbenc.h -> gst-plugins-ugly-1.20.1.tar.xz/ext/amrnb/amrnbenc.h
Changed
@@ -60,6 +60,7 @@ }; GType gst_amrnbenc_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (amrnbenc); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/amrwbdec/amrwb.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/amrwbdec/amrwb.c
Changed
@@ -26,8 +26,7 @@ static gboolean plugin_init (GstPlugin * plugin) { - return gst_element_register (plugin, "amrwbdec", - GST_RANK_PRIMARY, GST_TYPE_AMRWBDEC); + return GST_ELEMENT_REGISTER (amrwbdec, plugin); }
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/amrwbdec/amrwbdec.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/amrwbdec/amrwbdec.c
Changed
@@ -76,6 +76,8 @@ #define gst_amrwbdec_parent_class parent_class G_DEFINE_TYPE (GstAmrwbDec, gst_amrwbdec, GST_TYPE_AUDIO_DECODER); +GST_ELEMENT_REGISTER_DEFINE (amrwbdec, "amrwbdec", + GST_RANK_PRIMARY, GST_TYPE_AMRWBDEC); static void gst_amrwbdec_class_init (GstAmrwbDecClass * klass)
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/amrwbdec/amrwbdec.h -> gst-plugins-ugly-1.20.1.tar.xz/ext/amrwbdec/amrwbdec.h
Changed
@@ -62,6 +62,7 @@ }; GType gst_amrwbdec_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (amrwbdec); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/cdio/gstcdio.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/cdio/gstcdio.c
Changed
@@ -25,6 +25,9 @@ #include <gst/gst.h> #include <gst/tag/tag.h> +GST_DEBUG_CATEGORY_EXTERN (gst_cdio_debug); +#define GST_CAT_DEFAULT gst_cdio_debug + static gboolean plugin_init (GstPlugin * plugin); /* cdio headers redefine VERSION etc., so do this here before including them */ @@ -37,10 +40,6 @@ #include "gstcdio.h" #include "gstcdiocddasrc.h" -#include <cdio/logging.h> - -GST_DEBUG_CATEGORY (gst_cdio_debug); - void gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext, track_t track, cdtext_field_t field, const gchar * gst_tag, GstTagList ** p_tags) @@ -134,7 +133,7 @@ GST_DEBUG ("CD-TEXT album tags: %" GST_PTR_FORMAT, tags); } -static void +void gst_cdio_log_handler (cdio_log_level_t level, const char *msg) { const gchar *level_str[] = { "DEBUG", "INFO", "WARN", "ERROR", "ASSERT" }; @@ -147,13 +146,5 @@ static gboolean plugin_init (GstPlugin * plugin) { - if (!gst_element_register (plugin, "cdiocddasrc", GST_RANK_SECONDARY - 1, - GST_TYPE_CDIO_CDDA_SRC)) - return FALSE; - - cdio_log_set_handler (gst_cdio_log_handler); - - GST_DEBUG_CATEGORY_INIT (gst_cdio_debug, "cdio", 0, "libcdio elements"); - - return TRUE; + return GST_ELEMENT_REGISTER (cdiocddasrc, plugin); }
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/cdio/gstcdio.h -> gst-plugins-ugly-1.20.1.tar.xz/ext/cdio/gstcdio.h
Changed
@@ -24,6 +24,7 @@ #include <gst/gst.h> #include <cdio/cdio.h> #include <cdio/cdtext.h> +#include <cdio/logging.h> #if LIBCDIO_VERSION_NUM <= 83 && LIBCDIO_VERSION_NUM >= 76 #define CDTEXT_FIELD_PERFORMER CDTEXT_PERFORMER @@ -31,8 +32,6 @@ #define CDTEXT_FIELD_TITLE CDTEXT_TITLE #endif -GST_DEBUG_CATEGORY_EXTERN (gst_cdio_debug); -#define GST_CAT_DEFAULT gst_cdio_debug void gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext, @@ -56,6 +55,7 @@ CdIo * cdio, #endif GstTagList * tags); +void gst_cdio_log_handler (cdio_log_level_t level, const char *msg); #endif /* __GST_CDIO_H__ */
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/cdio/gstcdiocddasrc.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/cdio/gstcdiocddasrc.c
Changed
@@ -85,7 +85,15 @@ PROP_READ_SPEED }; +GST_DEBUG_CATEGORY (gst_cdio_debug); + + G_DEFINE_TYPE (GstCdioCddaSrc, gst_cdio_cdda_src, GST_TYPE_AUDIO_CD_SRC); +#define _do_init \ + GST_DEBUG_CATEGORY_INIT (gst_cdio_debug, "cdio", 0, "libcdio elements"); \ + cdio_log_set_handler (gst_cdio_log_handler); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (cdiocddasrc, "cdiocddasrc", + GST_RANK_SECONDARY - 1, GST_TYPE_CDIO_CDDA_SRC, _do_init); static void gst_cdio_cdda_src_finalize (GObject * obj); static void gst_cdio_cdda_src_set_property (GObject * object, guint prop_id,
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/cdio/gstcdiocddasrc.h -> gst-plugins-ugly-1.20.1.tar.xz/ext/cdio/gstcdiocddasrc.h
Changed
@@ -49,6 +49,7 @@ }; GType gst_cdio_cdda_src_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (cdiocddasrc); #endif /* __GST_CDIO_CDDA_SRC_H__ */
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/cdio/meson.build -> gst-plugins-ugly-1.20.1.tar.xz/ext/cdio/meson.build
Changed
@@ -1,4 +1,9 @@ -cdio_dep = dependency('libcdio', version : '>= 0.76', required : get_option('cdio')) +cdio_opt = get_option('cdio').require(gpl_allowed, error_message: ''' + Plugin cdio explicitly required via options but GPL-licensed plugins disabled via options. + Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. + ''') + +cdio_dep = dependency('libcdio', version : '>= 0.76', required : cdio_opt) if cdio_dep.found() cdio = library('gstcdio',
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/dvdread/dvdreadsrc.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/dvdread/dvdreadsrc.c
Changed
@@ -91,11 +91,13 @@ static void gst_dvd_read_src_uri_handler_init (gpointer g_iface, gpointer iface_data); +static gboolean dvdread_element_init (GstPlugin * plugin); #define gst_dvd_read_src_parent_class parent_class G_DEFINE_TYPE_WITH_CODE (GstDvdReadSrc, gst_dvd_read_src, GST_TYPE_PUSH_SRC, G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, gst_dvd_read_src_uri_handler_init)); +GST_ELEMENT_REGISTER_DEFINE_CUSTOM (dvdreadsrc, dvdread_element_init); static void gst_dvd_read_src_finalize (GObject * object) @@ -1789,7 +1791,7 @@ } static gboolean -plugin_init (GstPlugin * plugin) +dvdread_element_init (GstPlugin * plugin) { GST_DEBUG_CATEGORY_INIT (gstgst_dvd_read_src_debug, "dvdreadsrc", 0, "DVD reader element based on dvdreadsrc"); @@ -1800,13 +1802,14 @@ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif /* ENABLE_NLS */ + return gst_element_register (plugin, "dvdreadsrc", GST_RANK_NONE, + GST_TYPE_DVD_READ_SRC); +} - if (!gst_element_register (plugin, "dvdreadsrc", GST_RANK_NONE, - GST_TYPE_DVD_READ_SRC)) { - return FALSE; - } - - return TRUE; +static gboolean +plugin_init (GstPlugin * plugin) +{ + return GST_ELEMENT_REGISTER (dvdreadsrc, plugin); } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/dvdread/dvdreadsrc.h -> gst-plugins-ugly-1.20.1.tar.xz/ext/dvdread/dvdreadsrc.h
Changed
@@ -95,6 +95,7 @@ }; GType gst_dvd_read_src_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (dvdreadsrc); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/dvdread/meson.build -> gst-plugins-ugly-1.20.1.tar.xz/ext/dvdread/meson.build
Changed
@@ -1,4 +1,9 @@ -dvdread_dep = dependency('dvdread', version : '>= 0.5.0', required : get_option('dvdread')) +dvdread_opt = get_option('dvdread').require(gpl_allowed, error_message: ''' + Plugin dvdread explicitly required via options but GPL-licensed plugins disabled via options. + Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. + ''') + +dvdread_dep = dependency('dvdread', version : '>= 0.5.0', required : dvdread_opt) if gmodule_dep.found() and dvdread_dep.found() dvdread = library('gstdvdread',
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/mpeg2dec/gstmpeg2dec.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/mpeg2dec/gstmpeg2dec.c
Changed
@@ -62,6 +62,8 @@ #define gst_mpeg2dec_parent_class parent_class G_DEFINE_TYPE (GstMpeg2dec, gst_mpeg2dec, GST_TYPE_VIDEO_DECODER); +GST_ELEMENT_REGISTER_DEFINE (mpeg2dec, "mpeg2dec", GST_RANK_SECONDARY, + GST_TYPE_MPEG2DEC); static void gst_mpeg2dec_finalize (GObject * object); @@ -965,6 +967,8 @@ GstVideoCodecFrame *frame; const mpeg2_picture_t *picture; gboolean key_frame = FALSE; + gboolean bidirect_frame = FALSE; + gboolean closed_gop = FALSE; GST_DEBUG_OBJECT (mpeg2dec, "fbuf:%p display_picture:%p current_picture:%p fbuf->id:%d", @@ -979,6 +983,9 @@ goto no_frame; picture = info->display_picture; key_frame = (picture->flags & PIC_MASK_CODING_TYPE) == PIC_FLAG_CODING_TYPE_I; + bidirect_frame = + (picture->flags & PIC_MASK_CODING_TYPE) == PIC_FLAG_CODING_TYPE_B; + closed_gop = (info->gop->flags & GOP_FLAG_CLOSED_GOP); GST_DEBUG_OBJECT (mpeg2dec, "picture flags: %d, type: %d, keyframe: %d", picture->flags, picture->flags & PIC_MASK_CODING_TYPE, key_frame); @@ -997,11 +1004,14 @@ return ret; } + /* Skip B-frames if GOP is not closed and waiting for the first keyframe. */ if (mpeg2dec->discont_state != MPEG2DEC_DISC_NONE) { - GST_DEBUG_OBJECT (mpeg2dec, "dropping buffer, discont state %d", - mpeg2dec->discont_state); - ret = gst_video_decoder_drop_frame (GST_VIDEO_DECODER (mpeg2dec), frame); - return ret; + if (bidirect_frame && !closed_gop) { + GST_DEBUG_OBJECT (mpeg2dec, "dropping buffer, discont state %d", + mpeg2dec->discont_state); + ret = gst_video_decoder_drop_frame (GST_VIDEO_DECODER (mpeg2dec), frame); + return ret; + } } /* do cropping if the target region is smaller than the input one */ @@ -1160,11 +1170,7 @@ static gboolean plugin_init (GstPlugin * plugin) { - if (!gst_element_register (plugin, "mpeg2dec", GST_RANK_SECONDARY, - GST_TYPE_MPEG2DEC)) - return FALSE; - - return TRUE; + return GST_ELEMENT_REGISTER (mpeg2dec, plugin); } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/mpeg2dec/gstmpeg2dec.h -> gst-plugins-ugly-1.20.1.tar.xz/ext/mpeg2dec/gstmpeg2dec.h
Changed
@@ -83,6 +83,7 @@ }; GType gst_mpeg2dec_get_type(void); +GST_ELEMENT_REGISTER_DECLARE (mpeg2dec); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/mpeg2dec/meson.build -> gst-plugins-ugly-1.20.1.tar.xz/ext/mpeg2dec/meson.build
Changed
@@ -1,4 +1,9 @@ -mpeg2_dep = dependency('libmpeg2', version : '>= 0.4.0', required : get_option('mpeg2dec')) +mpeg2dec_opt = get_option('mpeg2dec').require(gpl_allowed, error_message: ''' + Plugin mpeg2dec explicitly required via options but GPL-licensed plugins disabled via options. + Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. + ''') + +mpeg2_dep = dependency('libmpeg2', version : '>= 0.4.0', required : mpeg2dec_opt) if mpeg2_dep.found() mpeg2dec = library('gstmpeg2dec',
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/sidplay/gstsiddec.cc -> gst-plugins-ugly-1.20.1.tar.xz/ext/sidplay/gstsiddec.cc
Changed
@@ -144,6 +144,8 @@ #define gst_siddec_parent_class parent_class G_DEFINE_TYPE (GstSidDec, gst_siddec, GST_TYPE_ELEMENT); +GST_ELEMENT_REGISTER_DEFINE (siddec, "siddec", GST_RANK_PRIMARY, + GST_TYPE_SIDDEC); static void gst_siddec_class_init (GstSidDecClass * klass) @@ -768,8 +770,7 @@ static gboolean plugin_init (GstPlugin * plugin) { - return gst_element_register (plugin, "siddec", GST_RANK_PRIMARY, - GST_TYPE_SIDDEC); + return GST_ELEMENT_REGISTER (siddec, plugin); } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/sidplay/gstsiddec.h -> gst-plugins-ugly-1.20.1.tar.xz/ext/sidplay/gstsiddec.h
Changed
@@ -69,7 +69,8 @@ }; GType gst_siddec_get_type (void); - +GST_ELEMENT_REGISTER_DECLARE (siddec); + G_END_DECLS #endif /* __GST_SIDDEC_H__ */
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/sidplay/meson.build -> gst-plugins-ugly-1.20.1.tar.xz/ext/sidplay/meson.build
Changed
@@ -1,7 +1,7 @@ -sidplay_option = get_option('sidplay') -if sidplay_option.disabled() - subdir_done() -endif +sidplay_option = get_option('sidplay').require(gpl_allowed, error_message: ''' + Plugin sidplay explicitly required via options but GPL-licensed plugins disabled via options. + Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. + ''') if not add_languages('cpp', native: false, required: sidplay_option) subdir_done()
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/x264/gstencoderbitrateprofilemanager.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/x264/gstencoderbitrateprofilemanager.c
Changed
@@ -18,6 +18,9 @@ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include "gstencoderbitrateprofilemanager.h" @@ -95,7 +98,7 @@ * self, const gchar * profile_name, const GstEncoderBitrateTargetForPixelsMap * map) { - gint n_vals; + guint n_vals; GstEncoderBitrateProfile *profile; for (n_vals = 0; @@ -107,7 +110,7 @@ profile->name = g_strdup (profile_name); profile->n_vals = n_vals; profile->map - = g_memdup (map, sizeof (GstEncoderBitrateTargetForPixelsMap) * n_vals); + = g_memdup2 (map, sizeof (GstEncoderBitrateTargetForPixelsMap) * n_vals); self->profiles = g_list_prepend (self->profiles, profile); }
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/x264/gstx264enc.c -> gst-plugins-ugly-1.20.1.tar.xz/ext/x264/gstx264enc.c
Changed
@@ -86,7 +86,7 @@ * |[ * gst-launch-1.0 -v videotestsrc num-buffers=1000 ! tee name=t ! queue ! videoconvert ! autovideosink \ * t. ! queue ! x264enc rc-lookahead=5 ! fakesink - * ]| This example pipeline will encode a test video source to H264 while + * ]| This example pipeline will encode a test video source to H.264 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. @@ -222,8 +222,6 @@ if (vtable_8bit) { gint chroma_format = *vtable_8bit->x264_chroma_format; - GST_INFO ("8-bit depth supported"); - if ((chroma_format == 0 || chroma_format == X264_CSP_I444) && allow_444) { g_value_set_string (&fmt, "Y444"); gst_value_list_append_value (&fmts, &fmt); @@ -247,8 +245,6 @@ if (vtable_10bit) { gint chroma_format = *vtable_10bit->x264_chroma_format; - GST_INFO ("10-bit depth supported"); - if ((chroma_format == 0 || chroma_format == X264_CSP_I444) && allow_444) { if (G_BYTE_ORDER == G_LITTLE_ENDIAN) g_value_set_string (&fmt, "Y444_10LE"); @@ -295,8 +291,10 @@ { if (*default_vtable.x264_bit_depth == 8) { vtable_8bit = &default_vtable; + GST_INFO ("8-bit depth supported"); } else if (*default_vtable.x264_bit_depth == 10) { vtable_10bit = &default_vtable; + GST_INFO ("10-bit depth supported"); } #ifdef HAVE_X264_ADDITIONAL_LIBRARIES { @@ -308,8 +306,10 @@ if (vtable) { if (!vtable_8bit && *vtable->x264_bit_depth == 8) { + GST_INFO ("8-bit depth support loaded from %s", *p); vtable_8bit = vtable; } else if (!vtable_10bit && *vtable->x264_bit_depth == 10) { + GST_INFO ("10-bit depth support loaded from %s", *p); vtable_10bit = vtable; } else { unload_x264 (vtable); @@ -334,11 +334,14 @@ load_x264_libraries (void) { #if X264_BIT_DEPTH == 0 /* all */ + GST_INFO ("8-bit depth and 10-bit depth supported"); vtable_8bit = &default_vtable; vtable_10bit = &default_vtable; #elif X264_BIT_DEPTH == 8 + GST_INFO ("Only 8-bit depth supported"); vtable_8bit = &default_vtable; #elif X264_BIT_DEPTH == 10 + GST_INFO ("Only 10-bit depth supported"); vtable_10bit = &default_vtable; #else #error "unexpected X264_BIT_DEPTH value" @@ -724,6 +727,7 @@ const GValue * value, GParamSpec * pspec); static void gst_x264_enc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); +static gboolean x264_element_init (GstPlugin * plugin); typedef gboolean (*LoadPresetFunc) (GstPreset * preset, const gchar * name); @@ -755,10 +759,9 @@ G_DEFINE_TYPE_WITH_CODE (GstX264Enc, gst_x264_enc, GST_TYPE_VIDEO_ENCODER, G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, gst_x264_enc_preset_interface_init)); - +GST_ELEMENT_REGISTER_DEFINE_CUSTOM (x264enc, x264_element_init) /* don't forget to free the string after use */ -static const gchar * -gst_x264_enc_build_partitions (gint analyse) + static const gchar *gst_x264_enc_build_partitions (gint analyse) { GString *string; @@ -1196,14 +1199,15 @@ g_string_append_printf (x264enc_defaults, ":weightp=0"); gst_element_class_set_static_metadata (element_class, - "x264enc", "Codec/Encoder/Video", "H264 Encoder", + "x264 H.264 Encoder", "Codec/Encoder/Video", + "libx264-based H.264 video encoder", "Josef Zlomek <josef.zlomek@itonis.tv>, " "Mark Nauwelaerts <mnauw@users.sf.net>"); supported_sinkcaps = gst_caps_new_simple ("video/x-raw", "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, - "width", GST_TYPE_INT_RANGE, 16, G_MAXINT, - "height", GST_TYPE_INT_RANGE, 16, G_MAXINT, NULL); + "width", GST_TYPE_INT_RANGE, 1, G_MAXINT, + "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL); gst_x264_enc_add_x264_chroma_format (gst_caps_get_structure (supported_sinkcaps, 0), TRUE, TRUE, TRUE, TRUE); @@ -1225,6 +1229,10 @@ gst_type_mark_as_plugin_api (GST_X264_ENC_TUNE_TYPE, 0); } +/* *INDENT-OFF* */ +G_GNUC_PRINTF (3, 0) +/* *INDENT-ON* */ + static void gst_x264_enc_log_callback (gpointer private, gint level, const char *format, va_list args) @@ -1232,6 +1240,7 @@ #ifndef GST_DISABLE_GST_DEBUG GstDebugLevel gst_level; GObject *object = (GObject *) private; + gchar *formatted; switch (level) { case X264_LOG_NONE: @@ -1252,8 +1261,18 @@ break; } - gst_debug_log_valist (x264_enc_debug, gst_level, "", "", 0, object, format, - args); + if (G_LIKELY (gst_level > _gst_debug_min)) + return; + + if (G_LIKELY (gst_level > gst_debug_category_get_threshold (GST_CAT_DEFAULT))) + return; + + formatted = g_strdup_vprintf (format, args); + g_strchomp (formatted); + + GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, gst_level, object, "%s", formatted); + + g_free (formatted); #endif /* GST_DISABLE_GST_DEBUG */ } @@ -2988,7 +3007,7 @@ } static gboolean -plugin_init (GstPlugin * plugin) +x264_element_init (GstPlugin * plugin) { GST_DEBUG_CATEGORY_INIT (x264_enc_debug, "x264enc", 0, "h264 encoding element"); @@ -3026,8 +3045,14 @@ GST_RANK_PRIMARY, GST_TYPE_X264_ENC); } +static gboolean +plugin_init (GstPlugin * plugin) +{ + return GST_ELEMENT_REGISTER (x264enc, plugin); +} + GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, x264, - "libx264-based H264 plugins", + "libx264-based H.264 encoder plugin", plugin_init, VERSION, "GPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/x264/gstx264enc.h -> gst-plugins-ugly-1.20.1.tar.xz/ext/x264/gstx264enc.h
Changed
@@ -137,6 +137,7 @@ }; GType gst_x264_enc_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (x264enc); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/ext/x264/meson.build -> gst-plugins-ugly-1.20.1.tar.xz/ext/x264/meson.build
Changed
@@ -1,9 +1,14 @@ +x264_opt = get_option('x264').require(gpl_allowed, error_message: ''' + Plugin x264 explicitly required via options but GPL-licensed plugins disabled via options. + Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built. + ''') + x264_sources = [ 'gstx264enc.c', 'gstencoderbitrateprofilemanager.c', ] -x264_dep = dependency('x264', required : get_option('x264'), +x264_dep = dependency('x264', required : x264_opt, fallback: ['x264', 'libx264_dep']) if x264_dep.found()
View file
gst-plugins-ugly-1.18.6.tar.xz/gst-plugins-ugly.doap -> gst-plugins-ugly-1.20.1.tar.xz/gst-plugins-ugly.doap
Changed
@@ -35,61 +35,61 @@ <release> <Version> - <revision>1.18.6</revision> - <branch>1.18</branch> + <revision>1.20.1</revision> + <branch>1.20</branch> <name></name> - <created>2022-02-02</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.18.6.tar.xz" /> + <created>2022-03-14</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.20.1.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.18.5</revision> - <branch>1.18</branch> + <revision>1.20.0</revision> + <branch>main</branch> <name></name> - <created>2021-09-08</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.18.5.tar.xz" /> + <created>2022-02-03</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.20.0.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.18.4</revision> - <branch>1.18</branch> + <revision>1.19.90</revision> + <branch>main</branch> <name></name> - <created>2021-03-15</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.18.4.tar.xz" /> + <created>2022-01-28</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.19.90.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.18.3</revision> - <branch>1.18</branch> + <revision>1.19.3</revision> + <branch>main</branch> <name></name> - <created>2021-01-13</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.18.3.tar.xz" /> + <created>2021-11-03</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.19.3.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.18.2</revision> - <branch>1.18</branch> + <revision>1.19.2</revision> + <branch>master</branch> <name></name> - <created>2020-12-06</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.18.2.tar.xz" /> + <created>2021-09-23</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.19.2.tar.xz" /> </Version> </release> <release> <Version> - <revision>1.18.1</revision> - <branch>1.18</branch> + <revision>1.19.1</revision> + <branch>master</branch> <name></name> - <created>2020-10-26</created> - <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.18.1.tar.xz" /> + <created>2021-06-01</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.19.1.tar.xz" /> </Version> </release>
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/asfdemux/gstasf.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/asfdemux/gstasf.c
Changed
@@ -25,44 +25,24 @@ #include <gst/riff/riff-read.h> #include "gst/gst-i18n-plugin.h" -#include "gstasfdemux.h" -#include "gstrtspwms.h" -#include "gstrtpasfdepay.h" +#include "gstasfelements.h" + /* #include "gstasfmux.h" */ static gboolean plugin_init (GstPlugin * plugin) { - GST_DEBUG_CATEGORY_INIT (asfdemux_dbg, "asfdemux", 0, "asf demuxer element"); - -#ifdef ENABLE_NLS - GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE, - LOCALEDIR); - bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); - bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); -#endif /* ENABLE_NLS */ + gboolean ret = FALSE; - gst_riff_init (); - - if (!gst_element_register (plugin, "asfdemux", GST_RANK_SECONDARY, - GST_TYPE_ASF_DEMUX)) { - return FALSE; - } - if (!gst_element_register (plugin, "rtspwms", GST_RANK_SECONDARY, - GST_TYPE_RTSP_WMS)) { - return FALSE; - } - if (!gst_element_register (plugin, "rtpasfdepay", GST_RANK_MARGINAL, - GST_TYPE_RTP_ASF_DEPAY)) { - return FALSE; - } + ret |= GST_ELEMENT_REGISTER (asfdemux, plugin); + ret |= GST_ELEMENT_REGISTER (rtspwms, plugin); + ret |= GST_ELEMENT_REGISTER (rtpasfdepay, plugin); /* if (!gst_element_register (plugin, "asfmux", GST_RANK_NONE, GST_TYPE_ASFMUX)) return FALSE; */ - - return TRUE; + return ret; } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/asfdemux/gstasfdemux.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/asfdemux/gstasfdemux.c
Changed
@@ -43,6 +43,7 @@ #include <stdlib.h> #include <string.h> +#include "gstasfelements.h" #include "gstasfdemux.h" #include "asfheaders.h" #include "asfpacket.h" @@ -118,6 +119,8 @@ #define gst_asf_demux_parent_class parent_class G_DEFINE_TYPE (GstASFDemux, gst_asf_demux, GST_TYPE_ELEMENT); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (asfdemux, "asfdemux", GST_RANK_SECONDARY, + GST_TYPE_ASF_DEMUX, asf_element_init (plugin)); static void gst_asf_demux_class_init (GstASFDemuxClass * klass) @@ -2455,15 +2458,18 @@ } static gboolean -gst_asf_demux_get_bytes (guint8 ** p_buf, guint num_bytes_to_read, +gst_asf_demux_get_bytes (guint8 ** p_buf, guint64 num_bytes_to_read, guint8 ** p_data, guint64 * p_size) { *p_buf = NULL; + if (num_bytes_to_read >= G_MAXUINT) + return FALSE; + if (*p_size < num_bytes_to_read) return FALSE; - *p_buf = g_memdup (*p_data, num_bytes_to_read); + *p_buf = g_memdup2 (*p_data, num_bytes_to_read); *p_data += num_bytes_to_read; *p_size -= num_bytes_to_read; return TRUE;
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/asfdemux/gstasfdemux.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/asfdemux/gstasfdemux.h
Changed
@@ -40,9 +40,6 @@ #define GST_IS_ASF_DEMUX_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ASF_DEMUX)) -GST_DEBUG_CATEGORY_EXTERN (asfdemux_dbg); -#define GST_CAT_DEFAULT asfdemux_dbg - typedef struct _GstASFDemux GstASFDemux; typedef struct _GstASFDemuxClass GstASFDemuxClass; typedef enum _GstASF3DMode GstASF3DMode;
View file
gst-plugins-ugly-1.20.1.tar.xz/gst/asfdemux/gstasfelement.c
Added
@@ -0,0 +1,52 @@ +/* GStreamer + * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <gst/gst.h> +#include <gst/riff/riff-read.h> +#include "gst/gst-i18n-plugin.h" + +#include "gstasfelements.h" + +/* #include "gstasfmux.h" */ +GST_DEBUG_CATEGORY_EXTERN (asfdemux_dbg); +#define GST_CAT_DEFAULT asfdemux_dbg + +void +asf_element_init (GstPlugin * plugin) +{ + static gsize res = FALSE; + if (g_once_init_enter (&res)) { + GST_DEBUG_CATEGORY_INIT (asfdemux_dbg, "asfdemux", 0, + "asf demuxer element"); + +#ifdef ENABLE_NLS + GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE, + LOCALEDIR); + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); +#endif /* ENABLE_NLS */ + gst_riff_init (); + g_once_init_leave (&res, TRUE); + } + +}
View file
gst-plugins-ugly-1.20.1.tar.xz/gst/asfdemux/gstasfelements.h
Added
@@ -0,0 +1,39 @@ +/* GStreamer + * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + + +#ifndef __GST_ASF_ELEMENTS_H__ +#define __GST_ASF_ELEMENTS_H__ + + +#include <gst/gst.h> +#include <gst/video/video.h> + + +G_BEGIN_DECLS + +void asf_element_init (GstPlugin * plugin); + +GST_ELEMENT_REGISTER_DECLARE (asfdemux); +GST_ELEMENT_REGISTER_DECLARE (rtspwms); +GST_ELEMENT_REGISTER_DECLARE (rtpasfdepay); + +G_END_DECLS + +#endif /* __GST_ASF_ELEMENTS_H__ */
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/asfdemux/gstrtpasfdepay.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/asfdemux/gstrtpasfdepay.c
Changed
@@ -22,6 +22,7 @@ # include "config.h" #endif +#include "gstasfelements.h" #include "gstrtpasfdepay.h" #include <gst/rtp/gstrtpbuffer.h> @@ -53,6 +54,8 @@ #define gst_rtp_asf_depay_parent_class parent_class G_DEFINE_TYPE (GstRtpAsfDepay, gst_rtp_asf_depay, GST_TYPE_RTP_BASE_DEPAYLOAD); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (rtpasfdepay, "rtpasfdepay", + GST_RANK_MARGINAL, GST_TYPE_RTP_ASF_DEPAY, asf_element_init (plugin)); static void gst_rtp_asf_depay_finalize (GObject * object);
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/asfdemux/gstrtspwms.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/asfdemux/gstrtspwms.c
Changed
@@ -29,6 +29,7 @@ #include <gst/rtsp/gstrtspextension.h> +#include "gstasfelements.h" #include "gstrtspwms.h" GST_DEBUG_CATEGORY_STATIC (rtspwms_debug); @@ -205,6 +206,8 @@ G_DEFINE_TYPE_WITH_CODE (GstRTSPWMS, gst_rtsp_wms, GST_TYPE_ELEMENT, G_IMPLEMENT_INTERFACE (GST_TYPE_RTSP_EXTENSION, gst_rtsp_wms_extension_init)); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (rtspwms, "rtspwms", GST_RANK_SECONDARY, + GST_TYPE_RTSP_WMS, asf_element_init (plugin)); static void gst_rtsp_wms_class_init (GstRTSPWMSClass * g_class)
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/asfdemux/meson.build -> gst-plugins-ugly-1.20.1.tar.xz/gst/asfdemux/meson.build
Changed
@@ -1,6 +1,7 @@ asf_sources = [ 'gstasfdemux.c', 'gstasf.c', + 'gstasfelement.c', 'asfheaders.c', 'asfpacket.c', 'gstrtpasfdepay.c',
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/dvdlpcmdec/gstdvdlpcmdec.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/dvdlpcmdec/gstdvdlpcmdec.c
Changed
@@ -60,6 +60,8 @@ #define gst_dvdlpcmdec_parent_class parent_class G_DEFINE_TYPE (GstDvdLpcmDec, gst_dvdlpcmdec, GST_TYPE_AUDIO_DECODER); +GST_ELEMENT_REGISTER_DEFINE (dvdlpcmdec, "dvdlpcmdec", GST_RANK_PRIMARY, + GST_TYPE_DVDLPCMDEC); static gboolean gst_dvdlpcmdec_set_format (GstAudioDecoder * bdec, GstCaps * caps); @@ -1006,13 +1008,7 @@ static gboolean plugin_init (GstPlugin * plugin) { - - if (!gst_element_register (plugin, "dvdlpcmdec", GST_RANK_PRIMARY, - GST_TYPE_DVDLPCMDEC)) { - return FALSE; - } - - return TRUE; + return GST_ELEMENT_REGISTER (dvdlpcmdec, plugin); } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/dvdlpcmdec/gstdvdlpcmdec.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/dvdlpcmdec/gstdvdlpcmdec.h
Changed
@@ -72,6 +72,7 @@ }; GType gst_dvdlpcmdec_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (dvdlpcmdec); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/dvdsub/gstdvdsubdec.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/dvdsub/gstdvdsubdec.c
Changed
@@ -26,8 +26,14 @@ #include "gstdvdsubparse.h" #include <string.h> +GST_DEBUG_CATEGORY_STATIC (gst_dvd_sub_dec_debug); +#define GST_CAT_DEFAULT (gst_dvd_sub_dec_debug) + #define gst_dvd_sub_dec_parent_class parent_class G_DEFINE_TYPE (GstDvdSubDec, gst_dvd_sub_dec, GST_TYPE_ELEMENT); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (dvdsubdec, "dvdsubdec", GST_RANK_NONE, + GST_TYPE_DVD_SUB_DEC, GST_DEBUG_CATEGORY_INIT (gst_dvd_sub_dec_debug, + "dvdsubdec", 0, "DVD subtitle decoder")); static gboolean gst_dvd_sub_dec_src_event (GstPad * srcpad, GstObject * parent, GstEvent * event); @@ -61,8 +67,6 @@ GST_STATIC_CAPS ("subpicture/x-dvd") ); -GST_DEBUG_CATEGORY_STATIC (gst_dvd_sub_dec_debug); -#define GST_CAT_DEFAULT (gst_dvd_sub_dec_debug) enum { @@ -1145,17 +1149,12 @@ static gboolean plugin_init (GstPlugin * plugin) { - if (!gst_element_register (plugin, "dvdsubdec", GST_RANK_NONE, - GST_TYPE_DVD_SUB_DEC) || - !gst_element_register (plugin, "dvdsubparse", GST_RANK_NONE, - GST_TYPE_DVD_SUB_PARSE)) { - return FALSE; - } + gboolean ret = FALSE; - GST_DEBUG_CATEGORY_INIT (gst_dvd_sub_dec_debug, "dvdsubdec", 0, - "DVD subtitle decoder"); + ret |= GST_ELEMENT_REGISTER (dvdsubdec, plugin); + ret |= GST_ELEMENT_REGISTER (dvdsubparse, plugin); - return TRUE; + return ret; } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/dvdsub/gstdvdsubdec.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/dvdsub/gstdvdsubdec.h
Changed
@@ -17,10 +17,14 @@ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ +#ifndef __GST_DVDSUBDEC_H__ +#define __GST_DVDSUBDEC_H__ #include <gst/gst.h> #include <gst/video/video.h> +G_BEGIN_DECLS + #define GST_TYPE_DVD_SUB_DEC (gst_dvd_sub_dec_get_type()) #define GST_DVD_SUB_DEC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DVD_SUB_DEC,GstDvdSubDec)) #define GST_DVD_SUB_DEC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DVD_SUB_DEC,GstDvdSubDecClass)) @@ -100,3 +104,8 @@ }; GType gst_dvd_sub_dec_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (dvdsubdec); + +G_END_DECLS + +#endif /* __GST_DVDSUBDEC_H__ */
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/dvdsub/gstdvdsubparse.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/dvdsub/gstdvdsubparse.c
Changed
@@ -54,6 +54,8 @@ #define gst_dvd_sub_parse_parent_class parent_class G_DEFINE_TYPE (GstDvdSubParse, gst_dvd_sub_parse, GST_TYPE_ELEMENT); +GST_ELEMENT_REGISTER_DEFINE (dvdsubparse, "dvdsubparse", GST_RANK_NONE, + GST_TYPE_DVD_SUB_PARSE); static void gst_dvd_sub_parse_class_init (GstDvdSubParseClass * klass)
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/dvdsub/gstdvdsubparse.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/dvdsub/gstdvdsubparse.h
Changed
@@ -58,6 +58,7 @@ }; GType gst_dvd_sub_parse_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (dvdsubparse); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/pnmsrc.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/pnmsrc.c
Changed
@@ -58,6 +58,8 @@ #define gst_pnm_src_parent_class parent_class G_DEFINE_TYPE_WITH_CODE (GstPNMSrc, gst_pnm_src, GST_TYPE_PUSH_SRC, G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, gst_pnm_src_uri_handler_init)); +GST_ELEMENT_REGISTER_DEFINE (pnmsrc, "pnmsrc", + GST_RANK_MARGINAL, GST_TYPE_PNM_SRC); static void gst_pnm_src_finalize (GObject * object); @@ -110,13 +112,6 @@ pnmsrc->location = g_strdup (DEFAULT_LOCATION); } -gboolean -gst_pnm_src_plugin_init (GstPlugin * plugin) -{ - return gst_element_register (plugin, "pnmsrc", - GST_RANK_MARGINAL, GST_TYPE_PNM_SRC); -} - static void gst_pnm_src_finalize (GObject * object) {
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/pnmsrc.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/pnmsrc.h
Changed
@@ -52,7 +52,7 @@ }; GType gst_pnm_src_get_type (void); -gboolean gst_pnm_src_plugin_init (GstPlugin * plugin); +GST_ELEMENT_REGISTER_DECLARE (pnmsrc); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/rademux.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/rademux.c
Changed
@@ -61,6 +61,8 @@ #define gst_real_audio_demux_parent_class parent_class G_DEFINE_TYPE (GstRealAudioDemux, gst_real_audio_demux, GST_TYPE_ELEMENT); +GST_ELEMENT_REGISTER_DEFINE (rademux, "rademux", + GST_RANK_SECONDARY, GST_TYPE_REAL_AUDIO_DEMUX); static GstStateChangeReturn gst_real_audio_demux_change_state (GstElement * e, GstStateChange transition); @@ -996,10 +998,3 @@ return ret; } - -gboolean -gst_rademux_plugin_init (GstPlugin * plugin) -{ - return gst_element_register (plugin, "rademux", - GST_RANK_SECONDARY, GST_TYPE_REAL_AUDIO_DEMUX); -}
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/rademux.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/rademux.h
Changed
@@ -97,7 +97,7 @@ GType gst_real_audio_demux_get_type (void); -gboolean gst_rademux_plugin_init (GstPlugin * plugin); +GST_ELEMENT_REGISTER_DECLARE (rademux); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/rdtdepay.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/rdtdepay.c
Changed
@@ -66,6 +66,8 @@ #define gst_rdt_depay_parent_class parent_class G_DEFINE_TYPE (GstRDTDepay, gst_rdt_depay, GST_TYPE_ELEMENT); +GST_ELEMENT_REGISTER_DEFINE (rdtdepay, "rdtdepay", + GST_RANK_MARGINAL, GST_TYPE_RDT_DEPAY); static void gst_rdt_depay_finalize (GObject * object); @@ -492,10 +494,3 @@ } return ret; } - -gboolean -gst_rdt_depay_plugin_init (GstPlugin * plugin) -{ - return gst_element_register (plugin, "rdtdepay", - GST_RANK_MARGINAL, GST_TYPE_RDT_DEPAY); -}
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/rdtdepay.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/rdtdepay.h
Changed
@@ -67,7 +67,7 @@ GType gst_rdt_depay_get_type (void); -gboolean gst_rdt_depay_plugin_init (GstPlugin * plugin); +GST_ELEMENT_REGISTER_DECLARE (rdtdepay); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/rdtmanager.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/rdtmanager.c
Changed
@@ -337,6 +337,8 @@ #define gst_rdt_manager_parent_class parent_class G_DEFINE_TYPE (GstRDTManager, gst_rdt_manager, GST_TYPE_ELEMENT); +GST_ELEMENT_REGISTER_DEFINE (rdtmanager, "rdtmanager", + GST_RANK_NONE, GST_TYPE_RDT_MANAGER); /* BOXED:UINT,UINT */ #define g_marshal_value_peek_uint(v) g_value_get_uint (v) @@ -1367,10 +1369,3 @@ gst_rdt_manager_release_pad (GstElement * element, GstPad * pad) { } - -gboolean -gst_rdt_manager_plugin_init (GstPlugin * plugin) -{ - return gst_element_register (plugin, "rdtmanager", - GST_RANK_NONE, GST_TYPE_RDT_MANAGER); -}
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/rdtmanager.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/rdtmanager.h
Changed
@@ -86,7 +86,7 @@ GType gst_rdt_manager_get_type(void); -gboolean gst_rdt_manager_plugin_init (GstPlugin * plugin); +GST_ELEMENT_REGISTER_DECLARE (rdtmanager); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/realmedia.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/realmedia.c
Changed
@@ -31,25 +31,16 @@ static gboolean plugin_init (GstPlugin * plugin) { - if (!gst_rmdemux_plugin_init (plugin)) - return FALSE; + gboolean ret = FALSE; - if (!gst_rademux_plugin_init (plugin)) - return FALSE; + ret |= GST_ELEMENT_REGISTER (rmdemux, plugin); + ret |= GST_ELEMENT_REGISTER (rademux, plugin); + ret |= GST_ELEMENT_REGISTER (rdtdepay, plugin); + ret |= GST_ELEMENT_REGISTER (rdtmanager, plugin); + ret |= GST_ELEMENT_REGISTER (rtspreal, plugin); + ret |= GST_ELEMENT_REGISTER (pnmsrc, plugin); - if (!gst_rdt_depay_plugin_init (plugin)) - return FALSE; - - if (!gst_rdt_manager_plugin_init (plugin)) - return FALSE; - - if (!gst_rtsp_real_plugin_init (plugin)) - return FALSE; - - if (!gst_pnm_src_plugin_init (plugin)) - return FALSE; - - return TRUE; + return ret; } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/rmdemux.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/rmdemux.c
Changed
@@ -192,6 +192,9 @@ return rmdemux_type; } +GST_ELEMENT_REGISTER_DEFINE (rmdemux, "rmdemux", + GST_RANK_PRIMARY, GST_TYPE_RMDEMUX); + static void gst_rmdemux_base_init (GstRMDemuxClass * klass) { @@ -2667,10 +2670,3 @@ return GST_FLOW_OK; } } - -gboolean -gst_rmdemux_plugin_init (GstPlugin * plugin) -{ - return gst_element_register (plugin, "rmdemux", - GST_RANK_PRIMARY, GST_TYPE_RMDEMUX); -}
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/rmdemux.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/rmdemux.h
Changed
@@ -159,7 +159,7 @@ #define GST_RM_AUD_xRA4 GST_MAKE_FOURCC('.','r','a','4') // Not a real audio codec #define GST_RM_AUD_xRA5 GST_MAKE_FOURCC('.','r','a','5') // Not a real audio codec -gboolean gst_rmdemux_plugin_init (GstPlugin * plugin); +GST_ELEMENT_REGISTER_DECLARE (rmdemux); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/rtspreal.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/rtspreal.c
Changed
@@ -436,7 +436,7 @@ if (strncmp (opaque_data, "MLTI", 4)) { GST_DEBUG_OBJECT (ctx, "no MLTI found, appending all"); stream->type_specific_data_len = opaque_data_len; - stream->type_specific_data = g_memdup (opaque_data, opaque_data_len); + stream->type_specific_data = g_memdup2 (opaque_data, opaque_data_len); goto no_type_specific; } opaque_data += 4; @@ -530,7 +530,7 @@ goto strange_opaque_data; } stream->type_specific_data = - g_memdup (opaque_data, stream->type_specific_data_len); + g_memdup2 (opaque_data, stream->type_specific_data_len); no_type_specific: size = @@ -673,6 +673,8 @@ G_DEFINE_TYPE_WITH_CODE (GstRTSPReal, gst_rtsp_real, GST_TYPE_ELEMENT, G_IMPLEMENT_INTERFACE (GST_TYPE_RTSP_EXTENSION, gst_rtsp_real_extension_init)); +GST_ELEMENT_REGISTER_DEFINE (rtspreal, "rtspreal", + GST_RANK_MARGINAL, GST_TYPE_RTSP_REAL); static void gst_rtsp_real_class_init (GstRTSPRealClass * g_class) @@ -731,10 +733,3 @@ iface->stream_select = rtsp_ext_real_stream_select; iface->get_transports = rtsp_ext_real_get_transports; } - -gboolean -gst_rtsp_real_plugin_init (GstPlugin * plugin) -{ - return gst_element_register (plugin, "rtspreal", - GST_RANK_MARGINAL, GST_TYPE_RTSP_REAL); -}
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/realmedia/rtspreal.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/realmedia/rtspreal.h
Changed
@@ -85,7 +85,8 @@ GType gst_rtsp_real_get_type(void); -gboolean gst_rtsp_real_plugin_init (GstPlugin * plugin); +GST_ELEMENT_REGISTER_DECLARE (rtspreal); + G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/xingmux/gstxingmux.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/xingmux/gstxingmux.c
Changed
@@ -52,6 +52,8 @@ #define gst_xing_mux_parent_class parent_class G_DEFINE_TYPE (GstXingMux, gst_xing_mux, GST_TYPE_ELEMENT); +GST_ELEMENT_REGISTER_DEFINE (xingmux, "xingmux", GST_RANK_MARGINAL, + GST_TYPE_XING_MUX); /* Xing Header stuff */ #define GST_XING_FRAME_FIELD (1 << 0)
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/xingmux/gstxingmux.h -> gst-plugins-ugly-1.20.1.tar.xz/gst/xingmux/gstxingmux.h
Changed
@@ -79,6 +79,7 @@ /* Standard function returning type information. */ GType gst_xing_mux_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (xingmux); G_END_DECLS
View file
gst-plugins-ugly-1.18.6.tar.xz/gst/xingmux/plugin.c -> gst-plugins-ugly-1.20.1.tar.xz/gst/xingmux/plugin.c
Changed
@@ -27,11 +27,7 @@ static gboolean plugin_init (GstPlugin * plugin) { - if (!gst_element_register (plugin, "xingmux", GST_RANK_MARGINAL, - GST_TYPE_XING_MUX)) - return FALSE; - - return TRUE; + return GST_ELEMENT_REGISTER (xingmux, plugin); } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
View file
gst-plugins-ugly-1.18.6.tar.xz/meson.build -> gst-plugins-ugly-1.20.1.tar.xz/meson.build
Changed
@@ -1,6 +1,6 @@ project('gst-plugins-ugly', 'c', - version : '1.18.6', - meson_version : '>= 0.48', + version : '1.20.1', + meson_version : '>= 0.59', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) @@ -14,12 +14,18 @@ else gst_version_nano = 0 endif -gst_version_is_dev = gst_version_minor % 2 == 1 and gst_version_micro < 90 +gst_version_is_stable = gst_version_minor.is_even() +gst_version_is_dev = gst_version_minor.is_odd() and gst_version_micro < 90 have_cxx = add_languages('cpp', native: false, required: false) -glib_req = '>= 2.44.0' -gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor) +glib_req = '>= 2.56.0' + +if gst_version_is_stable + gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor) +else + gst_req = '>= ' + gst_version +endif api_version = '1.0' @@ -32,17 +38,27 @@ endif if cc.get_id() == 'msvc' - # Ignore several spurious warnings for things gstreamer does very commonly - # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it - # If a warning is harmless but hard to fix, use '/woXXXX' so it's shown once - # NOTE: Only add warnings here if you are sure they're spurious - add_project_arguments( + msvc_args = [ + # Ignore several spurious warnings for things gstreamer does very commonly + # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it + # If a warning is harmless but hard to fix, use '/woXXXX' so it's shown once + # NOTE: Only add warnings here if you are sure they're spurious '/wd4018', # implicit signed/unsigned conversion '/wd4146', # unary minus on unsigned (beware INT_MIN) '/wd4244', # lossy type conversion (e.g. double -> int) '/wd4305', # truncating type conversion (e.g. double -> float) cc.get_supported_arguments(['/utf-8']), # set the input encoding to utf-8 - language : 'c') + + # Enable some warnings on MSVC to match GCC/Clang behaviour + '/w14062', # enumerator 'identifier' in switch of enum 'enumeration' is not handled + '/w14101', # 'identifier' : unreferenced local variable + '/w14189', # 'identifier' : local variable is initialized but not referenced + ] + if have_cxx + add_project_arguments(msvc_args, language: ['c', 'cpp']) + else + add_project_arguments(msvc_args, language: 'c') + endif # Disable SAFESEH with MSVC for plugins and libs that use external deps that # are built with MinGW noseh_link_args = ['/SAFESEH:NO'] @@ -158,6 +174,10 @@ gmodule_dep = dependency('gmodule-2.0', fallback : ['glib', 'libgmodule_dep']) +if gmodule_dep.version().version_compare('< 2.67.4') + cdata.set('g_memdup2(ptr,sz)', '(G_LIKELY(((guint64)(sz)) < G_MAXUINT)) ? g_memdup(ptr,sz) : (g_abort(),NULL)') +endif + ugly_args = ['-DHAVE_CONFIG_H'] configinc = include_directories('.') libsinc = include_directories('gst-libs') @@ -257,7 +277,10 @@ plugins_pkgconfig_install_dir = disabler() endif +gpl_allowed = get_option('gpl').allowed() + python3 = import('python').find_installation() + subdir('gst') subdir('ext') subdir('tests') @@ -273,32 +296,24 @@ # Set release date if gst_version_nano == 0 extract_release_date = find_program('scripts/extract-release-date-from-doap-file.py') - run_result = run_command(extract_release_date, gst_version, files('gst-plugins-ugly.doap')) - if run_result.returncode() == 0 - release_date = run_result.stdout().strip() - cdata.set_quoted('GST_PACKAGE_RELEASE_DATETIME', release_date) - message('Package release date: ' + release_date) - else - # Error out if our release can't be found in the .doap file - error(run_result.stderr()) - endif + run_result = run_command(extract_release_date, gst_version, files('gst-plugins-ugly.doap'), check: true) + release_date = run_result.stdout().strip() + cdata.set_quoted('GST_PACKAGE_RELEASE_DATETIME', release_date) + message('Package release date: ' + release_date) endif configure_file(output : 'config.h', configuration : cdata) -run_command(python3, '-c', 'import shutil; shutil.copy("hooks/pre-commit.hook", ".git/hooks/pre-commit")') - -if meson.version().version_compare('>= 0.54') - plugin_names = [] - foreach plugin: plugins - # FIXME: Use str.subtring() when we can depend on Meson 0.56 - split = plugin.name().split('gst') - if split.length() == 2 - plugin_names += [split[1]] - else - warning('Need substring API in meson >= 0.56 to properly parse plugin name: ' + plugin.name()) - plugin_names += [plugin.name()] - endif - endforeach - summary({'Plugins':plugin_names}, list_sep: ', ') -endif +plugin_names = [] +foreach plugin: plugins + if plugin.name().startswith('gst') + plugin_names += [plugin.name().substring(3)] + else + plugin_names += [plugin.name()] + endif +endforeach + +summary({ + 'Plugins': plugin_names, + '(A)GPL license allowed': gpl_allowed, +}, list_sep: ', ')
View file
gst-plugins-ugly-1.18.6.tar.xz/meson_options.txt -> gst-plugins-ugly-1.20.1.tar.xz/meson_options.txt
Changed
@@ -9,14 +9,18 @@ option('xingmux', type : 'feature', value : 'auto') # Feature options for plugins that need external deps -option('a52dec', type : 'feature', value : 'auto', description : 'Dolby Digital (AC-3) audio decoder plugin') +option('a52dec', type : 'feature', value : 'auto', description : 'Dolby Digital (AC-3) audio decoder plugin based on liba52 (GPL - only built if gpl option is also enabled!)') option('amrnb', type : 'feature', value : 'auto', description : 'Adaptive Multi-Rate Narrow-Band audio codec plugin') option('amrwbdec', type : 'feature', value : 'auto', description : 'Adaptive Multi-Rate Wide-Band audio decoder plugin') -option('cdio', type : 'feature', value : 'auto', description : 'CD audio source plugin') -option('dvdread', type : 'feature', value : 'auto', description : 'DVD video source plugin') -option('mpeg2dec', type : 'feature', value : 'auto', description : 'MPEG 2 video decoder plugin') -option('sidplay', type : 'feature', value : 'auto', description : 'Commodore 64 audio decoder plugin') -option('x264', type : 'feature', value : 'auto', description : 'H.264 video encoder plugin') +option('cdio', type : 'feature', value : 'auto', description : 'CD audio source plugin based on libcdio (GPL - only built if gpl option is also enabled!)') +option('dvdread', type : 'feature', value : 'auto', description : 'DVD video source plugin based on libdvdread (GPL - only built if gpl option is also enabled!)') +option('mpeg2dec', type : 'feature', value : 'auto', description : 'MPEG 2 video decoder plugin based on libmpeg2 (GPL - only built if gpl option is also enabled!)') +option('sidplay', type : 'feature', value : 'auto', description : 'Commodore 64 audio decoder plugin based on libsidplay (GPL - only built if gpl option is also enabled!)') +option('x264', type : 'feature', value : 'auto', description : 'H.264 video encoder plugin based on libx264 (GPL - only built if gpl option is also enabled!)') + +# License-related feature options +option('gpl', type: 'feature', value: 'disabled', yield: true, + description: 'Allow build plugins that have GPL-licensed dependencies') # Common feature options option('nls', type : 'feature', value : 'auto', yield: true, @@ -36,4 +40,4 @@ option('package-origin', type : 'string', value : 'Unknown package origin', yield: true, description : 'package origin URL to use in plugins') option('doc', type : 'feature', value : 'auto', yield: true, - description: 'Enable documentation.') \ No newline at end of file + description: 'Enable documentation.')
View file
gst-plugins-ugly-1.18.6.tar.xz/po/LINGUAS -> gst-plugins-ugly-1.20.1.tar.xz/po/LINGUAS
Changed
@@ -1,1 +1,1 @@ -af ast az bg ca cs da de el en_GB eo es eu fi fr fur gl hr hu id it ja lt lv ms mt nb nl or pl pt_BR ro ru sk sl sq sr sv ta tr uk vi zh_CN +af ast az bg ca cs da de el en_GB eo es eu fi fr fur gl hr hu id it ja lt lv ms mt nb nl or pl pt_BR ro ru sk sl sq sr sv ta tr uk vi zh_CN zh_TW
View file
gst-plugins-ugly-1.18.6.tar.xz/po/af.po -> gst-plugins-ugly-1.20.1.tar.xz/po/af.po
Changed
@@ -6,19 +6,19 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins 0.7.6\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2004-03-18 14:16+0200\n" "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n" "Language-Team: Afrikaans <i18n@af.org.za>\n" "Language: af\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #, fuzzy msgid "Could not read from CD." -msgstr "Kon nie skryf na lêer \"%s\" nie." +msgstr "Kon nie skryf na lêer \"%s\" nie." msgid "Could not open CD device for reading." msgstr "Kon nie CD-toestel oopmaak om te lees nie." @@ -32,7 +32,7 @@ #, fuzzy, c-format msgid "Could not open DVD title %d" -msgstr "Kon nie vfs-lêer \"%s\" toemaak nie." +msgstr "Kon nie vfs-lêer \"%s\" toemaak nie." #, c-format msgid "Failed to go to chapter %d of DVD title %d" @@ -51,30 +51,30 @@ #, fuzzy msgid "Could not read DVD." -msgstr "Kon nie skryf na lêer \"%s\" nie." +msgstr "Kon nie skryf na lêer \"%s\" nie." msgid "This stream contains no data." msgstr "" #, fuzzy #~ msgid "Could not read title information for DVD." -#~ msgstr "Kon nie skryf na lêer \"%s\" nie." +#~ msgstr "Kon nie skryf na lêer \"%s\" nie." #, fuzzy #~ msgid "Failed to open DVD device '%s'." -#~ msgstr "Kon nie vfs-lêer \"%s\" toemaak nie." +#~ msgstr "Kon nie vfs-lêer \"%s\" toemaak nie." #~ msgid "Could not open file \"%s\" for writing." -#~ msgstr "Kon nie lêer \"%s\" oopmaak om in te skryf nie." +#~ msgstr "Kon nie lêer \"%s\" oopmaak om in te skryf nie." #~ msgid "Error closing file \"%s\"." -#~ msgstr "Fout tydens toemaak van lêer \"%s\"." +#~ msgstr "Fout tydens toemaak van lêer \"%s\"." #~ msgid "Could not open file \"%s\" for reading." -#~ msgstr "Kon nie lêer \"%s\" oopmaak om te lees nie." +#~ msgstr "Kon nie lêer \"%s\" oopmaak om te lees nie." #~ msgid "No filename specified." -#~ msgstr "Geen lêernaam gespesifiseer." +#~ msgstr "Geen lêernaam gespesifiseer." #~ msgid "No or invalid input audio, AVI stream will be corrupt." #~ msgstr "Geen of ongeldige klanktoevoer, AVI-stroom sal korrup wees." @@ -201,19 +201,19 @@ #~ msgstr "Luidspreker" #~ msgid "Could not open vfs file \"%s\" for reading." -#~ msgstr "Kon nie vfs-lêer \"%s\" oopmaak vir lees nie." +#~ msgstr "Kon nie vfs-lêer \"%s\" oopmaak vir lees nie." #, fuzzy #~ msgid "No filename given." -#~ msgstr "Geen lêernaam gespesifiseer." +#~ msgstr "Geen lêernaam gespesifiseer." #, fuzzy #~ msgid "Could not open vfs file \"%s\" for writing: %s." -#~ msgstr "Kon nie vfs-lêer \"%s\" oopmaak vir skryf nie." +#~ msgstr "Kon nie vfs-lêer \"%s\" oopmaak vir skryf nie." #, fuzzy #~ msgid "No filename given" -#~ msgstr "Geen lêernaam gespesifiseer." +#~ msgstr "Geen lêernaam gespesifiseer." #~ msgid "No device specified." #~ msgstr "Geen toestel gespesifiseer"
View file
gst-plugins-ugly-1.18.6.tar.xz/po/ast.po -> gst-plugins-ugly-1.20.1.tar.xz/po/ast.po
Changed
@@ -5,72 +5,76 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.10.0\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2016-11-01 17:53+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2018-07-14 12:03+0100\n" "Last-Translator: enolp <enolp@softastur.org>\n" "Language-Team: Asturian <ubuntu-l10n-ast@lists.ubuntu.com>\n" "Language: ast\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 2.0\n" -#: ext/cdio/gstcdiocddasrc.c:199 msgid "Could not read from CD." msgstr "Nun pudo lleese dende'l CD." -#: ext/cdio/gstcdiocddasrc.c:406 msgid "Could not open CD device for reading." msgstr "Nun pudo abrise'l preséu de CDs pa la llectura." -#: ext/cdio/gstcdiocddasrc.c:413 msgid "Disc is not an Audio CD." msgstr "El discu nun ye un CD d'audiu." -#: ext/dvdread/dvdreadsrc.c:231 ext/dvdread/dvdreadsrc.c:238 msgid "Could not open DVD" msgstr "Nun pudo abrise'l DVD" -#: ext/dvdread/dvdreadsrc.c:245 ext/dvdread/dvdreadsrc.c:621 -#: ext/dvdread/dvdreadsrc.c:628 #, c-format msgid "Could not open DVD title %d" msgstr "Nun pudo abrise'l titulu del DVD %d" -#: ext/dvdread/dvdreadsrc.c:251 #, c-format msgid "Failed to go to chapter %d of DVD title %d" msgstr "Fallu al dir al capítulu %d del títulu del DVD %d" -#: ext/dvdread/dvdreadsrc.c:635 #, c-format -msgid "Could not open DVD title %d. Interactive titles are not supported by this element" -msgstr "Nun pudo abrise'l títulu del DVD %d. Esti elementu nun sofita los elementos interactivos." +msgid "" +"Could not open DVD title %d. Interactive titles are not supported by this " +"element" +msgstr "" +"Nun pudo abrise'l títulu del DVD %d. Esti elementu nun sofita los elementos " +"interactivos." -#: ext/dvdread/dvdreadsrc.c:990 -msgid "Could not read DVD. This may be because the DVD is encrypted and a DVD decryption library is not installed." -msgstr "Nun pudo lleese'l DVD. Esto podría ser porque'l DVD ta cifráu y nun s'instaló una biblioteca de descifráu de DVDs." +msgid "" +"Could not read DVD. This may be because the DVD is encrypted and a DVD " +"decryption library is not installed." +msgstr "" +"Nun pudo lleese'l DVD. Esto podría ser porque'l DVD ta cifráu y nun " +"s'instaló una biblioteca de descifráu de DVDs." -#: ext/dvdread/dvdreadsrc.c:993 msgid "Could not read DVD." msgstr "Nun pudo lleese'l DVD." -#: ext/lame/gstlamemp3enc.c:395 -msgid "Failed to configure LAME mp3 audio encoder. Check your encoding parameters." -msgstr "Fallu al configurar el codificador d'audiu MP3 de LAME. Comprueba los parámetros de codificación." +msgid "This stream contains no data." +msgstr "Esti fluxu nun contién datos." -#: ext/lame/gstlamemp3enc.c:427 ext/twolame/gsttwolamemp2enc.c:488 -#, c-format -msgid "The requested bitrate %d kbit/s for property '%s' is not allowed. The bitrate was changed to %d kbit/s." -msgstr "La tasa de bits %d kbit/s solicitada pa la propieda «%s» nun ta permitida. Camudóse la tasa de bits a %d kbit/s." +#~ msgid "" +#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " +#~ "parameters." +#~ msgstr "" +#~ "Fallu al configurar el codificador d'audiu MP3 de LAME. Comprueba los " +#~ "parámetros de codificación." -#: ext/twolame/gsttwolamemp2enc.c:411 -msgid "Failed to configure TwoLAME encoder. Check your encoding parameters." -msgstr "Fallu al configurar el codificador TwoLAME. Comprueba los parámetros de codificación." +#, c-format +#~ msgid "" +#~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " +#~ "bitrate was changed to %d kbit/s." +#~ msgstr "" +#~ "La tasa de bits %d kbit/s solicitada pa la propieda «%s» nun ta " +#~ "permitida. Camudóse la tasa de bits a %d kbit/s." -#: gst/asfdemux/gstasfdemux.c:446 -msgid "This stream contains no data." -msgstr "Esti fluxu nun contién datos." +#~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters." +#~ msgstr "" +#~ "Fallu al configurar el codificador TwoLAME. Comprueba los parámetros de " +#~ "codificación."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/az.po -> gst-plugins-ugly-1.20.1.tar.xz/po/az.po
Changed
@@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-0.8.0\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2004-03-19 18:29+0200\n" "Last-Translator: Metin Amiroff <metin@karegen.com>\n" "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
View file
gst-plugins-ugly-1.18.6.tar.xz/po/bg.po -> gst-plugins-ugly-1.20.1.tar.xz/po/bg.po
Changed
@@ -1,21 +1,23 @@ # Bulgarian translation of gst-plugins-ugly. # Copyright (C) 2007, 2008, 2009, 2010, 2011, 2016 Free Software Foundation, Inc. +# Copyright (C) 2021 Alexander Shopov. # This file is distributed under the same license as the gst-plugins-ugly package. -# Alexander Shopov <ash@kambanaria.org>, 2007, 2008, 2009, 2010, 2011, 2016. +# Alexander Shopov <ash@kambanaria.org>, 2007, 2008, 2009, 2010, 2011, 2016, 2021. # # msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly 1.7.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" -"PO-Revision-Date: 2016-02-21 21:03+0200\n" +"Project-Id-Version: gst-plugins-ugly 1.19.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" +"PO-Revision-Date: 2021-10-02 20:15+0200\n" "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n" "Language-Team: Bulgarian <dict@ludost.net>\n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" msgid "Could not read from CD." @@ -58,25 +60,3 @@ msgid "This stream contains no data." msgstr "Потокът не съдържа данни." - -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." -#~ msgstr "" -#~ "Кодерът за mp3 — LAME не може да бъде настроен. Проверете настройките за " -#~ "кодиране." - -#~ msgid "" -#~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " -#~ "bitrate was changed to %d kbit/s." -#~ msgstr "" -#~ "Поисканата честота в битове %d kbit/s за свойството „%s“ не е позволена. " -#~ "Тя бе променена на %d kbit/s." - -#~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters." -#~ msgstr "" -#~ "Кодерът TwoLAME не може да бъде настроен. Проверете настройките за " -#~ "кодиране." - -#~ msgid "Internal data stream error." -#~ msgstr "Вътрешна грешка в потока от данни."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/ca.po -> gst-plugins-ugly-1.20.1.tar.xz/po/ca.po
Changed
@@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 0.10.17.2\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-01-01 14:19+0100\n" "Last-Translator: Gil Forcada <gforcada@gnome.org>\n" "Language-Team: Catalan <ca@dodds.net>\n" @@ -17,6 +17,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" msgid "Could not read from CD." @@ -60,14 +61,12 @@ msgid "This stream contains no data." msgstr "Aquest flux no conté dades." -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." +#~ msgid "Failed to configure LAME encoder. Check your encoding parameters." #~ msgstr "" #~ "No s'ha pogut configurar el codificador LAME. Comproveu els paràmetres de " #~ "codificació." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/cs.po -> gst-plugins-ugly-1.20.1.tar.xz/po/cs.po
Changed
@@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.0.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2013-09-07 07:06+0200\n" "Last-Translator: Marek Černocký <marek@manet.cz>\n" "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" @@ -19,6 +19,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Gtranslator 2.91.6\n" @@ -70,6 +71,7 @@ #~ "Selhalo nastavení zvukového kodéru LAME mp3. Zkontrolujte parametry " #~ "kódování." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/da.po -> gst-plugins-ugly-1.20.1.tar.xz/po/da.po
Changed
@@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly-1.0.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-12-09 03:56+0100\n" "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" @@ -17,6 +17,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" msgid "Could not read from CD." msgstr "Kunne ikke åbne cd." @@ -66,6 +67,7 @@ #~ "Kunne ikke konfigurere LAME mp3-lydindkoderen. Kontroller dine " #~ "indkoderparametre." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/de.po -> gst-plugins-ugly-1.20.1.tar.xz/po/de.po
Changed
@@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.3.2\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2014-05-22 18:29+0100\n" "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" @@ -21,6 +21,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.5.4\n" @@ -73,6 +74,7 @@ #~ "Konfigurieren des MP3 Audio-Enkodierers »LAME« schlug fehl. Überprüfen " #~ "Sie die Parameter zum Enkodieren." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/el.po -> gst-plugins-ugly-1.20.1.tar.xz/po/el.po
Changed
@@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 0.10.17.2\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-03-18 01:04+0100\n" "Last-Translator: Savvas Radevic <vicedar@gmail.com>\n" "Language-Team: Greek <team@lists.gnome.gr>\n" @@ -14,6 +14,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "Could not read from CD." @@ -58,14 +59,12 @@ msgid "This stream contains no data." msgstr "Η ροή αυτή δεν περιέχει καθόλου δεδομένα." -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." +#~ msgid "Failed to configure LAME encoder. Check your encoding parameters." #~ msgstr "" #~ "Αδυναμία ρύθμισης του κωδικοποιητή LAME. Ελέγξτε τις παραμέτρους " #~ "κωδικοποίησης." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/en_GB.po -> gst-plugins-ugly-1.20.1.tar.xz/po/en_GB.po
Changed
@@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins 0.8.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2004-04-26 10:41-0400\n" "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n" "Language-Team: English (British) <en_gb@li.org>\n"
View file
gst-plugins-ugly-1.18.6.tar.xz/po/eo.po -> gst-plugins-ugly-1.20.1.tar.xz/po/eo.po
Changed
@@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.4.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2014-09-21 21:03+0200\n" "Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n" "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" @@ -16,6 +16,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: Lokalize 1.0\n" @@ -65,6 +66,7 @@ #~ "parameters." #~ msgstr "Fiaskis agordi la LAME-kodilon. Kontrolu viajn kodad-parametrojn." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/es.po -> gst-plugins-ugly-1.20.1.tar.xz/po/es.po
Changed
@@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 0.10.17.2\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2011-10-02 15:45+0200\n" "Last-Translator: Jorge González González <aloriel@gmail.com>\n" "Language-Team: Spanish <es@li.org>\n" @@ -15,6 +15,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" @@ -59,14 +60,12 @@ msgid "This stream contains no data." msgstr "Este medio no contiene datos." -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." +#~ msgid "Failed to configure LAME encoder. Check your encoding parameters." #~ msgstr "" #~ "Falló al configurar el codificador LAME. Compruebe sus parámetros de " #~ "codificación." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/eu.po -> gst-plugins-ugly-1.20.1.tar.xz/po/eu.po
Changed
@@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly-0.10.13.2\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2010-03-07 13:12+0200\n" "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n" "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n" @@ -17,6 +17,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -60,14 +61,12 @@ msgid "This stream contains no data." msgstr "Korronte honek ez du daturik." -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." +#~ msgid "Failed to configure LAME encoder. Check your encoding parameters." #~ msgstr "" -#~ "Huts egin du TwoLAME kodetzailea konfiguratzean. Begiratu kodetze-" +#~ "Huts egin du LAME kodetzailea konfiguratzean. Begiratu kodetze-" #~ "parametroak ondo dauden." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s." @@ -84,13 +83,6 @@ #~ msgstr "Datu-korrontearen barne-errorea." #, fuzzy -#~ msgid "" -#~ "Failed to configure LAMEMP3ENC encoder. Check your encoding parameters." -#~ msgstr "" -#~ "Huts egin du LAME kodetzailea konfiguratzean. Begiratu kodetze-" -#~ "parametroak ondo dauden." - -#, fuzzy #~ msgid "Could not read title information for DVD." #~ msgstr "Ezin izan da CDtik irakurri."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/fi.po -> gst-plugins-ugly-1.20.1.tar.xz/po/fi.po
Changed
@@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 0.10.10.2\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2009-03-10 20:41+0200\n" "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n" "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" @@ -19,6 +19,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: KBabel 1.11.2\n" @@ -62,12 +63,23 @@ msgid "This stream contains no data." msgstr "Virta ei sisällä tietoa." -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." -#~ msgstr "TwoLAME-kodekkia ei voitu määritellä. Tarkista kodekkiasetuksesi." +#~ msgid "Invalid title information on DVD." +#~ msgstr "DVD:llä on virheellisiä ohjelmatietoja." + +#~ msgid "Could not read title information for DVD." +#~ msgstr "Ohjelmatietoja ei voitu lukea DVD:ltä." + +#, c-format +#~ msgid "Failed to open DVD device '%s'." +#~ msgstr "DVD-laitetta \"%s\" ei voitu avata." + +#~ msgid "Failed to set PGC based seeking." +#~ msgstr "PGC-pohjaista siirtymistä ei voitu asettaa." + +#~ msgid "Failed to configure LAME encoder. Check your encoding parameters." +#~ msgstr "LAME-kodekkia ei voitu määritellä. Tarkista kodekkiasetuksesi." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s." @@ -81,22 +93,5 @@ #~ msgid "Internal data stream error." #~ msgstr "Sisäinen tietovirtavirhe." -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAMEMP3ENC encoder. Check your encoding parameters." -#~ msgstr "LAME-kodekkia ei voitu määritellä. Tarkista kodekkiasetuksesi." - -#~ msgid "Invalid title information on DVD." -#~ msgstr "DVD:llä on virheellisiä ohjelmatietoja." - -#~ msgid "Could not read title information for DVD." -#~ msgstr "Ohjelmatietoja ei voitu lukea DVD:ltä." - -#~ msgid "Failed to open DVD device '%s'." -#~ msgstr "DVD-laitetta \"%s\" ei voitu avata." - -#~ msgid "Failed to set PGC based seeking." -#~ msgstr "PGC-pohjaista siirtymistä ei voitu asettaa." - #~ msgid "This file is encrypted and cannot be played." #~ msgstr "Tiedosto on salattu eikä sitä voi toistaa."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/fr.po -> gst-plugins-ugly-1.20.1.tar.xz/po/fr.po
Changed
@@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.7.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2015-12-27 01:51+0100\n" "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" "Language-Team: French <traduc@traduc.org>\n" @@ -17,6 +17,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" msgid "Could not read from CD." msgstr "Impossible de lire le CD." @@ -66,6 +67,7 @@ #~ "La configuration de l’encodeur audio mp3 LAME a échoué. Vérifiez vos " #~ "paramètres d’encodage." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/fur.po -> gst-plugins-ugly-1.20.1.tar.xz/po/fur.po
Changed
@@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.10.0\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2016-11-30 16:23+0100\n" "Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n" "Language-Team: Friulian <f.t.public@gmail.com>\n" @@ -66,6 +66,7 @@ #~ "No si è rivâts a configurâ il codificadôr audio mp3 LAME. Controle i " #~ "parametris di codifiche." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/gl.po -> gst-plugins-ugly-1.20.1.tar.xz/po/gl.po
Changed
@@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.0.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-12-15 03:47+0200\n" "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n" "Language-Team: Galician <proxecto@trasno.net>\n" @@ -16,6 +16,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Virtaal 0.7.1\n" "X-Project-Style: gnome\n" @@ -68,6 +69,7 @@ #~ "Produciuse un erro ao configurar o codificador LAME mp3. Comprobe os seus " #~ "parámetros de codificación." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/gst-plugins-ugly-1.0.pot -> gst-plugins-ugly-1.20.1.tar.xz/po/gst-plugins-ugly-1.0.pot
Changed
@@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gst-plugins-ugly-1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-02 15:07+0000\n" +"POT-Creation-Date: 2022-03-14 11:38+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,50 +17,50 @@ "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: ext/cdio/gstcdiocddasrc.c:189 +#: ext/cdio/gstcdiocddasrc.c:197 msgid "Could not read from CD." msgstr "" -#: ext/cdio/gstcdiocddasrc.c:396 +#: ext/cdio/gstcdiocddasrc.c:404 msgid "Could not open CD device for reading." msgstr "" -#: ext/cdio/gstcdiocddasrc.c:403 +#: ext/cdio/gstcdiocddasrc.c:411 msgid "Disc is not an Audio CD." msgstr "" -#: ext/dvdread/dvdreadsrc.c:231 ext/dvdread/dvdreadsrc.c:238 +#: ext/dvdread/dvdreadsrc.c:233 ext/dvdread/dvdreadsrc.c:240 msgid "Could not open DVD" msgstr "" -#: ext/dvdread/dvdreadsrc.c:245 ext/dvdread/dvdreadsrc.c:626 -#: ext/dvdread/dvdreadsrc.c:633 +#: ext/dvdread/dvdreadsrc.c:247 ext/dvdread/dvdreadsrc.c:628 +#: ext/dvdread/dvdreadsrc.c:635 #, c-format msgid "Could not open DVD title %d" msgstr "" -#: ext/dvdread/dvdreadsrc.c:251 +#: ext/dvdread/dvdreadsrc.c:253 #, c-format msgid "Failed to go to chapter %d of DVD title %d" msgstr "" -#: ext/dvdread/dvdreadsrc.c:640 +#: ext/dvdread/dvdreadsrc.c:642 #, c-format msgid "" "Could not open DVD title %d. Interactive titles are not supported by this " "element" msgstr "" -#: ext/dvdread/dvdreadsrc.c:995 +#: ext/dvdread/dvdreadsrc.c:997 msgid "" "Could not read DVD. This may be because the DVD is encrypted and a DVD " "decryption library is not installed." msgstr "" -#: ext/dvdread/dvdreadsrc.c:998 +#: ext/dvdread/dvdreadsrc.c:1000 msgid "Could not read DVD." msgstr "" -#: gst/asfdemux/gstasfdemux.c:452 gst/asfdemux/gstasfdemux.c:460 +#: gst/asfdemux/gstasfdemux.c:455 gst/asfdemux/gstasfdemux.c:463 msgid "This stream contains no data." msgstr ""
View file
gst-plugins-ugly-1.18.6.tar.xz/po/hr.po -> gst-plugins-ugly-1.20.1.tar.xz/po/hr.po
Changed
@@ -4,13 +4,13 @@ # This file is distributed under the same license as the gst-plugins-ugly package. # # Tomislav Krznar <tomislav.krznar@gmail.com>, 2012. -# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2018, 2019. +# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2018, 2019, 2021. msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.15.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" -"PO-Revision-Date: 2019-02-03 13:14-0800\n" +"Project-Id-Version: gst-plugins-ugly-1.19.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" +"PO-Revision-Date: 2021-09-24 16:09+0200\n" "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n" "Language-Team: Croatian <lokalizacija@linux.hr>\n" "Language: hr\n" @@ -20,7 +20,7 @@ "X-Bugs: Report translation errors to the Language-Team address.\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" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 3.0\n" msgid "Could not read from CD." msgstr "Nije moguće čitati CD."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/hu.po -> gst-plugins-ugly-1.20.1.tar.xz/po/hu.po
Changed
@@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.0.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-11-30 15:02+0100\n" "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n" "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n" @@ -15,6 +15,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Lokalize 1.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -66,6 +67,7 @@ #~ "A LAME MP3 hangkódoló beállítása meghiúsult. Ellenőrizze a kódolás " #~ "beállításait." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/id.po -> gst-plugins-ugly-1.20.1.tar.xz/po/id.po
Changed
@@ -5,77 +5,77 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.2.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2013-11-09 15:57+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2014-01-27 20:04+0700\n" "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n" "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n" "Language: id\n" -"X-Bugs: Report translation errors to the Language-Team address.\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" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: ext/cdio/gstcdiocddasrc.c:199 msgid "Could not read from CD." msgstr "Tak dapat membaca dari CD." -#: ext/cdio/gstcdiocddasrc.c:406 msgid "Could not open CD device for reading." msgstr "Tak dapat membuka divais CD untuk dibaca." -#: ext/cdio/gstcdiocddasrc.c:413 msgid "Disc is not an Audio CD." msgstr "Cakram bukan CD Audio." -#: ext/dvdread/dvdreadsrc.c:228 ext/dvdread/dvdreadsrc.c:235 msgid "Could not open DVD" msgstr "Tak dapat membuka DVD" -#: ext/dvdread/dvdreadsrc.c:242 ext/dvdread/dvdreadsrc.c:618 -#: ext/dvdread/dvdreadsrc.c:625 #, c-format msgid "Could not open DVD title %d" msgstr "Tak dapat membuka judul DVD %d" -#: ext/dvdread/dvdreadsrc.c:248 #, c-format msgid "Failed to go to chapter %d of DVD title %d" msgstr "Gagal pergi ke bab %d dari judul DVD %d" -#: ext/dvdread/dvdreadsrc.c:632 #, c-format -msgid "Could not open DVD title %d. Interactive titles are not supported by this element" -msgstr "Tak dapat membuka judul DVD %d. Judul interaktif tidak didukung oleh elemen ini" +msgid "" +"Could not open DVD title %d. Interactive titles are not supported by this " +"element" +msgstr "" +"Tak dapat membuka judul DVD %d. Judul interaktif tidak didukung oleh elemen " +"ini" -#: ext/dvdread/dvdreadsrc.c:985 -msgid "Could not read DVD. This may be because the DVD is encrypted and a DVD decryption library is not installed." -msgstr "Tak dapat membaca DVD. Hal ini karena DVD terenkripsi dan pustaka dekripsi DVD tidak diinstal." +msgid "" +"Could not read DVD. This may be because the DVD is encrypted and a DVD " +"decryption library is not installed." +msgstr "" +"Tak dapat membaca DVD. Hal ini karena DVD terenkripsi dan pustaka dekripsi " +"DVD tidak diinstal." -#: ext/dvdread/dvdreadsrc.c:988 msgid "Could not read DVD." msgstr "Tak dapat membaca DVD." -#: ext/lame/gstlamemp3enc.c:394 -msgid "Failed to configure LAME mp3 audio encoder. Check your encoding parameters." -msgstr "Gagal mengatur penyandi audio mp3 LAME. Cek parameter penyandian anda." - -#: ext/lame/gstlamemp3enc.c:426 ext/twolame/gsttwolamemp2enc.c:486 -#, c-format -msgid "The requested bitrate %d kbit/s for property '%s' is not allowed. The bitrate was changed to %d kbit/s." -msgstr "Bitrasi %d kbit/s yang diminta untuk properti '%s' tidak diizinkan. Bitrasi diubah ke %d kbit/s." - -#: ext/twolame/gsttwolamemp2enc.c:411 -msgid "Failed to configure TwoLAME encoder. Check your encoding parameters." -msgstr "Gagal mengatur penyandi TwoLAME. Cek parameter penyandian anda." - -#: gst/asfdemux/gstasfdemux.c:412 msgid "This stream contains no data." msgstr "Arus ini tidak berisi data." -#: gst/asfdemux/gstasfdemux.c:419 gst/asfdemux/gstasfdemux.c:1971 -msgid "Internal data stream error." -msgstr "Galat arus data internal." +#~ msgid "" +#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " +#~ "parameters." +#~ msgstr "" +#~ "Gagal mengatur penyandi audio mp3 LAME. Cek parameter penyandian anda." + +#, c-format +#~ msgid "" +#~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " +#~ "bitrate was changed to %d kbit/s." +#~ msgstr "" +#~ "Bitrasi %d kbit/s yang diminta untuk properti '%s' tidak diizinkan. " +#~ "Bitrasi diubah ke %d kbit/s." + +#~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters." +#~ msgstr "Gagal mengatur penyandi TwoLAME. Cek parameter penyandian anda." + +#~ msgid "Internal data stream error." +#~ msgstr "Galat arus data internal." #~ msgid "Invalid title information on DVD." #~ msgstr "Informasi judul tidak sah pada DVD."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/it.po -> gst-plugins-ugly-1.20.1.tar.xz/po/it.po
Changed
@@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.10.0\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2017-09-15 09:56+0200\n" "Last-Translator: Sebastiano Pistore <sebastianopistore.info@protonmail.ch>\n" "Language-Team: Italian <tp@lists.linux.it>\n" @@ -70,6 +70,7 @@ #~ "di codifica." # NEW +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/ja.po -> gst-plugins-ugly-1.20.1.tar.xz/po/ja.po
Changed
@@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.0.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-12-22 19:42+0900\n" "Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n" "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" @@ -16,6 +16,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Poedit 1.5.4\n" msgid "Could not read from CD." @@ -66,6 +67,7 @@ #~ "LAME MP3 音声エンコーダーの構成に失敗しました。エンコーディングパラメータ" #~ "をチェックしてください。" +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/lt.po -> gst-plugins-ugly-1.20.1.tar.xz/po/lt.po
Changed
@@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly-0.10.7.2\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2008-05-14 02:52+0300\n" "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n" "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n" @@ -14,6 +14,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" "%100<10 || n%100>=20) ? 1 : 2);\n" @@ -59,14 +60,22 @@ msgid "This stream contains no data." msgstr "Šiame sraute nėra duomenų." -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." +#~ msgid "Invalid title information on DVD." +#~ msgstr "Netaisyklinga DVD įrašo informacija." + +#, c-format +#~ msgid "Failed to open DVD device '%s'." +#~ msgstr "Nepavyko atverti DVD įrenginio „%s“." + +#~ msgid "Failed to set PGC based seeking." +#~ msgstr "Nepavyko nustatyti PGC paieškos." + +#~ msgid "Failed to configure LAME encoder. Check your encoding parameters." #~ msgstr "" #~ "Nepavyko sukonfigūruoti LAME kodavimo programos. Patikrinkite kodavimo " #~ "parametrus." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s." @@ -74,30 +83,5 @@ #~ "Pageidautas bitų dažnis %d kbit/s savybei „%s“ neleidžiamas. Bitų dažnis " #~ "pakeistas į %d kbit/s." -#, fuzzy -#~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters." -#~ msgstr "" -#~ "Nepavyko sukonfigūruoti LAME kodavimo programos. Patikrinkite kodavimo " -#~ "parametrus." - -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAMEMP3ENC encoder. Check your encoding parameters." -#~ msgstr "" -#~ "Nepavyko sukonfigūruoti LAME kodavimo programos. Patikrinkite kodavimo " -#~ "parametrus." - -#~ msgid "Invalid title information on DVD." -#~ msgstr "Netaisyklinga DVD įrašo informacija." - -#~ msgid "Could not read title information for DVD." -#~ msgstr "Nepavyko perskaityti DVD įrašo informacijos." - -#~ msgid "Failed to open DVD device '%s'." -#~ msgstr "Nepavyko atverti DVD įrenginio „%s“." - -#~ msgid "Failed to set PGC based seeking." -#~ msgstr "Nepavyko nustatyti PGC paieškos." - #~ msgid "This file is encrypted and cannot be played." #~ msgstr "Šis failas užšifruotas ir negali būti parodytas."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/lv.po -> gst-plugins-ugly-1.20.1.tar.xz/po/lv.po
Changed
@@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.2.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2014-04-20 16:24+0300\n" "Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n" "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n" @@ -15,6 +15,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" "X-Generator: Lokalize 1.5\n" @@ -67,6 +68,7 @@ #~ "Neizdevās konfigurēt LAME mp3 audio kodētāju. Pārbaudiet savus kodēšanas " #~ "parametrus." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/ms.po -> gst-plugins-ugly-1.20.1.tar.xz/po/ms.po
Changed
@@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly-0.10.11.2\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2009-07-16 15:07+0800\n" "Last-Translator: Muhammad Najmi bin Ahmad Zabidi <najmi.zabidi@gmail.com>\n" "Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n" @@ -14,6 +14,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" msgid "Could not read from CD." @@ -55,13 +56,23 @@ msgid "This stream contains no data." msgstr "Aliran ini tiada data." -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." -#~ msgstr "" -#~ "Gagal mengkonfigur pengenkod TwoLAME. Periksa parameter pengenkod anda." +#~ msgid "Invalid title information on DVD." +#~ msgstr "Maklumat tajuk pada DVD tidak sah." + +#~ msgid "Could not read title information for DVD." +#~ msgstr "Tidak dapat baca maklumat tajuk pada DVD." + +#, c-format +#~ msgid "Failed to open DVD device '%s'." +#~ msgstr "Gagal membuka peranti DVD %s'." + +#~ msgid "Failed to set PGC based seeking." +#~ msgstr "Gagal untuk menetapkan carian berasaskan PGC." + +#~ msgid "Failed to configure LAME encoder. Check your encoding parameters." +#~ msgstr "Gagal mengkonfigur pengekod LAME. Periksa parameter pengenkod anda." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s." @@ -75,20 +86,3 @@ #~ msgid "Internal data stream error." #~ msgstr "Ralat aliran data dalaman." - -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAMEMP3ENC encoder. Check your encoding parameters." -#~ msgstr "Gagal mengkonfigur pengekod LAME. Periksa parameter pengenkod anda." - -#~ msgid "Invalid title information on DVD." -#~ msgstr "Maklumat tajuk pada DVD tidak sah." - -#~ msgid "Could not read title information for DVD." -#~ msgstr "Tidak dapat baca maklumat tajuk pada DVD." - -#~ msgid "Failed to open DVD device '%s'." -#~ msgstr "Gagal membuka peranti DVD %s'." - -#~ msgid "Failed to set PGC based seeking." -#~ msgstr "Gagal untuk menetapkan carian berasaskan PGC."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/mt.po -> gst-plugins-ugly-1.20.1.tar.xz/po/mt.po
Changed
@@ -4,8 +4,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly-0.10.9.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2008-11-13 18:18+0100\n" "Last-Translator: Michel Bugeja <michelbugeja@rabatmalta.com>\n" "Language-Team: Maltese <translation-team-mt@lists.sourceforge.net>\n" @@ -13,6 +13,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Poedit-Language: Maltese\n" "X-Poedit-Country: Malta\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -58,13 +59,24 @@ msgid "This stream contains no data." msgstr "L-istream ma fiha l-ebda data." -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." +#~ msgid "Invalid title information on DVD." +#~ msgstr "L-informazzjoni tat-titlu tad-DVD mhux validu." + +#~ msgid "Could not read title information for DVD." +#~ msgstr "Ma nistax naqra l-informazzjoni tat-titlu tad-DVD." + +#, c-format +#~ msgid "Failed to open DVD device '%s'." +#~ msgstr "Problema biex niftaħ l-apparat tad-DVD '%s'." + +#~ msgid "Failed to set PGC based seeking." +#~ msgstr "Problema biex nissettja tfittxija bbażata fuq PGC." + +#~ msgid "Failed to configure LAME encoder. Check your encoding parameters." #~ msgstr "" #~ "Problema biex nissetja LAME encoder. Iċċekkja l-parametri tal-encoding." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s." @@ -72,28 +84,5 @@ #~ "Mhux permess il-bitrate %d kbit/s rikjesta għal '%s'. Għalhekk il-bitrate " #~ "ġiet mibdula għal %d kbit/s." -#, fuzzy -#~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters." -#~ msgstr "" -#~ "Problema biex nissetja LAME encoder. Iċċekkja l-parametri tal-encoding." - #~ msgid "Internal data stream error." #~ msgstr "Problema interna fid-data stream." - -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAMEMP3ENC encoder. Check your encoding parameters." -#~ msgstr "" -#~ "Problema biex nissetja LAME encoder. Iċċekkja l-parametri tal-encoding." - -#~ msgid "Invalid title information on DVD." -#~ msgstr "L-informazzjoni tat-titlu tad-DVD mhux validu." - -#~ msgid "Could not read title information for DVD." -#~ msgstr "Ma nistax naqra l-informazzjoni tat-titlu tad-DVD." - -#~ msgid "Failed to open DVD device '%s'." -#~ msgstr "Problema biex niftaħ l-apparat tad-DVD '%s'." - -#~ msgid "Failed to set PGC based seeking." -#~ msgstr "Problema biex nissettja tfittxija bbażata fuq PGC."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/nb.po -> gst-plugins-ugly-1.20.1.tar.xz/po/nb.po
Changed
@@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.0.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-12-21 21:38+0100\n" "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n" "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n" @@ -16,6 +16,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Poedit 1.5.4\n" msgid "Could not read from CD." @@ -64,6 +65,7 @@ #~ "parameters." #~ msgstr "Kunne ikke konfigurere LAME-koder. Sjekk parametere for kodingen." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/nl.po -> gst-plugins-ugly-1.20.1.tar.xz/po/nl.po
Changed
@@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.10.0\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2017-10-24 23:30+0100\n" "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n" "Language-Team: Dutch <vertaling@vrijschrift.org>\n" @@ -67,6 +67,7 @@ #~ "Instellen van de LAME mp3-encoder is mislukt. Controleer uw parameters " #~ "voor codering." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/or.po -> gst-plugins-ugly-1.20.1.tar.xz/po/or.po
Changed
@@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-0.8.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2004-09-27 13:32+0530\n" "Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n" "Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n"
View file
gst-plugins-ugly-1.18.6.tar.xz/po/pl.po -> gst-plugins-ugly-1.20.1.tar.xz/po/pl.po
Changed
@@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.0.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-11-28 19:34+0100\n" "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" @@ -14,6 +14,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" msgid "Could not read from CD." msgstr "Odczyt z CD nie powiódł się." @@ -63,6 +64,7 @@ #~ "Nie udało się skonfigurować kodera dźwięku mp3 LAME. Proszę sprawdzić " #~ "parametry kodowania." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/pt_BR.po -> gst-plugins-ugly-1.20.1.tar.xz/po/pt_BR.po
Changed
@@ -1,15 +1,15 @@ # Brazilian Portuguese translation of gst-plugins-ugly. # This file is distributed under the same license as the gst-plugins-ugly package. -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2021 Free Software Foundation, Inc. # Raphael Higino <In memoriam>, 2007. -# Fabrício Godoy <skarllot@gmail.com>, 2008-2015. +# Fabrício Godoy <skarllot@gmail.com>, 2008-2021. # msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.7.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" -"PO-Revision-Date: 2015-12-28 19:54-0200\n" +"Project-Id-Version: gst-plugins-ugly-1.19.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" +"PO-Revision-Date: 2021-09-26 12:38-0300\n" "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n" "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge." "net>\n" @@ -17,7 +17,9 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 3.0\n" msgid "Could not read from CD." msgstr "Não foi possível ler as informações do CD."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/ro.po -> gst-plugins-ugly-1.20.1.tar.xz/po/ro.po
Changed
@@ -1,21 +1,28 @@ # Romanian translation for gst-plugins-ugly # This file is distributed under the same license as the gst-plugins-ugly package. +# # Lucian Adrian Grijincu <lucian.grijincu@gmail.com>, 2010. +# Florentina Mușat <florentina.musat.28@gmail.com>, 2020. +# Actualizare a mesajelor, de la fișierul „gst-plugins-ugly-1.19.2.pot”. +# Eliminare a mesajelor ce-au dispărut în ultima versiune. +# Actualizări realizate de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 15.01.2022. +# msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly 0.10.14.2\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" -"PO-Revision-Date: 2010-08-16 03:32+0300\n" -"Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n" +"Project-Id-Version: gst-plugins-ugly 1.19.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-09-23 01:34+0100\n" +"PO-Revision-Date: 2022-01-17 12:10+0100\n" +"Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n" "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2);;\n" -"X-Generator: Virtaal 0.6.1\n" +"X-Generator: Poedit 2.3.1\n" msgid "Could not read from CD." msgstr "Nu s-a putut citi de pe CD." @@ -26,12 +33,17 @@ msgid "Disc is not an Audio CD." msgstr "Discul nu este un CD audio." +# R-GC, scrie: +# am adăugat „-ul”, pentru că limba romînă pentru +# siglele „articulate” și pentru cuvintele străine, intrate în limbajul cotidian, netraduse; îl cere... +# Și, deasemeni, pentru armonizarea cu restul +# traducerilor gst/gstreamer msgid "Could not open DVD" -msgstr "Nu s-a putut deschide DVD" +msgstr "Nu s-a putut deschide DVD-ul" #, c-format msgid "Could not open DVD title %d" -msgstr "Nu s-a putut deschide titlul DVD %d" +msgstr "Nu s-a putut deschide titlul DVD-ul %d" #, c-format msgid "Failed to go to chapter %d of DVD title %d" @@ -45,41 +57,19 @@ "Nu s-a putut deschide titlul DVD %d. Titlurile interactive nu sunt suportate " "de acest element" +# R-GC, scrie: +# modificat de la: +# „Aceasta poate fi pentru că DVD-ul este criptat și o bibliotecă de decriptare de DVD nu este instalată.” - mi se pare o traducere laconică, ca un +# limbaj de robot: „Paltonul dvs., vă rog!” msgid "" "Could not read DVD. This may be because the DVD is encrypted and a DVD " "decryption library is not installed." msgstr "" +"Nu s-a putut citi DVD-ul. Acest lucru se poate datora faptului că DVD-ul " +"este criptat și o bibliotecă de decriptare a DVD-ului nu este instalată." -#, fuzzy msgid "Could not read DVD." -msgstr "Nu s-a putut deschide DVD" +msgstr "Nu s-a putut citi DVD-ul." msgid "This stream contains no data." msgstr "Fluxul acesta nu conține date." - -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." -#~ msgstr "" -#~ "Nu s-a putut configura codorul TwoLAME. Verificați parametrii de codare." - -#~ msgid "" -#~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " -#~ "bitrate was changed to %d kbit/s." -#~ msgstr "" -#~ "Rata de biți solicitată de %d kbiți/s pentru proprietatea „%s” nu este " -#~ "permisă. Rata de biți a fost modificată la %d kbiți/s." - -#~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters." -#~ msgstr "" -#~ "Nu s-a putut configura codorul TwoLAME. Verificați parametrii de codare." - -#~ msgid "Internal data stream error." -#~ msgstr "Eroare internă a fluxului de date." - -#, fuzzy -#~ msgid "" -#~ "Failed to configure LAMEMP3ENC encoder. Check your encoding parameters." -#~ msgstr "" -#~ "Nu s-a putut configura codorul LAME. Verificați parametrii de codare."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/ru.po -> gst-plugins-ugly-1.20.1.tar.xz/po/ru.po
Changed
@@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.0.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-12-01 13:38+0400\n" "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n" "Language-Team: Russian <gnu@mx.ru>\n" @@ -16,6 +16,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Lokalize 1.4\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" @@ -68,6 +69,7 @@ #~ "Не удалось настроить аудио-кодировщик mp3 LAME. Проверьте параметры " #~ "кодирования." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/sk.po -> gst-plugins-ugly-1.20.1.tar.xz/po/sk.po
Changed
@@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.2.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2014-01-30 10:28+0100\n" "Last-Translator: Peter Tuharsky <tuharsky@misbb.sk>\n" "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n" @@ -15,6 +15,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\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" "X-Poedit-Language: Slovak\n" @@ -68,6 +69,7 @@ #~ "Nepodarilo sa nastaviť LAME mp3 enkodér. Skontrolujte svoje kódovacie " #~ "nastavenia, prosím." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/sl.po -> gst-plugins-ugly-1.20.1.tar.xz/po/sl.po
Changed
@@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 0.10.17.2\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-03-26 22:48+0100\n" "Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n" "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n" @@ -16,6 +16,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" @@ -58,13 +59,11 @@ msgid "This stream contains no data." msgstr "Pretok ne vsebuje podatkov." -#~ msgid "" -#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " -#~ "parameters." +#~ msgid "Failed to configure LAME encoder. Check your encoding parameters." #~ msgstr "" -#~ "Napaka med nastavljanjem zvočnega kodirnika mp3 LAME. Preverite parametre " -#~ "kodiranja." +#~ "Napaka med nastavljanjem kodirnika LAME. Preverite parametre kodiranja." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s." @@ -79,6 +78,9 @@ #~ msgid "Internal data stream error." #~ msgstr "Notranja napaka pretoka podatkov." -#~ msgid "Failed to configure LAME encoder. Check your encoding parameters." +#~ msgid "" +#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " +#~ "parameters." #~ msgstr "" -#~ "Napaka med nastavljanjem kodirnika LAME. Preverite parametre kodiranja." +#~ "Napaka med nastavljanjem zvočnega kodirnika mp3 LAME. Preverite parametre " +#~ "kodiranja."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/sq.po -> gst-plugins-ugly-1.20.1.tar.xz/po/sq.po
Changed
@@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins 0.8.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2004-08-07 20:29+0200\n" "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n" "Language-Team: Albanian <begraj@hotmail.com>\n"
View file
gst-plugins-ugly-1.18.6.tar.xz/po/sr.po -> gst-plugins-ugly-1.20.1.tar.xz/po/sr.po
Changed
@@ -4,8 +4,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly-1.1.4\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2013-10-03 22:30+0200\n" "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n" "Language-Team: Serbian <(nothing)>\n" @@ -13,6 +13,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\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" "X-Project-Style: gnome\n" @@ -65,6 +66,7 @@ #~ "Нисам успео да подесим енкодер звука ЛАМЕ мп3. Проверите ваше параметре " #~ "кодирања." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/sv.po -> gst-plugins-ugly-1.20.1.tar.xz/po/sv.po
Changed
@@ -7,70 +7,77 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.15.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-01-17 02:02+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2019-01-17 02:02+0000\n" "Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language: sv\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" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Poedit 1.8.6\n" -#: ext/cdio/gstcdiocddasrc.c:199 msgid "Could not read from CD." msgstr "Kunde inte läsa från cd." -#: ext/cdio/gstcdiocddasrc.c:406 msgid "Could not open CD device for reading." msgstr "Kunde inte öppna cd-enheten för läsning." -#: ext/cdio/gstcdiocddasrc.c:413 msgid "Disc is not an Audio CD." msgstr "Skivan är inte en ljud-cd." -#: ext/dvdread/dvdreadsrc.c:231 ext/dvdread/dvdreadsrc.c:238 msgid "Could not open DVD" msgstr "Kunde inte öppna dvd" -#: ext/dvdread/dvdreadsrc.c:245 ext/dvdread/dvdreadsrc.c:622 -#: ext/dvdread/dvdreadsrc.c:629 #, c-format msgid "Could not open DVD title %d" msgstr "Kunde inte öppna dvd-titel %d" -#: ext/dvdread/dvdreadsrc.c:251 #, c-format msgid "Failed to go to chapter %d of DVD title %d" msgstr "Misslyckades med att gå till kapitel %d för dvd-titel %d" -#: ext/dvdread/dvdreadsrc.c:636 #, c-format -msgid "Could not open DVD title %d. Interactive titles are not supported by this element" -msgstr "Kunde inte öppna dvd-titel %d. Interaktiva titlar stöds inte av det här elementet" +msgid "" +"Could not open DVD title %d. Interactive titles are not supported by this " +"element" +msgstr "" +"Kunde inte öppna dvd-titel %d. Interaktiva titlar stöds inte av det här " +"elementet" -#: ext/dvdread/dvdreadsrc.c:991 -msgid "Could not read DVD. This may be because the DVD is encrypted and a DVD decryption library is not installed." -msgstr "Kunde ej läsa dvd. Detta kan vara för att dvd:n är krypterad och ett dvd-avkrypteringsbibliotek inte är installerat." +msgid "" +"Could not read DVD. This may be because the DVD is encrypted and a DVD " +"decryption library is not installed." +msgstr "" +"Kunde ej läsa dvd. Detta kan vara för att dvd:n är krypterad och ett dvd-" +"avkrypteringsbibliotek inte är installerat." -#: ext/dvdread/dvdreadsrc.c:994 msgid "Could not read DVD." msgstr "Kunde inte läsa dvd." -#: gst/asfdemux/gstasfdemux.c:446 gst/asfdemux/gstasfdemux.c:454 msgid "This stream contains no data." msgstr "Den här strömmen innehåller inget data." -#~ msgid "Failed to configure LAME mp3 audio encoder. Check your encoding parameters." -#~ msgstr "Misslyckades med att konfigurera LAME mp3 ljudkodare. Kontrollera dina kodningsparametrar." +#~ msgid "" +#~ "Failed to configure LAME mp3 audio encoder. Check your encoding " +#~ "parameters." +#~ msgstr "" +#~ "Misslyckades med att konfigurera LAME mp3 ljudkodare. Kontrollera dina " +#~ "kodningsparametrar." -#~ msgid "The requested bitrate %d kbit/s for property '%s' is not allowed. The bitrate was changed to %d kbit/s." -#~ msgstr "Den begärda bitfrekvensen %d kbit/s för egenskapen \"%s\" tillåts inte. Bitfrekvensen ändrades till %d kbit/s." +#~ msgid "" +#~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " +#~ "bitrate was changed to %d kbit/s." +#~ msgstr "" +#~ "Den begärda bitfrekvensen %d kbit/s för egenskapen \"%s\" tillåts inte. " +#~ "Bitfrekvensen ändrades till %d kbit/s." #~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters." -#~ msgstr "Misslyckades med att konfigurera TwoLAME-kodaren. Kontrollera dina kodningsparametrar." +#~ msgstr "" +#~ "Misslyckades med att konfigurera TwoLAME-kodaren. Kontrollera dina " +#~ "kodningsparametrar." #~ msgid "Internal data stream error." #~ msgstr "Fel i intern dataström."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/ta.po -> gst-plugins-ugly-1.20.1.tar.xz/po/ta.po
Changed
@@ -6,59 +6,54 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.15.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-01-17 02:02+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2019-02-06 01:10+0530\n" "Last-Translator: Arun Isaac <arunisaac@systemreboot.net>\n" "Language-Team: Tamil <tamil@systemreboot.net>\n" "Language: ta\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: ext/cdio/gstcdiocddasrc.c:199 msgid "Could not read from CD." msgstr "குறுவட்டைப் படிக்க இயலவில்லை." -#: ext/cdio/gstcdiocddasrc.c:406 msgid "Could not open CD device for reading." msgstr "குறுவட்டுக் கருவியைப் படிப்பதற்காகத் திறக்க இயலவில்லை." -#: ext/cdio/gstcdiocddasrc.c:413 msgid "Disc is not an Audio CD." msgstr "இவ்வட்டு ஒலி குறுவட்டல்ல." -#: ext/dvdread/dvdreadsrc.c:231 ext/dvdread/dvdreadsrc.c:238 msgid "Could not open DVD" msgstr "இறுவட்டைத் திறக்க இயல்வில்லை" -#: ext/dvdread/dvdreadsrc.c:245 ext/dvdread/dvdreadsrc.c:622 -#: ext/dvdread/dvdreadsrc.c:629 #, c-format msgid "Could not open DVD title %d" msgstr "%d என்ற இறுவட்டுத் தலைப்பைத் திறக்க இயலவில்லை" -#: ext/dvdread/dvdreadsrc.c:251 #, c-format msgid "Failed to go to chapter %d of DVD title %d" msgstr "இறுவட்டுத் தலைப்பு %2$d யில் %1$d என்ற அத்தியாயத்திற்குச் செல்ல இயலவில்லை" -#: ext/dvdread/dvdreadsrc.c:636 #, c-format -msgid "Could not open DVD title %d. Interactive titles are not supported by this element" -msgstr "%d என்ற இறுவட்டுத் தலைப்பைத் திறக்க இயலவில்லை. ஊடாட்ட தலைப்புகளுக்கு இவ்வுறுப்பில் ஆதரவில்லை" +msgid "" +"Could not open DVD title %d. Interactive titles are not supported by this " +"element" +msgstr "" +"%d என்ற இறுவட்டுத் தலைப்பைத் திறக்க இயலவில்லை. ஊடாட்ட தலைப்புகளுக்கு இவ்வுறுப்பில் " +"ஆதரவில்லை" -#: ext/dvdread/dvdreadsrc.c:991 -msgid "Could not read DVD. This may be because the DVD is encrypted and a DVD decryption library is not installed." +msgid "" +"Could not read DVD. This may be because the DVD is encrypted and a DVD " +"decryption library is not installed." msgstr "" "இறுவட்டைப் படிக்க இயலவில்லை. இது இறுவட்டு மறையாக்கப்பட்டிருந்து அதனை மறைவிலக்க\n" "தேவையான நிரலகம் நிறுவப்படாததால் இருக்கலாம்." -#: ext/dvdread/dvdreadsrc.c:994 msgid "Could not read DVD." msgstr "இறுவட்டைப் படிக்க இயலவில்லை." -#: gst/asfdemux/gstasfdemux.c:446 gst/asfdemux/gstasfdemux.c:454 msgid "This stream contains no data." msgstr "இத்தரவுத்தொடரில் எத்தரவுமில்லை."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/tr.po -> gst-plugins-ugly-1.20.1.tar.xz/po/tr.po
Changed
@@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly-1.0.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-12-01 01:19+0200\n" "Last-Translator: Server Acim <serveracim@gmail.com>\n" "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n" @@ -14,6 +14,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" msgid "Could not read from CD." @@ -64,6 +65,7 @@ #~ "LAME mp3 kodlayıcı yapılandırılamadı. Kodlama parametrelerinizi " #~ "denetleyiniz." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/uk.po -> gst-plugins-ugly-1.20.1.tar.xz/po/uk.po
Changed
@@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.0.3\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2012-11-28 20:25+0200\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n" @@ -16,6 +16,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\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" "X-Generator: Lokalize 1.5\n" @@ -68,6 +69,7 @@ #~ "Помилка при налаштовуванні кодера LAME для звукових даних у форматі MP3. " #~ "Перевірте параметри кодування." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/vi.po -> gst-plugins-ugly-1.20.1.tar.xz/po/vi.po
Changed
@@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.3.90\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2014-06-30 09:20+0700\n" "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" @@ -16,6 +16,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Language-Team-Website: <http://translationproject.org/team/vi.html>\n" "X-Generator: LocFactoryEditor 1.8\n" @@ -68,6 +69,7 @@ #~ "Gặp lỗi khi cấu hình bộ giải mã âm thanh mp3 của LAME. Hãy kiểm tra các " #~ "tham số giải mã." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.18.6.tar.xz/po/zh_CN.po -> gst-plugins-ugly-1.20.1.tar.xz/po/zh_CN.po
Changed
@@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: gst-plugins-ugly 1.5.1\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" -"POT-Creation-Date: 2019-02-26 11:48+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-25 01:02+0100\n" "PO-Revision-Date: 2015-08-28 15:36+0800\n" "Last-Translator: Mingye Wang <arthur200126@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" @@ -18,6 +18,7 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Poedit 1.8.4\n" msgid "Could not read from CD." @@ -62,6 +63,7 @@ #~ "parameters." #~ msgstr "配置 LAME mp3 编码器失败. 请检查你的编码参数." +#, c-format #~ msgid "" #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The " #~ "bitrate was changed to %d kbit/s."
View file
gst-plugins-ugly-1.20.1.tar.xz/po/zh_TW.po
Added
@@ -0,0 +1,56 @@ +# Chinese (traditional) translation of gst-plugins-ugly. +# This file is put in the public domain. +# Yi-Jyun Pan <pan93412@gmail.com>, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gst-plugins-ugly 1.15.1\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n" +"POT-Creation-Date: 2019-01-17 02:02+0000\n" +"PO-Revision-Date: 2020-05-09 02:21+0800\n" +"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n" +"Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n" +"Language: zh_TW\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Could not read from CD." +msgstr "無法從 CD 讀取。" + +msgid "Could not open CD device for reading." +msgstr "無法開啟 CD 裝置以讀取。" + +msgid "Disc is not an Audio CD." +msgstr "光碟非音訊 CD。" + +msgid "Could not open DVD" +msgstr "無法開啟 DVD" + +#, c-format +msgid "Could not open DVD title %d" +msgstr "無法開啟 DVD 標題 %d" + +#, c-format +msgid "Failed to go to chapter %d of DVD title %d" +msgstr "無法前往 DVD 標題 %2$d 的章節 %1$d" + +#, c-format +msgid "" +"Could not open DVD title %d. Interactive titles are not supported by this " +"element" +msgstr "無法開啟 DVD 標題 %d。互動式標題不受此元素支援" + +msgid "" +"Could not read DVD. This may be because the DVD is encrypted and a DVD " +"decryption library is not installed." +msgstr "無法讀取 DVD。這可能是因為 DVD 已受加密,且未安裝 DVD 解密函式庫。" + +msgid "Could not read DVD." +msgstr "無法讀取 DVD。" + +msgid "This stream contains no data." +msgstr "此串流沒有資料。"
View file
gst-plugins-ugly-1.18.6.tar.xz/tests/check/elements/mpeg2dec.c -> gst-plugins-ugly-1.20.1.tar.xz/tests/check/elements/mpeg2dec.c
Changed
@@ -1789,7 +1789,7 @@ GST_VIDEO_INFO_FPS_D (&info) = 1; GST_VIDEO_INFO_CHROMA_SITE (&info) = GST_VIDEO_CHROMA_SITE_MPEG2; gst_video_colorimetry_from_string (&GST_VIDEO_INFO_COLORIMETRY (&info), - GST_VIDEO_COLORIMETRY_BT601); + "2:0:0:0"); GST_VIDEO_INFO_MULTIVIEW_MODE (&info) = GST_VIDEO_MULTIVIEW_MODE_MONO; out_caps = gst_video_info_to_caps (&info); @@ -1872,7 +1872,7 @@ GST_VIDEO_INFO_FPS_D (&info) = 1; GST_VIDEO_INFO_CHROMA_SITE (&info) = GST_VIDEO_CHROMA_SITE_MPEG2; gst_video_colorimetry_from_string (&GST_VIDEO_INFO_COLORIMETRY (&info), - GST_VIDEO_COLORIMETRY_BT601); + "2:0:0:0"); GST_VIDEO_INFO_MULTIVIEW_MODE (&info) = GST_VIDEO_MULTIVIEW_MODE_MONO; out_caps = gst_video_info_to_caps (&info);
View file
gst-plugins-ugly-1.18.6.tar.xz/tests/check/meson.build -> gst-plugins-ugly-1.20.1.tar.xz/tests/check/meson.build
Changed
@@ -24,9 +24,9 @@ pluginsdirs = [] if gst_dep.type_name() == 'pkgconfig' pbase = dependency('gstreamer-plugins-base-' + api_version, required: true) - pluginsdirs = [gst_dep.get_pkgconfig_variable('pluginsdir'), - pbase.get_pkgconfig_variable('pluginsdir')] - gst_plugin_scanner_dir = gst_dep.get_pkgconfig_variable('pluginscannerdir') + pluginsdirs = [gst_dep.get_variable('pluginsdir'), + pbase.get_variable('pluginsdir')] + gst_plugin_scanner_dir = gst_dep.get_variable('pluginscannerdir') else gst_plugin_scanner_dir = subproject('gstreamer').get_variable('gst_scanner_dir') endif @@ -72,8 +72,8 @@ env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '') env.set('CK_DEFAULT_TIMEOUT', '20') env.set('GST_PLUGIN_LOADING_WHITELIST', 'gstreamer', 'gst-plugins-base', - 'gst-plugins-good', 'gst-plugins-ugly@' + meson.build_root()) - env.set('GST_PLUGIN_PATH_1_0', [meson.build_root()] + pluginsdirs) + 'gst-plugins-good', 'gst-plugins-ugly@' + meson.project_build_root()) + env.set('GST_PLUGIN_PATH_1_0', [meson.global_build_root()] + pluginsdirs) env.set('GST_REGISTRY', join_paths(meson.current_build_dir(), '@0@.registry'.format(test_name))) env.set('GST_PLUGIN_SCANNER_1_0', gst_plugin_scanner_path) test(test_name, exe, env: env, timeout: 3 * 60)
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.