Sebastian Dröge
44405e0cd7
dav1ddec: Make sure to call get_picture()
twice in a row when draining
...
The first time might return `EAGAIN` if there are pending frames but
there is no decoded frame available yet. The second time it will
actually wait for frames to become available and only start returning
`EAGAIN` again once no more frames are left.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1080 >
2023-02-08 11:26:25 +02:00
Sebastian Dröge
e0e63dd4da
dav1d: Don't treat any kind of bitstream error immediately as fatal
...
Instead use the videodecoder error handling to allow up to max-errors
consecutive decoding errors, i.e. infinite by default in 1.22 and newer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1057 >
2023-01-23 10:46:38 +02:00
Sebastian Dröge
037294b077
dav1d: Get rid of some unnecessary unwrap()
s
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:32:52 +02:00
Sebastian Dröge
f62d07633d
dav1d: Remove unnecessary frame dropping loop
...
After flushing there are no frames left anymore that could be dropped.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:28:15 +02:00
Sebastian Dröge
c5a625ae28
dav1d: Don't flush the decoder when draining
...
This directly discards all frames and it won't be possible to output
them anymore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:27:22 +02:00
Sebastian Dröge
d110977580
dav1d: Only drain at most one decoded frame per input frame unless the decoder requires more before accepting new data
...
This works around a race condition in dav1d where the decoder deadlocks
if multiple threads are used, and also is generally beneficial as it
allows for proper frame threading.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:25:23 +02:00
Seungha Yang
1c145e2ba9
dav1ddec: Lower rank to primary
...
The rank of AOM av1dec was demoted as secondary, and thus
primary rank is sufficient.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/996 >
2022-12-01 17:03:31 +00:00
Sebastian Dröge
a8250abbf1
Fix various new clippy warnings
2022-11-01 10:27:48 +02:00
Sebastian Dröge
9a68f6e221
Move from imp.instance()
to imp.obj()
...
It's doing the same thing and is shorter.
2022-10-23 23:08:46 +03:00
Sebastian Dröge
f045099fc1
Fix GObject type names, GStreamer debug category names and element factory names
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/198
2022-10-23 20:46:08 +03:00
Sebastian Dröge
20ad9175d8
Make GStreamer plugin/crate/library/directory names and descriptions consistent
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/238
2022-10-23 20:25:08 +03:00
François Laignel
8011eadfd2
Use new format constructors
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1128
2022-10-18 10:36:59 +00: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
Thibault Saunier
67e651f57c
Allow "unused_doc_comments" as we use hotdoc and not rustdoc
2022-08-29 18:33:22 -04:00
Thibault Saunier
31a53bba8a
Generate plugins documentation using hotdoc
...
Which will automatically be integrated in gstreamer documentation
2022-08-29 18:33:22 -04:00
Vivia Nikolaidou
5606111345
plugins: Simplify code using ParamSpecBuilder
2022-08-22 17:58:43 +03:00
Vivia Nikolaidou
247702b76d
video: Use gst_video::VideoCapsBuilder in some plugins
...
Simplify caps creation codes
2022-08-09 22:01:10 +03:00
Sebastian Dröge
51c7d0652e
Fix/silence a couple new clippy warnings
2022-06-30 16:07:32 +03:00
Arun Raghavan
557917b92a
dav1ddec: Write src_query() in match syntax for easier extensibility
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/698 >
2022-05-11 10:02:27 -04:00
Arun Raghavan
2c3514a5a1
dav1ddec: Deal with the possibilty of 0/1 fps in latency math
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/698 >
2022-05-11 10:02:10 -04:00
Arun Raghavan
7eb67de34c
dav1ddec: Use sink_pad() convenience accessor
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/698 >
2022-05-11 10:01:51 -04:00
Arun Raghavan
3250675e78
dav1ddec: Move state to Mutex from Arc
...
This is needed because we may now access state concurrently with and
outside of the streaming thread during a LATENCY query.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/698 >
2022-05-11 10:01:51 -04:00
Arun Raghavan
5d01bfcb79
dav1ddec: Move decoder init from start() to set_format()
...
We need a successful LATENCY query to be able to correctly initialise
max frame delay, so let's defer decoder init until we know upstream is
readier for it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/698 >
2022-05-11 10:01:51 -04:00
Arun Raghavan
05258756ce
dav1ddec: Report latency based on frame delay
...
This is not strictly correct as we might not use the same mechanism that
dav1d is using to detect the number of CPUs. We can drop the num_cpus
based approach once
https://code.videolan.org/videolan/dav1d/-/merge_requests/1407 is merged
upstream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/698 >
2022-05-11 08:29:48 -04:00
Arun Raghavan
7d681c5ce4
dav1ddec: Expose a couple of decoder settings as properties
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/698 >
2022-05-11 08:29:16 -04:00
Sebastian Dröge
6cf7d28481
Use SPDX license format in Cargo.toml
2022-03-14 10:23:16 +02:00
Sebastian Dröge
b38f6cc731
Remove now unnecessary Send+Sync
impls for element/etc subclasses
...
This is now automatically implemented.
2022-02-28 18:56:58 +02:00
François Laignel
422ea740ca
Update to gst::_log_macro_
...
See the details:
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/980
2022-02-21 20:50:01 +01:00
Sebastian Dröge
7b81945ca1
dav1ddec: Use AtomicRefCell
instead of Mutex
for the state
...
It's only accessed from the streaming thread.
2022-02-14 14:43:54 +02:00
Sebastian Dröge
7c872bb92b
dav1ddec: Fix compilation after some API changes
2022-02-03 15:51:46 +02:00
Sebastian Dröge
cf46d9439b
dav1ddec: Add 8/16 bit grayscale support
2022-02-03 13:39:43 +02:00
Sebastian Dröge
5a4c8b9fc8
dav1ddec: Release input frames that immediately caused a decoding error
...
We're not going to get any output for them.
2022-02-03 11:04:57 +00:00
Sebastian Dröge
2c511fca50
dav1ddec: Require correct alignment and stream format when running with GStreamer 1.20
2022-02-03 11:04:57 +00:00
Sebastian Dröge
6ce3029e07
dav1ddec: Update for fixed dav1d-rs API
...
As a side effect this allows us also to handle errors more gracefully
and to reduce memory load by outputting decoded frames immediately.
Also the code was changed a bit to reduce the number of redundant mutex
lock/unlocks.
2022-02-03 11:04:57 +00:00
Sebastian Dröge
b795c0c392
dav1ddec: Clean up state tracking a bit
...
And especially don't keep a decoder instance around while in Null state.
2022-02-03 11:04:57 +00:00
Sebastian Dröge
6e28a17280
dav1ddec: Don't consider decoding errors as fatal
...
Instead use the `gst_video::video_decoder_error!` macro for allowing a
certain number of consecutive errors before actually failing.
2022-02-03 11:04:57 +00:00
Sebastian Dröge
c35d1cdc0c
dav1ddec: Pass element instance to debug logs
2022-02-03 11:04:57 +00:00
Sebastian Dröge
f44b86cd30
Simplify some code around event/query views
2022-01-22 12:18:02 +02:00
Sebastian Dröge
65fcd55160
Update for event/message/query view API changes
2022-01-19 15:07:45 +02:00
Sebastian Dröge
51f8e963d6
Add SPDX-License-Identifier to all file headers
2022-01-15 21:18:47 +02:00
Sebastian Dröge
ab14c50d1c
Ignore clippy::non_send_fields_in_send_ty
lint
...
It's useless in its current shape and wrongly triggering on all types.
See https://github.com/rust-lang/rust-clippy/issues/8045
2022-01-14 12:09:57 +02:00
Sebastian Dröge
3ed9e291c2
Update for decide/propose_allocation() API changes
2021-12-06 19:11:24 +02:00
Sebastian Dröge
d9bda62a47
Update for GLib/GStreamer API changes
...
And clean up a lot of related property/caps/structure code.
2021-11-06 09:34:10 +02:00
Sebastian Dröge
0a7d1639e7
Update to Rust edition 2021 and minimum supported Rust version to 1.56
2021-10-31 17:40:05 +02:00
Sebastian Dröge
b9541b2ca4
Update for GstObjectImpl API change
2021-10-23 12:31:33 +03:00
Sebastian Dröge
d17c3483c1
video: Update for new decide_allocation() signature
2021-10-16 15:02:11 +03:00
Sebastian Dröge
4c8c398aa4
dav1d: Don't configure a buffer pool and don't require one for videometa support
...
dav1d is allocating memory itself and we directly forward that without
using any downstream buffer pool.
2021-09-18 11:58:59 +03:00
Sebastian Dröge
052365ba1a
Fix various needless-borrow clippy warnings and others
2021-07-30 13:53:35 +03:00
François Laignel
e16cad7c8f
video: migrate to new ClockTime design
2021-06-05 10:36:21 +02:00
François Laignel
8dfc872544
use gst::glib where applicable
2021-06-03 20:53:16 +02:00