Commit graph

170 commits

Author SHA1 Message Date
Sebastian Dröge
497b3da14d rtpbasepayload: Don't write header extensions if there's no corresponding input buffer for the packet
The GstRTPHeaderExtension API requires the input buffer to exist.

This can happen if the output packet is generated e.g. from a caps or
tags event like in the case for rtpgstpay.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2205>
2022-04-16 19:59:52 +01:00
Seungha Yang
3b5f1406f3 win32: Enable high-resolution timer for MinGW build
timeapi.h is missing in our MinGW toolchain. Include mmsystem.h
header instead, which defines struct and APIs in case of our MinGW
toolchain. Note that in case of native Windows10 SDK (MSVC build),
mmsystem.h will include timeapi.h

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2167>
2022-04-16 10:00:04 +00:00
Tim-Philipp Müller
abd4846aaf appsrc: fix annotations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2189>
2022-04-16 09:00:13 +00:00
Sebastian Dröge
bf86940e60 Fix transfer gobject-introspection annotation typos
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2163>
2022-04-12 15:16:39 +01:00
Matthew Waters
cd577c78f7 subparse: don't try to index string with -1
If the len of the string turns out to be 0, str[len - 1] resolved to
str[-1] which is not a good idea.

Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46543
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2148>
2022-04-10 09:57:08 +01:00
Matthew Waters
746765dbc9 ogg: fix possible buffer overrun
If an ogg stream does not match our expectations of how the end of a
buffer may be structured, it was possible to read memory past the end of
the buffer parsed by libogg.  Include a bounds check for this case and
stop parsing.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3930

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2138>
2022-04-08 11:24:45 +00:00
Mathieu Duponchelle
f1eb2b16cf rtpbasepayload: fix transfer annotation for push and push_list
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2137>
2022-04-08 09:32:42 +01:00
hoonhee.lee
d7b84815cc riff-media: fix memory leak after usage for g_strjoin
This leak is observed with valgrind.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2136>
2022-04-08 08:49:37 +01:00
Bastian Krause
d1908049fa gltransformation: let graphene alloc its structures memory aligned
With NEON instructions enabled, graphene expects the memory passed to it
16-byte-aligned. Otherwise unaligned memory access faults occur causing
SIGBUS signals.

graphene has alloc functions for its structures that take care of this,
so use them.

See also: https://github.com/ebassi/graphene/issues/215#issuecomment-794744829

Suggested-by: Sebastian Dröge <sebastian@centricular.com>
Signed-off-by: Bastian Krause <bst@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2128>
2022-04-06 19:24:45 +01:00
Nirbheek Chauhan
db3bc49bb2 appsrc: Clarify buffer ref semantics in signals
The documentation could be read to mean that the caller continuous to
'own' the buffer, and that there is some other mechanism to find out
when to unref it.

Clarify that "not taking ownership" here means "taking a reference",
and specify that you can unref it at any time after calling the
function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2118>
2022-04-05 16:30:21 +01:00
Zhao Zhili
28091342da examples: fix build on macOS with gtk+-quartz-3.0
gdk_quartz_window_get_nsview is not declared in the header file now:
error: implicit declaration of function 'gdk_quartz_window_get_nsview'
is invalid in C99 [-Werror,-Wimplicit-function-declaration]

fixes #979

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2116>
2022-04-05 11:38:53 +01:00
Sebastian Dröge
b2fe6ac3e8 playbin/playbin3: Allow setting a NULL URI
The URI is already initialized to NULL at the beginning and GstPlayer
was assuming that it is possible to set to NULL at a later time too.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1124

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2105>
2022-04-02 01:12:55 +01:00
Edward Hervey
0425d60190 pbutils: Fix wmv screen detection
strncmp vs !strncmp :)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2076>
2022-03-30 23:24:55 +01:00
Corentin Damman
4630096440 rawvideoparse: set format from caps in gst_raw_video_parse_set_config_from_caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2054>
2022-03-29 11:25:07 +01:00
Matthew Waters
24c456fbe2 glmixerbin: slightly better pad/element creation
Use the return value from gst_element_link_pads() and gst_bin_add()

Fixes:

