Commit graph

1585 commits

Author SHA1 Message Date
Sebastian Dröge
78c1fed92d audio: Move audio_buffer_clip() to functions module 2020-06-07 18:58:54 +03:00
Sebastian Dröge
30d51f0ca6 video: Don't panic when passing an invalid video info to VideoMeta::add()
Instead return an error that can be handled by the caller.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/259
2020-06-07 18:58:54 +03:00
Sebastian Dröge
926ed2f53d video: Don't unmap VideoFrameRef created from a VideoFrame
Otherwise we're going to unmap it twice. Also add a test for the
different interactions.
2020-06-07 15:22:33 +00:00
Sebastian Dröge
4f5aceaa5a video: Check that the passed in video info is valid when creating a VideoFrame 2020-06-07 15:22:33 +00:00
Sebastian Dröge
6ed505401f video: Add VideoInfo::is_valid() and guard against finfo being NULL when retrieving the video format 2020-06-07 15:22:33 +00:00
Thiago Sousa Santos
4a2cb80c06 rtp_buffer: wrap more methods
* extension data
* onebyte/twobytes extension
* ssrc
* csrc
* get_payload
2020-06-06 07:03:29 +00:00
Guillaume Desmottes
cac9767167 ci: rebuild image to update to Rust 1.44.0 2020-06-05 10:07:01 +02:00
jneem
e7cb758ee3 README.md: Add remark about pkg-config in MSYS2
Mention (and link to) the known issue about the MSYS2 version of pkg-config.
2020-06-05 10:03:16 +03:00
Sebastian Dröge
22113dc9cb gstreamer/iterator: Store filter types in a hash table
Static variables in generic functions only exist once and not once per
type parameter, so before we were only able to register exactly one
filter type.
2020-06-04 12:36:03 +03:00
Sebastian Dröge
9b4117ea71 examples: Add an example that registers a custom GstMeta and makes use of it
The meta contains a Rust String as a label for the buffer. It is added
on buffers passed into an appsrc and retrieved from the buffers provided
by an appsink.
2020-06-04 12:07:05 +03:00
Mathieu Duponchelle
9f422c25d9 audio / video: export new formats iterators in preludes 2020-06-03 21:38:16 +02:00
Guillaume Desmottes
d5cab61c93 audio: implement Iterator on AudioFormat
Also add AUDIO_FORMATS_ALL as public API.
2020-06-03 21:11:00 +03:00
Guillaume Desmottes
3ceb870790 audio: add API to build raw audio caps 2020-06-03 21:11:00 +03:00
Guillaume Desmottes
972002ceb2 video: implement Iterator on VideoFormat
Also add VIDEO_FORMATS_ALL as public API.
2020-06-03 21:11:00 +03:00
Guillaume Desmottes
9754147a30 video: add API to build raw video caps 2020-06-03 21:11:00 +03:00
Guillaume Desmottes
1b0a20e52f regenerate 2020-06-03 20:04:18 +03:00
Sebastian Dröge
c417ee8a56 Update gir 2020-06-03 20:04:18 +03:00
Sebastian Dröge
843fd923af ges: BaseEffect is available since 1.2 even if all its functions are only since 1.18
There's a heuristic in the code generator to base the version on the
functions' versions if the type itself has none, simply because too many
libraries get this wrong. Let's override that here.
2020-06-03 17:08:01 +03:00
Sebastian Dröge
d216757c23 webrtc: Generate DataChannel bindings 2020-06-03 17:08:01 +03:00
Guillaume Desmottes
842959e1d8 update gir-files 2020-06-03 12:50:03 +02:00
Guillaume Desmottes
737d998a54 ci: rebuild images to update gst
Will be needed to bind the new webrtc APIs.
2020-06-03 11:45:57 +02:00
Sebastian Dröge
9236ace284 video: Add VideoAffineTransformationMeta, CropMeta and RegionOfInterestMeta
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/218
2020-06-02 16:05:01 +03:00
Sebastian Dröge
ede4588e0c gstreamer: Add bindings for ProtectionMeta 2020-06-02 16:05:01 +03:00
Guillaume Desmottes
5775e531d9 ci: rebuild images to update gst
Will be needed to bind the new audio and video caps APIs.
2020-06-02 14:22:05 +02:00
Sebastian Dröge
9dbddc9fef gstreamer: Allow calling various global functions before gst::init()
Including most debugging related functions.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/211
2020-06-01 07:27:51 +00:00
Sebastian Dröge
f8d0d4f373 Update gir 2020-06-01 07:27:51 +00:00
Sebastian Dröge
8988e0daa8 deny: Allow libloading twice in the dependency tree
An older version is pulled in by the OpenGL example via glutin, and it
would have to be updated to a newer version of glutin to fix this. See
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/409
2020-05-29 11:43:25 +03:00
Jan Schmidt
6c876a5681 examples: Add a VideoOverlayComposition example
Replicate the pango-cairo cairooverlay example, but
drawing into a gst::VideoOverlayComposition using the
overlaycomposition element.
2020-05-29 02:58:47 +10:00
Jan Schmidt
dd226e80f8 Add an example of setting up the VideoConvert API
Configure some custom cropping / scaling of a video frame
input to compositor via the converter-config property
and gst_video::VideoConverterConfig API.
2020-05-29 02:58:47 +10:00
Jan Schmidt
637a1ca670 examples: Add a custom event example.
Add an example of constructing and parsing a custom event using
a rust helper struct, and sending them / catching them in
a pipeline.
2020-05-29 02:58:47 +10:00
Sebastian Dröge
e9317d0a48 Update CHANGELOG.md for 0.15.6 2020-05-28 15:51:43 +03:00
Sebastian Dröge
40c14ccc03 gstreamer: Update ron dependency to 0.6 2020-05-28 13:18:02 +03:00
Sebastian Dröge
dbf6d1fd1a gstreamer/promise: Return a borrowed StructureRef for the reply from the Future
Prevents an usually unneeded copy of the structure.
2020-05-27 14:48:48 +03:00
Sebastian Dröge
9d851bfc48 gstreamer/promise: Allow resolving the Promise with None and handle None explicitly in the change function
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1300
2020-05-27 13:55:51 +03:00
Sebastian Dröge
7086a754be Add various glib::Value trait impls for borrowed versions of types
For SDPMessageRef, StructureRef and CapsFeatureRef this involves the
conversion from and to a glib::Value. Specifically this means that e.g.
a StructureRef can be retrieved from a glib::Value via borrowing, i.e.
without creating a copy of the structure first.

