Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • gstreamer/gst-plugins-base
  • thiblahute/gst-plugins-base
  • slomo/gst-plugins-base
  • sree/gst-plugins-base
  • seungha.yang/gst-plugins-base
  • xclaesse/gst-plugins-base
  • haihao/gst-plugins-base
  • ystreet/gst-plugins-base
  • bilboed/gst-plugins-base
  • ndufresne/gst-plugins-base
  • changbok.chea/gst-plugins-base
  • hgr/gst-plugins-base
  • nielsdg/gst-plugins-base
  • sjoerd/gst-plugins-base
  • linussn/gst-plugins-base
  • alatiera/gst-plugins-base
  • nirbheek/gst-plugins-base
  • redstar/gst-plugins-base
  • philn/gst-plugins-base
  • gdesmott/gst-plugins-base
  • Yeongjin-Jeong/gst-plugins-base
  • vjaquez/gst-plugins-base
  • wangfei/gst-plugins-base
  • Freyr/gst-plugins-base
  • milloni-ct/gst-plugins-base
  • drakkan/gst-plugins-base
  • patricia/gst-plugins-base
  • ghodhben.marwen/gst-plugins-base
  • perfn/gst-plugins-base
  • arun/gst-plugins-base
  • alexashley/gst-plugins-base
  • heftig/gst-plugins-base
  • pH5/gst-plugins-base
  • joykim/gst-plugins-base
  • wonchul/gst-plugins-base
  • meh/gst-plugins-base
  • tpm/gst-plugins-base
  • krokodilerian/gst-plugins-base
  • ylatuya/gst-plugins-base
  • dabrain34/gst-plugins-base
  • wtaymans/gst-plugins-base
  • gkiagia/gst-plugins-base
  • victortoso/gst-plugins-base
  • andy/gst-plugins-base
  • hjespersen/gst-plugins-base
  • mrk501/gst-plugins-base
  • boxerab/gst-plugins-base
  • Yale323/gst-plugins-base
  • gracefulhoon83/gst-plugins-base
  • JimmyOhn/gst-plugins-base
  • Bjorkstrom/gst-plugins-base
  • vivia/gst-plugins-base
  • den_erpel/gst-plugins-base
  • rob-deutsch/gst-plugins-base
  • ulfo/gst-plugins-base
  • Eunhye/gst-plugins-base
  • laugilus/gst-plugins-base
  • lynxeye/gst-plugins-base
  • PanMichal/gst-plugins-base
  • adn770/gst-plugins-base
  • lord.jacold/gst-plugins-base
  • phw/gst-plugins-base
  • m.tretter/gst-plugins-base
  • loganek/gst-plugins-base
  • tomaszbulik/gst-plugins-base
  • He_Junyan/gst-plugins-base
  • awilfox/gst-plugins-base
  • JaredHu/gst-plugins-base
  • dannys/gst-plugins-base
  • dude/gst-plugins-base
  • sumaidsyed/gst-plugins-base
  • akinobu.mita/gst-plugins-base
  • smortex/gst-plugins-base
  • groleo/gst-plugins-base
  • dkl/gst-plugins-base
  • fherrera/gst-plugins-base
  • hein/gst-plugins-base
  • nicolashuet/gst-plugins-base
  • FurongZhang/gst-plugins-base
  • kevinbing.song/gst-plugins-base
  • rsiv/gst-plugins-base
  • GstBlub/gst-plugins-base
  • mgorse1/gst-plugins-base
  • dougnazar/gst-plugins-base
  • goranjn/gst-plugins-base
  • dylanmccall/gst-plugins-base
  • marxin.liska/gst-plugins-base
  • thaytan/gst-plugins-base
  • jh-hsd/gst-plugins-base
  • ljonas/gst-plugins-base
  • charles/gst-plugins-base
  • dv1/gst-plugins-base
  • DaveTrussel/gst-plugins-base
  • JoakimJ/gst-plugins-base
  • peat-psuwit/gst-plugins-base
  • Ambyjkl/gst-plugins-base
  • sancane/gst-plugins-base
  • HadrienPatte/gst-plugins-base
  • hwilkes/gst-plugins-base
  • mparisdiaz/gst-plugins-base
  • leio/gst-plugins-base
  • cap/gst-plugins-base
  • waiwits/gst-plugins-base
  • joshuadoe/gst-plugins-base
  • psreport/gst-plugins-base
  • ntrrgc/gst-plugins-base
  • ayaka/gst-plugins-base
  • andrew.voznytsa/gst-plugins-base
  • NPN/gst-plugins-base
  • Dmt/gst-plugins-base
  • michaelgruner/gst-plugins-base
  • kek/gst-plugins-base
  • thiagossantos/gst-plugins-base
  • Buora/gst-plugins-base
  • Cwiiis/gst-plugins-base
  • lool/gst-plugins-base
  • XuGuangxin/gst-plugins-base
  • cfoch/gst-plugins-base
  • cjmayo/gst-plugins-base
  • marian/gst-plugins-base
  • ludvigr/gst-plugins-base
  • uno20001/gst-plugins-base
  • Knopp/gst-plugins-base
  • rawoul/gst-plugins-base
  • Hosang/gst-plugins-base
  • ayush9398/gst-plugins-base
  • raytiley/gst-plugins-base
  • trollkarlen/gst-plugins-base
  • jedevc/gst-plugins-base
  • nazar-pc/gst-plugins-base
  • jusizela/gst-plugins-base
  • jdm/gst-plugins-base
  • bleetoteelb/gst-plugins-base
  • RomanValov/gst-plugins-base
  • SimonChristensson/gst-plugins-base
  • id_est/gst-plugins-base
  • gstreamer-release-bot/gst-plugins-base
  • will.miller/gst-plugins-base
  • gblanchard/gst-plugins-base
  • zfigura/gst-plugins-base
  • saidinesh5/gst-plugins-base
  • keis/gst-plugins-base
  • Rafostar/gst-plugins-base
  • SanchayanMaity/gst-plugins-base
  • jjardon/gst-plugins-base
  • xhaakon/gst-plugins-base
  • ding/gst-plugins-base
  • ParkJunsoo/gst-plugins-base
  • piotr.gasiorowski/gst-plugins-base
  • vicamo/gst-plugins-base
  • danielknobe/gst-plugins-base
  • kemen209/gst-plugins-base
  • avdb/gst-plugins-base
  • wantlamy/gst-plugins-base
  • davidventura/gst-plugins-base
  • dcasanova/gst-plugins-base
  • AlexTMjugador/gst-plugins-base
  • francisv/gst-plugins-base
  • AntoninRousset/gst-plugins-base
  • TheMuso/gst-plugins-base
  • hq/gst-plugins-base
  • tiger1987p/gst-plugins-base
  • cxw42/gst-plugins-base
  • crziter/gst-plugins-base
  • rburchell/gst-plugins-base
  • dwlsalmeida/gst-plugins-base
  • paul.goulpie/gst-plugins-base
  • lanodan/gst-plugins-base
  • quaresma.jose/gst-plugins-base
  • eocanha/gst-plugins-base
  • julian/gst-plugins-base
  • oreaus/gst-plugins-base
  • Roopang/gst-plugins-base
  • mol/gst-plugins-base
  • aferin/gst-plugins-base
  • mdegans/gst-plugins-base
  • sergei1/gst-plugins-base
  • mamunkc/gst-plugins-base
  • ezequielgarcia/gst-plugins-base
  • aslobodeniuk/gst-plugins-base
  • ccwu660601/gst-plugins-base
  • TobiasR/gst-plugins-base
  • blino/gst-plugins-base
  • felixonmars/gst-plugins-base
  • pldin601/gst-plugins-base
  • aniket_fti/gst-plugins-base
  • ssdeng6812/gst-plugins-base
  • rtiemann/gst-plugins-base
  • personalizedrefrigerator/gst-plugins-base
  • nuttle/gst-plugins-base
  • hoonhee.lee/gst-plugins-base
  • cnhzcy14/gst-plugins-base
  • liu_ming50/gst-plugins-base
  • vnguyentrong/gst-plugins-base