../ext/gl/gstglmixerbin.c:305:12: error: variable 'res' set but not used [-Werror,-Wunused-but-set-variable]
  gboolean res = TRUE;
           ^

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2053>
2022-03-29 10:31:45 +01:00
Matthew Waters
e987b6e82a discoverer: chain up to parent finalize methods in all our types
Fixes a memory leak:

Direct leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x5ac5cd in malloc /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0x1007007 in g_malloc /work/glib-2.72.0/_builddir/../glib/gmem.c:125:13
    #2 0xf82e82 in g_data_set_internal /work/glib-2.72.0/_builddir/../glib/gdataset.c:464:8
    #3 0xf833f7 in g_datalist_id_set_data_full /work/glib-2.72.0/_builddir/../glib/gdataset.c:670:3
    #4 0xef81be in g_object_notify_queue_freeze /work/glib-2.72.0/_builddir/../gobject/gobject.c:295:7
    #5 0xef79c6 in g_object_unref /work/glib-2.72.0/_builddir/../gobject/gobject.c:3632:16
    #6 0x5e58bf in LLVMFuzzerTestOneInput /src/gstreamer/ci/fuzzing/gst-discoverer.c:132:5
    #7 0x4dd1a2 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:611:15
    #8 0x4dc98a in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool, bool*) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:514:3
    #9 0x4de6c4 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, std::__Fuzzer::allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:809:5
    #10 0x4dea29 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, std::__Fuzzer::allocator<fuzzer::SizedFile> >&) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:857:3
    #11 0x4ce4a0 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:912:6
    #12 0x4f6f52 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
    #13 0x7f1c709980b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b2)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1996>
2022-03-19 11:52:53 +00:00
Nirbheek Chauhan
cb182062ad rtpbuffer: The out args for rtp extension data are optional
The code checks that these are != NULL before dereferencing them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1980>
2022-03-18 10:22:57 +00:00
Jan Schmidt
5a074a11f9 playsink: Complete reconfiguration on pad release.
Requesting a new pad can start a reconfiguration cycle, where
playsink will block all input pads and wait for data on them
before doing internal reconfiguration. If a pad is released,
that reconfiguration might never trigger because it's now waiting
for a pad that doesn't exist any more.

In that case, complete the reconfiguration on pad release.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1940>
2022-03-14 23:45:40 +00:00
Tim-Philipp Müller
8f2ed1bca4 Back to development 2022-03-14 16:07:23 +00:00
Tim-Philipp Müller
4bbb293eac Release 1.20.1 2022-03-14 11:33:40 +00:00
Tim-Philipp Müller
b888003273 Update ChangeLogs for 1.20.1 2022-03-14 11:33:25 +00:00
Nirbheek Chauhan
2fd6e40a7f rtpbasepayload: Remove dead twcc code
This feature was removed in 7a53fbad68,
but this code was left behind.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1922>
2022-03-10 16:20:26 +00:00
Jan Schmidt
a7deddd98a playbin3: Add lock to protect buffering messages
Fix a small race where a group can receive stream-start
and post a pending buffering message just as another
thread posts a different buffering message, causing them
to be received by the application out of order. In the
worst case, this leads the application receiving a
stale 99% buffering message and going back to buffering
right after the 100% buffering message.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1901>
2022-03-09 09:15:04 +00:00
Seungha Yang
2aa8ef4173 gldisplay: Reorder GST_GL_WINDOW check for egl-device
"egl-device" should be checked before the "egl", otherwise unexpected egl will be picked

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1862>
2022-03-05 00:28:17 +00:00
Sebastian Fricke
25b2a50123 Remove the uninstalled term
Remove the symbolic link `gst-uninstalled` which points to `gst-env`.
The `uninstalled` is the old name and the project should stick to a
single name for the procedure.
Remove the term from all the files, exceptions are variables from
dependencies like `uninstalled_variables` from pkgconfig and
`meson-uninstalled`.
Adjust mentions of the script in the documentation and README.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1829>
2022-03-01 23:47:35 +00:00
Sebastian Fricke
35b247fbc8 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-03-01 23:47:34 +00:00
Jan Schmidt
dbd60f9cbf gst-play: Fix trick-mode handling.
The instant-rate value in the TrickMode enum is a
flag, but the other values are not. Move instant-rate
to the end of the enum and give it a value large enough
for it to be used without modifying the trick-mode
setting.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1793>
2022-02-25 12:14:00 +00:00
Jan Alexander Steffens (heftig)
54dee98b68 videoaggregator: Correct use of start_time/end_time
When 29713c5d changed most uses of `start_time` and `end_time` to
`start_running_time` and `end_running_time`, it missed two.

