{"id":439,"date":"2017-08-31T13:08:28","date_gmt":"2017-08-31T11:08:28","guid":{"rendered":"https:\/\/coaxion.net\/blog\/?p=439"},"modified":"2017-08-31T13:22:10","modified_gmt":"2017-08-31T11:22:10","slug":"gstreamer-rust-bindings-release-0-8-0","status":"publish","type":"post","link":"https:\/\/coaxion.net\/blog\/2017\/08\/gstreamer-rust-bindings-release-0-8-0\/","title":{"rendered":"GStreamer Rust bindings release 0.8.0"},"content":{"rendered":"<p>As written in the <a href=\"https:\/\/coaxion.net\/blog\/2017\/07\/writing-gstreamer-applications-in-rust\/\" target=\"_blank\">previous blog post<\/a>, I&#8217;m working on nice <a href=\"https:\/\/www.rust-lang.org\" target=\"_blank\">Rust<\/a> bindings for <a href=\"https:\/\/gstreamer.freedesktop.org\" target=\"_blank\">GStreamer<\/a>. Now it&#8217;s finally time for the first release, <a href=\"https:\/\/crates.io\/crates\/gstreamer\/0.8.0\" target=\"_blank\">0.8.0<\/a>.<\/p>\n<p>First of all, I should thank Arturo Castro a lot. He worked on the previous GStreamer bindings (versions < 0.8.0), which were all manually written instead of mostly autogenerated like the new ones. As such, the API is now completely different but the old bindings can still be found <a href=\"https:\/\/github.com\/arturoc\/gstreamer1.0-rs\" target=\"_blank\">here<\/a>.<\/p>\n<p>Also I should thank <a href=\"https:\/\/github.com\/philn\" target=\"_blank\">Philippe Normand<\/a> and <a href=\"https:\/\/github.com\/fengalin\" target=\"_blank\">fengalin<\/a> for their work on (and usage of) the bindings and reporting various problems to me.<\/p>\n<p>This first release of the new bindings features bindings to almost all of GStreamer <a href=\"https:\/\/crates.io\/crates\/gstreamer\/\" target=\"_blank\">core<\/a>, <a href=\"https:\/\/crates.io\/crates\/gstreamer-app\/\" target=\"_blank\">app<\/a> and the <a href=\"https:\/\/crates.io\/crates\/gstreamer-player\/\" target=\"_blank\">player<\/a> library, and the most important parts of the GStreamer <a href=\"https:\/\/crates.io\/crates\/gstreamer-audio\/\" target=\"_blank\">audio<\/a> and <a href=\"https:\/\/crates.io\/crates\/gstreamer-video\/\" target=\"_blank\">video<\/a> libraries (mostly for handling caps). Each library is in their own crate, just like in C. The documentation can be found <a href=\"https:\/\/sdroege.github.io\/rustdoc\/gstreamer\/gstreamer\/\" target=\"_blank\">here<\/a>, but unfortunately due to various rustdoc bugs and tooling issues with extracting the documentation from the C API, this is not as nice as it could be yet but that&#8217;s just a matter of time.<\/p>\n<p>Let me know if you run into any problems, find API that is missing for your usage, and of course also how\/what you&#8217;re using the bindings for. Especially if it&#8217;s an Open Source project. Bugs, feature requests, patches, etc. can be submitted on the <a href=\"https:\/\/github.com\/sdroege\/gstreamer-rs\" target=\"_blank\">GitHub repository<\/a>.<\/p>\n<p>And if you want to get started with using the bindings, in addition to the <a href=\"https:\/\/sdroege.github.io\/rustdoc\/gstreamer\/gstreamer\/\" target=\"_blank\">documentation<\/a> there are <a href=\"https:\/\/github.com\/sdroege\/gstreamer-rs\/tree\/0.8\/examples\" target=\"_blank\">various examples available<\/a> in the GIT repository.<\/p>\n<p><em>If someone wonders about why the other crates also started with version 0.8.0 instead of 0.1.0: they are all going to stay in sync API-wise and having the same version number for the versions that are compatible with each other is going to make it less confusing for users.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As written in the previous blog post, I&#8217;m working on nice Rust bindings for GStreamer. Now it&#8217;s finally time for the first release, 0.8.0. First of all, I should thank Arturo Castro a lot. He worked on the previous GStreamer bindings (versions < 0.8.0), which were all manually written instead of mostly autogenerated like the &hellip; <a href=\"https:\/\/coaxion.net\/blog\/2017\/08\/gstreamer-rust-bindings-release-0-8-0\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">GStreamer Rust bindings release 0.8.0<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,6,5,53],"tags":[],"class_list":["post-439","post","type-post","status-publish","format-standard","hentry","category-free-software","category-gnome","category-gstreamer","category-rust"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/posts\/439","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/comments?post=439"}],"version-history":[{"count":4,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/posts\/439\/revisions"}],"predecessor-version":[{"id":443,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/posts\/439\/revisions\/443"}],"wp:attachment":[{"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/media?parent=439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/categories?post=439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coaxion.net\/blog\/wp-json\/wp\/v2\/tags?post=439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}