Commit graph

2587 commits

Author SHA1 Message Date
Seungha Yang
3d317b976e jsontovtt: Add timeout property
As described in the spec D.4 Automatic Caption Blanking,
allows automatic clear if user specified timeout value
2022-10-10 22:16:15 +09:00
Sebastian Dröge
6e7ebc30e0 Revert "rav1e: Pin v_frame dependency to version 0.2.5 for now"
This reverts commit f85321ce9f.

Versio 0.2.6, which broke API, was yanked and released as 0.3 so this is
all working fine again.
2022-10-10 15:45:51 +03:00
Sebastian Dröge
7ee4afacf4 Change *Impl trait methods to only take &self and not Self::Type in addition 2022-10-10 15:03:25 +03:00
François Laignel
7818ac658b Use GFV::none_for_format where applicable 2022-10-08 18:29:10 +02:00
Sebastian Dröge
4c57a97d4d Update for glib::Object::new() API changes 2022-10-07 23:54:53 +03:00
Mathieu Duponchelle
9a345f9c6f webrtcsink: don't hold settings lock while negotiating 2022-10-07 21:08:00 +02:00
Mathieu Duponchelle
f82a731b3a webrtcsink: fix deadlock on encoder setup
Refactor connect_input_stream in order to avoid an ABBA deadlock
altogether: where in other spots we lock settings then state, here we
were emitting encoder-setup with state held, then locking settings in
the default handler.

We could have changed the locking order in the other spots, but instead
we can also just release the state lock when emitting the signal, which
is good practice.

Fixes #108
2022-10-07 21:08:00 +02:00
Sebastian Dröge
0b13bfe9dc fallbacksrc: Always restart the fallback stream on EOS and make sure to EOS all streams if the main stream is EOS 2022-10-05 19:13:36 +03:00
Sebastian Dröge
9719b055c5 fallbacksrc: Retry fallback stream on errors too
It was retrying but then nonetheless handling the error as fatal.
2022-10-04 16:31:09 +00:00
Sebastian Dröge
f85321ce9f rav1e: Pin v_frame dependency to version 0.2.5 for now
See https://github.com/rust-av/v_frame/issues/1
2022-10-04 19:12:59 +03:00
Nirbheek Chauhan
cd2eb3a22d update-version.sh: Also update version in meson.build 2022-10-04 21:27:23 +05:30
Nirbheek Chauhan
1d4d3e4cb0 build: Update versions to be 0.9.0-alpha.1
0.9.0 is the next release, so we can't name things that already.

