Tim-Philipp Müller
577dabf7b1
Use g_memdup2() where available and add fallback for older GLib versions
...
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-base/-/merge_requests/1171 >
2021-06-02 14:21:02 +00:00
Tim-Philipp Müller
e539f0cd67
Use new gst_buffer_new_memdup()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1170 >
2021-05-26 11:46:27 +00:00
Stéphane Cerveau
930877b022
ogg: element_init returns void
...
no need to return boolean as it will
be always TRUE.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1029 >
2021-03-16 17:59:00 +00:00
Stéphane Cerveau
d8e00a4ff9
ogg: element_init returns void
...
no need to return boolean as it will
be always TRUE.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1029 >
2021-03-16 17:59:00 +00:00
Stéphane Cerveau
20da00f057
ogg: remove useless ret test
...
Use GST_ELEMENT_REGISTER_DEFINE_CUSTOM instead
of GST_ELEMENT_REGISTER_DEFINE_WITH_CODE if a specific
init needs to be tested before registering the element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1060 >
2021-03-10 20:06:20 +01:00
Julian Bouzas
d58cf8b8d3
ogg: allow per feature registration
...
Split plugin into features including
elements and device providers 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-base/-/merge_requests/900 >
2020-12-10 13:01:57 +00:00
Mathieu Duponchelle
69d5428bfc
docs: mark more types as plugin API
2020-06-23 14:52:20 -04:00
Philippe Normand
6be01f0738
oggstream: Workaround for broken PAR in VP8 BOS
...
Similarily to the Theora mapping, process 0:N, N:0 and 0:0 pixel aspect ratios
as 1:1.
Fixes #719
2020-01-13 09:09:02 +00:00
Tim-Philipp Müller
289d8e53e2
Remove autotools build system
2019-10-13 14:15:43 +01:00
Thibault Saunier
51e49ab96b
oggdemux: Move seeking in pull mode to the streaming thread
...
Flushing and teering down the streaming thread from the seeking thread
and simply letting the streaming thread handle the seek event in its
loop function.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/639
2019-09-06 15:06:53 +00:00
Thibault Saunier
909baa2360
Pass the code through codespell
2019-08-30 13:05:36 +00:00
Matthew Waters
cbd4110611
oggdemux: fix werror build on macos
...
../ext/ogg/gstoggdemux.c:1071:7: error: format specifies type 'long' but the argument has type 'ogg_int64_t' (aka 'long long') [-Werror,-Wformat]
packet->granulepos);
^~~~~~~~~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:1062:96: note: expanded from macro 'GST_DEBUG_OBJECT'
#define GST_DEBUG_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_DEBUG, obj, __VA_ARGS__)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:646:31: note: expanded from macro 'GST_CAT_LEVEL_LOG'
(GObject *) (object), __VA_ARGS__); \
^~~~~~~~~~~
../ext/ogg/gstoggdemux.c:1312:15: error: format specifies type 'long' but the argument has type 'ogg_int64_t' (aka 'long long') [-Werror,-Wformat]
packet.granulepos);
^~~~~~~~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:1060:98: note: expanded from macro 'GST_WARNING_OBJECT'
#define GST_WARNING_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_WARNING, obj, __VA_ARGS__)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:646:31: note: expanded from macro 'GST_CAT_LEVEL_LOG'
(GObject *) (object), __VA_ARGS__); \
^~~~~~~~~~~
2019-08-30 13:27:28 +10:00
Thibault Saunier
27ba8d24ec
doc: Port to hotdoc
2019-05-13 11:34:08 -04:00
Jan Alexander Steffens (heftig)
0bec36d5fa
oggmux: Fix a maybe-uninitialized warning
...
Arch Linux, GCC 8.2.1+20181127, CFLAGS='-Og -g3'
2018-12-05 21:08:33 +00:00
Sebastian Dröge
e0dee7f4c1
oggdemux: Answer POSITION query
2018-10-17 19:44:22 +03:00
Sebastian Dröge
6024b8e46b
oggdemux: Ensure that no pad values are set when setting up the mapper
...
Otherwise we might have arbitrary values set that are used later and can
cause undefined behaviour, as found by ossfuzz.
2018-08-27 11:07:47 +03:00
Nirbheek Chauhan
eadedc68f8
meson: Add feature options for all plugins
...
GL dependency detection is still automagic.
https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 18:42:11 +05:30
Sebastian Dröge
3dd95b1311
oggdemux: Make sure that events are writable before changing their seqnum
2018-06-18 13:28:15 +03:00
Edward Hervey
5c118e5924
oggdemux: Properly relay seqnum of segments
...
Not all cases were handled regarding properly propagating the
seqnum of SEGMENT events on all downstream segment-related events
2018-06-05 17:24:05 +02:00
Edward Hervey
63e8900c47
ogg: Avoid undefined granule shift
...
A granule is a 64bit signed integer, shifting by 63 or more is
undefined and most likely an indication that the stream is
corrupted or invalid.
Detected by oss-fuzz
2018-05-30 10:57:14 +02:00
Xavier Claessens
201e7c7803
Meson: Generate pc file for all plugins in base
...
https://bugzilla.gnome.org/show_bug.cgi?id=794568
2018-04-25 11:05:56 +01:00
Edward Hervey
17d5f08316
oggstream: protect against out-of-bounds read
...
We need at least 17 bytes of data for a valid flac header
oss-fuzz #6974
2018-03-17 06:34:47 +01:00
Edward Hervey
0d14819ef2
oggdemux: Handle invalid-sized packets
...
On invalid packets there is the possibility we might end up wanting
to trim/offset more than what is available.
oss-fuzz issue #5866
2018-02-01 10:51:21 +01:00
Edward Hervey
a28880b458
oggdemux: Check encoder name is valid
...
Encoder names should be valid utf-8, if not just ignore them
2017-12-08 10:38:20 +01:00
Edward Hervey
427df2d5d9
ogmparse: Make sure we set valid string on caps
...
the fourcc might not contain printable characters, use the convenience
macro to turn it into a printable fourcc, like it's done in
gstogmparse
2017-12-06 14:23:49 +01:00
Edward Hervey
51eeb4534a
ogmparse: Set caps after sending pending events
...
Avoids sending STREAM_START before CAPS
2017-11-15 10:55:55 +01:00
Edward Hervey
6c6d8b0b95
oggstream: Demote error to warning
2017-11-15 10:55:55 +01:00
Edward Hervey
25fa4802fe
oggdemux: Move mutex/cond initialization/release
...
We only need to initialize the mutex/cond once when creating the
element and then release them when we are done with the element.
Avoids weird "mutex_clear called when still locked" issues
2017-11-15 10:55:55 +01:00
Edward Hervey
895d884701
oggdemux: Solidify gst_ogg_demux_loop_push() some more
...
There were still some races going on where seeking events wouldn't
be properly intercepted/executed by this thread.
* Instead of always waiting for the GCond to be emitted, first just
check if there is an event available
* Take ownership of the event *while* the lock is taken and not
after releasing/reacquiring it
* Finally acquire lock at the very top and release it at the end
to make it a bit more streamlined
This removes the remaining issues with seeks not being executed
2017-11-08 17:51:52 +01:00
Edward Hervey
9f678bb27f
oggdemux: Don't double-unlock
...
The previous branch will release the lock in the call to
gst_ogg_demux_seek_back_after_push_duration_check_unlock()
Only unlock it if we didn't call that function
2017-11-08 17:51:51 +01:00
Edward Hervey
c86df789ed
oggdemux: Drop data before new segment
...
When calculating duration in push-mode we seek to a certain position
and discard any data until we get data from that requested position.
The problem is that basing ourselves solely on offset to determine
whether we reached the target offset is wrong since the source might
be fast enough to send us that target position *before* it processed
the requested seek.
This would end up in a situation where:
* We think we're done with duration estimate
* We fire a seek back to "0" in the loop thread
* We resume normal processing
* ... except that we're still getting data from too far ahead which
we decide to process.
* And we start doing totally wrong granule/time/duration calculation
and pushing wrong data.
Instead of this confusion, wait until we receive data from the requested
seek. We do that by using the fact that the seqnum in
seek_event_drop_til will be non-zero until the SEGMENT corresponding
to the requested SEEK has been received.
Bonus: makes startup slightly faster
2017-11-07 15:16:52 +01:00
Edward Hervey
0a49b93ade
oggdemux: Wait for push loop to be started
...
Code using the push_loop_thread (using for sending seeks) assumes
that the thread was properly started, except that this isn't always
true and the thread might not have completely started.
Instead wait for the thread to properly start before doing anything
else.
2017-11-07 15:16:52 +01:00
Edward Hervey
5e373936bb
oggstream: Ensure enough bytes for fishead header parsing
2017-11-06 14:29:26 +01:00
Edward Hervey
af48682d44
oggstream: Use proper type for sample calculation
...
If we are going to return a (potentially) 64bit integer, don't use
a 32bit one for calculation, otherwise we could end up exceeding
the maximum size of a 32bit int.
2017-11-05 12:16:13 +01:00
Edward Hervey
7f5ffcaa49
oggstream: More fixes for invalid granuleshift
...
Don't use granuleshift if it wasn't set
2017-11-05 12:15:33 +01:00
Edward Hervey
2cf5d596ee
oggstream: Fix default granuleshift usage
...
For stream mappers that don't set a specific granuleshift, it will
have the default value of -1.
Protect the code for that and return the granule value as-is
2017-11-04 11:50:13 +01:00
Edward Hervey
1172e5efc7
oggdemux: Protect against invalid granule positions
...
Only valid values are -1, 0 or positive values. Anything else is
most likely corrupted data streams
2017-11-04 11:50:10 +01:00
Edward Hervey
33dfed5af8
oggdemux: Only track time for initialized streams
...
in push-mode we only can track time (or most operations on streams
for that matter) if the underlying GstOggMap was properly initialized.
2017-11-01 18:39:26 +01:00
Edward Hervey
c3006b17d1
oggstream: Add a default GstOggMap
...
Since the default value of a GstOggPad.map.map was 0 ... we would
end up using wrong functions from mappers() if the stream wasn't
initialized yet.
Instead of that, use a default blank/empty first entry.
2017-11-01 18:39:26 +01:00
Edward Hervey
f1c44332d5
ogmparse: Ensure we don't create bogus fractions
...
The clamping of the fraction denominator was bogus (it needs to
be >0)
2017-11-01 11:19:58 +01:00
Edward Hervey
eb8bf0f162
oggdemux: Fix chain leak in push mode
...
In some corner cases we end up with the building chain not being
properly tracked (and therefore not properly freed).
Add a FIXME so it can later be fixed, but for now just fix the leak
2017-11-01 11:18:12 +01:00
Edward Hervey
0297bc2a4f
ogmparse: Error out if we can't figure out the format
...
In some cases we might not be able to figure out the fixed format
from the header.
Properly error out in those cases.
2017-11-01 10:32:54 +01:00
Edward Hervey
e638f81165
ogg: Don't add tags to empty taglist
2017-10-31 11:57:19 +01:00
Edward Hervey
90106b6bf2
oggdemux: Don't forget to reacquire lock when needed
...
Fixup to ef93130cf0
I overlooked the issue. There is a case when the lock is released
and we need to reacquire it
2017-10-26 10:07:15 +02:00
Edward Hervey
6fd8d78d8b
oggdemux: Don't drop sticky events
...
Previous commit was wrong. We should still send all events to the
pad (so that sticky events get attached to it and sent when pad
gets added).
2017-10-24 11:05:20 +02:00
Edward Hervey
e8a60b3de9
oggdemux: Improve handling of EOS without source pads
...
We might have a chain to use, but it might not have any active pads
Properly detect that and send an error message on EOS
2017-10-24 10:56:00 +02:00
Edward Hervey
f902286a26
oggdemux: Error out on EOS if we have no chains to use
...
There are not active and pending chains, if we get EOS we need to
inform the user via an error message
2017-10-20 18:41:52 +02:00
Edward Hervey
ef93130cf0
oggdemux: Don't double lock
...
The lock was already taken just before this block and is released after
2017-10-20 18:41:46 +02:00
Vincent Penquerc'h
bb0abf8558
oggdemux: fix artifacts at chain boundaries
...
https://bugzilla.gnome.org/show_bug.cgi?id=782132
2017-05-29 16:22:04 +01:00
Vincent Penquerc'h
523e98396f
oggdemux: fix clipping more samples than exist in the first packet
...
This can happen in Opus (and maybe other codecs ?), and would cause
failure to play.
https://bugzilla.gnome.org/show_bug.cgi?id=782157
2017-05-26 14:41:47 +01:00