Commit graph

496 commits

Author SHA1 Message Date
Stéphane Cerveau 74346080ba vorbis: avoid duplicate symbols
Use TREMOR define to avoid duplicate symbols
of ivodebis and vorbis plugins when
static linking GStreamer.

Rearrange debug category init.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1116>
2021-04-21 12:40:53 +02:00
Stéphane Cerveau 00a71112c0 vorbis: fix debug category init
During the element splitting process,
the debug category initialization has
been dropped accidently.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1074>
2021-03-18 15:59:34 +01:00
Stéphane Cerveau 2a8adec5f2 vorbis: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.

More details here:

https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1029>
2021-03-16 17:58:59 +00:00
Tim-Philipp Müller 72bafd442f vorbis: drop unneeded check for vorbis_synthesis_restart()
This was added in 1.0.1 more than 16 years ago, I think we
can safely assume this is always present now. Also in tremor.

While at it, bump vorbis requirement to 1.3.1 from 2010.
2019-12-09 07:33:55 +00:00
Tim-Philipp Müller 289d8e53e2 Remove autotools build system 2019-10-13 14:15:43 +01:00
Thibault Saunier 909baa2360 Pass the code through codespell 2019-08-30 13:05:36 +00:00
Mathieu Duponchelle e0fadd6fdd docstrings: port ulinks to markdown links 2019-08-23 18:28:16 +02:00
Thibault Saunier 27ba8d24ec doc: Port to hotdoc 2019-05-13 11:34:08 -04:00
Tim-Philipp Müller 50aa1622e1 vorbisdec: fix leak of header buffers
handle_header_buffer() does no take ownership of
the buffer passed.

Fixes leaks in various unit tests.
2019-03-06 09:14:46 +00:00
Sebastian Dröge 55ec47f555 vorbisdec: Initialize decoder directly once we have the 3 headers
... instead of waiting for the first non-header buffer.

Also drop non-identification headers arriving after initialization or
before the identification header. We don't do anything with them and
they would just accumulate.

https://bugzilla.gnome.org/show_bug.cgi?id=796980
2018-09-21 11:48:40 +03:00
Nirbheek Chauhan 41b7a65b81 meson: Add an option for the 'Tremor' Vorbis implementation
It makes sense to control it explicitly to allow us to enable it on
platforms that don't have hardware floating-point, and to allow people
to enable the 'vorbis' plugin without having to also provide the
Tremor dependency which is useless on most devices.
2018-09-10 22:22:16 +05:30
Sebastian Dröge 0619168e2a vorbisdec: Always handle in-band header packets once the first non-header packet arrives
And clean up any old pending headers if we receive a new identification
header, or if we receive a new set of headers via caps.

Otherwise it might happen that we receive one or more header but not
all, and then afterwards all headers again, and libvorbis does not like
getting headers passed multiple times and would error out.

It only makes sense to pass the very latest headers to the decoder at
the time we can actually make use of them.

https://bugzilla.gnome.org/show_bug.cgi?id=796980
2018-08-28 17:47:09 +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
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
Mathieu Duponchelle 44ea6f4c06 vorbisenc: do not map input buffer in WRITE mode 2018-04-12 15:47:27 +02:00
Tim-Philipp Müller 466b868459 vorbisparse: error out when headers are missing
https://bugzilla.gnome.org/show_bug.cgi?id=791606
2018-02-14 00:22:38 +00:00
Edward Hervey aab5cccc34 vorbisdec: Improve "new headers while initialized" handling
If new headers arrive after we are initialized, we need to make
sure that they are indeed valid.

A vorbis bitstream always begins with three header packets and must
be in order.

Also some streams have unframed (invalid?) headers that might
confuse and disrupt the decoding process.

Therefore if ever we see new headers, we accumulate them and once
we get a non-header packet we check them to make sure that:
* We have at least 3 headers
* They are the expected ones (identification, comments and setup)
* They are in order
* Any other "header" is ignored

