gstreamer-app-sys
FFI bindings to libgstapp-1.0
0.25.0
7.5M downloads/mo
#3629 most downloaded on crates.io
source
What this package is like to depend on
Last release 5 months ago
28 Feb 2026
Ships fairly regularly
a new release about every 2 months
Most releases are documented
notes for 20 of 33 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
35 releases · first in 2017
5 releases in the last 12 months
see the full history below
Release timeline
35 releases · Apr 2017 to Feb 2026Releases
latest 35-
0.25.020 Feb 2026Release notes
Open source →Fixed
gst_video::dma_drm_fourcc_to_string()doesn't do a NULL pointer dereference on invalid fourccs anymore.gst::Bus::timed_pop_filtered()timeout semantics are consistent with the C implementation now.gst_validate::setup_test_file()return value ownership semantics.- Fix
gst::Object::set_parent()behaviour and mark it asunsafe, and add a corresponding unsafeunset_parent(). - Allow construction of
gst_app::AppSinkwithdrop-out-of-segmentproperty.
Added
- Initial bindings for the gstreamer-vulkan library, including XCB and Wayland API support.
gst_audio::AudioChannelPositionimplementsDisplaynow.- Support for wrapping e.g. a
Vec<u8>in aMemoryorBufferand retrieving it again later with its original type. gst::Memory::default_alignment()for returning the default memory alignment.- Implement
Allocator::alloc()on the Rust wrapped memory allocator. gst::segtrap_is_enabled()/segtrap_set_enabled().gst::MiniObject::mark_may_be_leaked().gst_utils::StreamProducerevent types API for forwarding upstream events.gst_tag::image_data_to_image_sample().gst_taggot implementations for all the tags provided by the library.- Various missing
gst::Memory/gst::BufferAPIs that are rarely used.
Changed
-
Updated to gtk-rs-core 0.22 APIs.
-
Updated with final GStreamer 1.28.0 APIs and upcoming 1.30 APIs.
-
Updated minimum supported Rust version to 1.92.
-
Cleanup of
gst::Metatransform APIs. -
Change
gst_app::AppSrcmax-timeconfiguration to be non-optional. -
GES
AssetAPIs take generic type parameters now. -
gst_video::convert_sample()timeout parameter is optional now. -
gst::Allocatorsubclassing API was fixed to be actually usable.
-
0.25.0-alpha.205 Feb 2026 pre-releaseNothing published for this version
-
0.25.0-alpha.101 Jan 2026 pre-releaseNothing published for this version
-
0.24.528 Feb 2026Nothing published for this version
-
0.24.402 Dec 2025Nothing published for this version
-
0.24.015 Jul 2025Release notes
Open source →Changed
- Compatible with gtk-rs-core 0.21 / gtk4-rs 0.10.
- Update GStreamer gir files to latest (upcoming) 1.28 APIs.
- Minimum support Rust version is updated from 1.71.1 to 1.83.
gst::Structurefields and fields of related API are usinggst::IdStrwhen built against GStreamer 1.26 and use a local implementation of that as fallback on older versions to offer the same API.- Rework of
gst_validateaction and action type API. - Rework of
gst_play::PlayMessageAPI to be easier to use correctly. - Remove
boolresult fromgst::BufferList::foreach()as return values are more flexibly handled via mutable variables captured by the closure. gst::Element::foreach_pad()returnsControlFlowinstead ofboolfrom callback now.- Return iterators instead of
Vecs from more functions. - Make
gst::event::SelectStreamsbuilder API for convenient. - Add
#[must_use]annotations to all iterator structs. - Return
gst_video::VideoInfoandgst_audio::AudioInforeferences from more functions instead of copies. - Change some
gst::Clockfunctions to not returnOptions anymore. - Change
gst_sdp::SDPMedia::set_media_from_caps()to a method. - Various
gst_allocatorsallocator API was moved to extension traits and renamed to not have the same name as a method of the parent class.
Added
- Allow setting generic properties as part of the
gst_app::AppSinkandAppSrc,gst::Binandgst::Pipelinebuilders. - Bindings for the
gstreamer-mselibrary. - Bindings for the
gstreamer-d3d12library.
Removed
- API deprecated in previous releases was removed.
gst_webrtc::DataChannelduplicated signal API was removed.
-
0.23.517 Feb 2025Release notes
Open source →Fixed
- Properly validate
gst::IntRange::with_step()step size - Fix
gst::Bufferserde serialization - Forward gap events by default in
gst_utils::StreamProducer. - Correctly account for alternate interlace mode in
gst_video::VideoMeta::add_full(). - Return
Results instead ofbools in newgst_playAPI.
Added
- Support for
TracerImpl::USE_STRUCTURE_PARAMSwith GStreamer < 1.26. - Bindings for
gst_analytics::ODMtd. - Bindings for
TopSurroundRightandTopSurroundLeftaudio channels. - Bindings for AV1 and H266 codec helpers API.
- Bindings for
gst_audio::reorder_channels_with_reorder_map().
Changed
- Updated GStreamer gir files for latest 1.26 APIs.
- Documentation links URL was updated.
- Properly validate
-
0.23.421 Dec 2024Release notes
Open source →Fixed
gst_video::VideoFrame::plane_data()does not return a truncated buffer for the alpha plane in A420 and similar formats anymore.FnMutclosures are now correctly passed via a mutable reference to FFI code.- Order of arguments in
gst_video::VideoFormat::from_mask()was corrected.
Added
- Bindings for 1.26
gst_analytics::TensorAPI. gst::DebugCategory::as_ptr()andHashimpl,gst::DebugMessage::as_ptr().- Support for hex-dumping
&mut [u8]in addition to&[u8],gst::Buffer, etc. - Functions to work with meta
glib::Types.
Changed
- Updated GStreamer gir files for latest 1.26 APIs.
-
0.23.228 Sep 2024Release notes
Open source →Fixed
- Lifetime of
gst::TagList::index()return value is correctly bound to&selfnow. - Don't assume
gst::Structurename / field names have'staticlifetime. - Set pad probe data to
NULLifHANDLEDis returned and the item is an event, buffer or buffer list. - Don't unnecessarily add
#[link]attribute to theextern "C"sections to allow linking against gstreamer-full and make static linking easier.
Changed
- Add
#[must_use]togst_video::VideoTimeCode::add_interval().
Added
- Add API to take events/buffers from a
gst::PadProbeInfo. - Add
gst::EventViewMutandgst::Event::view_mut(), and a few setters for event fields. - Add
gst::MessageViewMutandgst::Message::view_mut(), and a few setters for message fields.
- Lifetime of
-
0.23.011 Jul 2024Release notes
Open source →Changed
- Compatible with gtk-rs-core 0.20 / gtk4-rs 0.9.
- Update GStreamer gir files to latest (upcoming) 1.26 APIs.
- Minimum support Rust version is updated from 1.70 to 1.71.1.
- Move
gst::Metatags into separate modules and improve API around them. - Improve
gst::Metatransform functions and make the API more generic, and as part of that add support the video meta transform. - Pass an immutable instead of mutable output buffer reference to
gst_rtp::RtpHeaderExtension::write()function. - Make
gst_net::PtpClock::new()constructor fallible. - Change
gst_rtsp_server::RTSPTokenAPI to be consistent withgst::Structure, specifically add a builder. - Change
from_glib_ptr_borrow()functions to work with references instead of raw pointers for improved safety. - Improve code generation when building with
panic=abort. - Change
gst::BufferListAPIs to work with ranges instead of index+length. - Use various
usizeinstead ofu32for various indices ingst::Buffer,gst::Caps,gst::Structureand related APIs. gst::Clockcalibration-related API uses plainu64instead ofgst::ClockTimefor the clock rate.gst::debug!and related macros useobj = xinstead ofobj: xfor specifying the target object now. Similar forimpandid. The old syntax is still supported but deprecated. The new syntax works better with tooling, especially rustfmt.
Added
- Mutable access to the
gst_webrtc::WebRTCSessionDescriptionfields. gst::StructureBuilder::field_if_some()and the same for related builders to only set a value ifSome(x)is provided.gst::StructureBuilder::field_from_iter()andfield_if_not_empty()for various builders.gst::PadBuilderAPI for selecting an automatically generated name.- Adapter for the
logcrate around the GStreamer debug log system. This allows the macros from thelogcrate to be output via the GStreamer debug log system. - Bindings for the double click
gst_video::Navigationevent. - Bindings for
gst_pbutilsmissing/install plugins API. - Setters for
gst_editing_services::FrameCompositionMeta. ges::UriClipAsset::new().
-
0.22.619 Jun 2024Release notes
Open source →Fixed
- When logging with an id and a formatted log message this would previously panic.
- A couple of clippy warnings.
-
0.22.523 May 2024Release notes
Open source →Fixed
- A couple of clippy warnings and compiler warnings about unused imports with latest rustc.
- Memory leak in builder for the
SelectStreamsevent. - Add parameter validity assertions to various
BufferListandCapsAPIs where these assertions were missing to avoid assertions in C.
Added
StreamProducer::set_forward_preroll()API to configure if the preroll buffer should be directly forwarded or not yet.
Changed
- Remove nonsensical gstreamer-video test that fails with latest GStreamer main.
- Update to itertools 0.13.
-
0.22.008 Feb 2024Release notes
Open source →Changed
- Compatible with gtk-rs-core 0.19 / gtk4-rs 0.8.
- Update GStreamer gir files to latest (upcoming) 1.24 APIs.
- Various standalone functions were moved to separate modules or methods.
gst::Rankis not implemented as an enum but as a struct with associated constants now.- Optimized
gst::Buffer::from_slice()andMemory::from_slice()implementations that have one heap allocation fewer. - Various
gst::Bufferandgst::Memoryfunctions take ranges now instead of offset/size parameters.
Added
- Bindings for
gst_gl::GLContext::thread_add(),GLFrameBuffer::draw_to_texture(). - New
gst_gl::GLVideoFrametype that replacesgst_video::VideoFramefor GL-specific API, and comes with mostly the same interface. - Basic gstreamer-tag bindings.
gst::Buffer:dump()anddump_range()together with the same API ongst::Memoryfor hex-dumping the whole buffer/memory content.- Implement
Cloneongst::MetaRef. - Bindings for
gst::Buffer::map_range_readable()and its writable variant. - Array-based accessor for
gst_video::VideoFrameandgst_audio::AudioBufferplane data. - Support for handling custom authentication in
gstreamer-rtsp-server. - Accessors for various base class struct fields.
- Owned buffer getter for
AudioBuffer/VideoFrame. gst_rtp::RTPSourceMetabindings.gst::macos_main()bindings.- gstreamer-analytics bindings.
Fixed
- API typo in owned
gst::ReferenceTimestampMetareference getter. - Allow variable expansion in
gst::loggable_error!macro. gstreamer-gl-*crates can build docs again on stable.
Removed
gst::Pad::caps()property getter. Usecurrent_caps()instead which does the same thing.- Various deprecated APIs that were deprecated in previous releases.
- Getter for a mutable buffer reference from
AudioBuffer/VideoFrameas that allowed invalidating the buffer map.
Fixed
-
0.21.104 Oct 2023Release notes
Open source →Changed
- Update GStreamer gir files to latest (upcoming) 1.24 APIs.
Fixed
- Use correct media links in the tutorials code.
- Fix a couple of new 1.72/1.73 clippy warnings.
- Fix description of gstreamer-validate crate.
- Copyright/license files for the gstreamer-gl were added.
- Ordering of raw video formats follows the rules of latest libgstvideo now.
- Fix potential deadlock in
gst_utils::StreamProducerwhen sending force-keyunit events.
Added
max-time/max-bytessetters togst_app::AppSinkbuilder.gst::CustomMeta::register_simple().
-
0.21.008 Aug 2023Release notes
Open source →Changed
- Minimum supported Rust version is updated to 1.70.0.
- Compatible with gtk-rs-core 0.18.
gst::Bin::add_many(),remove_many()andgst::Element::link_many(),unlink_many()are more generic now.gst_base::Aggregator::src_pad()returns anAggregatorPad.gst::Bus::add_watch()now returns a guard value that automatically removes the watch when it goes out of scope.gst::Bin,PipelineandPadconstructors don't take the optional name parameter anymore but it can instead be provided via the builder API.gst::PadandGhostPadbuilders inherit name from the pad template (or target) if possible and no other name is provided explicitly.- The preroll samples and selected sticky events are forwarded to
StreamProducerconsumers.
Added
- Support for the upcoming GStreamer 1.24 APIs.
- Support for inline variable names in format strings for error/warning/info messages.
- Methods for converting between floating point seconds and
gst::ClockTime. - Various additions to the gst-validate bindings.
Displayimplementations for error/warning/info messages.- More useful
Debugimplementations for messages, events and queries andgst_pbutils::DiscovererInforelated structs. - API for listing/checking
gst::Metatags.
-
0.20.009 Feb 2023Release notes
Open source →Fixed
- Make
gst_gL::GLDisplay::create_context()other_contextparameter optional. - Make allocation query caps optional.
Added
- Conversions between
gst::Signed<T>andTand signed integer types. - Bindings for the object lock via
gst::Object::lock(). - Various
FromIterator,ExtendandFromimpls for creatingCaps,Structure,Buffer,BufferList,CapsFeaturesand other types. PartialEqimpls between owned/borrowed miniobjects/structures.- API for appending items to
gst::Arrayandgst::List.
Changed
- Compatible with the 0.17 gtk-rs release.
- Updated minimum supported Rust version to 1.64.
- Require GStreamer 1.22.0 or newer when enabling the
v1_22feature. - Require the object lock to be taken for various
gst_gl::GLDisplaymethods. - Renamed
gst::TagSetter::add()toadd_tags()to avoid name conflict withBin::add(). - Mark various un-extendable enums as exhaustive.
- Make use of
glib::GStrand related API in caps, structure, tags and logging API to reduce temporary string allocations. - Various code optimizations to reduce generated code size and allow more optimal code to be generated.
- Reduce size of various types, including reduction of
gst_audio::AudioInfofrom 832 to 320 bytes. - Use actual function name instead of module name in log output.
- Change
gst_utils::StreamProducerAPI to forward buffers by default and allow temporarily discarding via newset_discard()function.
- Make
-
0.19.213 Nov 2022Release notes
Open source →Added
- Subclassing support for
gst::Allocator. gst_gl::GLBaseMemory::context()to retrieve the GL context used by the memory.
Changed
- Updated GStreamer .gir files to 1.22.2 release.
Fixed
gst::Allocator::register()does not cause use-after free with GStreamer < 1.20.5 anymore.- Don't generate version constants in
gstreamer-editing-services-sysas they are useless and change with every update.
Changed
- Fixed various new clippy warnings.
- Subclassing support for
-
0.19.022 Oct 2022Release notes
Open source →Added
-
Builders for element construction.
gst::ElementFactory::make()returns a builder now that allows to easily set the name or any other property at construction time. The old API is available asmake_with_name(). -
Builders for
BinandPipelineas well as aDefaulttrait implementation to simplify object construction. -
Builders for
appsrcandappsink, which allow type-safe construction of both elements while also allowing to easily set all their properties at construction time. -
Builders for the GStreamer-specific fraction/array param/property specs.
-
Infrastructure for casting between
gst::Memorysubtypes/supertypes, and make use of it for GL memory. -
Bindings for the
gstreamer-allocatorlibrary with support for file descriptor-based and DMABUF memory. -
Complete bindings for
gst_videoNavigationevents. -
Constructors for error/warning/info messages with a pre-built
glib::Error. This also leads to some minor simplification of the existing API. -
Accessors for static pads of various base classes for making accessing them cheaper and less error-prone than getting them by name.
-
Builder for pad templates.
-
Static PTP clock API for statistics, initialization and deinitialization.
-
New
gstreamer-utilscrate that currently contains only aStreamProducerAPI. This allows building 1:N bridges between live pipelines viaappsink/appsrcelements. -
Bindings for the new
gstreamer-playlibrary that was added in 1.20. -
gst::Caps::new_empty_simple()to create caps without fields and just a name. -
gst_audio::AudioCapsBuilderandgst_video::VideoCapsBuilderfor building (possibly) unfixed raw audio/videos caps with typed setters for the various fields. This makes it impossible to mix up types and e.g. use anu32instead of ani32for the width of video caps. -
gst::Buffer::ptr_eq()to compare buffers by pointer instead of doing a deep comparison, and alsoptr_eq()on all other miniobject types. -
Accessors for
gst_webrtc::WebRTCICECandidateStatsfields. -
Bindings for the
gstreamer-validateAPI. -
Subclassing bindings for
gst_audio::AudioVisualizerbase class for easily writing audio visualization elements. -
gst_pbutils::EncodingProfileAPI for element properties. -
Support for returning buffer lists from
BaseSrc/PushSrcsubclasses. -
Support for implementing
gst::Bin::do_latency(). -
Minimal bindings for the
gstreamer-mpegtslibrary.
Fixed
-
Signature for
gst_base::Aggregator::connect_samples_selected()to remove unnecessary generic parameter and make it straightforward to use. -
Various APIs had optional parameters/return types corrected to match the C API more closely.
-
Logging does not evaluate its arguments anymore if the debug category is not enabled or below the current threshold.
-
Registering custom metas is now possible without transform function.
-
gst::subclass::ElementImpl::request_new_pad()signature uses a&strinstead of an ownedStringnow.
Removed
-
fragiledependency and instead use the same functionality fromglib. -
gst_audio::AudioAggregatorignore_inactive_padsproperty, which was duplicated from theAggregatorbase class.
Changed
-
Compatible with the 0.16 gtk-rs release.
-
Updated minimum supported GStreamer version from 1.8 to 1.14.
-
Updated to the latest GStreamer 1.22 APIs while still supporting up to GStreamer 1.14. Any new 1.22 APIs might still change until the stable 1.22 release.
-
Updated minimum supported Rust version to 1.63.
-
In
EventView/QueryView, getters that return references now return references that can outlive the view and are only bound by the lifetime of the corresponding event/query. -
In addition
Query,EventandMessageviews are implemented more consistently now, which makes them easier to use and as a side effect allows to pass e.g. more strongly typed queries to functions that only accept a single query type. -
Various improvements to
gst::ClockTime,gst::format::Bytes,gst::format::Signedand related types and their usage in the API, which should make its use from applications easier and less error-prone. Check thegst::formatmodule-level documentation for details. -
gst::StreamsSelectedevent builder takes the selected streams as iterator instead of slice. -
For consistency with other macros the
gstprefix of the logging macros was also removed. -
Various iterator implementations were added and the existing ones were optimized by implementing more specialized traits and custom implementations for a couple of iterator functions.
-
GStreamer initialization safety checks were optimized.
-
gst::Bus::post()takes ownership of the passed messages like the C API. -
Better and easier to read
Debugimpls forCaps,TagList,StructureandPromise. -
ser_defeature was renamed toserde. -
gst::Tracerimplementations get result enums passed asResults now instead of single enums. -
gst::Pad,ProxyPad,GhostPaddefault functions are all associated functions instead of methods now to avoid conflicts between multiple types with the same method. -
Padtasks are catching panics from the task function and if the parent of the pad is an element then the panic is converted into an error message and the task is simply stopped. Otherwise the panic is rethrown.
-
-
0.18.016 Jan 2022Release notes
Open source →Added
gst_rtp::RtpHeaderExtension::read()andwrite().gst::ElementMetadatahas aconstconstructor now.gst_rtp::RtpBufferAPI works on buffer references instead of plain buffers for statically enforcing writability and usage in more places.gst_video::VideoCodecAlphaMetaandgst::CustomMeta.gst::MiniObjectfor generically passing around mini objects instead of their concrete types.gst_app::AppSinknew-eventcallback andpull_object()function.gst_pbutils::PbUtilsCapsDescriptionFlagsandpb_utils_get_caps_description_flags().gst_rtp::RtpBuffer::remove_extension_data().gst_video::VideoDecodersubframe API.gst_webrtc::WebRTCSCTPTransport.gst::ElementFactorycreate_with_properties()/make_with_properties().gst_video::VideoContentLightLevelandVideoMasteringDisplayInfofor HDR signalling.- Lots of missing
GESAPI. gst::AllocationParamsand support in the allocation query.propose_allocation()anddecide_allocation()support in the various base classes.Iteratorimplementation forgst_video::VideoOverlayComposition.Extend,IntoIteratorandFromIteratorimplementations forBuffer,Caps,BufferList,CapsFeatures,StreamCollectionandStructurefor more natural Rust APIs.instant-rate-changeevents/messages bindings.- Support for arithmetic operations on
Option<gst::ClockTime>and related types. gst_video::ColorBalance.gst::MetaFlags.gst_base::Aggregator::set_position().- Convenience getters for
gst::ElementFactoryandgst::DeviceProviderFactorymetadata. gst_rtp::RtpBuffer::set_padding(),get_padding()andpayload_mut().#[must_use]to many types and functions.gst::Event,gst::Messageandgst::Structurehas_name().gst_video::Navigationsubclassing support and API improvements.gst::Structureandgst::Capsforeach(),map_in_place()andfilter_map_in_place().gst_gl::GLBufferPooland various GL constants and functions.gst_pbutilscodec utils APIs.
Fixed
gst_base::BaseTransform::prepare_output_buffer()correctly reflects buffer writability.
Changed
- Compatible with the 0.15 gtk-rs release.
- Updated to the latest GStreamer 1.20 APIs while still supporting up to GStreamer 1.8. Any new 1.20 APIs might still change until the stable 1.20 release.
- Update all code to the Rust 2021 edition. This causes no user-facing changes.
gst::Sample::segment()returns a reference instead of a copy of the segment.gst::Object::set_property_from_str()returns aResultnow instead of silently failing like the C version.- Allow handling passed in buffers in
gst_base::PushSrc::create. - Allow passing in
Noneingst_player::Player::set_uri(). - Use
[[f32; 4]; 4]instead of[f32; 16]for affine transformation matrix. gst::Pad::sticky_event()statically gets the event of the requested type instead of requiring to match on it afterwards.- Clean up
gst_pbutilsEncodingProfileAPI to be harder to misuse and less confusing. - Various
gst::Array,gst::List,gst::IntRangeandgst::FractionAPI improvements that should reduce some friction. - Directly generate
NUL-terminated C strings in debug log API instead of having multiple allocations per message. - Various functions return
glib::SListandglib::Listnow to avoid copying into aVecif only iteration is needed. gst::ChildProxyAPI is more consistent with object property API.- Improved
gst::Buffer::foreach(),gst::Pad::sticky_events_foreach()andgst::BufferList::foreach()APIs. - Don't post error messages from
propose_allocation()anddecide_allocation().
-
0.17.028 Jun 2021Release notes
Open source →Fixed
- Use
#[repr(transparent)]where it is more correct and remove unneeded#[repr(C)]annotations. - Don't provide direct access to the logged object in logging functions as the object might currently be finalized and might be unsafe to access.
- Moved X11/EGL/Wayland-specific GL APIs into their own crates instead of having them inside gstreamer-gl and behind feature flags. This simplifies conditional usage of them in applications.
- Various nullability issues: parameters and return values that should've been or shouldn't have been nullable were fixed.
- Print source object correctly in
gst::MessageDebugimpl. gst_rtsp_server::RTSPServer::attach()is fallible.gst::ElementFactoryListTypeis a proper bitflags type now instead of genericu64.gst::PluginFeature::load()returns the same type as the one passed in.- Value returned by
gst::PromiseFuturecan no longer be freed while still in scope. - Only assign to
GError**s in subclassing code if they're notNULL.
Added
- Bindings for the GStreamer Controller library and the corresponding core API.
- Subclassing support for
gst_player::PlayerVideoRenderer. gst::PARAM_FLAG_CONTROLLABLEand related bindings.gst_video::VideoOrientationandVideoOrientationMethodbindings.- Support for removing pad probes from inside the pad probe callback.
gst_check::Harness::pull_until_eos()bindings.ges::TransitionClipandOperationClip.- Bindings for
gst_gl::GLMemoryand related APIs. - Subclassing support for
gst_gl::GLFilterandgst_gl::BaseSrc. gst::TagList::remove().gst::CapsFeaturesandgst::StructureAPI based onglib::Quarks instead of strings.- Subclassing support for
gst_video::VideoFilter. - Bindings for various new 1.20 APIs:
gst_app::LeakyType,gst_video::VideoDecoderRequestSyncPointFlags,gst_rtp::RTPHeaderExtension,gst_audio::AudioLevelMeta,gst_webrtc::WebRTCKindand various other new flags/enum types. - Subclassing support for
gst_rtsp_server::RTSPMountPoints.
Removed
- Deprecated APIs in 0.16.
- Don't declare that
gst_app::AppSinkandAppSrcinherit fromgst_base::BaseSinkandBaseSrcto avoid exposing API that is meant for subclasses to applications. gst_app::AppSrcandAppSinksignals that are also covered by the callbacks. The callbacks are more flexible and have lower overhead.- Duplicated getters/setters for
gst_base::BaseSinkandBaseTransformproperties.
Changed
- Compatible with the 0.14 gtk-rs release.
- Updated to the new GStreamer 1.20 APIs while still supporting up to GStreamer 1.8. Any new 1.20 APIs might still change until the stable 1.20 release.
- FFI and safe high-level bindings are in the same repository now and use the same version numbers.
- The .gir files are shared with gtk-rs and the GStreamer-specific ones are in a separate git submodule.
- Update all code to the Rust 2018 edition. As part of this, most macros lost
their
gst_prefix. - Re-export dependency crates from the different preludes.
- Getter functions don't have a
get_prefix anymore and GObject property accessors don't include the_property_part in the middle of their function names anymore. Applications developers should usefix-getters-callsto ease migration of their applications. Usefix-getters-defif you also want yourgetfunctions definition to comply with the API standards applied in this release. - Lots of changes to the subclassing API. Check the various elements in gst-plugins-rs for examples.
- Major improvements to the documentation infrastructure and generated documentation.
gst::ClockIDbindings are refactored to use different types for single-shot and periodic clock ids, which makes misuse harder.gst::ProxyPadextension trait uses trait functions instead of associated functions now for usability reasons.- Use
Result<gst::FlowSuccess, gst::FlowError>for overriding flow returns from pad probes. gst_video::VideoInfo::align()returns aResultinstead of abool.- Use actual error types instead of
()ingst_sdpAPIs. Displayimpl forgst::ClockTimeprovides better human-readable strings.gst::Element::link_filtered()andlink_pads_filtered()takes a non-optional caps now. That's easier to use and for not providing caps the non-filtered variants of the functions exist.- Replace various manual bindings with auto-generated ones.
gst::Element::get_request_pad()is replaced byrequest_pad_simple()as a simpler version ofrequest_pad()and in accordance with the deprecation in GStreamer 1.20.gst::ClockTimeand APIs working on it were changed to make possibility of usingGST_CLOCK_TIME_NONEexpressed in the type system.Option<gst::ClockTime>can beNonewhilegst::ClockTimeis always a valid time.
- Use
-
0.9.108 Sep 2020Release notes
Open source →Fixed
- Export
FlowError/FlowSuccess,ClockError/ClockSuccess,PadLinkError/PadLinkSuccesstoo
- Export
-
0.9.006 Jul 2020Release notes
Open source →Added
- Bindings for (outputting to) the GStreamer logging system
- Bindings for the GStreamer base library
- Bindings for all the
Padfunctions to override pad behaviour, and pad task functions - Bindings for
StaticCapsandStaticPadTemplate - Bindings for
deep-notifysignal onObject - Support for directly creating
Error/Warning/InfoMessagesand posting them from an element with context information (file, line, module, etc.) similar to the CGST_ELEMENT_ERRORmacro - Support for setting custom fields in
Messages/Eventsduring construction - Support for creating Buffers out of anything that is
AsRef<[u8]>orAsMut<[u8]> - Support for using the
Readtrait onAdapter - Functions for getting all sink/src/all pads of an
Element, and all children of aBin - Builder for
CapsandStructuresin addition to the existing functions AppSrc/AppSinkimplementBaseSrc/BaseSinkandURIHandler- Rust ports of the basic tutorials 1 to 8 from https://gstreamer.freedesktop.org/documentation/tutorials/
- "Getting started" and "Installation" sections to the README.md
- "dox" feature for generating documentation for all available configurations
Fixed
StackTraceFlagsare only available since 1.12- Worked around macOS requiring a
NSRunLooprunning on the main thread in all examples and tutorials, to be able to show a window or anything else
Changed
ClockTimeis now a wrapper aroundOption<u64>to handle theCLOCK_TIME_NONEcase better. This wrapper implements all the arithmetic and other traits as needed and ensures that no accidental calculations withCLOCK_TIME_NONEcan happen- "Values with format", like in
Duration/Position/Convertqueries orSeekevents now return aFormatValuetype. This contains the actualFormattogether with the value and does any required conversions. This also makes it harder to accidentally mix e.g. values in bytes and time PadProbeIddoes not implementClone/Copyanymore- Property notify watches return a custom type instead of ulong
Error/Warning/InfoMessagescan only be created with specific kinds ofglib::Errornow. Using arbitrary ones does not workIteratorbindings were completely rewritten and provide the item type as a generic type parameter now, greatly simplifying its usage- All
glib::Valuesare nowglib::SendValueinstead, e.g. inCapsandStructures, as their content must be possible to send to different threads safely Message::get_src()can returnNone- Allow
NoneasCapsinAppSrc/AppSink - Allow everything implementing
Into<Option<&str>>to be used as a pad name - Moved
copy()fromGstRcdirectly toMiniObject - Success/Error enums (like
FlowReturn,PadLinkReturn,StateChangeReturn) now implement aninto_result()function that splits them into aResultwith the good and bad cases. Also mark them as#[must_use]to make it harder to accidentally ignore errors. - Error enums implement the
Errortrait - Many examples use the
failurecrate for error handling now, cleaning up the error handling code quite a bit - Lots of other code cleanup, compiler/clippy warning cleanup, etc.
-
0.8.116 Dec 2019Release notes
Open source →Added
- Implement Send+Sync for Query, Message and Event, and their corresponding Ref types.
Fixed
- Constructor for gst_player::Player now works properly with GStreamer 1.12 when passing a video renderer or signal dispatcher. There was a reference counting bug.
- Instead of returning &'static references from functions, return references with a generic, unbound lifetime instead. See https://github.com/rust-lang/rust/pull/42417#issue-233404573
- Various "unused external crate" warnings and clippy warnings everywhere.
Changed
- Remove Cargo.lock from GIT, it's not very useful for library crates.
- Run everything through latest rustfmt-nightly.
- Use while-let (instead of loop and if-let) and CLOCK_TIME_NONE (instead of u64::MAX) in the examples.
-
0.8.024 Jun 2019Release notes
Open source →- Initial release of the autogenerated GStreamer bindings. Older versions (< 0.8.0) of the bindings can be found here. The API of the two is incompatible.
-
0.7.022 Feb 2019Nothing published for this version
-
0.6.226 Nov 2018Nothing published for this version
-
0.6.110 Nov 2018Nothing published for this version
-
0.6.009 Sep 2018Nothing published for this version
-
0.5.020 Mar 2018Nothing published for this version
-
0.4.022 Dec 2017Nothing published for this version
-
0.3.026 Nov 2017Nothing published for this version
-
0.2.109 Sep 2017Nothing published for this version
-
0.2.028 Aug 2017Nothing published for this version
-
0.1.110 May 2017Nothing published for this version
-
0.1.013 Apr 2017Nothing published for this version