Also the version in meson.build was 0.13.0, which is completely wrong.
2022-10-04 21:27:23 +05:30
Thibault Saunier
c4f771dbbc Fix payloaders MTU to 1200
Higher value might be too big (in particular with many VPNs `webrtcsink`
won't work with the default 1400 MTU).

1200 is the default value in libwebrtc and it is references in several
places there.
2022-10-03 13:15:20 +02:00
Sebastian Dröge
a867d6228b dav1d: Update to dav1d 0.9 2022-10-03 10:18:35 +03:00
Sebastian Dröge
9b85dcc03b fmp4mux: Drop GAP buffers before doing ONVIF UTC time re-timestamping
GAP buffers won't have the reference timestamp meta.
2022-10-02 09:27:50 +00:00
Sebastian Dröge
36ce8bd4f7 fmp4mux: Implement a better strategy for splitting fragments and deciding which buffers go into which fragment
It is now guaranteed that each fragment is at most fragment-duration
long unless the one and only GOP of the fragment is longer than that.
The first (non-EOS) stream determines the duration of each fragment and
all other streams are drained to at most the fragment end timestamp
determined this way.

In addition the next fragment's target time is now at the end of the
previous fragment plus fragment-duration instead of using
  first-fragment + N*fragment-duration
regardless of where fragments were split before.

That is, fmp4mux now uses the same strategy as used by splitmuxsink and
as is required e.g. by HLS with regards to the target duration.
2022-10-02 09:27:50 +00:00
Sebastian Dröge
f66aafb039 tracers: queue-levels: Update for gst::TracerImpl API changes 2022-10-02 11:44:34 +03:00
Mathieu Duponchelle
ef7cf4dd98 signalling: track consumer and producer sessions in dedicated HashMaps
This avoids full traversals of the sessions HashMap.

Also fixes accidental session teardown when a producer is stopped while
also in a session as a consumer.
2022-09-30 23:51:41 +02:00
Mathieu Duponchelle
61c0fdcb5d webrtcsink: re-indent 2022-09-30 23:51:16 +02:00
Thibault Saunier
c5c92d0467 signalling: Do not stop consuming sessions when a peer stops being a producer 2022-09-30 23:51:07 +02:00
Sebastian Dröge
8601562efe onvif: Fix for gst::meta::CustomMeta::register() API change 2022-09-29 17:48:27 +03:00
Seungha Yang
9740140798 jsontovtt: Don't push zero-duration cue data
It will likely confuse players. We can drop corresponding
cue since the text line will be included in the next cue
2022-09-29 23:02:38 +09:00
Sebastian Dröge
b63627025e fmp4mux: Split huge drain function into separate functions 2022-09-29 10:40:41 +03:00
Sebastian Dröge
4ba4b00235 examples: Update to clap 4 2022-09-29 09:48:53 +03:00
Sebastian Dröge
0b81ed2e34 rtpav1: Use GStreamer types by namespace instead of importing dozens of types directly into the scope
For consistency with other plugins and to reduce confusion of where
types actually come from.
2022-09-28 08:14:07 +00:00
Sebastian Dröge
5774d9c9ee rtpav1: Reset state on FlushStop/Eos in all conditions and reset all of the state 2022-09-28 08:14:07 +00:00
Seungha Yang
6772e49712 cea608tojson: Clip column number if it exceeds allowed value
... as described in the spec
2022-09-28 01:41:36 +09:00
Sebastian Dröge
d6ab55c263 onvifmetadataparse: Schedule EOS events after the last currently queued up frame
Otherwise EOS might be sent before the last frame's data, or even at a
much earlier frame due to reordering.
2022-09-27 11:43:54 +00:00
Sebastian Dröge
f0b2df49dc onvifmetadataparse: Handle negative running times in debug output 2022-09-27 11:43:54 +00:00
Sebastian Dröge
7479888200 uriplaylistbin: Port example from structopt to clap 2022-09-27 13:30:38 +03:00
Sebastian Dröge
38753b08ac fallbacksrc: Implement support for fallback streams 2022-09-27 12:56:15 +03:00
Sebastian Dröge
00411523d4 fallbackswitch: Make sure to flush/reset pads during pad (de)activation
Otherwise this can potentially deadlock or delay state changes for a
longer time.
2022-09-27 12:56:01 +03:00
Sebastian Dröge
1f7126a8a1 fallbackswitch: Flush and deactivate pads before releasing them 2022-09-27 12:56:01 +03:00
Sebastian Dröge
b6ebad2761 fallbackswitch: Fix lock order problem between state and stream lock
The order is first stream lock, then state lock. Everything else can
lead to deadlocks.
2022-09-27 12:54:21 +03:00
faldez
df4bf3214e change ser_de to serde
because gstreamer-rs rename ser_de feature to serde
2022-09-27 11:45:24 +02:00
Thibault Saunier
adb4cb8691 tracers: Fix documentation comment using gtk-doc style
So the online documentation works
2022-09-24 16:30:50 -03:00
Sebastian Dröge
692a063528 onvifmetadataparse: Refactor clock/condvar waiting
Always first try draining queued data in the loop and only start waiting
if there's nothing to drain right now. Otherwise data might have to be
drained right now but we still wait and nothing is ever waking up the
source pad task again.

Also make sure to not wait multiple times on the same gst::ClockId but
instead unset it after waiting on it and no new one was scheduled in the
meantime. Future waits on the same ClockId will immediately return and
instead we should wait on the condvar if no new ClockId is available.
2022-09-23 13:26:15 +03:00
Sebastian Dröge
c4d2f4a60a onvifmetadataparse: Start source pad task on StreamStart if needed
Otherwise receiving StreamStart after Eos might keep the source pad task
paused and no new data is ever pushed downstream.
2022-09-23 13:26:15 +03:00
Nirbheek Chauhan
86a19e3765 ci: Include image tag names from the main repo
Now we don't need to keep anything in sync manually.

Also fix the images_template.yml include while we're at it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/875>
2022-09-23 01:54:06 +05:30
Nirbheek Chauhan
814f279eeb ci: Update fedora image to latest tag for new meson
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/874>
2022-09-22 17:18:59 +05:30
François Laignel
0b7259afac Fixes for removal of SpecificFormattedValues ops on ref
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/874>
2022-09-22 12:18:49 +02:00
François Laignel
caefa6d33e net/onvif: update with new gst::Signed features 2022-09-21 17:45:22 +00:00
Mathieu Duponchelle
18f08ae5dc jitterbuffer: fix typo when calculating max_misorder_time 2022-09-21 16:02:54 +02:00
Mac Thi Kieu Van
98fc0d5bd6 ts-jitterbuffer: Declare request-pt-map signal 2022-09-21 11:31:06 +00:00
Sebastian Dröge
c32f0ca12e rtpav1: Specify version helper dependency by path
It's in the same repository after all.
2022-09-21 11:17:44 +03:00
Sebastian Dröge
6a10728d94 aws: Update to aws 0.48/0.18 2022-09-21 11:17:44 +03:00
Mart Raudsepp
4928a2badf dav1ddec: Require dav1d 1.0.0 in meson
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/698
raised the dependency via bumping the dav1d rust crate used, but didn't add
a requirement at meson level, thus with automatic or enabled option for dav1d
it would pass with an older failure, but then during compilation phase fail
with:

  --- stderr
  thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: PkgConfig(`"pkg-config" "--libs" "--cflags" "dav1d" "dav1d >= 1.0.0"` did not exit successfully: exit status: 1
  error: could not find system library 'dav1d' required by the 'dav1d-sys' crate

  --- stderr
  Package dependency requirement 'dav1d >= 1.0.0' could not be satisfied.
  Package 'dav1d' has version '0.8.2', required version is '>= 1.0.0'
  )', /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/dav1d-sys-0.5.0/build.rs:80:10
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
2022-09-19 21:39:14 +00:00
Thibault Saunier
f19af9f760 meson: Use workspace Cargo.toml to find crates path
We were globing recursively during meson run and it was spending 20secs
here in total only to run the dependencies.py script
2022-09-19 20:11:40 +00:00
mariana
60ad532ece added support for memory nvmm
Made modifications according to comments in PR 97
2022-09-19 13:49:12 +02:00
Nirbheek Chauhan
ced6bcc246 cargo: Update default-members list
hlssink can be built by default because it has no dependencies.

tutorial and rsfile should not be built by default because they are
not very useful, and flavors should not be built by default because
it's very incomplete.
2022-09-18 02:54:44 +05:30