Commit graph

853 commits

Author SHA1 Message Date
Sebastian Dröge
c25a3e13e3 tutorial: Port to once_cell::Lazy 2020-01-26 08:38:10 +00:00
Sebastian Dröge
1e778e9827 Update for Seqnum/GroupId API changes 2020-01-25 01:21:22 +02:00
François Laignel
e2add3f2c8 ts-jitterbuffer: add dedicated functions for state transitions + tests
fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/issues/95
2020-01-23 19:10:21 +01:00
Mathieu Duponchelle
c50aa09034 threadshare: fix latency query handlers
Returning 0 as the max latency in those sources is incorrect,
and may lead to sinks incorrectly complaining about insufficient
buffering elements.

Reproduce with:

gst-launch-1.0 ts-udpsrc port=50000 address=127.0.0.1 \
  caps="application/x-rtp, media=(string)audio, clock-rate=(int)8000, encoding-name=(string)PCMA, payload=(int)8" ! \
  rtppcmadepay ! alawdec ! autoaudiosink

gst-launch-1.0 audiotestsrc do-timestamp=true samplesperbuffer=400 ! \
  alawenc ! rtppcmapay max-ptime=50000000 min-ptime=50000000 ! \
  udpsink host=127.0.0.1 port=50000

Logs:

Not enough buffering available for  the processing deadline of 0:00:00.020000000,
add enough queues to buffer  0:00:00.020000000 additional data.
Shortening processing latency to 0:00:00.000000000.

This then causes glitches, there are many other ways for the problems
to manifest.
2020-01-23 15:36:22 +00:00
Mathieu Duponchelle
decc1e2029 threadshare: make live sources return NoPreroll from PlayingToPaused
Not returning NoPreroll in that transition causes downstream sinks
to wait for preroll forever.

Reproduce with:

gst-launch-1.0 audiotestsrc ! udpsink host=127.0.0.1 port=50000
gst-launch-1.0 ts-udpsrc address=127.0.0.1 port=50000 ! fakesink

ctrl + C in the receiver pipeline -> hangs forever
2020-01-23 15:56:11 +01:00
Sebastian Dröge
92941d7f92 closedcaption: Fix compilation after buffer copy flags were changed to a constant 2020-01-23 08:21:32 +02:00
François Laignel
d1cc8eaec8 ts: don't panic when operating on a Context without a valid PadContext
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/issues/94
2020-01-22 06:16:17 +00:00
Mathieu Duponchelle
0aa5b15564 jitterbuffer: return NoPreroll when going from READY to PAUSED
This is useful when upstream is not a live source

Fixes potential issue discussed in:

https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/issues/93#note_388528
2020-01-21 22:14:33 +01:00
Mathieu Duponchelle
1823ca525e jitterbuffer: don't try to lock in query handlers
Instead, add position and latency fields to the PadSrcHandler

Fixes #93
2020-01-21 22:14:06 +01:00
Sebastian Dröge
5047ed480d claxondec: Fix/silence a few clippy warnings 2020-01-20 08:13:43 +02:00
Sebastian Dröge
1ad4e39cc9 meson: Add claxon plugin 2020-01-20 08:01:14 +02:00
Ruben Gonzalez
7d3ab342d2 Add claxon based FLAC decoder.
Audio decoder element structure is based in `gst-plugin-lewton` (a lewton based Vorbis decoder created by @slomo)

The element assumes correctly parsed input from `flacparse`.

Implementation details:

* Claxon returned frames does not contain audio channels interleaved, the reorganization of the channels is done by the element.
* Claxon output buffers are always Vec<i32>, mapping to the correct type (depending on the audio format) is also done by the element.

Mono s16 and stereo_s32 test are provided.

Complete pipelines to test are:

```
gst-launch-1.0  -v souphttpsrc location=https://archive.org/download/MLKDream/MLKDream.flac ! queue2 !  flacparse ! flacdec ! audioconvert ! autoaudiosink
gst-launch-1.0  -v audiotestsrc ! audio/x-raw, format=S16LE, layout=interleaved, rate=44100, channels=1 ! audioconvert ! flacenc ! flacparse ! claxondec ! autoaudiosink
```

Fixes #71
2020-01-19 16:01:23 +00:00
Sebastian Dröge
b84831c94f reqwesthttpsrc: Switch back to hyperx
It was updated to the new versions of its dependencies and provides
typed header types for more of the headers that we're using.
2020-01-18 10:51:25 +00:00
François Laignel
676ae87aed ts: queue & proxy: spawn on src_pad in PadSinkHandlers...
... instead of copying the src_pad's Context
2020-01-17 15:37:54 +01:00
Guillaume Desmottes
d98e76529d meson: build tests, bins and examples
Best to build as much as possible so we can detect build breakage
earlier and we won't have to build tests when running them.
2020-01-16 14:03:39 +05:30
François Laignel
7a4fea8669 ts-udpsrc: prepare socket immediately
Now that we can `Context::enter`, it is no longer necessary to spawn
a `Future` to prepare the `UdpSocket` and beneficiate from the
`Context`'s IO driver.
2020-01-16 00:44:48 +01:00
François Laignel
a15d60105b ts: fix FlushStart / FlushStop events handling 2020-01-16 00:44:45 +01:00
François Laignel
3eed2f69d9 ts: have block_on panic if running on a Context thread 2020-01-16 00:18:16 +01:00
Guillaume Desmottes
a6adc81eb4 tutorial: use GEnum derive 2020-01-13 09:31:05 +05:30
Guillaume Desmottes
ce004a5bac cdgdec: reset the interpreter when stopping
Fully reset the interpreter state as if we decode later it will be
another file.
2020-01-10 10:49:44 +05:30
Guillaume Desmottes
119afdde2a cdg: cdgdec: reset interpreter when flushing
Prevent visual artifacts from the previous position when seeking to a
not keyframe.