For all mini objects only retrieval from a glib::Value is implemented as
the other direction would allow to get multiple immutable references
from a mutable reference without borrowing, which is not allowed and
would make it possible to observe a mini object changing while having an
immutable reference to it.
2020-05-27 13:17:54 +03:00
Sebastian Dröge
0b3bfa7ea2 gstreamer/promise: Convert None promise replies to an empty structure in the change_func
webrtcbin likes to put a NULL structure into the reply under some
circumstances when the promise successfully resolved.

See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1300
for details.
2020-05-27 12:24:11 +03:00
Sebastian Dröge
dfdf01b868 gstreamer/datetime_serde: Use glib::BoolError instead of a &'static str as TryFrom error type 2020-05-26 19:26:35 +03:00
Sebastian Dröge
5eb1dbd93e video/videoinfo: Use a proper error type in the TryFrom<VideoMultiviewMode> impl for VideoMultiviewFramePacking 2020-05-26 19:26:35 +03:00
Sebastian Dröge
d417656707 Use thiserror more widely for deriving Error/Display impls of error types 2020-05-26 19:26:35 +03:00
Sebastian Dröge
f0e12bbf24 video/videoconverter: Add TryFrom<Structure> and inverse From impl for VideoConverterConfig
Allows converting between both types interchangebly.
2020-05-26 19:26:35 +03:00
Mathieu Duponchelle
02a43819a7 gstreamer-video: expose caps features 2020-05-22 21:31:45 +02:00
Sebastian Dröge
31313fb5c8 video: Add bindings for guess_framerate() 2020-05-20 09:52:03 +03:00
Sebastian Dröge
8029d85232 video: Add bindings for calculate_display_ratio() 2020-05-20 09:52:03 +03:00
Sebastian Dröge
1b7e99938f gstreamer/event: Add setter/getter for the gst::Stream in the stream-start event 2020-05-17 13:38:45 +03:00
Sebastian Dröge
4097c15c96 Don't include LGPL docs in the docs if both embed-lgpl-docs and purge-lgpl-docs features are selected
This makes usage of RLS/rust-analyzer on the repository much faster and
less annoying as the docs don't have to be included and removed on every
change.
2020-05-14 10:44:58 +03:00
Sebastian Dröge
93bc5c9324 gstreamer/gstreamer-app: Don't store strong references in futures Stream/Sink adapters
This applies to the ones of the appsink, appsrc and bus. If we would
store a strong reference then they would keep alive the underlying
object forever even if their pipeline disappeared in the meantime.

Like this e.g. the bus stream would start returning None once the bus
was destroyed, similar to how other channels are working in Rust.
2020-05-13 22:13:11 +03:00
Sebastian Dröge
3f495ce1da gstreamer/plugin: Register plugins with the correct minor version when building for 1.18 2020-05-08 14:32:50 +03:00
Guillaume Desmottes
6cf5914e21 ci: rebuild images
This will update to latest Rust stable (1.43.1).
2020-05-08 09:14:07 +02:00
Sebastian Dröge
781c5785b1 Regenerate 2020-05-05 17:29:14 +00:00
Sebastian Dröge
c588a0bcd5 Update gir-files from gstreamer-rs-sys 2020-05-05 17:29:14 +00:00