194 results
Show changes
Commits on Source (24)
Showing
with 4102 additions and 335 deletions
=== release 1.18.0 ===
2020-09-08 00:03:33 +0100 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
* NEWS:
* README:
* RELEASE:
* gst-plugins-base.doap:
* meson.build:
Release 1.18.0
2020-09-07 22:36:54 +0100 Tim-Philipp Müller <tim@centricular.com>
* meson.build:
* scripts/dist-translations.py:
* scripts/meson.build:
meson: dist pot file in tarball
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/808>
2020-09-07 12:10:16 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/gst/video/video-color.c:
* gst-libs/gst/video/video-color.h:
* gst-libs/gst/video/video-converter.c:
* gst/videoconvert/gstvideoconvert.c:
* tests/check/libs/video.c:
video: Rename gst_video_color_transfer_*() to gst_video_transfer_function_*() in new API
The type is called GstVideoTransferFunction so the function names should
match, otherwise gobject-introspection is keeping the functions as
global functions instead of methods on the type.
The same mistake was also made in lots of other APIs over the years, but
here we can at least fix it for 1.18 still.
Thanks to Marijn Suijten for noticing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/807>
2020-09-02 21:53:51 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* pkgconfig/meson.build:
meson: Fix gstreamer-gl-prototypes pkgconfig file on Windows
When we're using wgl, we have to link to `-lopengl32`, not `-lGL`.
Fixes building of anything that uses this pc file, such as the nvcodec
plugin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/803>
2020-08-28 12:56:38 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/gst/audio/gstaudiodecoder.c:
* gst-libs/gst/audio/gstaudioencoder.c:
* gst-libs/gst/video/gstvideodecoder.c:
* gst-libs/gst/video/gstvideoencoder.c:
audio/video: Copy more metas by default in the codec base classes
For audio we copy metas that have no tags at all, or that only have the
"audio" and/or "audio-channels" tag. Audio codecs don't change the
audio aspect of the stream and in almost all cases don't change the
number of channels. They might however change the sample rate (e.g.
Opus). Subclasses that change the number of channels will have to
override ::transform_meta() accordingly.
For video we copy metas that have no tags at all, or that only have the
"video" and/or "video-size" and/or "video-orientation" tag. Video codecs
don't change the "video" aspect of the stream and in almost all cases
don't change the resolution or orientation. Subclasses that rescale or
change the orientation will have to override ::transform_meta()
accordingly.
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/576#note_610581
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/801>
2020-08-28 12:30:43 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst/videoscale/gstvideoscale.c:
videoscale: make local quark vars static
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/802>
2020-08-26 19:15:19 +1000 Matthew Waters <matthew@centricular.com>
* gst-libs/gst/gl/gl_mkenum.py:
* gst-libs/gst/gl/meson.build:
gl/build: build with implicit_include_directories : false
Fixes case-insensitive file systems confusing gst-libs/gst/gl/egl/egl.h
with EGL/egl.h when the source directory gst-libs/gst/gl is automatically
added to the compiler's search path.
Due to https://github.com/mesonbuild/meson/issues/7582 we also need to
perform manual enumtype generation.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/814
2020-08-20 05:44:46 +1000 Jan Schmidt <jan@centricular.com>
* gst/compositor/compositororc-dist.c:
* gst/compositor/compositororc.orc:
compositor: fix off-by-1 error in blending ARGB
Use a more naive blend formulation that avoids off-by-one errors
at the 0x00 and 0xff alpha endpoints.
Fixes #810
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/796>
2020-08-25 12:56:21 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/audioresample/gstaudioresample.c:
* gst/videorate/gstvideorate.c:
* gst/videoscale/gstvideoscale.c:
videorate/videoscale/audioresample: Ensure that the caps returned from fixate_caps() are actually fixated
If there is some other field than the ones we care about left and not
fixated yet then basetransform will just error out. So instead just pass
the result through gst_caps_fixate() in the very end.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/799>
2019-04-16 12:08:30 +0100 Marcin Kolny <marcin.kolny@gmail.com>
* gst-libs/gst/pbutils/encoding-profile.c:
encoding-profile: minor fix in documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/212>
=== release 1.17.90 ===
2020-08-20 16:10:18 +0100 Tim-Philipp Müller <tim@centricular.com>
* ChangeLog:
* NEWS:
* RELEASE:
* gst-plugins-base.doap:
* meson.build:
Release 1.17.90
2020-08-18 10:26:48 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/videoscale/gstvideoscale.c:
videoscale: Don't call NULL GstMeta transform function
It's optional and if it does not exist then no transformation is
possible.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/790>
2020-08-11 22:54:50 +0200 Mathieu Duponchelle <mathieu@centricular.com>
* gst-libs/gst/tag/lang-tables.dat:
* gst-libs/gst/tag/lang.c:
* gst-libs/gst/tag/mklangtables.c:
tags: update to latest iso-code and support more languages
Some languages have an ISO 639-2 representation but no 639-1
representation, for example where "eng" has a two-letter
equivalent in "en", "enm" doesn't have one.
Discarding those languages from our static table caused functions
such as gst_tag_get_language_code_iso_639_2T() or
gst_tag_get_language_code_iso_639_2B() to return NULL for
valid language codes such as "enm", potentially causing users
of these API such as mpegtsmux to discard language code tags
as invalid.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/785>
2020-08-11 17:15:50 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* gst-libs/gst/pbutils/codec-utils.c:
pbutils: Add latest H.264 level values
The spec now list 6, 6.1 and 6.2.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/786>
2020-08-11 03:45:32 +1000 Jan Schmidt <jan@centricular.com>
* gst-libs/gst/app/gstappsrc.c:
appsrc: Post a bus error if a segment can't be applied
When applying segments from the input samples, post a bus
error and fail loudly if the segment fails to configure, instead of
just posting debug output.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/783>
2020-08-11 16:53:51 +1000 Matthew Waters <matthew@centricular.com>
* gst-libs/gst/gl/egl/egl.h:
* gst-libs/gst/gl/meson.build:
* gst-libs/gst/gl/wayland/wayland.h:
* gst-libs/gst/gl/x11/x11.h:
build/gl: add top-level include files for sub-libraries
Makes gir happy
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/809
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/784>
2020-08-10 16:18:31 +0000 Josh Matthews <josh@joshmatthews.net>
* tests/examples/gl/cocoa/meson.build:
Add required dependencies of cocoa GL example for linking.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/782>
2020-08-10 09:59:09 +0300 Sebastian Dröge <sebastian@centricular.com>
* pkgconfig/gstreamer-gl-egl-uninstalled.pc.in:
* pkgconfig/gstreamer-gl-wayland-uninstalled.pc.in:
* pkgconfig/gstreamer-gl-x11-uninstalled.pc.in:
pkg-config: Fix dependency typo in uninstalled gstreamer-gl-* pc files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/781>
2020-08-07 10:18:34 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/gst/audio/gstaudioaggregator.c:
audioaggregator: Add support for new sample selection API
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/805
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/780>
2020-08-07 09:34:37 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/gst/video/gstvideoaggregator.c:
* tests/check/elements/compositor.c:
* tests/examples/compositor/signals.c:
videoaggregator: Update for additional info parameter to the "samples-selected" signal
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/590
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/780>
2020-08-06 14:22:27 +0000 Josh Matthews <josh@joshmatthews.net>
* pkgconfig/gstreamer-gl-egl.pc.in:
Fix incorrect pkgconfig description.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/779>
2020-07-23 19:48:55 +1000 Guillaume Desmottes <guillaume.desmottes@collabora.com>
* docs/libs/gl-egl/index.md:
* docs/libs/gl-egl/sitemap.txt:
* docs/libs/gl-wayland/index.md:
* docs/libs/gl-wayland/sitemap.txt:
* docs/libs/gl-x11/index.md:
* docs/libs/gl-x11/sitemap.txt:
* docs/meson.build:
* ext/gl/meson.build:
* gst-libs/gst/gl/egl/gstglmemoryegl.h:
* gst-libs/gst/gl/gstgl_fwd.h:
* gst-libs/gst/gl/meson.build:
* pkgconfig/gstreamer-gl-egl-uninstalled.pc.in:
* pkgconfig/gstreamer-gl-egl.pc.in:
* pkgconfig/gstreamer-gl-prototypes-uninstalled.pc.in:
* pkgconfig/gstreamer-gl-prototypes.pc.in:
* pkgconfig/gstreamer-gl-uninstalled.pc.in:
* pkgconfig/gstreamer-gl-wayland-uninstalled.pc.in:
* pkgconfig/gstreamer-gl-wayland.pc.in:
* pkgconfig/gstreamer-gl-x11-uninstalled.pc.in:
* pkgconfig/gstreamer-gl-x11.pc.in:
* pkgconfig/gstreamer-gl.pc.in:
* pkgconfig/meson.build:
* tests/check/meson.build:
* tests/examples/gl/generic/cube/meson.build:
* tests/examples/gl/generic/cubeyuv/meson.build:
* tests/examples/gl/generic/doublecube/meson.build:
* tests/examples/gl/generic/recordgraphic/meson.build:
* tests/examples/gl/qt/meson.build:
* tests/examples/gl/qt/mousevideooverlay/meson.build:
* tests/examples/gl/qt/qglwidgetvideooverlay/meson.build:
* tests/examples/gl/qt/qglwtextureshare/meson.build:
gl: move each gl platform specific API to its own gir
With contributions from:
Thibault Saunier <tsaunier@igalia.com>
Matthew Waters <matthew@centricular.com>
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/651
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/661>
2020-05-13 10:08:25 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.com>
* gst-libs/gst/gl/egl/gsteglimage.c:
gl: egl: add missing gir annotations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/661>
2020-08-05 16:54:19 +0200 Mathieu Duponchelle <mathieu@centricular.com>
* gst-libs/gst/video/gstvideoaggregator.c:
* tests/check/elements/compositor.c:
* tests/examples/compositor/signals.c:
videoaggregator: update to new samples selection API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/778>
2020-08-03 19:53:58 +0300 Jordan Petridis <jordan@centricular.com>
* tests/check/elements/audioresample.c:
tests/check/elements/audioresample.c: avoid implict int ot float conversion
Also use doubles instead so the calculation won't overflow
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/773>
2020-08-04 15:17:35 +0300 Jordan Petridis <jordan@centricular.com>
* ext/alsa/gstalsamidisrc.c:
alsamidisrc: fix compiler warning with clang 10
```
../subprojects/gst-plugins-base/ext/alsa/gstalsamidisrc.c:201:54: error: converting the result of '<<' to a boolean always evaluates to false [-Werror,-Wtautological-constant-compare]
snd_seq_ev_schedule_real (&ev, alsamidisrc->queue, SND_SEQ_TIME_MODE_ABS,
^
/usr/include/alsa/seq_event.h:215:34: note: expanded from macro 'SND_SEQ_TIME_MODE_ABS'
```
The ALSA API expects 0 or 1 here and will then add the flags accordingly,
and that's also what other code using this API does.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/777>
2020-08-04 07:11:54 -0400 Xavier Claessens <xavier.claessens@collabora.com>
* tests/validate/meson.build:
Meson: find_program() will return gst-tester from subproject
gstreamer now use override_find_program() so it won't return the system
version.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/776>
2020-08-04 05:32:08 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* meson.build:
meson: Only look for Objective-C compiler on macOS/iOS
On Windows, MinGW-GCC Objective-C compilers can be in PATH and mess up
the build since they may not match the CPU family of the C/C++
compilers we are using.
Also require them on macOS/iOS, because they should always be present.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-build/-/issues/88
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/774>
2020-08-01 00:22:28 +0100 Tim-Philipp Müller <tim@centricular.com>
* tests/examples/compositor/signals.c:
examples: compositor: fix build with older GLib versions
Don't use g_hash_table_steal_extended() which was only
added in 2.58.
Fixes #801
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/772>
2020-07-16 21:56:47 -0400 Thibault Saunier <tsaunier@igalia.com>
* gst/compositor/compositor.c:
compositor: Frames where we introduce alpha can't obscure anything
When a pad has alpha != 1.0 it means that the resulting frames will
contain alpha and thus can't fully obscure with a lower zorder.
Also simplifies the other checks as blending with an OVER or on a
transparent is not a no-op as previously assumed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/764>
2020-07-01 03:47:00 +0200 Mathieu Duponchelle <mathieu@centricular.com>
* gst-libs/gst/video/gstvideoaggregator.c:
* tests/check/elements/compositor.c:
* tests/examples/compositor/meson.build:
* tests/examples/compositor/signals.c:
videoaggregator: implement samples selection API
Call gst_aggregator_selected_samples() after filling the queues
(but before preparing frames).
Implement GstAggregator.peek_next_sample.
Add an example that demonstrates usage of the new API in combination
with the existing buffer-consumed signal.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/728>
2020-07-24 08:33:23 -0400 Thibault Saunier <tsaunier@igalia.com>
* gst-libs/gst/pbutils/encoding-profile.c:
encoding: Support more topologies in profile_from_discoverer()
Previous implementation was only working when the stream was inside a
container, this refactoring allows using virtually any stream as input.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/766>
2020-07-30 19:16:06 +0900 Seungha Yang <seungha@centricular.com>
* gst-libs/gst/gl/winrt/gstglwindow_winrt_egl.cpp:
glwindow/winrt: Increase timeout value to 15 seconds
5 seconds might not be enough value for timeout in case an application
is running on a device with very limited computing power.
Note that ANGLE uses 10 seconds timeout value. So even if a timeout
happens here, it's also ANGLE's timeout condition as well
(meaning that bad things will happen either way)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/769>
2020-07-27 18:55:35 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/gst/audio/gstaudioaggregator.c:
audioaggregator: Only check downstream caps when handling CAPS events if we didn't negotiate with downstream yet
If we already negotiated with downstream there is not point in checking
if the caps are supported. We already know that this is the case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/768>
2020-07-27 18:49:48 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/gst/audio/gstaudioaggregator.c:
audioaggregator: Check all downstream allowed caps structures if they support the upstream rate
Otherwise it might happen that downstream prefers a different rate (i.e.
puts it into the first structure) and also supports other rates, but
audioaggregator would then fail negotiation.
Also this now correctly handles downstream returning a range of
supported rates.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/795
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/768>
2020-07-23 16:52:11 +0200 Stéphane Cerveau <scerveau@collabora.com>
* meson.build:
meson: add a plugin summary
This summary displays a list of plugins which
have been enabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/765>
2020-07-04 12:33:20 -0400 Thibault Saunier <tsaunier@igalia.com>
* gst-libs/gst/pbutils/encoding-profile.c:
* gst/encoding/gstencodebin.c:
* gst/encoding/gstsmartencoder.c:
* gst/encoding/gstsmartencoder.h:
encodebin: Fix and refactor smart encoding
It was not working properly and the implementation of the smartencoder
element was weird. This introduce a number of changes (which are all
in one single commit because they basically all work together and lead
to basically reimplementing the element):
* Make smartencoder a bin so that the reencoding chain of elements are
inside of it instead of not having any parent. Those elements were not
be visible when dumping the pipeline which was very confusing.
* Make encodebin create the right encoder with a capsfilter (and parser)
to properly enforce the format specified by the user, and so that the
encoder properties specified in the encoding profile are respected.
* Use `decodebin` to do the decoding instead of selecting a decoder
ourself and not plug any parser etc...
* Ensure that negotiated format in the sinkpad of smart encoder is fixed
through time when the user requested a non dynamic output
* Add a parser at the beginning of the smart encoder
* Handle errors when reencoding
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/751>
2020-07-04 12:32:26 -0400 Thibault Saunier <tsaunier@igalia.com>
* gst/encoding/gststreamsplitter.c:
streamsplitter: Forward STREAM_START to all branchs
Otherwise the branch that get selected later won't receive it ever.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/751>
2020-07-04 12:29:06 -0400 Thibault Saunier <tsaunier@igalia.com>
* gst/encoding/gststreamcombiner.c:
* gst/encoding/gststreamcombiner.h:
* gst/encoding/gststreamsplitter.c:
streamsplitter/combiner: Drain encoder before switching branch
Otherwise we miht have frames queued in the encoder from the old branch
that do not get encoded/muxed when they should.
The implementation is a bit 'weird' but the rational and solution
is documented in the code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/751>
2020-07-04 12:20:44 -0400 Thibault Saunier <tsaunier@igalia.com>
* gst/encoding/gstencodebin.c:
encodebin: Rebuilt internal state when swicthing to avoid-reencoding
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/751>
2020-07-15 17:51:18 +1000 Matthew Waters <matthew@centricular.com>
* gst-libs/gst/rtp/gstrtpbasepayload.c:
* tests/check/libs/rtpbasepayload.c:
rtpbasepayload: place twcc-ext-id behind environment variable
Adding properties for each and every rtp header extension is not
scalable and a new interface will be implemented for the general case
(https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/777).
Set the environment variable "GST_RTP_ENABLE_EXPERIMENTAL_TWCC_PROPERTY"
to any value to reenable the short-lived twcc-ext-id property.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/761
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/756>
2020-07-16 16:25:15 -0400 Olivier Crête <olivier.crete@collabora.com>
* gst/videorate/gstvideorate.c:
* tests/check/elements/videorate.c:
videorate: Error out on streams with no way to guess framerate
This is better than going into an infinite loop.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/761>
2020-07-16 16:04:23 -0400 Olivier Crête <olivier.crete@collabora.com>
* gst/videorate/gstvideorate.c:
videorate: Assert on invalid result from internal code
Letting this through instead results in an infinite loop where
the exact same buffer gets pushed out ad infinitum.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/761>
2020-07-15 22:54:55 -0400 Olivier Crête <olivier.crete@collabora.com>
* tests/check/elements/videorate.c:
videorate: Add test that reproduces infinite loop
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/761>
2020-07-06 14:46:33 -0400 Olivier Crête <olivier.crete@collabora.com>
* ext/alsa/gstalsadeviceprovider.c:
alsadeviceprovider: Remove redundant start function
The ALSA provider doesn't provider live monitoring, so don't
pretend otherwise.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/735>
2020-07-16 16:31:28 +1000 Matthew Waters <matthew@centricular.com>
* gst-libs/gst/gl/egl/gstgldisplay_egl.c:
* gst-libs/gst/gl/gstgldisplay.c:
* gst-libs/gst/gl/gstgldisplay.h:
* gst-libs/gst/gl/wayland/gstgldisplay_wayland.c:
* gst-libs/gst/gl/x11/gstgldisplay_x11.c:
Revert "gstgldisplay: Add public foreign_display property"
This introduced a possible regression where the EGL display connection
could be leaked when a foreign native display (x11, wayland, etc) could
create a non-foreign EGL display that would never be destroyed.
The underlying problem needed to be solved in a different way. See
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/640
for more details.
This reverts commit 2e686b0dad9700b10d91da5e91f34849fa7d32ae.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/758>
2020-07-16 14:34:51 +0200 Silvio Lazzeretti <silviola@amazon.com>
* gst-libs/gst/audio/gstaudiosink.c:
* gst-libs/gst/audio/gstaudiosrc.c:
* gst-libs/gst/audio/gstaudioutilsprivate.c:
* gst-libs/gst/audio/gstaudioutilsprivate.h:
audioutilsprivate: restore thread priority before ending
The priority of the thread that executes audioringbuffer_thread_func
is incremented on Windows by the usage of the AvSetMmThreadCharacteristics
API. This change has to be restored, as described on the documentation
of the API (https://docs.microsoft.com/en-us/windows/win32/api/avrt/nf-avrt-avsetmmthreadcharacteristicsw#remarks),
with a call to the AvRevertMmThreadCharacteristics. If this is not done,
a handle will be leaked.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/760>
2020-07-17 18:48:15 +0900 Seungha Yang <seungha@centricular.com>
* gst-libs/gst/audio/gstaudioutilsprivate.c:
audioutilsprivate: Don't try to load avrt for UWP application
All APIs in avrt.h are desktop only.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/763>
2020-07-16 18:07:34 +1000 Matthew Waters <matthew@centricular.com>
* gst-libs/gst/gl/meson.build:
build/gl: remove unused cocoa/win32 header variables
We don't install any cocoa/win32 specific headers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/759>
2020-04-07 11:00:39 +0200 Havard Graff <havard@pexip.com>
* tests/check/libs/rtp.c:
test/rtp: use the proper _INIT for initializing rtp/rtcp buffer structs.
Fixes -Wmissing-field-initializers in Clang.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/757>
2020-02-12 14:48:36 +0100 Havard Graff <havard@pexip.com>
* tests/check/libs/rtpbasedepayload.c:
rtpbasedepayload: test warning fixes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/757>
2020-07-14 22:03:39 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* docs/plugins/gst_plugins_cache.json:
doc: Update cache with new raw pixel format
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/754>
2020-07-14 21:43:56 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* gst-libs/gst/video/video-converter.c:
* gst-libs/gst/video/video-format.c:
* gst-libs/gst/video/video-format.h:
* gst-libs/gst/video/video-info.c:
* tests/check/elements/videoscale.c:
* tests/check/libs/video.c:
video: Add support for linear 32x32 NV12 tiles
This adds linear 32x32 NV12 based tiles. This format is notably used by
Allwinner VCU and exposed in V4L2 as being "SUNXI Tiled" format. In this
patch we generalize the plane info calculation so we can share this part
with the 4L4 variant.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/754>
2020-07-14 11:29:57 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* docs/plugins/gst_plugins_cache.json:
doc: Update cache after adding a new pixel format
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/753>
2020-07-14 10:42:01 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* gst/rawparse/gstrawvideoparse.c:
rawvideoparse: Fix tiling support
When using tile format, the stride has a different meaning. It used
the MSB and LSB 16bits to encode respectively the width and height in
number of tiles.
This issue was introduce with commit e5b70d384c which was fixing
missing size recalculation when strides and offset is updated.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/753>
2020-07-13 16:18:29 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* gst-libs/gst/video/video-converter.c:
* gst-libs/gst/video/video-format.c:
* gst-libs/gst/video/video-format.h:
* gst-libs/gst/video/video-info.c:
* gst-libs/gst/video/video-tile.c:
* gst-libs/gst/video/video-tile.h:
* tests/check/elements/videoscale.c:
* tests/check/libs/video.c:
video: Add NV12_4L4 tile format
This format is produced by Verisillicon VC8000D VPU decoder, it is a simple 4x4
tiling layout in a linear way.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/753>
2020-06-16 11:44:08 -0400 Aaron Boxer <aaron.boxer@collabora.com>
* gst-libs/gst/video/video-frame.c:
video: allow frame copy destination to have dimensions smaller than source
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/707>
2020-07-14 14:06:58 +1000 Matthew Waters <matthew@centricular.com>
* tests/examples/gl/qt/gl-compat-defines.h:
* tests/examples/gl/qt/meson.build:
* tests/examples/gl/qt/mousevideooverlay/meson.build:
* tests/examples/gl/qt/mousevideooverlay/pipeline.cpp:
* tests/examples/gl/qt/mousevideooverlay/qrenderer.h:
* tests/examples/gl/qt/qglwidgetvideooverlay/meson.build:
* tests/examples/gl/qt/qglwidgetvideooverlay/pipeline.cpp:
* tests/examples/gl/qt/qglwidgetvideooverlay/qglrenderer.h:
* tests/examples/gl/qt/qglwtextureshare/meson.build:
* tests/examples/gl/qt/qglwtextureshare/pipeline.cpp:
* tests/examples/gl/qt/qglwtextureshare/qglrenderer.h:
examples/gl/qt: silence compiler warnings
-Waggregate-return: used by some Qt clases extensively and not super
useful for this example. Supress it.
warning: "GL_GLEXT_VERSION" redefined: Perform the same workaround as
qmlglsink by defining the old gl/GL.h header guard if the new GL/gl.h
guard exists.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/752>
2019-11-27 16:51:55 +0100 Santiago Carot-Nemesio <scarot@twilio.com>
* gst-libs/gst/rtp/gstrtcpbuffer.c:
* tests/check/libs/rtp.c:
rtcpbuffer: Notify error in case packet can not be added to an RTCP compound packet
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/476>
2020-07-10 14:57:53 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/gst/video/video-converter.c:
video-converter: Add scaling fast-path for GBRA format
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/684
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/749>
2020-07-10 19:49:56 +0900 Seungha Yang <seungha@centricular.com>
* gst-libs/gst/gl/winrt/gstglwindow_winrt_egl.cpp:
glwindow/winrt: Add warning message if window is being closed from a UI thread
All UI elements will follow Single-Threaded Apartments (STA) model.
As a result, we should access them from dedicated UI thread.
Due to the nature of the threading model, ANGLE will wait the UI
thread while closing internal window/swapchain objects.
A problem here is that when destroying GstGLWindow from the UI thread,
it will wait GstGLContext's internal thread. Meanwhile, the GstGLContext's
internal thread will be blocked because ANGLE wants to access the UI thread.
That will cause a deadlock or exceptions.
In short, application should not try to call
gst_element_set_state(pipeline, GST_STATE_NULL) from a UI thread.
That's a limitation of current implementation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/745>
2020-07-09 22:23:33 +0900 Seungha Yang <seungha@centricular.com>
* gst-libs/gst/gl/meson.build:
* gst-libs/gst/gl/winrt/gstglwindow_winrt_egl.cpp:
* gst-libs/gst/gl/winrt/gstglwindow_winrt_egl.h:
glwindow/winrt: Add window resize event handler
GstGLWindow implmentaion should be able to report native window size
and also it need to handle resize event for glimagesink.
Note that GstD3D11Window implementation was referenced for this change.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/745>
2020-07-09 19:51:57 +0900 Seungha Yang <seungha@centricular.com>
* gst-libs/gst/gl/meson.build:
* gst-libs/gst/gl/winrt/gstglwindow_winrt_egl.cpp:
glwindow/winrt: Move to c++
For native window size query, c++ API is much convenient than c API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/745>
2020-07-10 02:46:56 +0900 Seungha Yang <seungha@centricular.com>
* gst-libs/gst/app/gstappsrc.c:
appsrc: Fix annotations
Don't put double ':' there
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/663>
2020-05-17 02:44:42 +0900 Seungha Yang <seungha@centricular.com>
* tests/check/elements/appsrc.c:
tests: appsrc: Add unit test for custom segment
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/663>
2020-05-17 02:29:39 +0900 Seungha Yang <seungha@centricular.com>
* docs/plugins/gst_plugins_cache.json:
* gst-libs/gst/app/gstappsrc.c:
appsrc: Add support for custom GstSegment
Add property "handle-segment-change" for user to allow pushing
custom segment event. For now, this property can work only for
time format GstSegment.
This property can be useful in case application controls timeline
of stream such as there is timestamp discontinuity but playback is
expected to be continuous. Multi-period scenario of MPEG-DASH is an
example of this use case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/663>
2020-07-09 11:05:35 -0400 Thibault Saunier <tsaunier@igalia.com>
* gst-libs/gst/pbutils/encoding-profile.c:
pbutils: Do not restrict number of similar profiles in a container
We have the notion of presence, and when the user want to be in control
it is totally legitimate for him to have several occurrences of a
similar profile
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/746>
2020-07-09 13:13:14 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* gst-libs/gst/video/video-converter.c:
videoconverter: Relax frame size checks
Since we are using VideoMeta, the converter (similarly to the video_frame_copy
utility) should have no issue dealing with frames that are slightly larger.
This situation occure as some element will use padded width/height for
allocation, which results in a VideoMeta width/height being larger then the
display width/height found in the negotiated caps.
Fixes #790
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/747>
2020-07-09 12:45:27 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/gst/audio/gstaudioaggregator.c:
audioaggregator: Fix negotiation with downstream if there is no peer yet
get_allowed_caps() will return NULL, which is not a problem in itself.
Just take the template caps for negotiation in that case instead of
erroring out.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/744>
2020-07-08 16:48:30 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst-plugins-base.doap:
* meson.build:
* scripts/extract-release-date-from-doap-file.py:
meson: set release date from .doap file for releases
And fix up DOAP file XML. Parser would complain about
unknown entity &excl; here.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/743>
2020-07-08 15:15:34 +0100 Tim-Philipp Müller <tim@centricular.com>
* pkgconfig/gstreamer-plugins-base-uninstalled.pc.in:
* pkgconfig/gstreamer-plugins-base.pc.in:
* pkgconfig/meson.build:
pkgconfig: fix gstreamer-plugins-base-1.0 .pc files for no OpenGL case
Don't put gl into the libraries list if the gst-gl library isn't
being built, and also don't include it in the list of linker flags
then.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/613
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/742>
2020-07-02 22:33:44 +0900 Seungha Yang <seungha@centricular.com>
* gst-libs/gst/gl/win32/gstglwindow_win32.c:
glwindow/win32: Fix possible deadlock around key/mouse event handling
Calling gst_gl_window_send_{key,mouse}_event() from GstGLContext
thread might cause a deadlock. Instead, use the dedicated event handling
thread in GstGLDisplay.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/721>
2020-06-23 16:41:31 +0900 Seungha Yang <seungha@centricular.com>
* tests/examples/overlay/win32-videooverlay.c:
examples: win32-videooverlay: Add test for fullscreen mode switch
Add test option "--fullscreen" for testing fullscreen mode switch.
When enabled, user can switch fullscreen mode via SPACE key or
right mouse button click.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/721>
2020-07-08 09:53:42 +0100 Tim-Philipp Müller <tim@centricular.com>
* pkgconfig/gstreamer-gl-uninstalled.pc.in:
* pkgconfig/gstreamer-gl.pc.in:
pkgconfig: fix meson warnings about GL_CFLAGS in gstreamer-gl .pc files
We added GL_CFLAGS in autotools because we unconditionally included OpenGL
headers. We do not do that anymore for a standard #include <gst/gl/gl.h>.
OpenGL headers are only included for the platform specific files
e.g. #include <gst/gl/x11/gstgldisplay_x11.h> which must always be hidden
behind a #if GST_GL_HAVE_WINDOW_X11, or #include <gst/gl/gstglfuncs.h> to
gain access to the contents of the GstGLFuncs object.
Users of our headers must include the necessary include paths for the
platforms they are intending to support.
We might introduce extra .pc files for what GstGL was built against though.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/735
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/741>
2020-07-08 04:08:33 +0900 Seungha Yang <seungha@centricular.com>
* tests/examples/gl/qt/qglwtextureshare/qglrenderer.cpp:
examples/gl/qt: Don't include GL/glx.h unconditionally
The header file might not be available on non-*nix platform.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/740>
2020-07-07 20:01:33 +0100 Tim-Philipp Müller <tim@centricular.com>
* tests/validate/meson.build:
tests: validate: fix meson warning
meson.build:4: WARNING: Trying to compare values of different types (ExecutableHolder, bool) using ==.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/739>
2020-07-07 14:55:06 +0200 Edward Hervey <edward@centricular.com>
* docs/plugins/gst_plugins_cache.json:
docs: Update cache for removed properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/738>
2020-07-07 10:57:38 +0200 Edward Hervey <edward@centricular.com>
* docs/plugins/gst_plugins_cache.json:
* gst/playback/gstplay-enum.c:
playback: Clarify flag usage for playbin3
Forcing software-decoder has no effect on playbin3 now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/738>
2020-07-07 10:52:40 +0200 Edward Hervey <bilboed@bilboed.com>
* gst/playback/gstdecodebin3.c:
* gst/playback/gstplaybin3.c:
* gst/playback/gsturidecodebin3.c:
Revert "playbin3: handle GST_PLAY_FLAG_FORCE_SW_DECODERS"
This reverts commit f4bcf8290b3568690dacf0dac95af7f7036f7110.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/738>
2020-07-02 14:25:27 +0200 Edward Hervey <edward@centricular.com>
* gst/playback/gstdecodebin3.c:
* gst/playback/gstplaybin3.c:
* gst/playback/gsturidecodebin3.c:
decodebin3: Only override the selection if needed
Whenever a new collection is calculated, the internal `select_streams_seqnum`
variable is reset. This ensures that we reliably know whether a select-streams
event has been received for that new collection.
Use that to decide whether we should add previously un-selected streams or new
streams in the current selection
Fixes #784
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/733>
2020-06-29 18:21:23 -0400 Olivier Crête <olivier.crete@collabora.com>
* ext/alsa/gstalsaplugin.c:
alsadeviceprovider: Rank down to secondary so PulseAudio can hide it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/727>
2020-07-04 12:13:14 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst/compositor/compositororc-dist.c:
Update disted generated orc backup files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/734>
2020-07-04 00:31:49 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst-libs/gst/audio/meson.build:
* gst-libs/gst/video/meson.build:
* gst/adder/meson.build:
* gst/audiomixer/meson.build:
* gst/compositor/meson.build:
* gst/videotestsrc/meson.build:
* gst/volume/meson.build:
* meson.build:
* scripts/update-orc-dist-files.py:
meson: add update-orc-dist target
Add target to update backup orc -dist.[ch] files.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/734>
2020-07-04 00:39:18 +0200 Mathieu Duponchelle <mathieu@centricular.com>
* gst-libs/gst/video/video-color.h:
video-color.h: fix comment syntax
2020-06-26 12:22:08 +0300 Vivia Nikolaidou <vivia@ahiru.eu>
* gst-libs/gst/video/video-color.c:
* gst-libs/gst/video/video-color.h:
* gst-libs/gst/video/video-converter.c:
* gst/videoconvert/gstvideoconvert.c:
video-converter: Make fast path work for equivalent transfer functions
For example, BT709, BT601, and BT2020_10 all have theoretically
different transfer functions, but the same function in practice. In
these cases, we should use the fast path for negotiating. Also,
BT2020_12 is essentially the same as the other three, just with one more
decimal point, so it gives the same result for fewer bits. This is now
also aliased to the former three.
Also make videoconvert do passthrough if the caps have equivalent
transfer functions but are otherwise matching.
As of the previous commit, we write the correct transfer function for
BT601, instead of the (functionally identical but different ISO code)
transfer function for BT709. Files created using GStreamer prior to that
commit write the wrong transfer function for BT601 and are, strictly
speaking, 2:4:5:4 instead. However, this commit takes care of
negotiation, so that conversions from/to the same transfer function are
done using the fast path.
Fixes #783
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/724>
2020-06-25 20:56:48 +0300 Vivia Nikolaidou <vivia@ahiru.eu>
* gst-libs/gst/video/video-color.c:
* gst-libs/gst/video/video-color.h:
* gst-libs/gst/video/video-info.c:
* tests/check/libs/video.c:
video-color: Add bt601 transfer function
Functionally the same as 709 but technically has a different value, and
external software (e.g. ffmpeg) finds "wrong" values produced by
GStreamer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/724>
2020-07-03 02:03:24 +0100 Tim-Philipp Müller <tim@centricular.com>
* meson.build:
Back to development
=== release 1.17.2 === === release 1.17.2 ===
   
2020-07-03 00:24:57 +0100 Tim-Philipp Müller <tim@centricular.com> 2020-07-03 00:24:57 +0100 Tim-Philipp Müller <tim@centricular.com>
This diff is collapsed.
GStreamer 1.17.x development series GStreamer 1.18.x stable series
WHAT IT IS WHAT IT IS
---------- ----------
......
This is GStreamer gst-plugins-base 1.17.2. This is GStreamer gst-plugins-base 1.18.0.
GStreamer 1.17 is the development branch leading up to the next major The GStreamer team is thrilled to announce a new major feature release
stable version which will be 1.18. of your favourite cross-platform multimedia framework!
The 1.17 development series adds new features on top of the 1.16 series and is 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 part of the API and ABI-stable 1.x release series of the GStreamer multimedia
framework. framework.
Full release notes will one day be found at: Full release notes can be found at:
https://gstreamer.freedesktop.org/releases/1.18/ https://gstreamer.freedesktop.org/releases/1.18/
......
...@@ -1324,8 +1324,8 @@ gst_app_src_create (GstBaseSrc * bsrc, guint64 offset, guint size, ...@@ -1324,8 +1324,8 @@ gst_app_src_create (GstBaseSrc * bsrc, guint64 offset, guint size,
if (!gst_base_src_new_segment (bsrc, segment)) { if (!gst_base_src_new_segment (bsrc, segment)) {
GST_ERROR_OBJECT (appsrc, GST_ERROR_OBJECT (appsrc,
"Couldn't set new segment %" GST_PTR_FORMAT, event); "Couldn't set new segment %" GST_PTR_FORMAT, event);
ret = GST_FLOW_ERROR; gst_event_unref (event);
break; goto invalid_segment;
} }
gst_segment_copy_into (segment, &priv->current_segment); gst_segment_copy_into (segment, &priv->current_segment);
} }
...@@ -1405,6 +1405,14 @@ seek_error: ...@@ -1405,6 +1405,14 @@ seek_error:
GST_ERROR_SYSTEM); GST_ERROR_SYSTEM);
return GST_FLOW_ERROR; return GST_FLOW_ERROR;
} }
invalid_segment:
{
g_mutex_unlock (&priv->mutex);
GST_ELEMENT_ERROR (appsrc, LIBRARY, SETTINGS,
(NULL), ("Failed to configure the provided input segment."));
return GST_FLOW_ERROR;
}
} }
/* external API */ /* external API */
......
...@@ -1208,14 +1208,24 @@ gst_audio_decoder_transform_meta_default (GstAudioDecoder * ...@@ -1208,14 +1208,24 @@ gst_audio_decoder_transform_meta_default (GstAudioDecoder *
{ {
const GstMetaInfo *info = meta->info; const GstMetaInfo *info = meta->info;
const gchar *const *tags; const gchar *const *tags;
const gchar *const supported_tags[] = {
GST_META_TAG_AUDIO_STR,
GST_META_TAG_AUDIO_CHANNELS_STR,
NULL,
};
tags = gst_meta_api_type_get_tags (info->api); tags = gst_meta_api_type_get_tags (info->api);
if (!tags || (g_strv_length ((gchar **) tags) == 1 if (!tags)
&& gst_meta_api_type_has_tag (info->api, META_TAG_AUDIO)))
return TRUE; return TRUE;
return FALSE; while (*tags) {
if (!g_strv_contains (supported_tags, *tags))
return FALSE;
tags++;
}
return TRUE;
} }
typedef struct typedef struct
......
...@@ -670,14 +670,24 @@ gst_audio_encoder_transform_meta_default (GstAudioEncoder * ...@@ -670,14 +670,24 @@ gst_audio_encoder_transform_meta_default (GstAudioEncoder *
{ {
const GstMetaInfo *info = meta->info; const GstMetaInfo *info = meta->info;
const gchar *const *tags; const gchar *const *tags;
const gchar *const supported_tags[] = {
GST_META_TAG_AUDIO_STR,
GST_META_TAG_AUDIO_CHANNELS_STR,
NULL,
};
tags = gst_meta_api_type_get_tags (info->api); tags = gst_meta_api_type_get_tags (info->api);
if (!tags || (g_strv_length ((gchar **) tags) == 1 if (!tags)
&& gst_meta_api_type_has_tag (info->api, META_TAG_AUDIO)))
return TRUE; return TRUE;
return FALSE; while (*tags) {
if (!g_strv_contains (supported_tags, *tags))
return FALSE;
tags++;
}
return TRUE;
} }
typedef struct typedef struct
......
/*
* GStreamer
* Copyright (C) 2020 Matthew Waters <matthew@centricular.com>
*
* 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_GL_EGL_H__
#define __GST_GL_EGL_H__
#include <gst/gl/gl.h>
#include <gst/gl/egl/gstegl.h>
#include <gst/gl/egl/gsteglimage.h>
#include <gst/gl/egl/gstgldisplay_egl.h>
#include <gst/gl/egl/gstglmemoryegl.h>
#include <gst/gl/egl/gstgldisplay_egl_device.h>
#endif /* __GST_GL_EGL_H__ */
#!/usr/bin/env python3
# This is in its own file rather than inside meson.build
# because a) mixing the two is ugly and b) trying to
# make special characters such as \n go through all
# backends is a fool's errand.
import sys, subprocess
h_array = ['--fhead',
"#pragma once\n\n#include <gst/gst.h>\n#include <gst/gl/gstgl_fwd.h>\nG_BEGIN_DECLS\n",
'--fprod',
"\n/* enumerations from \"@basename@\" */\n",
'--vhead',
"GST_GL_API\nGType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n",
'--ftail',
"G_END_DECLS"
]
c_array = ['--fhead',
"#ifdef HAVE_CONFIG_H\n#include \"config.h\"\n#endif\n#include \"gl-enumtypes.h\"\n\n#include <gst/gl/gl.h>\n\n#define C_ENUM(v) ((gint) v)\n#define C_FLAGS(v) ((guint) v)",
'--fprod',
"\n/* enumerations from \"@basename@\" */",
'--vhead',
"GType\n@enum_name@_get_type (void)\n{\n static volatile gsize g_define_type_id__volatile = 0;\n if (g_once_init_enter (&g_define_type_id__volatile)) {\n static const G@Type@Value values[] = {",
'--vprod',
" { C_@TYPE@ (@VALUENAME@), \"@VALUENAME@\", \"@valuenick@\" },",
'--vtail',
" { 0, NULL, NULL }\n };\n GType g_define_type_id = g_@type@_register_static (\"@EnumName@\", values);\n g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n }\n return g_define_type_id__volatile;\n}\n"
]
cmd = []
argn = 1
# Find the full command needed to run glib-mkenums
# On UNIX-like, this is just the full path to glib-mkenums
# On Windows, this is the full path to interpreter + full path to glib-mkenums
for arg in sys.argv[1:]:
cmd.append(arg)
argn += 1
if arg.endswith('glib-mkenums'):
break
ofilename = sys.argv[argn]
headers = sys.argv[argn + 1:]
if ofilename.endswith('.h'):
arg_array = h_array
else:
arg_array = c_array
cmd_array = cmd + arg_array + headers
pc = subprocess.Popen(cmd_array, stdout=subprocess.PIPE)
(stdo, _) = pc.communicate()
if pc.returncode != 0:
sys.exit(pc.returncode)
open(ofilename, 'wb').write(stdo)
...@@ -501,6 +501,7 @@ if need_platform_egl != 'no' ...@@ -501,6 +501,7 @@ if need_platform_egl != 'no'
'egl/gstgldisplay_egl_device.c', 'egl/gstgldisplay_egl_device.c',
] ]
gl_egl_headers += [ gl_egl_headers += [
'egl/egl.h',
'egl/gstegl.h', 'egl/gstegl.h',
'egl/gsteglimage.h', 'egl/gsteglimage.h',
'egl/gstgldisplay_egl.h', 'egl/gstgldisplay_egl.h',
...@@ -584,6 +585,7 @@ if need_win_wayland != 'no' ...@@ -584,6 +585,7 @@ if need_win_wayland != 'no'
xdg_shell_code, xdg_shell_code,
] ]
gl_wayland_headers += [ gl_wayland_headers += [
'wayland/wayland.h',
'wayland/gstgldisplay_wayland.h' 'wayland/gstgldisplay_wayland.h'
] ]
glconf.set('GST_GL_HAVE_WINDOW_WAYLAND', 1) glconf.set('GST_GL_HAVE_WINDOW_WAYLAND', 1)
...@@ -621,6 +623,7 @@ if need_win_x11 != 'no' ...@@ -621,6 +623,7 @@ if need_win_x11 != 'no'
'x11/xcb_event_source.c', 'x11/xcb_event_source.c',
] ]
gl_x11_headers += [ gl_x11_headers += [
'x11/x11.h',
'x11/gstgldisplay_x11.h', 'x11/gstgldisplay_x11.h',
] ]
glconf.set('GST_GL_HAVE_WINDOW_X11', 1) glconf.set('GST_GL_HAVE_WINDOW_X11', 1)
...@@ -970,15 +973,20 @@ if build_gstgl ...@@ -970,15 +973,20 @@ if build_gstgl
install_dir : get_option('libdir') + '/gstreamer-1.0/include/gst/gl', install_dir : get_option('libdir') + '/gstreamer-1.0/include/gst/gl',
configuration : glconf) configuration : glconf)
gl_enums = gnome.mkenums_simple('gl-enumtypes', glib_mkenums = find_program('glib-mkenums')
sources : gir_gl_headers, mkenums = find_program('gl_mkenum.py')
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif', gl_enumtypes_h = custom_target('gstglenumtypes_h',
header_prefix : '#include <gst/gl/gl-prelude.h>', output : 'gl-enumtypes.h',
decorator : 'GST_GL_API', input : gir_gl_headers,
install_header: true, install : true,
install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst/gl')) install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst/gl/'),
gl_enumtypes_c = gl_enums[0] command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
gl_enumtypes_h = gl_enums[1]
gl_enumtypes_c = custom_target('gstglenumtypes_c',
output : 'gl-enumtypes.c',
input : gir_gl_headers,
depends : [gl_enumtypes_h],
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
gen_sources = [gl_enumtypes_h] gen_sources = [gl_enumtypes_h]
gstgl = library('gstgl-' + api_version, gstgl = library('gstgl-' + api_version,
...@@ -992,7 +1000,9 @@ if build_gstgl ...@@ -992,7 +1000,9 @@ if build_gstgl
darwin_versions : osxversion, darwin_versions : osxversion,
install : true, install : true,
dependencies : [gst_base_dep, video_dep, allocators_dep, gmodule_dep, dependencies : [gst_base_dep, video_dep, allocators_dep, gmodule_dep,
gl_lib_deps, gl_platform_deps, gl_winsys_deps, gl_misc_deps]) gl_lib_deps, gl_platform_deps, gl_winsys_deps, gl_misc_deps],
# don't confuse EGL/egl.h with gst-libs/gl/egl/egl.h on case-insensitive file systems
implicit_include_directories : true)
if build_gir if build_gir
gl_gir = gnome.generate_gir(gstgl, gl_gir = gnome.generate_gir(gstgl,
...@@ -1029,7 +1039,7 @@ if build_gstgl ...@@ -1029,7 +1039,7 @@ if build_gstgl
export_packages : 'gstreamer-gl-x11-1.0', export_packages : 'gstreamer-gl-x11-1.0',
includes : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', gl_gir[0]], includes : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', gl_gir[0]],
install : true, install : true,
extra_args : gir_init_section + ['--c-include=gst/gl/gl.h'], extra_args : gir_init_section + ['--c-include=gst/gl/x11/x11.h'],
dependencies : [video_dep, gst_dep, gst_base_dep] dependencies : [video_dep, gst_dep, gst_base_dep]
) )
endif endif
...@@ -1050,7 +1060,7 @@ if build_gstgl ...@@ -1050,7 +1060,7 @@ if build_gstgl
export_packages : 'gstreamer-gl-wayland-1.0', export_packages : 'gstreamer-gl-wayland-1.0',
includes : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', gl_gir[0]], includes : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', gl_gir[0]],
install : true, install : true,
extra_args : gir_init_section + ['--c-include=gst/gl/gl.h'], extra_args : gir_init_section + ['--c-include=gst/gl/wayland/wayland.h'],
dependencies : [video_dep, gst_dep, gst_base_dep] dependencies : [video_dep, gst_dep, gst_base_dep]
) )
endif endif
...@@ -1071,7 +1081,7 @@ if build_gstgl ...@@ -1071,7 +1081,7 @@ if build_gstgl
export_packages : 'gstreamer-gl-egl-1.0', export_packages : 'gstreamer-gl-egl-1.0',
includes : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', gl_gir[0]], includes : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', gl_gir[0]],
install : true, install : true,
extra_args : gir_init_section + ['--c-include=gst/gl/gl.h'], extra_args : gir_init_section + ['--c-include=gst/gl/egl/egl.h'],
dependencies : [video_dep, gst_dep, gst_base_dep] dependencies : [video_dep, gst_dep, gst_base_dep]
) )
endif endif
......
/*
* GStreamer
* Copyright (C) 2020 Matthew Waters <matthew@centricular.com>
*
* 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_GL_WAYLAND_H__
#define __GST_GL_WAYLAND_H__
#include <gst/gl/gl.h>
#include <gst/gl/wayland/gstgldisplay_wayland.h>
#endif /* __GST_GL_WAYLAND_H__ */
/*
* GStreamer
* Copyright (C) 2020 Matthew Waters <matthew@centricular.com>
*
* 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_GL_X11_H__
#define __GST_GL_X11_H__
#include <gst/gl/gl.h>
#include <gst/gl/x11/gstgldisplay_x11.h>
#endif /* __GST_GL_X11_H__ */
...@@ -711,6 +711,10 @@ gst_codec_utils_h264_get_level (const guint8 * sps, guint len) ...@@ -711,6 +711,10 @@ gst_codec_utils_h264_get_level (const guint8 * sps, guint len)
return "5.1"; return "5.1";
case 52: case 52:
return "5.2"; return "5.2";
case 61:
return "6.1";
case 62:
return "6.2";
default: default:
return NULL; return NULL;
} }
...@@ -764,6 +768,12 @@ gst_codec_utils_h264_get_level_idc (const gchar * level) ...@@ -764,6 +768,12 @@ gst_codec_utils_h264_get_level_idc (const gchar * level)
return 51; return 51;
else if (!strcmp (level, "5.2")) else if (!strcmp (level, "5.2"))
return 52; return 52;
else if (!strcmp (level, "6"))
return 60;
else if (!strcmp (level, "6.1"))
return 61;
else if (!strcmp (level, "6.2"))
return 62;
GST_WARNING ("Invalid level %s", level); GST_WARNING ("Invalid level %s", level);
return 0; return 0;
......
...@@ -228,7 +228,7 @@ ...@@ -228,7 +228,7 @@
* gst_object_unref (preset); * gst_object_unref (preset);
* *
* caps = gst_caps_from_string ("video/x-theora"); * caps = gst_caps_from_string ("video/x-theora");
* v = gst_encoding_video_profile_new (caps, "theorapreset", NULL, 0); * v = gst_encoding_video_profile_new (caps, "theora_bitrate_preset", NULL, 0);
* gst_encoding_container_profile_add_profile (prof, (GstEncodingProfile*) v); * gst_encoding_container_profile_add_profile (prof, (GstEncodingProfile*) v);
* gst_caps_unref (caps); * gst_caps_unref (caps);
* *
......
...@@ -559,6 +559,17 @@ gst_rtp_base_payload_sink_event_default (GstRTPBasePayload * rtpbasepayload, ...@@ -559,6 +559,17 @@ gst_rtp_base_payload_sink_event_default (GstRTPBasePayload * rtpbasepayload,
} }
break; break;
} }
case GST_EVENT_GAP:
{
if (G_UNLIKELY (rtpbasepayload->priv->pending_segment)) {
gst_pad_push_event (rtpbasepayload->srcpad,
rtpbasepayload->priv->pending_segment);
rtpbasepayload->priv->pending_segment = FALSE;
rtpbasepayload->priv->delay_segment = FALSE;
}
res = gst_pad_event_default (rtpbasepayload->sinkpad, parent, event);
break;
}
default: default:
res = gst_pad_event_default (rtpbasepayload->sinkpad, parent, event); res = gst_pad_event_default (rtpbasepayload->sinkpad, parent, event);
break; break;
......
This diff is collapsed.
...@@ -370,6 +370,10 @@ gst_tag_get_language_code_iso_639_1 (const gchar * lang_code) ...@@ -370,6 +370,10 @@ gst_tag_get_language_code_iso_639_1 (const gchar * lang_code)
if (strcmp (lang_code, iso_639_codes[i].iso_639_1) == 0 || if (strcmp (lang_code, iso_639_codes[i].iso_639_1) == 0 ||
strcmp (lang_code, iso_639_codes[i].iso_639_2) == 0) { strcmp (lang_code, iso_639_codes[i].iso_639_2) == 0) {
c = iso_639_codes[i].iso_639_1; c = iso_639_codes[i].iso_639_1;
/* If the language code does not have a 2-letter representation, the table
* holds an empty string. We want to return NULL in that case. */
c = c[0] != '\0' ? c : NULL;
break; break;
} }
} }
......
...@@ -76,10 +76,6 @@ dump_languages (void) ...@@ -76,10 +76,6 @@ dump_languages (void)
for (i = 0, num_escaped = 0; i < languages->len; ++i) { for (i = 0, num_escaped = 0; i < languages->len; ++i) {
IsoLang *lang = &g_array_index (languages, IsoLang, i); IsoLang *lang = &g_array_index (languages, IsoLang, i);
/* For now just print those where there's both a ISO-639-1 and -2 code */
if (lang->code_1[0] == '\0')
continue;
/* save current offset */ /* save current offset */
lang->name_offset = names->len; lang->name_offset = names->len;
......
...@@ -3032,14 +3032,25 @@ gst_video_decoder_transform_meta_default (GstVideoDecoder * ...@@ -3032,14 +3032,25 @@ gst_video_decoder_transform_meta_default (GstVideoDecoder *
{ {
const GstMetaInfo *info = meta->info; const GstMetaInfo *info = meta->info;
const gchar *const *tags; const gchar *const *tags;
const gchar *const supported_tags[] = {
GST_META_TAG_VIDEO_STR,
GST_META_TAG_VIDEO_ORIENTATION_STR,
GST_META_TAG_VIDEO_SIZE_STR,
NULL,
};
tags = gst_meta_api_type_get_tags (info->api); tags = gst_meta_api_type_get_tags (info->api);
if (!tags || (g_strv_length ((gchar **) tags) == 1 if (!tags)
&& gst_meta_api_type_has_tag (info->api, META_TAG_VIDEO)))
return TRUE; return TRUE;
return FALSE; while (*tags) {
if (!g_strv_contains (supported_tags, *tags))
return FALSE;
tags++;
}
return TRUE;
} }
typedef struct typedef struct
......
...@@ -2139,14 +2139,25 @@ gst_video_encoder_transform_meta_default (GstVideoEncoder * ...@@ -2139,14 +2139,25 @@ gst_video_encoder_transform_meta_default (GstVideoEncoder *
{ {
const GstMetaInfo *info = meta->info; const GstMetaInfo *info = meta->info;
const gchar *const *tags; const gchar *const *tags;
const gchar *const supported_tags[] = {
GST_META_TAG_VIDEO_STR,
GST_META_TAG_VIDEO_ORIENTATION_STR,
GST_META_TAG_VIDEO_SIZE_STR,
NULL,
};
tags = gst_meta_api_type_get_tags (info->api); tags = gst_meta_api_type_get_tags (info->api);
if (!tags || (g_strv_length ((gchar **) tags) == 1 if (!tags)
&& gst_meta_api_type_has_tag (info->api, META_TAG_VIDEO)))
return TRUE; return TRUE;
return FALSE; while (*tags) {
if (!g_strv_contains (supported_tags, *tags))
return FALSE;
tags++;
}
return TRUE;
} }
typedef struct typedef struct
......