Fixes: 29713c5d40
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1038
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1782>
2022-02-22 20:49:03 +00:00
Sebastian Dröge
84dd295c98 rtpbasepayload: Copy all buffer metadata instead of just GstMetas for the input meta buffer
This gives RTP header extensions some more metadata to work from.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1777>
2022-02-22 11:22:47 +00:00
Sebastian Groß
d6a5711423 audiovisualizer: shader: Fix dframe out of bound write
shader_fade_and_move_horiz_out writes a complete stride at the end of its
dframe data

This led to SIGSEGV since the stride reached into sframe->map[0]->memory
which could not be umpapped later on.

This is due to `d` is increased twice. Once at the end of the upper loop
and at the start of the lower loop.
The corresponding dframe stride is therefore skipped.

Rewind `d` and start at the correct position.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1702

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1765>
2022-02-21 15:02:49 +00:00
Seungha Yang
cae01a384e videoaggregator: Use floor() to calculate current position
... instead of round(). Depending on framerate, calculated position
may not be clearly represented by using uint64, 30000/1001 for example.
Then the result of round() can be sliglhtly larger (1ns) than
buffer timestamp. And that will cause unnecessary frame delay.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1755>
2022-02-20 21:42:01 +00:00
Seungha Yang
29713c5d40 videoaggregator: Fix for unhandled negative rate
Nagative rates have been considered only in
gst_video_aggregator_advance_on_timeout(). Update other places
to fix broken reverse playback.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1714>
2022-02-15 17:55:28 +00:00
Seungha Yang
97a4e2b203 typefindfunctions: Fix WebVTT format detection
If WebVTT file consists of "WebVTT" header without body,
the file size can be smaller than 10 bytes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1713>
2022-02-15 16:37:59 +00:00
David Svensson Fors
9881bf3c41 codec-utils: Avoid out-of-bounds error
For artificial input (in unit tests), all six bytes of
constraint_indicator_flags in hevc_caps_get_mime_codec() can be
zero. Add a guard against an out-of-bounds error that occurred in that
case. Change variables to signed int so comparison with -1 works.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1706>
2022-02-15 09:59:01 +00:00
Thibault Saunier
d680d09292 navigation: Fix Since marker for mouse scroll
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1703>
2022-02-15 05:00:38 +00:00
Seungha Yang
aa9dd0acec video-color: Fix for missing clipping in PQ EOTF function
* Add missing clipping in EOTF
* Use pre-calculated values
* Update variable names to specification's defined ones

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1700>
2022-02-14 23:18:00 +00:00
Tim-Philipp Müller
eaf7e78f01 Back to development 2022-02-07 16:22:25 +00:00
Tim-Philipp Müller
f0b045a69b Release 1.20.0 2022-02-03 20:03:15 +00:00
Tim-Philipp Müller
463bafdd23 Update ChangeLogs for 1.20.0 2022-02-03 19:53:18 +00:00
Tim-Philipp Müller
6c500b619c video: fix up GstVideoOrientationMethod type registration
... in order to make older g-i happy (~1.60) which doesn't like
freeform descriptions in the value_name field. Which in turn
then makes hotdoc happy instead of erroring out when we bump
the symbol index version.

We usually only (ab)use the name field for description strings
for private plugin enums, not for public API visible to bindings.

This lets glib-mkenum generate the _get_type() function for the
enum again, which in turn will generate the expected value names
to match the enums.

We might be able to add this back later once we can upgrade the
g-i version requirement (and the documentation job image).

