gstreamer
Rust bindings for GStreamer
0.25.3
9.8M downloads/mo
#3149 most downloaded on crates.io
source
What this package is like to depend on
Last release 1 months ago
29 Jun 2026
Ships fairly regularly
a new release about every 5 weeks
Most releases are documented
notes for 95 of 125 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
127 releases · first in 2015
10 releases in the last 12 months
see the full history below
Release timeline
127 releases · Mar 2015 to Jun 2026Releases
latest 60 of 127-
0.25.329 Jun 2026Release notes
Open source →Fixed
- Add missing gating on
gst_allocators::FdAllocatorExtManualin prelude.
Added
prepare_allocatorvirtual methods andset_allocatoringst_baseandgst_videobase classes.- Panic-to-error handling for
gst::Padand element subclassing.
Changed
- Update dependencies.
- Regenerate bindings with latest gir / gir-files.
- Add missing gating on
-
0.25.211 May 2026Release notes
Open source →Fixed
- Only enable
gst_allocators::FdAllocatoron UNIX platforms. - Add
gst::Padas parent class forgst_audio::AudioAggregatorPad. - Fix inverted logic in
gst_audio::AudioAggregatorPad::audio_info().
Changed
- Various new Rust 1.94 / 1.95 clippy warnings.
Added
gst_base::BaseParse::sink_caps()vfunc.- Bindings for various new 1.30 APIs.
Displayimpl forgst::PadFlags.- Various new API to
gst-mpegtsandgst-tag. Read+Seekimpl forgst::TypeFind.
- Only enable
-
0.25.128 Feb 2026Release notes
Open source →Fixed
- Fix setting user-set pad name being overwritten in
gst::GhostPadbuilder.
Added
- Add some missing message types to
gst::MessageType. - Add some more acccessors to
gst::Query,MessageandEventtypes.
- Fix setting user-set pad name being overwritten in
-
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 2026Release notes
Open source →Added
- Add bindings for
gst::segtrap_is_enabled()andsegtrap_set_enabled(). - Add
gst::MiniObject::mark_may_be_leaked(). - Add bindings for
gst::DynamicTypeFactory. - Add bindings for
gst_tag::image_data_to_image_sample(). - Add bindings for all tags from
gst_tag. - Add various missing
gst::Memory/gst::Buffermethod bindings. - Add some missing message types to
gst::MessageType. - Add some more acccessors to
gst::Query,MessageandEventtypes.
Fixed
- Add assertions for invalid fourcc/modifiers in
gst_video::dma_drm_fourcc_to_string(). - Fix
gst::Bus::timed_pop_filtered()timeout semantics. - Fix return value ownership transfer in
gst_validate::setup_test_file(). - Fix setting
out-of-segmentvia thegst_app::AppSinkbuilder. - Fix setting user-set pad name being overwritten in
gst::GhostPadbuilder.
Changed
- Update to latest 1.28 and upcoming 1.30 APIs.
- Add bindings for
-
0.24.402 Dec 2025Release notes
Open source →Added
- Add
Buffer::try_into_inner()andMemory::try_into_inner()to extract a wrapped Rust value (e.g. aVec<u8>). - Add
Memory::default_alignment(), implementalloc()for the Rust allocator and addgst::rust_allocator()for getting a reference to the allocator.
Fixed
- Export
automodule ingstreamer-tagso thatTagImageTypeis actually accessible. - Fix
gst::Allocatorsubclassing API. This was not actually usable before and as such the fixing required a couple of breaking changes. - Fix docs build on docs.rs.
Changed
- Update
gst_analytics::AnalyticsBatchMetaandgst_validateto the latest API. - Fix various new clippy / compiler warnings.
- Various cleanups to wrapped memory implementation.
- Add
-
0.24.331 Oct 2025Release notes
Open source →Added
gst_video::is_dma_drm_caps()helper function.gst_tag::TagImageTypeenum.gst::ControlBindingproperty_name()andproperty_pspec()accessors.- Remove some unused imports and dead code warnings on macOS.
- New
gst_controller::TimedValueControlSource::list_control_points()1.28.
Changed
ges::TimelineElementaccepts anyInto<glib::Value>inset_child_property()now.
-
0.24.218 Sep 2025Release notes
Open source →Fixed
- Allow using
DMA_DRMandENCODEDformats withgst_video::VideoMetaandVideoInfoAPIs by improving / relaxing parameter validation. - Refer to
gst::IdStrby full path ingst::id_str!()macro.
Added
gst::MiniObject::downcast_ref()anddowncast_mut()that operate on the non-ref type.- More documentation and convenience constructors for
gst::formattypes. Defaultimpl forgst_appenums.gst_utils::StreamProducerposts an element message whenever buffers are dropped.gst_utils::StreamProducerhas new API to configure theappsrclimits and to configuresync=falseon theappsink.
Changed
- Update to latest GStreamer 1.28 APIs.
- Allow using
-
0.24.110 Aug 2025Release notes
Open source →Fixed
- Removed incomplete offset/stride checks in
gst_video::VideoInfobuilder. - Various new 1.89 clippy warnings
- Mark allocator used by
gst::Memory::from_slice()and related API asMAY_BE_LEAKEDas it's a singleton and otherwise shows up in the leaks tracer, for example. - Don't unnecessarily check if validate is initialized to build action types.
Added
- Added
gst_video::VideoMeta::add_from_info()that takes aVideoInfoinstead of individual parameters.
- Removed incomplete offset/stride checks in
-
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.720 Jun 2025Release notes
Open source →Fixed
- Provide existing messages immediately from a
gst::Busstream when creating it instead of only providing them on the next message.
Added
gst::QueryTypeenum and accessor for it from queries.
Changed
- Don't unnecessarily store buffer twice in
gst_gl::GLVideoFrame. - Don't store memory twice in
gst::memory::MemoryMapandMappedMemory.
- Provide existing messages immediately from a
-
0.23.613 May 2025Release notes
Open source →Fixed
- Lower debug message level when allocation queries in subclasses fail.
- Catch panics from typefinders implemented in Rust.
- Use correctly aligned arrays in
gst_audiotests. - Drop pad probes and callbacks from
appsinkwhen releasing agst_utils::StreamProducer. - Leak in
gst::ElementImpl::parent_request_new_pad(). - Request a new keyframe from
gst_utils::StreamProducerwhen discarding a buffer.
Added
- Implement
gst::ByteSliceExtover allAsRef<[u8]>instead of just&[u8]and&mut [u8]. gst::Allocator::memory_type()getter.- Setters for
gst::AllocationParamsand implementCopy,PartialEqandEq. - New API for creating a
gst_audio::AudioInfoandgst_video::VideoInfobuilder from an existing value. - Setters for
gst_video::VideoAlignmentand implementDefault. - Implement
Default,CopyandCloneforgst::BufferPoolAcquireParamsand add setters. gst::ChildProxy::set_child_property_from_str()convenience API.gst::BufferList::drain()for iterating over a buffer list while draining it.gst_utils::StreamProducer::wait_for_keyframe()configuration.gst_utils::ConsumptionLinkgetter for the stream producer.- Bindings for
gst_taglanguage code API.
Changed
- Update various dependencies.
- Update to GStreamer 1.26.1 gir files.
-
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.301 Nov 2024Release notes
Open source →Fixed
- Bind
gst::Pad::proxy_query_caps()to the correct C function. - Update
gst_utils::StreamProducerappsrc latency upon appsink latency event. - Fix type of
gst_app::AppSinkBuilder::processing_deadline().
Added
- Various new
gst::Iteratorconstructors for convenience.
Changed
- Updated GStreamer gir files for latest 1.26 APIs.
- Bind
-
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.127 Aug 2024Release notes
Open source →Fixed
- Support
gst_utils::StreamProducerAPI on platforms without 64 bit atomics. - Fix off-by-one in
gst::BufferList::remove()range end handling. - Pass an empty tag array instead of NULL in
gst::CustomMeta::register_simple(). - Fix various new clippy warnings.
Added
- Add getters for
gst::format::Percent.
- Support
-
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.818 Oct 2024Nothing published for this version
-
0.22.724 Jul 2024Nothing published for this version
-
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.408 Apr 2024Release notes
Open source →Added
- Implement
From<glib::Value>/ToValueforgst_audio::AudioConverterConfigandgst_video::VideoConverterConfig.
Changed
- Fixed various 1.77 clippy warnings.
- Implement
-
0.22.319 Mar 2024Release notes
Open source →Changed
- Change
ges::CompositionMetaposition fields tof64s in correspondence with the C API. - Change
gst_analytics::AnalyticsMtdRef::obj_type()to anOptionin correspondence with the C API.
Added
gst::Fraction::new_raw()andfrom_integer()const constructors.
- Change
-
0.22.226 Feb 2024Release notes
Open source →Changed
- Update GStreamer gir files and add more new 1.24 API.
Fixed
- Add
gst::Objectas parent class for variousgst_rtptypes. - Handle all already queued messages in
gst::BusStreaminstead of just new messages.
Added
- Add
gst::CustomMeta::is_registered().
-
0.22.113 Feb 2024Release notes
Open source →Changed
- Update GStreamer gir files and add more new 1.24 API.
Fixed
- Make
AnalyticsODLocationstruct fields public. MetaRefMut::upcast_mut()returns a mutable reference now.
-
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.318 Dec 2023Release notes
Open source →Added
- Update GStreamer gir files to latest (upcoming) 1.24 APIs.
- Add an example for writing subclasses with virtual methods.
- Add
gst::ClockTime::absdiff()and same for similar types.
Fixed
- In
Playexample, set bus to flushing before droppingPlayinstance. - Add missing
docsrsconfiguration for correct documentation generation. - Make
gst_pbutils::element_propertiesmodule public. - Add missing
gst_audio::AudioFilterImpl::parent_allowed_caps(). - Fix assertions in
gst::Memorycopy/share/resize functions.
Changed
- Update to itertool 0.12, pretty-hex 0.4.
-
0.21.211 Nov 2023Release notes
Open source →Changed
- Update GStreamer gir files to latest (upcoming) 1.24 APIs.
- Update to latest gir code generator from the gtk-rs 0.18 branch.
Fixed
- Big endian video format order is correct again.
gst::MetaRef::has_tags()andtags()API actually works and works based on the tags of the concrete meta instance.gst::MetaRef::tags()returns strings with arbitrary lifetimes now because they're statically stored anyway.- Fix another potential deadlock in
gst_utils::StreamProducerwhen sending force-keyunit events.
Added
- Bindings for
gst_video::VBIEncoderandVBIParser. - Accessors for the different
gst::PadProbeDatatypes onPadProbeInfo. Defaultimpl forgst::AllocationParams.From/TryFromimplementations between formatted types (e.g.gst::Bytes) andusize.gst::MetaRef::copy()to copy metas from one buffer to another.gst::ElementImpl::catch_panic_future()to wrap aFuturein such a way that panics are converted to GStreamer error messages and the element is marked as unusable.gst_gl::GLDisplay::handle()to get a raw display handle.
-
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.705 Jul 2023Release notes
Open source →Fixed
- Fix
wait-for-eosproperty name string inappsink. - Fix various memory leaks in
BaseTransformsubclassing bindings. - Mark some GES APIs as
Send+Sync.
Added
- Implement
DiscovererInfo::debug()and on related structs.
- Add subclassing bindings for
GESFormatter.
- Fix
-
0.20.606 Jun 2023Release notes
Open source →Added
- Getter for the
gst_rtsp_server::RTSPContextURI field.
Fixed
gst_pbutils::DiscovererStreamInfo::stream_id()can returnNULL. This is mapped to the empty string for this release to keep backwards compatibility.gst_pbutils::DiscovererStreamInfoiterator methods can be called on any subclass directly now without casting.- Debug logs use the actual function name against instead of the name of a closure generated by the log macros.
Changed
- Minor performance improvements to debug logging.
- Getter for the
-
0.20.522 Apr 2023Release notes
Open source →Added
glib::HasParamSpecimpl for miniobjects to allow using them with the properties derive macro.Defaultimpl forgst_player::Player.
-
0.20.314 Mar 2023Release notes
Open source →Fixed
gst::ParamSpecArrayuses the correctglib::Typenow.- Work around accidental ABI breakage in 1.18 gst-rtsp-server
GstRTSPClient.
Added
- Document
gst_utils::StreamProducer::forward_eos()default value.
-
0.20.221 Feb 2023Release notes
Open source →Added
glib::HasParamSpecimpl forgst::ClockTimeDefaultimpl forgst_play::Play- Constructors for non-raw
gst_audio::AudioCapsBuilder/gst_video::VideoCapsBuilder
-
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.809 Feb 2023Release notes
Open source →Changed
- Update GStreamer .gir files to 1.22.0 release.
Fixed
- Marked
gst::MessageTypeas non-exhaustive.
Added
- Added bindings for
gst::Message::structure_mut(). - Added subclassing support for
gst_allocators::FdAllocatorandDmabufAllocator.
-
0.19.719 Jan 2023Release notes
Open source →Fixed
- Work around the possibility that the caps in the allocation query can be
NULLby returning any caps for now. This will be handled properly with a minimal API change in the 0.20 release.
- Work around the possibility that the caps in the allocation query can be
-
0.19.618 Jan 2023Release notes
Open source →Fixed
- The
AppSrcandAppSinkbuilders now assert that GStreamer is initialized before creating an instance.
- The
-
0.19.527 Dec 2022Release notes
Open source →Fixed
- Clear video frame values when mapping as GL texture to avoid out of bounds reads when trying to access the GL texture as raw video frame.
- Allow returning
HandledfromBufferListpad probes.
Changed
- Update GStreamer .gir files to latest 1.21 git.
-
0.19.416 Dec 2022Release notes
Open source →Added
- Subclassing bindings for
gst_audio::AudioFilter.
Fixed
- Various new clippy warnings.
Changed
- Update GStreamer .gir files to 1.21.3 release.
- Subclassing bindings for
-
0.19.328 Nov 2022Release notes
Open source →Added
FromIterator<Caps>andExtend<Caps>forCaps.PartialEqimpls between owned/borrowed miniobjects/structures.
Fixed
- Sticky event ordering for instant-rate-change.
Changed
- Updated GStreamer .gir files to post 1.22.2 release.
-
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.124 Oct 2022Release notes
Open source →Changed
- Make it possible to use objects not just as reference in the logging macros.
-
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.826 Apr 2022Release notes
Open source →Added
- Bindings for
RTPBasePayloadandRTPBaseDepayload. - Accessors for
RTPBufferbuffer. - Bindings for
RTPBufferlength calculation API. - More complete
gst::Taskbindings.
Fixed
- Export
gst::subclass::TaskPoolFunction.
- Bindings for
-
0.18.704 Apr 2022Release notes
Open source →Added
- Bindings for
VideoAggregatorand theVideoAggregatorPads. - Bindings for
AudioAggregatorand theAudioAggregatorPads. - Bindings for
TaskPool. - Various helper functions for
VideoFormatInfo,VideoInfoandVideoFrame.
- Bindings for
-
0.18.608 Mar 2022Release notes
Open source →Fixed
- Require
Sendand notSyncfor the values of angst::Array/gst::List.
Changed
- Simplify and speed up log message string construction
- Require
-
0.18.520 Feb 2022Release notes
Open source →Changed
- Require GStreamer 1.20.0 at least when building with
v1_20. Earlier versions were already going to fail due to API mismatches before.
Added
gst::BufferPoolsubclassing support.Debugimpl forgst::MiniObject.gst_rtsp_server::RTSPOnvifServerand related API, including subclassing support.
Fixed
- Handle empty slices correctly at the FFI layer.
MiniObjectRef::downcast_ref()and similar functions return the correct type now. While this is an API change, the previous API would've never worked.
- Require GStreamer 1.20.0 at least when building with
-
0.18.331 Jan 2022Release notes
Open source →Added
Defaultimplementation forgst_video::VideoOverlayCompositionwhen targeting GStreamer 1.20.gst_video::VideoOverlayComposition::add_rectangle()in addition to the addition of all rectangles via an iterator during construction.- Subclassing support for
gst_rtp::RTPHeaderExtension. gst_webrtc::WebRTCErrorfor programmatically handling WebRTC errors.
Fixed
gst_rtp::RTPHeaderExtensionhasgst::Elementset as parent class now.- Global functions are re-exported from the
gst_rtpcrate root.
Changed
- GIO-style async operations in GES no longer need
Send-able closures.
Removed
fragileis no longer a dependency and instead the corresponding GLib API is used.
-
0.18.224 Jan 2022Release notes
Open source →Added
glib::FromValuefor mini object references.- Bindings for
gst::DebugCategory::get_line().
-
0.18.118 Jan 2022Release notes
Open source →Fixed
Message::view()also handles the redirect message now.MessageandQueryview variants that return references now borrow again from the underlying query and not the view enum, allowing to use them in a wider scope.
Changed
- All miniobjects,
VideoTimeCode,StructureandCapsFeaturesare marked as#[repr(transparent)]now to ensure that their memory representation is exactly the underlying raw pointer.
-
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.413 Sep 2021 -
0.17.323 Aug 2021Release notes
Open source →Fixed
gst::Value::deserialize()takes the target type as parameter now. This is technically an API change but the function would've never worked previously.
Added
- The release date-time parameter to
gst::plugin_define!is optional now like in the C version of the macro. - Bindings to
gst::Tracerandgst::TracerFactoryfor allowing to implement custom tracers in Rust. - Bindings for the new
gst::Value::deserialize_with_psec()function from GStreamer 1.20. - serde
Serialize/Deserializeimpls forgst::PadDirection,gst::PadPresence,gst::URITypeandgst::Rank.
-
0.17.205 Aug 2021Release notes
Open source →Fixed
- Various new clippy warnings.
- Compilation of
gstreamer-audioon big-endian platforms.
Added
- Support for 1.20
GapeventGapFlags. - Support for 1.20
Structure::serialize()/Caps::serialize().
-
0.17.113 Jul 2021Release notes
Open source →Fixed
- Store 1.19 as plugin version when building plugins with
v1_20. Otherwise plugins fail to load with GStreamer versions below 1.20.0. - Fix documentation for
gst::Element::request_pad_simple()to actually show up.
- Store 1.19 as plugin version when building plugins with