Dumping cdg_renderer version as we need the new reset API.
2020-01-09 17:16:03 +05:30
Guillaume Desmottes
28e3e3199c meson: add test wrapper
Allow us to run the tests using 'meson test'.

Needed for https://gitlab.freedesktop.org/gstreamer/gst-ci/issues/46
2020-01-07 14:19:13 +05:30
Guillaume Desmottes
accd10dfea meson: add 'command' argument to cargo wrapper
Will be used to add test support.
2020-01-07 14:06:14 +05:30
Tobias Morell
aa40eae581 tutorial: Add enum property to control output on progress bin
Fixes #84
2020-01-06 11:22:40 +02:00
Guillaume Desmottes
e73e27cda4 ci: include gst-ci
- Use gst-ci's stages instead of our own
- Override GIT_STRATEGY for Rust only builds as gst-ci relies on
  gst-build subprojects by default.

First step merging our Rust CI with gst-ci. Once this is merged we'll
enable Rust in gst-ci builds and so will guard gst-plugins-rs MR against
breaking gst-build.
2020-01-03 14:35:49 +05:30
Guillaume Desmottes
13d4029f70 meson: add dav1d option
Allow to ensure that the plugin is actually build.
2020-01-03 09:46:29 +05:30
Guillaume Desmottes
46dda60db9 meson: don't pass empty --exclude when building all plugins
''.split(',') returns [''] and not [].
2020-01-03 09:41:41 +05:30
Guillaume Desmottes
e158f4ef88 meson: rename cargo.py to cargo_wrapper.py
Fix 'cargo build' on Windows as its $PATH includes $PWD, it seems to
pick our script rather than the actual cargo.
2020-01-03 09:35:10 +05:30
Mathieu Duponchelle
e2a2a17f09 fallbackswitch: disable extra warnings for aggregator build 2020-01-02 15:07:10 +00:00
Sebastian Dröge
9cade5bbe0 closedcaption: Put framerates into the src pad template caps of sccparse/mccparse
We're always providing a framerate on the output and without this it's
not possible to link the parsers to ccconvert while having it convert to
CEA708 CDP.
2020-01-02 16:44:38 +02:00
Guillaume Desmottes
cbb1912e99 meson: check for dav1d dep
Needed to build dav1d-sys which is required by the dav1d decoder plugin.

Exclude the plugin if the dep isn't found, preventing the build to fail.
2020-01-02 08:19:55 +00:00
Guillaume Desmottes
db8b2ad08b threadshare: fix coding style
Just ran 'gst-indent'.
2020-01-02 11:49:39 +05:30
Guillaume Desmottes
9b33c3627d fallbackswitch: fix coding style
Just ran 'gst-indent'.
2020-01-02 11:49:13 +05:30
Sebastian Dröge
6d2ab03f56 reqwesthttpsrc: Simplify code to block on futures 2019-12-31 14:19:04 +02:00
Sebastian Dröge
b1e85c7fa0 reqwest: Update tests to hyper 0.13 2019-12-31 12:20:14 +02:00
Sebastian Dröge
672cb730a8 reqwest: Update to reqwest 0.10 / tokio 0.2 2019-12-31 11:49:09 +02:00
Philippe Normand
9d659fbd00 ci: Add dav1d build support 2019-12-24 15:10:58 +01:00
Philippe Normand
84c40b872d dav1d: Add dav1ddec element
This element uses the Dav1d AV1 decoder library to decode AV1 video.
2019-12-24 15:10:58 +01:00
Guillaume Desmottes
317679fec3 meson: add gstreamer-rs deps
Fix race when building from gst-build as we need to be sure that all
these deps have been built before starting building gst-plugins-rs which
will build gstreamer-rs.
2019-12-24 13:58:56 +05:30
Sebastian Dröge
e877da0ba3 rav1e: Update for VideoEncoder::set_format() API changes 2019-12-23 13:31:24 +02:00
Sebastian Dröge
9772adbfbf Fix various new clippy warnings from 1.40 2019-12-22 11:35:01 +02:00
Sebastian Dröge
bc94cc999e Run clippy on --all-targets 2019-12-22 10:20:18 +02:00
Sebastian Dröge
dea2cb769d rav1e: Update to 0.2 release 2019-12-22 10:14:34 +02:00
François Laignel
688357a474 Update jitterbuffer.rs + clippy pass 2019-12-21 10:58:14 +01:00
François Laignel
dfbc0d3975 Move jitterbuffer to its own directory module 2019-12-21 10:45:43 +01:00
François Laignel
0221524a10 Update to tokio release 0.2.5 + throttling 2019-12-21 08:56:43 +01:00
François Laignel
e8f5191ee7 ts: Pad wrapper for async processing
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/merge_requests/170#note_276334
and https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/merge_requests/204
2019-12-21 08:56:43 +01:00
François Laignel
bdadf25f5c Clippy pass 2019-12-19 20:44:00 +01:00
François Laignel
ff470e9799 ts: move iocontext.rs to runtime/executor.rs
Part of: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/merge_requests/170
2019-12-19 20:44:00 +01:00
François Laignel
8eec141517 threadsharing: migrate to async/await and tokio 0.2.0-alpha.6
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/merge_requests/164
2019-12-19 20:44:00 +01:00