This reverts most of commit b0aab48cdcf0a454d14aeb4d907209d8ee3f1add
2022-02-03 19:53:12 +00:00
Jeremy Cline
3ddb4c6f0e tagdemux: Fix crash when presented with malformed files
There's a race condition in gsttagdemux.c between typefinding and the
end-of-stream event. If TYPE_FIND_MAX_SIZE is exceeded,
demux->priv->collect is set to NULL and an error is returned. However,
the end-of-stream event causes one last attempt at typefinding to occur.

This leads to gst_tag_demux_trim_buffer() being called with the NULL
demux->priv->collect buffer which it attempts to dereference, resulting
in a segfault.

The malicious MP3 can be created by:

printf "\x49\x44\x33\x04\x00\x00\x00\x00\x00\x00%s", \
    "$(dd if=/dev/urandom bs=1K count=200)" > malicious.mp3

This creates a valid ID3 header which gets us as far as typefinding. The
crash can then be reproduced with the following pipeline:

gst-launch-1.0 -e filesrc location=malicious.mp3 ! queue ! decodebin ! audioconvert ! vorbisenc ! oggmux ! filesink location=malicious.ogg

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/967

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1620>
2022-02-01 19:04:40 +00:00
Nirbheek Chauhan
67656c5eeb docs: Add objc and objcpp files to hotdoc gst_c_sources
Hotdoc should be able to extract and parse comments out of these. Just
need to be careful to only add the glob in directories that actually
contain *.m (objc) and *.mm (objcpp) files.

Also fix some doc comments and remove redundant ones.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1614>
2022-02-01 05:25:42 +05:30
Tim-Philipp Müller
31b5243e1d Release 1.19.90 2022-01-28 14:28:42 +00:00
Tim-Philipp Müller
12fe353a31 Update ChangeLogs for 1.19.90 2022-01-28 14:28:28 +00:00
Sebastian Dröge
adf80ad1a7 rtphdrext: Return non-floating references from gst_rtp_header_extension_create_from_uri()
The header extension objects are never getting a parent object and using
floating references only complicates usage, especially via dynamic API
like signals.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1582>
2022-01-27 14:43:41 +00:00
Sebastian Dröge
2584cd90e3 rtphdrext: Use set_metadata() instead of set_static_metadata()
The latter needs a static string.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1583>
2022-01-27 14:27:16 +02:00
Mathieu Duponchelle
830d1595b9 VideoInfo, AudioInfo: fix usage with python bindings
* Expose an actual constructor from caps

* Error out in overrides for code that was using the "manual
  allocation" pattern which only worked by chance. Direct
  the script writer to the new_from_caps constructor instead.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-python/-/issues/47

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1571>
2022-01-27 08:36:46 +00:00
Tim-Philipp Müller
f03d966421 gst-plugins-base: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1579>
2022-01-27 01:38:12 +00:00
Vivia Nikolaidou
88e1b9081e audioaggregator: Return NOT_NEGOTIATED when the configuration is invalid
Otherwise we just end up outputting garbage.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/957

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1558>
2022-01-26 10:24:21 +00:00
Nirbheek Chauhan
95aa04c78f videoaggregator: Remove extra semicolon in macro usage
This is usually necessary to allow gst-indent to treat it as
a statement, but we do not run gst-indent on headers and we do not
have extra semicolons in other places that this macro is used in the
header. Fixes warnings when using the header:

```
In file included from gstreamer/subprojects/gst-plugins-base/gst-libs/gst/video/video.h:185,
                 from XYZ:9001:
gstreamer/subprojects/gst-plugins-base/gst-libs/gst/video/gstvideoaggregator.h:206:78: warning: ISO C does not allow extra ‘;’ outside of a function [-Wpedantic]
  206 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstVideoAggregatorConvertPad, gst_object_unref);
      |                                                                              ^
gstreamer/subprojects/gst-plugins-base/gst-libs/gst/video/gstvideoaggregator.h:214:181: warning: ISO C does not allow extra ‘;’ outside of a function [-Wpedantic]
  214 | G_DECLARE_DERIVABLE_TYPE (GstVideoAggregatorParallelConvertPad, gst_video_aggregator_parallel_convert_pad, GST, VIDEO_AGGREGATOR_PARALLEL_CONVERT_PAD, GstVideoAggregatorConvertPad);
      |                                                                                                                                                                                     ^
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1572>
2022-01-26 11:12:34 +05:30