babycat 0.0.13

An audio decoding and manipulation library, with bindings for C, Python, and WebAssembly.
Documentation
# == Core metadata ==
[package]
name = "babycat"
version = "0.0.13"
authors = ["Neocrym Records Inc. <engineering@neocrym.com>"]
edition = "2018"
description = "An audio decoding and manipulation library, with bindings for C, Python, and WebAssembly."
readme = "README.md"
homepage = "https://babycat.io"
repository = "https://github.com/babycat-io/babycat"
license = "MIT"
include = ["Cargo.toml", "benches", "examples", "rust-toolchain.toml", "src", "tests"]


# == Binary targets ==
[[bin]]
name = "babycat"
path = "src/bin/babycat/main.rs"
required-features = ["frontend-binary"]

# == Library targets ==
[lib]
name = "babycat"
crate-type = ["rlib", "cdylib", "staticlib"]


# == Dependencies ==
[dependencies]
symphonia = { version = "0.5.0",  features = [ "aac", "alac", "flac", "mp3", 
"mkv", "pcm", "isomp4", "wav", "ogg", "vorbis" ] }

base64 = "0.13"
float-cmp= "0.9"
hound = "3.4"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
log = { version = "0.4", features = ["serde"]}

# for multithreading
rayon = { version = "1.5", optional = true }

# for libsamplerate
samplerate = { version = "0.2", optional = true }

# for webassembly frontend
wasm-bindgen = { version = "0.2", features = ["serde-serialize"], optional = true }
js-sys = { version = "0.3", optional = true }

# for python frontend
numpy = { version = "0.16.1", optional = true }
pyo3 = { version = "0.16.1", optional = true }

# for binary targets
env_logger = { version = "0.9", optional = true }
structopt = { version = "0.3", optional = true }
rodio = { version = "0.15", default-features = false, optional = true }
crossterm = { version = "0.23", optional = true }


# ffmpeg
ffmpeg-next = { version = "5.0.2", default-features = false, optional = true }


[dev-dependencies]
wasm-bindgen-test = "0.3"

# == Features ==
[features]
# Default features
default = ["frontend-rust"]


# Additional features to compile in
enable-filesystem = []
enable-multithreading = ["rayon"]
enable-libsamplerate = ["samplerate"]
enable-audio-playback = ["rodio"]


# Dynamically link to FFmpeg
enable-ffmpeg = [
    "ffmpeg-next",
    "ffmpeg-next/codec",
    "ffmpeg-next/device",
    "ffmpeg-next/format",
]
# Statically link to FFmpeg
enable-ffmpeg-static = [
    "enable-ffmpeg",
    "ffmpeg-next/static",
]
# Build FFmpeg and statically link to it
enable-ffmpeg-build  = [
    "enable-ffmpeg",
    "enable-ffmpeg-static",
    "ffmpeg-next/build"
]


# These "frontends" are common groupings of features for targets.
frontend-binary = [
    "enable-filesystem",
    "enable-multithreading",
    "enable-libsamplerate",
    "enable-audio-playback",
    "env_logger",
    "structopt",
    "crossterm",
]
frontend-rust = [
    "enable-filesystem",
    "enable-multithreading",
    "enable-libsamplerate",
]
frontend-wasm = [
    "wasm-bindgen",
    "js-sys"
]
frontend-python = [
    "enable-filesystem",
    "enable-multithreading",
    "enable-libsamplerate",
    "numpy",
    "pyo3",
    "pyo3/extension-module",
    "pyo3/abi3",
    "pyo3/abi3-py38",
]
frontend-c = [
    "enable-filesystem",
    "enable-multithreading",
    "enable-libsamplerate",
]



# == Python package metadata ==
[package.metadata.maturin]
requires-dist = ["numpy >= 1.16.0"]
classifier = [
    "License :: OSI Approved :: MIT License",
    "Intended Audience :: Developers",
    "Programming Language :: Rust",
    "Operating System :: POSIX :: Linux",
    "Operating System :: Microsoft :: Windows",
    "Operating System :: MacOS",
    "Topic :: Multimedia :: Sound/Audio :: Analysis",
    "Topic :: Multimedia :: Sound/Audio :: Conversion",
]