kodawah / crav1e

C-bindings for rav1e

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

C rav1e API

LICENSE dependency status Build Status Build Status

cbindgen-based API for C/C++ users.

Status

The API is far from stable

  • Basic encoding usage
  • OBU Sequence Header for mkv/mp4 support
  • Documentation
  • TimeInfo/generic data pinning
  • pkg-conf .pc generation
  • Examples
  • Install target
  • Shared libraries
    • Linux
    • macOS
    • Windows
      • -gnu target
      • -msvc target

Usage

You may generate the library and the header file using a simple Makefile or calling cargo build.

The Makefile supports installing the library, the header and the pkg-config file.

Makefile

A quite simple makefile is provided:

# Build librav1e.a, rav1e.h and rav1e.pc
$ make
# Install librav1e.a, rav1e.h and rav1e.pc
$ make DESTDIR=${D} prefix=${prefix} libdir=${libdir} install
# Remove librav1e.a, rav1e.h and rav1e.pc
$ make DESTDIR=${D} prefix=${prefix} libdir=${libdir} uninstall

cargo

Currently cargo install does not work for libraries.

$ cargo build

or

$ cargo build --release

The header will be available as include/rav1e.h, the library will be in target/<debug or release>/librav1e.<so or dylib> Look in c-examples for working examples.

Windows binaries

Automated Windows binaries (x86-64 and ARM64) are generated by AppVeyor (available for download under the Artifacts tab).

Developing

I suggest to use the cargo paths override to have a local rav1e:

# Clone the trees
$ git clone https://github.com/xiph/rav1e
$ git clone https://github.com/lu_zero/crav1e
# Setup the override
$ cd crav1e
$ mkdir .cargo
$ echo 'paths=["../rav1e"]' > .cargo/config
# Check it is doing the right thing
$ cargo build

About

C-bindings for rav1e

License:BSD 2-Clause "Simplified" License


Languages

Language:Rust 71.8%Language:C 15.9%Language:Makefile 12.3%