If those conditions are met, we reset and reconfigure the decoder

https://bugzilla.gnome.org/show_bug.cgi?id=784530
2018-02-13 08:41:29 +01:00
Nicolas Dufresne 8e6c6266d7 Remove plugin specific static build option
Static and dynamic plugins now have the same interface. The standard
--enable-static/--enable-shared toggle are sufficient.
2017-05-16 13:42:07 -04:00
Thibault Saunier 099ac9faf2 docs: Convert gtkdoc comments to markdown
Modernizing the documentation, making it simpler to read an
modify and allowing us to possibly switch to hotdoc in the
future.
2017-03-10 18:19:17 -03:00
Edward Hervey e575be6dc6 vorbisdec: Reset decoder in more situations
This is a followup commit to b95725c37e

* Resetting the decoder should only happen when we get a new initialization
header (0x01) and not on the other headers
* The initialized variable only gets set to TRUE once all headers have
been parsed. Also check if the vorbis_info struct has been properly resetted
also. Failure to do that would cause vorbisdec to error if it got
two initialization header in a row (the first would configure the underlying
library and the second one would error out because it's already initialized)

https://bugzilla.gnome.org/show_bug.cgi?id=779515
2017-03-03 10:56:22 +01:00
Jochen Henneberg b95725c37e vorbisdec: reset decoder on vorbis headers update
if the vorbis encoder receives new headers it must be
reset and re-initialized to continue decoding, e. g.
for live streams
2017-02-27 19:17:58 +02:00
Sebastian Dröge bb051c14b3 vorbisenc: Resend (new, updated) headers when the caps are changing
The headers are usually changing together with the caps, and they are
nedeed for correct decoding.
2017-02-27 19:04:30 +02:00
Jochen Henneberg 0c2c82ad69 vorbis: Fix channel reorder map for 5.1, 6.1 and 7.1 2017-02-20 13:45:09 +02:00
Scott D Phillips 115ccfe679 meson: vorbis: Add -DTREMOR to flags for gstivorbisdec
Matching the flags set by Makefile.am

https://bugzilla.gnome.org/show_bug.cgi?id=774445
2016-11-15 12:45:42 +11:00
Vincent Penquerc'h 667931e52a vorbisenc: correct codebooks packet identifier from 3 to 5
https://bugzilla.gnome.org/show_bug.cgi?id=768763
2016-10-07 12:54:12 +01:00
Vincent Penquerc'h 1a4ba79044 vorbisenc: strip after-eos samples from the end of the eos buffer
https://bugzilla.gnome.org/show_bug.cgi?id=768763
2016-10-05 14:49:52 +01:00
Nirbheek Chauhan 5c4f4ac1bd Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
2016-08-20 11:09:51 +01:00
Arun Raghavan 6c84f4e743 Revert "vorbisenc: push an updated segment stop time when we know it"
This reverts commit a16cd5d2a5.

Setting the stop time on the segment breaks reconfiguration, as the
encoder signals an EOS, but we reconfigure it an continue to produce
buffers.

This information  should not be required via the segment downstream
since we already have the sample count being used to generate buffer
durations.

https://bugzilla.gnome.org/show_bug.cgi?id=768763
2016-07-21 15:26:21 +05:30
Vineeth TM 44b70ca3a1 base: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763075
2016-03-24 14:25:41 +02:00
Jan Schmidt 797a0ca376 vorbisdec: Re-init on new caps
If we get new input caps, then reset the decoder
ready for new headers and fresh data. Makes
chained oggs work when reusing the decoder.
2015-11-11 01:33:55 +11:00
Thiago Santos 14867e4ebb vorbisenc: use template subset check for accept-caps
It is faster than doing a query that propagates downstream and
should be enough
2015-08-16 12:30:30 -03:00
Thiago Santos 6a26a42ffd vorbisenc: use more accurate sink pad template caps
Removes the need for custom caps query handling and makes it more
correct from the beginning on the template. It is a bit uglier
to read because there is 1 entry per channel but makes code easier
to maintain.
2015-08-16 12:30:30 -03:00
Thiago Santos 065968c3fc vorbisdec: use default pad accept-caps handling
Avoids useless check of downstream caps when handling an
accept-caps query
2015-08-15 13:44:35 -03:00
Tim-Philipp Müller ec5c93f169 docs: update element example pipelines
- gst-launch -> gst-launch-1.0
- use autoaudiosink and audiovideosink more often
- review pipeline examples and descriptions
2015-05-10 11:38:19 +01:00
Tim-Philipp Müller c680e324bc Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 18:42:34 +01:00
Tim-Philipp Müller c53ba4beeb Fix double semicolons 2015-03-10 09:27:08 +00:00
Sebastian Dröge 90eb93c2ef Don't compare booleans for equality to TRUE and FALSE
TRUE is 1, but every other non-zero value is also considered true. Comparing
for equality with TRUE would only consider 1 but not the others.
2014-12-01 09:51:12 +01:00
Vincent Penquerc'h a16cd5d2a5 vorbisenc: push an updated segment stop time when we know it
When encoding, libvorbis will tell us how many samples are encoded
in the buffer it returns. This number may be less than the maximum
of samples in the block, if this is the last packet. In we have no
segment end time, we set it to the end time of that last sample to
tell downstream that the buffer contains less samples.
2014-10-30 14:28:39 +00:00
Aurélien Zanelli b7ab2f0b08 vorbisdec: don't reorder streams with channels count greater than eight
vorbis_reorder_map is defined for eight channels max. If we have more
than eight channels, it's the application which shall define the order.
Since we set audio position to none, we just interleave all the channels
without any particular reordering.

https://bugzilla.gnome.org/show_bug.cgi?id=737742
2014-10-02 10:42:40 +03:00
Sebastian Rasmussen 58ec221608 vorbisenc: Improve annotation of internal function
https://bugzilla.gnome.org/show_bug.cgi?id=734541
2014-08-10 10:43:26 +01:00
Edward Hervey 23996adf5c vorbisenc: add missing va_end in variadic function
Coverity 1139944
2014-06-09 10:38:53 +02:00
Tim-Philipp Müller bcb8068e27 docs: remove outdated and pointless 'Last reviewed' lines from docs
They are very confusing for people, and more often than not
also just not very accurate. Seeing 'last reviewed: 2005' in
your docs is not very confidence-inspiring. Let's just remove
those comments.
2014-04-26 23:28:57 +01:00
Tim-Philipp Müller 80fca3b4e3 vorbisenc: remove unused variables 2013-08-26 11:44:06 +01:00
Alessandro Decina 48b8e61334 vorbisenc: implement flushing 2013-08-26 08:09:11 +02:00
Sebastian Dröge 027654e71e vorbisparse: Fix event handling
Internal state should only be reset on FLUSH_STOP, not FLUSH_START.

Also forward pre-caps events immediately and don't queue them.
2013-05-10 11:32:36 +02:00
Sebastian Dröge abdfb8d452 vorbis: Fix compilation after function rename 2013-05-03 15:49:50 +02:00
Andoni Morales Alastruey 35b3d805ed vorbis: prefix get_copy_sample_func and fix duplicated symbols 2013-05-03 14:30:03 +02:00
Andoni Morales Alastruey 595c49c40d ivorbisdec: fix duplicated symbols with vorbisdec 2013-05-03 14:29:52 +02:00
Sebastian Dröge 948a4a3632 gst: Add better support for static plugins 2013-04-15 15:52:58 +02:00
Tim-Philipp Müller 4e1ccb2885 vorbis: small GValue optimisation
No need to copy buffers we put into the streamheader any more
now that we don't put caps on buffers any more, so there's no
danger of a refcount cycle.
2013-03-03 17:42:50 +00:00