GithubHelp home page GithubHelp logo

ids1024 / pulse-binding-rust Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jnqnfe/pulse-binding-rust

0.0 1.0 0.0 1.38 MB

FFI and bindings for using PulseAudio from the Rust programming language.

License: Apache License 2.0

C 29.06% Rust 70.94%

pulse-binding-rust's Introduction

Overview

GitHub Workflow Status license

This repository contains sys (FFI) and binding libraries (crates) for connecting to PulseAudio (PA) from the Rust programming language.

These are provided for each of the three system libraries:

  • libpulse_binding for libpulse,
  • libpulse_simple_binding for libpulse-simple, and
  • libpulse_glib_binding for libpulse-mainloop-glib.

The sys (FFI) crates provide basic interfaces to the raw C APIs, while the bindings add Rust-oriented higher-level abstractions on top of these. (It is the bindings that you should prefer to make direct use of in Rust applications).

See the respective library sub-directories for details.

PulseAudio Version Compatibility

Please see the separate COMPATIBILITY.md file for discussion of PA version compatibility.

Author

These bindings were not produced by the PulseAudio project, they were produced by an independent developer - Lyndon Brown.

You can help fund my work through one of the following platforms: patreon, liberapay, or buy-me-a-coffee.

Copyright & Licensing

All parts of these binding libraries are fully open-source and free to use.

All files in this source code repository, except as noted below, are licensed under the MIT license or the Apache license, Version 2.0, at your option. You can find copies of these licenses either in the LICENSE-MIT and LICENSE-APACHE files, or alternatively here and here respectively.

Documentation Specifics

The documentation of the binding and sys libraries provided in this source code repository has largely been copied (with some modifications in places) from that provided in the LGPL 2.1+ licensed C header files of the PulseAudio client library itself. This has been done on a fair-use basis. (Fair-use is permitted by the LGPL license as discussed in the GPL/LGPL FAQ). This should be of no concern for normal use of these crates, you can freely compile them statically into your projects under the dual MIT and Apache-2.0 licensing (documentation naturally does not get compiled into your library/application), and you should be able to freely use a personal copy of the crate documentation generated into HTML form with cargo doc (fair-use).

Other Specifics

The files within the ‘includes’ directory, have been copied directly from the PulseAudio source. These files are kept for development purposes only (to be compared through diff checking against future versions to find changes that may need propagating into the bindings). To be clear, they are not used in any compilation processes. They are licensed under LGPL by the PulseAudio project.

The logo image files are a combined derivative of the Rust programming language icon and the PulseAudio icon, taking core elements from each. I apply no specific image-oriented license upon them (I am not familiar with such licenses). As a substitute, subject to any constraints of licensing of those original images, I freely permit use on a common-sense fair-use basis. For instance, you may freely make use of them in articles discussing this project (should anyone ever care to do so). Feel free to make your own such derived logos, I make no claim upon it being an original idea.

Source Code Contents

  • includes/ - A copy of the original C header files the bindings have been built to interface with.
  • pulse-binding/ - The main high-level binding library.
  • pulse-binding-mainloop-glib/ - The high-level binding library for the GLIB mainloop.
  • pulse-binding-simple/ - The high-level binding library for the PulseAudio ‘simple’ component.
  • pulse-sys/ - The main raw C API interface library.
  • pulse-sys-mainloop-glib/ - The raw C API interface library for the GLIB mainloop.
  • pulse-sys-simple/ - The raw C API interface library for the PulseAudio ‘simple’ component.

pulse-binding-rust's People

Contributors

agraven avatar berkus avatar danielchabrowski avatar frafra avatar fredszaq avatar jnqnfe avatar johnazoidberg avatar mitchhentges avatar mozgiii avatar timvisee avatar yatinmaan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.